public override void Update(KeyboardDevice keyboard) { switch (mode) { case MovementSection.SLIDE: if (!ent.IsOnGround()) { double X = flagPos.X - ent.position.X; X = Math.Min(Math.Abs(X), DOWN_CORRECTION_SPEED) * Math.Sign(X); MoveBy(new Vec2d(X, -SPEED_DOWN)); ((StandardGameHUD)owner.HUD).AddCoinParticle(StandardGameHUD.COIN_PARTICLE_COMPLETIONCOUNT / 2); } else { mode = MovementSection.WALK; } break; case MovementSection.WALK: DoGravitationalMovement(new Vec2d(SPEED_WALK - movementDelta.X, 0)); break; default: ent.DoCollisions(); break; } }
public void Defaut() { // Arrange MovementSection speeds = new MovementSection(); // Assert Assert.IsInstanceOf <Movement>(speeds.Burrow); Assert.IsFalse(speeds.Burrow.BaseSpeed.HasValue); Assert.IsInstanceOf <Movement>(speeds.Climb); Assert.IsFalse(speeds.Climb.BaseSpeed.HasValue); Assert.IsInstanceOf <Fly>(speeds.Fly); Assert.IsFalse(speeds.Fly.BaseSpeed.HasValue); Assert.IsInstanceOf <Movement>(speeds.Swim); Assert.IsFalse(speeds.Swim.BaseSpeed.HasValue); Assert.IsInstanceOf <Movement>(speeds.Land); Assert.IsTrue(speeds.Land.BaseSpeed.HasValue); Assert.AreEqual(6, speeds.Land.BaseSpeed.Value); Assert.That(speeds.GetAll(), Is.EquivalentTo(new IMovement[] { speeds.Burrow, speeds.Climb, speeds.Fly, speeds.Land, speeds.Swim })); }