Ejemplo n.º 1
0
        public override void DoUpdate(GameTime gameTime)
        {
            Map.LayerManager.AddDrawablePoints(ListAttackTerrain, Color.FromNonPremultiplied(255, 0, 0, 190));

            if (ActiveInputManager.InputConfirmPressed())
            {
                if (ListAttackChoice.Contains(Map.CursorPosition))
                {
                    for (int X = 0; X < CurrentAttack.MAPAttributes.ListChoice.Count; X++)
                    {
                        for (int Y = 0; Y < CurrentAttack.MAPAttributes.ListChoice[X].Count; Y++)
                        {
                            if (CurrentAttack.MAPAttributes.ListChoice[X][Y])
                            {
                                ListAttackChoice.Add(new Vector3(Map.CursorPosition.X + X - CurrentAttack.MAPAttributes.Width,
                                                                 Map.CursorPosition.Y + Y - CurrentAttack.MAPAttributes.Height, Map.CursorPosition.Z));
                            }
                        }
                    }

                    Map.sndConfirm.Play();
                }
                else
                {
                    Map.sndDeny.Play();
                }
            }
            else
            {
                Map.CursorControl(ActiveInputManager);//Move the cursor
                BattlePreview.UpdateUnitDisplay();
            }
        }
Ejemplo n.º 2
0
        private void UpdateSquadMemberSelection(GameTime gameTime)
        {
            if (ActiveInputManager.InputDownPressed())
            {
                Map.BattleMenuCursorIndexSecond += Map.BattleMenuCursorIndexSecond < ActiveSquad.UnitsAliveInSquad - 1 ? 1 : 0;
                Map.sndSelection.Play();
            }
            else if (ActiveInputManager.InputUpPressed())
            {
                Map.BattleMenuCursorIndexSecond -= Map.BattleMenuCursorIndexSecond > 1 ? 1 : 0;
                Map.sndSelection.Play();
            }
            if (ActiveInputManager.InputConfirmPressed())
            {
                if (Map.BattleMenuCursorIndexSecond == 1)
                {
                    Map.BattleMenuCursorIndexThird = (int)ActiveSquad.CurrentWingmanA.BattleDefenseChoice;
                }
                else if (Map.BattleMenuCursorIndexSecond == 2)
                {
                    Map.BattleMenuCursorIndexThird = (int)ActiveSquad.CurrentWingmanB.BattleDefenseChoice;
                }

                Map.BattleMenuStage = BattleMenuStages.ChooseSquadMemberDefense;
                Map.sndConfirm.Play();
            }
            else if (ActiveInputManager.InputCancelPressed())
            {
                Map.BattleMenuStage = BattleMenuStages.Default;
                Map.sndCancel.Play();
            }
        }
Ejemplo n.º 3
0
        private void UpdateSupportSelection(GameTime gameTime)
        {
            if (ActiveInputManager.InputUpPressed())
            {
                --TargetSquadSupport.ActiveSquadSupportIndex;
                if (TargetSquadSupport.ActiveSquadSupportIndex < -1)
                {
                    TargetSquadSupport.ActiveSquadSupportIndex = TargetSquadSupport.Count - 1;
                }

                Map.sndSelection.Play();
            }
            else if (ActiveInputManager.InputDownPressed())
            {
                ++TargetSquadSupport.ActiveSquadSupportIndex;
                if (TargetSquadSupport.ActiveSquadSupportIndex >= TargetSquadSupport.Count)
                {
                    TargetSquadSupport.ActiveSquadSupportIndex = -1;
                }

                Map.sndSelection.Play();
            }
            else if (ActiveInputManager.InputConfirmPressed())
            {
                Map.BattleMenuStage = BattleMenuStages.Default;
                Map.sndConfirm.Play();
            }
        }
Ejemplo n.º 4
0
 public override void DoUpdate(GameTime gameTime)
 {
     if (ActiveInputManager.InputConfirmPressed())
     {
         if (ConfirmMenuChoice == 0)
         {
             RemoveAllActionPanels();
             AddToPanelListAndSelect(new ActionPanelPhaseChange(Map));
         }
         else if (ConfirmMenuChoice == 1)
         {
             RemoveFromPanelList(this);
         }
     }
     else if (ActiveInputManager.InputCancelPressed())
     {
         RemoveFromPanelList(this);
     }
     else if (ActiveInputManager.InputLeftPressed())
     {
         if (ConfirmMenuChoice == 1)
         {
             ConfirmMenuChoice = 0;
         }
     }
     else if (ActiveInputManager.InputRightPressed())
     {
         if (ConfirmMenuChoice == 0)
         {
             ConfirmMenuChoice = 1;
         }
     }
 }
Ejemplo n.º 5
0
        private void UpdateFormationSelection(GameTime gameTime)
        {
            if (ActiveInputManager.InputUpPressed())
            {
                Map.BattleMenuCursorIndexSecond += Map.BattleMenuCursorIndexSecond < 1 ? 1 : 0;
                Map.sndSelection.Play();
            }
            else if (ActiveInputManager.InputDownPressed())
            {
                Map.BattleMenuCursorIndexSecond -= Map.BattleMenuCursorIndexSecond > 0 ? 1 : 0;
                Map.sndSelection.Play();
            }
            if (ActiveInputManager.InputConfirmPressed())
            {
                if (Map.BattleMenuCursorIndexSecond == 0)
                {
                    Map.BattleMenuDefenseFormationChoice = FormationChoices.Focused;
                }
                else if (Map.BattleMenuCursorIndexSecond == 1)
                {
                    Map.BattleMenuDefenseFormationChoice = FormationChoices.Spread;
                }

                Map.UpdateWingmansSelection(TargetSquad, ActiveSquad, Map.BattleMenuDefenseFormationChoice);

                Map.BattleMenuStage = BattleMenuStages.Default;
                Map.sndConfirm.Play();
            }
        }
Ejemplo n.º 6
0
 public override void DoUpdate(GameTime gameTime)
 {
     if (ActiveInputManager.InputConfirmPressed())
     {
         CancelPanel();
     }
 }
Ejemplo n.º 7
0
        public override void DoUpdate(GameTime gameTime)
        {
            switch (ActiveSquad.CurrentLeader.CurrentAttack.MAPAttributes.Property)
            {
            case WeaponMAPProperties.Spread:
                if (ActiveInputManager.InputConfirmPressed())
                {
                }
                else
                {
                    Map.CursorControl(ActiveInputManager);    //Move the cursor
                }
                break;

            case WeaponMAPProperties.Direction:
                Map.SelectMAPEnemies(ActivePlayerIndex, ActiveSquadIndex, ListAttackChoice);
                Map.sndConfirm.Play();
                break;

            case WeaponMAPProperties.Targeted:
                if (ActiveInputManager.InputConfirmPressed())
                {
                    Map.SelectMAPEnemies(ActivePlayerIndex, ActiveSquadIndex, ListAttackChoice);
                    Map.sndConfirm.Play();
                }
                else
                {
                    Map.CursorControl(ActiveInputManager);    //Move the cursor
                    BattlePreview.UpdateUnitDisplay();
                }
                break;
            }
        }
Ejemplo n.º 8
0
        public override void DoUpdate(GameTime gameTime)
        {
            Map.CursorControl(ActiveInputManager);//Move the cursor
            Map.LayerManager.AddDrawablePoints(ListTerrainChoice, Color.FromNonPremultiplied(0, 128, 0, 190));

            if (ActiveInputManager.InputConfirmPressed())
            {
                //Find if a current player Unit is under the cursor.
                int CursorSelect = Map.CheckForSquadAtPosition(Map.ActivePlayerIndex, Map.CursorPosition, Vector3.Zero);

                if (CursorSelect >= 0 && ListMVChoice.Contains(Map.CursorPosition))
                {
                    bool CanResupply = false;

                    for (int U = Map.ListPlayer[Map.ActivePlayerIndex].ListSquad[CursorSelect].UnitsAliveInSquad - 1; U >= 0; --U)
                    {
                        if (Map.ListPlayer[Map.ActivePlayerIndex].ListSquad[CursorSelect][U].HP < Map.ListPlayer[Map.ActivePlayerIndex].ListSquad[CursorSelect][U].MaxHP)
                        {
                            //Refill EN.
                            Map.ListPlayer[Map.ActivePlayerIndex].ListSquad[CursorSelect][U].RefillEN(Map.ListPlayer[Map.ActivePlayerIndex].ListSquad[CursorSelect][U].MaxEN);
                            //Refill Weapons.
                            foreach (Core.Attacks.Attack ActiveAttack in Map.ListPlayer[Map.ActivePlayerIndex].ListSquad[CursorSelect][U].ListAttack)
                            {
                                ActiveAttack.Ammo = ActiveAttack.MaxAmmo;
                            }
                            //Drop Morale by 10 points.
                            Map.ListPlayer[Map.ActivePlayerIndex].ListSquad[CursorSelect][U].Pilot.Will = Math.Max(50, Map.ListPlayer[Map.ActivePlayerIndex].ListSquad[CursorSelect][U].Pilot.Will - 10);

                            CanResupply = true;
                        }
                    }

                    if (CanResupply)
                    {
                        ActiveSquad.EndTurn();
                        RemoveAllSubActionPanels();
                    }
                }
            }
        }
Ejemplo n.º 9
0
 public override void DoUpdate(GameTime gameTime)
 {
     if (ActiveInputManager.InputCancelPressed())
     {
         RemoveFromPanelList(this);
     }
     else if (ActiveInputManager.InputConfirmPressed())
     {
         Map.CursorPosition        = ListMapMenuUnitPosition[MapUnitListChoice].Item2;
         Map.CursorPositionVisible = Map.CursorPosition;
         Map.PushScreen(new BattleMapScreen.CenterOnSquadCutscene(Map.CenterCamera, Map, Map.CursorPosition));
     }
     else if (ActiveInputManager.InputUpPressed())
     {
         MapUnitListChoice -= (MapUnitListChoice > 0) ? 1 : 0;
     }
     else if (ActiveInputManager.InputDownPressed())
     {
         ++MapUnitListChoice;
         if (MapUnitListChoice >= UnitListMaxPerPage)
         {
             MapUnitListChoice = UnitListMaxPerPage - 1;
         }
         else if ((MapUnitListCurrentPage - 1) * UnitListMaxPerPage + MapUnitListChoice >= ListMapMenuUnitPosition.Count)
         {
             MapUnitListChoice = (ListMapMenuUnitPosition.Count - 1) % UnitListMaxPerPage;
         }
     }
     else if (ActiveInputManager.InputLeftPressed())
     {
         MapUnitListCurrentPage -= (MapUnitListCurrentPage > 1) ? 1 : 0;
     }
     else if (ActiveInputManager.InputRightPressed())
     {
         MapUnitListCurrentPage += (MapUnitListCurrentPage < MapUnitListCurrentPageMax) ? 1 : 0;
     }
 }
Ejemplo n.º 10
0
        private void UpdateDefenseSelection(GameTime gameTime)
        {
            if (ActiveInputManager.InputUpPressed())
            {
                Map.BattleMenuCursorIndexSecond -= Map.BattleMenuCursorIndexSecond > 0 ? 1 : 0;
                Map.sndSelection.Play();
            }
            else if (ActiveInputManager.InputDownPressed())
            {
                Map.BattleMenuCursorIndexSecond += Map.BattleMenuCursorIndexSecond < 2 ? 1 : 0;
                Map.sndSelection.Play();
            }
            if (ActiveInputManager.InputConfirmPressed())
            {
                if (Map.BattleMenuCursorIndexSecond == 0)
                {
                    TargetSquad.CurrentLeader.UpdateNonMAPAttacks(TargetSquad.Position, ActiveSquad.Position, ActiveSquad.ArrayMapSize, ActiveSquad.CurrentMovement, true);
                    Map.WeaponIndexOld = TargetSquad.CurrentLeader.AttackIndex;
                    TargetSquad.CurrentLeader.AttackIndex = 0;//Make sure you select the first weapon.
                    Map.BattleMenuStage = BattleMenuStages.ChooseAttack;
                }
                else if (Map.BattleMenuCursorIndexSecond == 1)
                {
                    TargetSquad.CurrentLeader.BattleDefenseChoice = Unit.BattleDefenseChoices.Defend;
                    Map.BattleMenuStage = BattleMenuStages.Default;
                    ActiveSquad.CurrentLeader.AttackAccuracy = Map.CalculateHitRate(ActiveSquad.CurrentLeader, ActiveSquad, TargetSquad.CurrentLeader, TargetSquad, Unit.BattleDefenseChoices.Defend).ToString() + "%";
                }
                else if (Map.BattleMenuCursorIndexSecond == 2)
                {
                    TargetSquad.CurrentLeader.BattleDefenseChoice = Unit.BattleDefenseChoices.Evade;
                    Map.BattleMenuStage = BattleMenuStages.Default;
                    ActiveSquad.CurrentLeader.AttackAccuracy = Map.CalculateHitRate(ActiveSquad.CurrentLeader, ActiveSquad, TargetSquad.CurrentLeader, TargetSquad, Unit.BattleDefenseChoices.Evade).ToString() + "%";
                }

                Map.sndConfirm.Play();
            }
        }
Ejemplo n.º 11
0
        private void UpdateFormationSelection(GameTime gameTime)
        {
            if (ActiveInputManager.InputUpPressed())
            {
                Map.BattleMenuCursorIndexSecond -= Map.BattleMenuCursorIndexSecond > 0 ? 1 : 0;
                Map.sndSelection.Play();
            }
            else if (ActiveInputManager.InputDownPressed())
            {
                Map.BattleMenuCursorIndexSecond += Map.BattleMenuCursorIndexSecond < 1 ? 1 : 0;
                Map.sndSelection.Play();
            }
            if (ActiveInputManager.InputConfirmPressed())
            {
                if (Map.BattleMenuCursorIndexSecond == 0)
                {
                    Map.BattleMenuOffenseFormationChoice = FormationChoices.Focused;
                }
                else if (Map.BattleMenuCursorIndexSecond == 1)
                {
                    Map.BattleMenuOffenseFormationChoice = FormationChoices.Spread;
                }

                Map.UpdateWingmansSelection(ActiveSquad, TargetSquad, Map.BattleMenuOffenseFormationChoice);

                if (ActiveSquad.CurrentWingmanA != null)
                {
                    if (ActiveSquad.CurrentWingmanA.CanAttack)
                    {
                        ActiveSquad.CurrentWingmanA.BattleDefenseChoice = Unit.BattleDefenseChoices.Attack;
                    }
                    else
                    {
                        ActiveSquad.CurrentWingmanA.BattleDefenseChoice = Unit.BattleDefenseChoices.Defend;
                    }
                }
                if (ActiveSquad.CurrentWingmanB != null)
                {
                    if (ActiveSquad.CurrentWingmanB.CanAttack)
                    {
                        ActiveSquad.CurrentWingmanB.BattleDefenseChoice = Unit.BattleDefenseChoices.Attack;
                    }
                    else
                    {
                        ActiveSquad.CurrentWingmanB.BattleDefenseChoice = Unit.BattleDefenseChoices.Defend;
                    }
                }

                //Simulate defense reaction.
                PrepareDefenseSquadForBattle(Map, ActivePlayerIndex, ActiveSquadIndex, TargetPlayerIndex, TargetSquadIndex);
                PrepareAttackSquadForBattle(Map, ActiveSquad, TargetSquad);

                Map.BattleMenuStage = BattleMenuStages.Default;
                Map.sndConfirm.Play();
            }
            else if (ActiveInputManager.InputCancelPressed())
            {
                Map.BattleMenuStage = BattleMenuStages.Default;
                Map.sndCancel.Play();
            }
        }
Ejemplo n.º 12
0
        private void UpdateAttackSelection(GameTime gameTime)
        {
            if (ActiveInputManager.InputUpPressed())
            {
                --ActiveSquad.CurrentLeader.AttackIndex;
                if (ActiveSquad.CurrentLeader.AttackIndex < 0)
                {
                    ActiveSquad.CurrentLeader.AttackIndex = ListAttackActiveSquadSupport.Count - 1;
                }

                Map.sndSelection.Play();
            }
            else if (ActiveInputManager.InputDownPressed())
            {
                ++ActiveSquad.CurrentLeader.AttackIndex;
                if (ActiveSquad.CurrentLeader.AttackIndex >= ListAttackActiveSquadSupport.Count)
                {
                    ActiveSquad.CurrentLeader.AttackIndex = 0;
                }

                Map.sndSelection.Play();
            }
            else if (ActiveInputManager.InputMovePressed())
            {
                int YStep = 25;

                for (int A = 0; A < ListAttackActiveSquadSupport.Count; ++A)
                {
                    int YStart = 122 + A * YStep;
                    if (ActiveInputManager.IsInZone(0, YStart, Constants.Width, YStart + YStep))
                    {
                        ActiveSquad.CurrentLeader.AttackIndex = A;
                        break;
                    }
                }
            }
            //Exit the weapon panel.
            else if (ActiveInputManager.InputConfirmPressed())
            {
                if (ActiveSquad.CurrentLeader.CurrentAttack.CanAttack)
                {
                    if (ActiveSquad.CurrentLeader.CurrentAttack.Pri == WeaponPrimaryProperty.ALL)
                    {
                        Map.BattleMenuOffenseFormationChoice = FormationChoices.ALL;
                    }

                    Map.BattleMenuStage = BattleMenuStages.Default;
                    ActiveSquad.CurrentLeader.AttackAccuracy = Map.CalculateHitRate(ActiveSquad.CurrentLeader, ActiveSquad,
                                                                                    TargetSquad.CurrentLeader, TargetSquad, TargetSquad.CurrentLeader.BattleDefenseChoice).ToString() + "%";
                    if (!Map.ListPlayer[TargetPlayerIndex].IsPlayerControlled)
                    {
                        PrepareDefenseSquadForBattle(Map, ActivePlayerIndex, ActiveSquadIndex, TargetPlayerIndex, TargetSquadIndex);
                    }

                    Map.sndConfirm.Play();
                }
                else
                {
                    Map.sndDeny.Play();
                }
            }
            else if (ActiveInputManager.InputCancelPressed())
            {
                Map.BattleMenuStage = BattleMenuStages.Default;
                Map.sndCancel.Play();
            }
        }
Ejemplo n.º 13
0
        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();
            }
        }