Example #1
0
void Enemy::BelowFeetLadderCheck()
{
		/* Check for Back Ladder OR Rope Block Below (When NOT Jumping) */
	if(!ipFlags.S_JUMP)
	{
		/* check for noncollidable ground tile */
		if(level_class != 0)
		{
			if((level_class->GetLevelData(GetXTilePos(), GetYTilePos()) == CLIMBLADDER) ||
			   (level_class->GetLevelData(GetXTilePos(), GetYTilePos()) == CLIMBROPE) ||
			   (level_class->GetLevelData(GetXTilePos(), GetYTilePos()) == CLIMBBLOCKRIGHT) ||
			   (level_class->GetLevelData(GetXTilePos(), GetYTilePos()) == CLIMBBLOCKLEFT))
				ipFlags.S_NO_GRAVITY = true;
			/* reset gravity if BACK on the 'collidable' ground */
			else
			{
				ipFlags.S_NO_GRAVITY = false;
			}
		}
	}
}
void EnemyWolfGawain::processUpdate()
{
	if((player_spr->GetFrameSet() == ENEMY_WOLF_DEATH) && !player_spr->IsAnimating())
		Die();

//	if(((GetXTilePos() > 22) || (GetXTilePos() < 2)))
//		Die();

	if(((GetXTilePos() > 18) || (GetXTilePos() < 4)))
		Die();
	else
		COLLISION = true;

	if(ipFlags.S_ATTACK && !ipFlags.S_DEAD)
	{	
		if(!HIT)
		{
			if(!START)
			{
				int dx = player->GetXTilePos() - GetXTilePos();

				if(dx > 0)
				{
					ipFlags.S_DIRECTION = true;
					velMovement = maxWalkSpeed;
				}
				else
				{
					ipFlags.S_DIRECTION = false;
					velMovement = -maxWalkSpeed;
				}			

				SetAnimation(ENEMY_WOLF_MOVE, 0, true, false, 15, true);
				START = true;
			}
			else if(START)
			{
				if(ipFlags.S_DIRECTION)
					velMovement = maxWalkSpeed;
				else
					velMovement = -maxWalkSpeed;
			}

		}
	}

	if(COLLISION)
	{
		rectDX = 15;
		rectDY = 15;
		rectXOffset = -nxOffSet;
		rectYOffset = 15;

//		SetRectangle(rectWorldLoc, 15, 15, -nxOffSet, 15);
	}
	else
	{
		rectDX = 0;
		rectDY = 0;
		rectXOffset = 0;
		rectYOffset = 0;

//		SetRectangle(rectWorldLoc, 0, 0, 0, 0);
	}
}