protected override void Awake() { base.Awake(); m_TerrainManager = TerrainManager.Instance; m_PlayerArrows = PlayerArrows.Instance; m_HumanPlayer = BattleRoyaleManager.Instance.GetHumanPlayer(); }
//Player Callbacks. protected virtual void OnPlayerShootArrow(object sender, EventArgs e) { var arrow = new Arrow(Player.ArrowPosition); arrow.OnStateChangeDead += OnArrowStateChangedDead; PlayerArrows.Add(arrow); }
protected override void Awake() { base.Awake(); m_PlayerArrows = PlayerArrows.Instance; m_HumanPlayer = BattleRoyaleManager.Instance.GetHumanPlayer(); m_ArrowIndex = m_PlayerArrows.Register(transform, m_ArrowColor, PlayerArrows.EArrowType.BRUSH); }
protected virtual void UpdatePlaying(GameTime gt) { //Handle the Pause... var prev = InputHandler.Instance.PreviousKeyboardState; var curr = InputHandler.Instance.CurrentKeyboardState; if (prev.IsKeyDown(Keys.Space) && curr.IsKeyUp(Keys.Space)) { CurrentState = State.Paused; return; } //Enemies. for (int i = Enemies.Count - 1; i >= 0; --i) { var enemy = Enemies[i]; if (enemy.CurrentState == GameObject.State.Dead) { Enemies.RemoveAt(i); continue; } enemy.Update(gt); } //Arrows. for (int i = PlayerArrows.Count - 1; i >= 0; --i) { var arrow = PlayerArrows[i]; if (arrow.CurrentState == GameObject.State.Dead) { PlayerArrows.RemoveAt(i); continue; } arrow.Update(gt); } //Player. Player.Update(gt); //Check collisions. //Enemies -> Arrows foreach (var enemy in Enemies) { foreach (var arrow in PlayerArrows) { if (enemy.CheckCollisionArrow(arrow)) { enemy.Kill(); } } } //Enemies -> Player foreach (var enemy in Enemies) { if (enemy.CheckCollisionPlayer(Player)) { enemy.Kill(); Player.Hit(); } } CheckGameOver(); CheckVictory(); }