示例#1
0
 protected override void FollowPlayer()
 {
     if (IsPlayerAround())
     {
         do
         {
             if (IsPaused)
             {
                 GameData.PauseGameEvent.Reset();
                 GameData.PauseGameEvent.WaitOne();
             }
             lock (GameData.ConsoleAccessObject)
             {
                 if (GameData.Player.Health > 0)
                 {
                     GameData.GameMechanics.HitPlayer(AttackDamage);
                     GameData.PlayerHealthStatusEvent.Set();
                 }
             }
             Thread.Sleep(AttackSpeed);
         } while (IsPlayerAround());
     }
     else
     {
         ZombieState.FindNextStep(this);
     }
 }
示例#2
0
        protected override void FollowPlayer()
        {
            if (IsPlayerAround())
            {
                do
                {
                    if (IsPaused)
                    {
                        GameData.PauseGameEvent.Reset();
                        GameData.PauseGameEvent.WaitOne();
                    }

                    lock (GameData.ConsoleAccessObject)
                    {
                        if (GameData.Player.Health > 0)
                        {
                            GameData.GameMechanics.HitPlayer(AttackDamage);
                            GameData.PlayerHealthStatusEvent.Set();

                            lock (GameData.PlayerStunnedAccess)
                            {
                                if (!GameData.Player.IsStunned)
                                {
                                    Thread pushAndStunThread = new Thread(() => new PushTracker(Pause).PushAndStun(Direction));
                                    pushAndStunThread.Start();
                                    GameData.AddThread(pushAndStunThread);
                                }
                            }
                        }
                    }
                    Thread.Sleep(AttackSpeed);
                } while (IsPlayerAround());
            }
            else
            {
                ZombieState.FindNextStep(this);
            }
        }
示例#3
0
 protected override void FollowPlayer()
 {
     if (IsPlayerAround())
     {
         do
         {
             if (IsPaused)
             {
                 GameData.PauseGameEvent.Reset();
                 GameData.PauseGameEvent.WaitOne();
             }
             lock (GameData.ConsoleAccessObject)
             {
                 if (GameData.Player.Health > 0)
                 {
                     GameData.GameMechanics.HitPlayer(AttackDamage);
                     GameData.PlayerHealthStatusEvent.Set();
                 }
             }
             Thread.Sleep(AttackSpeed);
         } while (IsPlayerAround());
     }
     else if (isPlayerAhead())
     {
         lock (GameData.JumpThreadAccess)
         {
             jumpThread = new Thread(() => new JumpTracker(Pause).Jump(Direction, this));
             jumpThread.Start();
             GameData.AddThread(jumpThread);
         }
         GameData.JumpWait.WaitOne();
         Thread.Sleep(1000);
     }
     else
     {
         ZombieState.FindNextStep(this);
     }
 }