private void UpdateBaseMenu(GameTime gameTime) { if (ActiveInputManager.InputLeftPressed()) { Map.BattleMenuCursorIndex--; if (Map.BattleMenuCursorIndex == BattleMenuChoices.Support) {//Can't pick Support. (No Support Squads nearby) if (ActiveSquadSupport.Count <= 0) { Map.BattleMenuCursorIndex = BattleMenuChoices.Formation; } } if (Map.BattleMenuCursorIndex == BattleMenuChoices.Formation) {//Can't pick Formation. (No wingmans or ALL attack) if (ActiveSquad.UnitsAliveInSquad == 1 || Map.BattleMenuDefenseFormationChoice == FormationChoices.ALL) { Map.BattleMenuCursorIndex = BattleMenuChoices.Action; } } if (Map.BattleMenuCursorIndex < BattleMenuChoices.Start) { Map.BattleMenuCursorIndex = BattleMenuChoices.Demo; } Map.sndSelection.Play(); } else if (ActiveInputManager.InputRightPressed()) { Map.BattleMenuCursorIndex++; if (Map.BattleMenuCursorIndex == BattleMenuChoices.Formation) {//Can't pick Formation. (No wingmans or ALL attack) if (ActiveSquad.UnitsAliveInSquad == 1 || Map.BattleMenuDefenseFormationChoice == FormationChoices.ALL) { Map.BattleMenuCursorIndex = BattleMenuChoices.Support; } } if (Map.BattleMenuCursorIndex == BattleMenuChoices.Support) {//Can't pick Support. (No Support Squads nearby) if (ActiveSquadSupport.Count <= 0) { Map.BattleMenuCursorIndex = BattleMenuChoices.Demo; } } if (Map.BattleMenuCursorIndex > BattleMenuChoices.Demo) { Map.BattleMenuCursorIndex = BattleMenuChoices.Start; } Map.sndSelection.Play(); } else if (ActiveInputManager.InputMovePressed()) { if (ActiveInputManager.IsInZone(0, Constants.Height - 30, 125, Constants.Height)) { Map.BattleMenuCursorIndex = BattleMenuChoices.Start; } else if (ActiveInputManager.IsInZone(125, Constants.Height - 30, 255, Constants.Height)) { Map.BattleMenuCursorIndex = BattleMenuChoices.Action; } else if (ActiveInputManager.IsInZone(255, Constants.Height - 30, 385, Constants.Height) && (ActiveSquad.UnitsAliveInSquad > 1 && Map.BattleMenuDefenseFormationChoice != FormationChoices.ALL)) { Map.BattleMenuCursorIndex = BattleMenuChoices.Formation; } else if (ActiveInputManager.IsInZone(385, Constants.Height - 30, 510, Constants.Height) && ActiveSquadSupport.Count > 0) { Map.BattleMenuCursorIndex = BattleMenuChoices.Support; } else if (ActiveInputManager.IsInZone(510, Constants.Height - 30, 635, Constants.Height)) { Map.BattleMenuCursorIndex = BattleMenuChoices.Demo; } } else if (ActiveInputManager.InputCommand1Pressed()) { Map.SpiritMenu.InitSpiritScreen(ActiveSquad); Map.BattleMenuStage = BattleMenuStages.Default; } else if (ActiveInputManager.InputCommand2Pressed()) { //Constants.ShowAnimation = !Constants.ShowAnimation; Map.sndSelection.Play(); } if (ActiveInputManager.InputConfirmPressed()) { switch (Map.BattleMenuCursorIndex) { //Begin attack. case BattleMenuChoices.Start: StartBattle(); break; case BattleMenuChoices.Action: if (ActiveSquad.UnitsAliveInSquad == 1) { ActiveSquad.CurrentLeader.UpdateNonMAPAttacks(ActiveSquad.Position, TargetSquad.Position, TargetSquad.ArrayMapSize, TargetSquad.CurrentMovement, ActiveSquad.CanMove); ActiveSquad.CurrentLeader.AttackIndex = 0; //Make sure you select the first weapon. Map.BattleMenuStage = BattleMenuStages.ChooseAttack; } else { Map.BattleMenuStage = BattleMenuStages.ChooseSquadMember; //Choose squad member. Map.BattleMenuCursorIndexSecond = 1; //Leader is attacking, can't put him on defend or evade. } break; case BattleMenuChoices.Formation: Map.BattleMenuCursorIndexSecond = (int)Map.BattleMenuOffenseFormationChoice; Map.BattleMenuStage = BattleMenuStages.ChooseFormation; break; case BattleMenuChoices.Support: Map.BattleMenuCursorIndexSecond = 0; ActiveSquadSupportIndexOld = ActiveSquadSupport.ActiveSquadSupportIndex; Map.BattleMenuStage = BattleMenuStages.ChooseSupport; break; case BattleMenuChoices.Demo: Constants.ShowAnimation = !Constants.ShowAnimation; break; } Map.sndConfirm.Play(); } else if (ActiveInputManager.InputCancelPressed()) { CancelPanel(); } }