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); } }
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); } }
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); } }