public override void OnEveryTick() { if (Alive) { var ZombiePosition = Shape.GetGlobalBounds(); ZombiePosition.Top -= 3; Barricade collidedBarricade = GameContext.Environment.Barricades.Find(x => x.Shape.GetGlobalBounds().Intersects(ZombiePosition)); if (collidedBarricade != null) { AnimationStage = ZombieStage.Attacking; if (AttackLimiter.ElapsedMilliseconds >= AttackSpeed) { collidedBarricade.HealthPoints -= Damage; AttackLimiter.Restart(); } } else { AnimationStage = ZombieStage.Walking; } if (ZombiePosition.Top > GameContext.Window.Size.Y) { GameContext.Health -= 10; this.HealthPoints = -1; GameContext.DrawQueue.RemoveAll(x => x == this); } } }
public void DoAnimationCycle(object sender, ElapsedEventArgs e) { if (!Alive) { AnimationStage = ZombieStage.Dead; } Shape.TextureRect = AnimationRects[new KeyValuePair <ZombieStage, int>(AnimationStage, SubAnimationStage)]; if (SubAnimationStage < 7) { SubAnimationStage++; } if (SubAnimationStage >= 7 && Alive) { SubAnimationStage = 0; } }