private void updateVentilation(float a_deltaTime)
{
m_img.setAnimationSpeed(15);
m_speed = Vector2.Zero;
m_gravity = 0;
if (Game.getInstance().m_camera.getLayer() == 0)
{
if (!m_collidedWithVent)
{
Game.getInstance().m_camera.setLayer(1);
m_layer = 0.6995f;
}
else
{
m_layer = 0.901f;
}
m_cameraPoint.X = 0;
}
bool t_wasGoingDown = false;
if(m_lastVentilationDirection == Direction.Down)
t_wasGoingDown = true;
Entity t_currentVent = m_currentVentilation;
List<Direction> t_list = null;
foreach (Direction t_direction in m_ventilationDirection)
{
t_list = moveDirectionInVentilation(t_direction);
if (t_list != null)
{
if (t_list.Contains(Direction.Left) && m_ventilationDirection.Contains(Direction.Down) && KeyboardHandler.isKeyPressed(GameState.getDownKey()) && !t_wasGoingDown)
{
m_currentVentilation = t_currentVent;
continue;
}
break;
}
}
if (t_list != null)
{
m_ventilationDirection = t_list;
}
if (m_ventilationIdle)
{
m_currentVentilationImage = "hero_ventilation_idle";
if (m_lastVentilationDirection == Direction.Right && KeyboardHandler.isKeyPressed(GameState.getRightKey()) && !KeyboardHandler.isKeyPressed(GameState.getLeftKey()) && ((CollisionRectangle)m_collisionShape).m_xOffset != 0)
{
setSprite(m_currentVentilationImage);
m_position.plusXWith(((CollisionRectangle)m_collisionShape).m_xOffset);
Game.getInstance().m_camera.getPosition().plusXWith(-((CollisionRectangle)m_collisionShape).m_xOffset);
((CollisionRectangle)m_collisionShape).setOffsetX(0);
}
m_lastVentilationDirection = Direction.Right;
if (((CollisionRectangle)m_collisionShape).m_yOffset != 0)
{
setSprite(m_currentVentilationImage);
m_position.plusYWith(((CollisionRectangle)m_collisionShape).m_yOffset);
Game.getInstance().m_camera.getPosition().plusYWith(-((CollisionRectangle)m_collisionShape).m_yOffset);
((CollisionRectangle)m_collisionShape).setOffsetY(0);
}
}
}