示例#1
0
        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);
                }
            }
        }
示例#2
0
 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;
     }
 }