public void PopState()
        {
            BattleState previousBattleState = states.Pop();

            CurrentBattleState.Resume(previousBattleState);
            Logger.Log(CurrentBattleState.GetType().Name + " battle state resumed");
        }
 public void PushState(BattleState battleState)
 {
     CurrentBattleState.Pause();
     Logger.Log(CurrentBattleState.GetType().Name + " battle state paused");
     states.Push(battleState);
     stateChanged = true;
 }
        protected override void update(Delta delta)
        {
            if (!CurrentBattleState.KeepPartyMembersStatic)
            {
                delta.scaleDelta(MathHelper.Lerp(1.0f, 4.0f, Input.LeftTriggerAmount()));
            }

            if (stateChanged)
            {
                stateChanged = false;
                CurrentBattleState.Start();
                Logger.Log(CurrentBattleState.GetType().Name + " battle state started");
            }

            CurrentBattleState.Update(delta);

            if (CurrentBattleState.KeepPartyMembersStatic)
            {
                RepositionPartyMembers();
            }

            base.update(delta);

            foreach (PartyMember partyMember in PlayerParty)
            {
                partyMember.Update(delta);
            }
            foreach (PartyMember partyMember in EnemyParty)
            {
                partyMember.Update(delta);
            }

            if (CurrentBattleState.BattleStateRenderer != null)
            {
                CurrentBattleState.BattleStateRenderer.Update(delta);
            }

            if (cameraUpdateDelay > 0.0f)
            {
                cameraUpdateDelay -= delta.Time;
                Camera.Update(delta);
            }
            else
            {
                updateCamera(() => Camera.Update(delta));
            }
        }