public override void Update(GameTime gameTime)
        {
            if (SelectedAlphaAppearing)
            {//Increment SelectedAlpha before comparing it to 200
                if (++SelectedAlpha >= 200)
                {
                    SelectedAlphaAppearing = false;
                }
            }
            else
            {//Decrement SelectedAlpha before comparing it to 55
                if (--SelectedAlpha <= 55)
                {
                    SelectedAlphaAppearing = true;
                }
            }
            if (KeyboardHelper.InputUpPressed())
            {
                if (Menu[SelectedChoice].Open)
                {
                    if (SubMenu > -1)
                    {
                        SubMenu--;
                    }
                    else
                    {
                        //Decrement SelectedChoice before comparing it to 0
                        if (--SelectedChoice < 0)
                        {
                            SelectedChoice = Menu.Count() - 1;
                        }
                        SubMenu = -1;
                    }
                }
                else
                {
                    SelectedChoice -= SelectedChoice > 0 ? 1 : 0;
                    if (Menu[SelectedChoice].Open)
                    {
                        SubMenu = Menu[SelectedChoice].Categories.Count() - 1;
                    }
                }
                Up.Play();
            }
            else if (KeyboardHelper.InputDownPressed())
            {
                if (Menu[SelectedChoice].Open)
                {
                    if (SubMenu < Menu[SelectedChoice].Categories.Count() - 1)
                    {
                        SubMenu++;
                    }
                    else
                    {
                        SelectedChoice++;
                        SubMenu = -1;
                    }
                }
                else
                //Increment SelectedChoice before comparing it to maximum value.
                if (++SelectedChoice > Menu.Count() - 1)
                {
                    SelectedChoice = 0;
                }
                Down.Play();
            }
            else if (KeyboardHelper.InputConfirmPressed())
            {
                switch ((MenuChoice)SelectedChoice)
                {
                case MenuChoice.StartBattle:
                    GameScreen.PushScreen(new UnitSelection(3));

                    GameScreen.RemoveScreen(this);
                    break;

                case MenuChoice.View:
                    if (SubMenu == 0)    //Pilot
                    {
                    }
                    else if (SubMenu == 1)    //Units
                    {
                    }
                    else if (SubMenu == 2)    //Parts
                    {
                    }
                    GameScreen.PushScreen(new Shop());
                    break;

                case MenuChoice.Customize:
                    if (SubMenu == 0)    //Unit
                    {
                        GameScreen.PushScreen(new SquadSelection());
                    }
                    else if (SubMenu == 1)    //Pilot
                    {
                        GameScreen.PushScreen(new PilotSelection());
                    }
                    else if (SubMenu == 2)    //Parts
                    {
                        //GameScreen.PushScreen(new PartsEquipScreen(serviceProvider, UnitArmoredCore.ListUnitArmoredCore[0]));
                    }
                    else if (SubMenu == 3)    //Shop
                    {
                        GameScreen.PushScreen(new Shop());
                    }
                    else if (SubMenu == 4)    //Forge
                    {
                        GameScreen.PushScreen(new Forge());
                    }
                    break;

                case MenuChoice.Data:

                    break;

                case MenuChoice.Multiplayer:
                    GameScreen.PushScreen(new MultiplayerScreen());
                    break;

                case MenuChoice.Exit:
                    GameScreen.RemoveScreen(this);
                    break;
                }
            }
        }
        public override void Update(GameTime gameTime)
        {
            if (CursorAlphaAppearing)
            {//Increment SelectedAlpha before comparing it to 200
                CursorAlpha += 5;
                if (CursorAlpha >= 200)
                {
                    CursorAlphaAppearing = false;
                }
            }
            else
            {//Decrement SelectedAlpha before comparing it to 55
                CursorAlpha -= 5;
                if (CursorAlpha <= 55)
                {
                    CursorAlphaAppearing = true;
                }
            }

            #region Stage == -1
            if (Stage == -1)
            {
                if (KeyboardHelper.InputUpPressed())
                {
                    if ((int)SelectedChoice < 2)
                    {
                        SelectedChoice -= (int)SelectedChoice > 0 ? 1 : 0;
                    }
                    else if ((int)SelectedChoice < 4)
                    {
                        SelectedChoice -= (int)SelectedChoice > 2 ? 1 : 0;
                    }
                }
                else if (KeyboardHelper.InputDownPressed())
                {
                    if ((int)SelectedChoice < 2)
                    {
                        SelectedChoice += (int)SelectedChoice < 1 ? 1 : 0;
                    }
                    else if ((int)SelectedChoice < 4)
                    {
                        SelectedChoice += (int)SelectedChoice < 3 ? 1 : 0;
                    }
                }
                if (KeyboardHelper.InputLeftPressed() && (int)SelectedChoice >= 2)
                {
                    SelectedChoice = SelectChoice.PlayerList;
                }
                else if (KeyboardHelper.InputRightPressed() && (int)SelectedChoice < 2)
                {
                    SelectedChoice = SelectChoice.ChangeMap;
                }
                else if (KeyboardHelper.InputConfirmPressed())
                {
                    switch (SelectedChoice)
                    {
                    case SelectChoice.PlayerList:
                        PlayerIndex = 0;
                        break;

                    case SelectChoice.ChangeMap:
                        CursorMap = CurrentMap;
                        break;

                    case SelectChoice.StartGame:
                        GameScreen.PushScreen(new DeathmatchMap(ArrayMapFile[CurrentMap].FullName, ListPlayer, 1));
                        GameScreen.RemoveScreen(this);
                        break;
                    }
                    Stage = 0;
                }
            }
            #endregion
            else
            {
                switch (SelectedChoice)
                {
                    #region Messenger
                case SelectChoice.Messenger:

                    Microsoft.Xna.Framework.Input.Keys[] Input = KeyboardHelper.KeyPressed();
                    for (int i = 0; i < Input.Count(); i++)
                    {
                        if (KeyboardHelper.KeyPressed(Input[i]))
                        {
                            if (Input[i] == Microsoft.Xna.Framework.Input.Keys.Space)
                            {
                                Message     = Message.Insert(MessageCursorIndex, " ");
                                MessageDraw = MessageDraw.Insert(MessageCursorIndex, " ");
                                MessageCursorIndex++;
                                UpdateMessengerCursor();
                            }
                            else if (Input[i] == Microsoft.Xna.Framework.Input.Keys.Enter)
                            {
                                Messenger.Add(Message);
                                Message            = "";
                                MessageDraw        = "";
                                MessageCursorIndex = 0;
                            }
                            else if (Input[i] == Microsoft.Xna.Framework.Input.Keys.Back)
                            {
                                if (Message.Length > 0)
                                {
                                    MessageCursorIndex--;
                                    Message     = Message.Remove(MessageCursorIndex, 1);
                                    MessageDraw = MessageDraw.Remove(MessageCursorIndex, 1);
                                    UpdateMessengerCursor();
                                }
                            }
                            else if ((int)Input[i] >= 65 && (int)Input[i] <= 90)
                            {
                                Message     = Message.Insert(MessageCursorIndex, Input[i].ToString());
                                MessageDraw = MessageDraw.Insert(MessageCursorIndex, Input[i].ToString());
                                MessageCursorIndex++;
                                UpdateMessengerCursor();
                            }
                            else if (Input[i] == Microsoft.Xna.Framework.Input.Keys.Left)
                            {
                                MessageCursorIndex -= MessageCursorIndex > 0 ? 1 : 0;
                                UpdateMessengerCursor();
                            }
                            else if (Input[i] == Microsoft.Xna.Framework.Input.Keys.Right)
                            {
                                MessageCursorIndex += MessageCursorIndex < Message.Count() ? 1 : 0;
                                UpdateMessengerCursor();
                            }
                        }
                    }
                    if (KeyboardHelper.InputCancelPressed())
                    {
                        Stage = -1;
                    }
                    break;

                    #endregion
                    #region PlayerList
                case SelectChoice.PlayerList:
                    switch (Stage)
                    {
                    case 0:        //Player selection
                        if (KeyboardHelper.InputUpPressed())
                        {
                            PlayerIndex -= PlayerIndex > 0 ? 1 : 0;
                        }
                        else if (KeyboardHelper.InputDownPressed())
                        {
                            PlayerIndex += PlayerIndex < Math.Min(ListPlayer.Count, ListMap[CursorMap].NumberOfPlayers - 1) ? 1 : 0;
                        }
                        if (KeyboardHelper.InputLeftPressed() ||
                            KeyboardHelper.InputRightPressed() ||
                            KeyboardHelper.InputConfirmPressed())
                        {
                            SubMenu = 0;
                            Stage++;
                        }
                        else if (KeyboardHelper.InputCancelPressed())
                        {
                            Stage = -1;
                        }
                        break;

                    case 1:        //SubMenu selection
                        if (KeyboardHelper.InputUpPressed())
                        {
                            PlayerIndex -= PlayerIndex > 0 ? 1 : 0;
                        }
                        else if (KeyboardHelper.InputDownPressed())
                        {
                            PlayerIndex += PlayerIndex < Math.Min(ListPlayer.Count, ListMap[CursorMap].NumberOfPlayers - 1) ? 1 : 0;
                            if (PlayerIndex == ListMap[CursorMap].NumberOfPlayers - 1 && ListPlayer.Count < ListMap[CursorMap].NumberOfPlayers)
                            {
                                SubMenu = 0;
                            }
                        }
                        if (KeyboardHelper.InputLeftPressed() && (PlayerIndex != ListMap[CursorMap].NumberOfPlayers - 1 || ListPlayer.Count >= ListMap[CursorMap].NumberOfPlayers))
                        {
                            SubMenu -= SubMenu > 0 ? 1 : 0;
                        }
                        else if (KeyboardHelper.InputRightPressed() && (PlayerIndex != ListMap[CursorMap].NumberOfPlayers - 1 || ListPlayer.Count >= ListMap[CursorMap].NumberOfPlayers))
                        {
                            SubMenu += SubMenu < 2 ? 1 : 0;
                        }
                        else if (KeyboardHelper.InputCancelPressed())
                        {
                            Stage--;
                        }
                        else if (KeyboardHelper.InputConfirmPressed())
                        {
                            Stage++;
                            PlayerOptionIndex = 0;
                            if (SubMenu == 0)
                            {        //If the index is on the last player or on an empty space
                                if (PlayerIndex == ListPlayer.Count - 1 || PlayerIndex >= ListPlayer.Count)
                                {
                                    Types = new PlayerTypes[] { PlayerTypes.Closed, PlayerTypes.Human, PlayerTypes.CPUEasy }
                                }
                                ;
                                else
                                {
                                    Types = new PlayerTypes[] { PlayerTypes.Human, PlayerTypes.CPUEasy }
                                };
                            }
                        }
                        break;

                    case 2:        //PlayerOption selection
                        switch (SubMenu)
                        {
                        case 0:            //Player type
                            if (KeyboardHelper.InputUpPressed())
                            {
                                PlayerOptionIndex -= PlayerOptionIndex > 0 ? 1 : 0;
                            }
                            else if (KeyboardHelper.InputDownPressed())
                            {
                                PlayerOptionIndex += PlayerOptionIndex < Types.Count() - 1 ? 1 : 0;
                            }
                            else if (KeyboardHelper.InputConfirmPressed())
                            {
                                if (PlayerIndex < ListPlayer.Count)
                                {
                                    if (Types[PlayerOptionIndex] == PlayerTypes.Closed)
                                    {
                                        ListPlayer.RemoveAt(PlayerIndex);
                                    }
                                    else
                                    {
                                        ListPlayer[PlayerIndex].PType = Types[PlayerOptionIndex];
                                    }
                                }
                                else
                                {
                                    if (Types[PlayerOptionIndex] == PlayerTypes.Closed)
                                    {
                                        ListPlayer.RemoveAt(PlayerIndex);
                                    }
                                    else
                                    {
                                        List <Unit> ListUnit;
                                        ListUnit = new List <Unit>();

                                        /*ListUnit.Add(new UnitArmoredCore(UnitArmoredCore.ListUnitArmoredCore[0]));
                                         * ListUnit[0].Init();
                                         * ListUnit.Add(new UnitArmoredCore(UnitArmoredCore.ListUnitArmoredCore[0]));
                                         * ListUnit[1].Init();
                                         * ListUnit.Add(new UnitArmoredCore(UnitArmoredCore.ListUnitArmoredCore[0]));
                                         * ListUnit[2].Init();*/
                                        ListPlayer.Add(new Player("New player", Types[PlayerOptionIndex], ListUnit, 0));
                                    }
                                }
                                Stage--;
                            }
                            else if (KeyboardHelper.InputCancelPressed())
                            {
                                Stage--;
                            }
                            break;

                        case 1:            //Team
                            if (KeyboardHelper.InputUpPressed())
                            {
                                PlayerOptionIndex -= PlayerOptionIndex > 0 ? 1 : 0;
                            }
                            else if (KeyboardHelper.InputDownPressed())
                            {
                                PlayerOptionIndex += PlayerOptionIndex < ListMap[CursorMap].NumberOfTeam - 1 ? 1 : 0;
                            }
                            else if (KeyboardHelper.InputConfirmPressed())
                            {
                                ListPlayer[PlayerIndex].Team = PlayerOptionIndex;
                                Stage--;
                            }
                            else if (KeyboardHelper.InputCancelPressed())
                            {
                                Stage--;
                            }
                            break;
                        }
                        break;
                    }
                    break;

                    #endregion
                case SelectChoice.ChangeMap:
                    if (KeyboardHelper.InputUpPressed())
                    {
                        CursorMap--;
                        if (CursorMap < 0)
                        {
                            CursorMap = ListMap.Count - 1;
                        }
                    }
                    else if (KeyboardHelper.InputDownPressed())
                    {
                        CursorMap++;
                        if (CursorMap > ListMap.Count - 1)
                        {
                            CursorMap = 0;
                        }
                    }
                    else if (KeyboardHelper.InputConfirmPressed())
                    {
                        CurrentMap = CursorMap;
                        Stage--;
                    }
                    else if (KeyboardHelper.InputCancelPressed())
                    {
                        Stage--;
                    }
                    break;
                }
            }
            if (KeyboardHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Escape))
            {
                GameScreen.RemoveScreen(this);
            }
        }
Example #3
0
        public override void Update(GameTime gameTime)
        {
            if (Stage == -1)
            {
                if (KeyboardHelper.InputUpPressed())
                {
                    if (CursorIndex > 0)
                    {
                        CursorIndex--;
                    }
                }
                else if (KeyboardHelper.InputDownPressed())
                {
                    if (CursorIndex < 8 && CursorIndex + 1 + (PageCurrent - 1) * 8 < ListUnitSelection.Count)
                    {
                        CursorIndex++;
                    }
                }
                else if (KeyboardHelper.InputLeftPressed())
                {
                    if (PageCurrent > 1)
                    {
                        PageCurrent--;
                    }
                }
                else if (KeyboardHelper.InputRightPressed())
                {
                    if (PageCurrent * 8 < ListUnitSelection.Count)
                    {
                        PageCurrent++;
                    }
                }
                else if (KeyboardHelper.InputConfirmPressed())
                {
                    //If the Unit has a pilot.
                    if (ListUnitSelection[CursorIndex + (PageCurrent - 1) * 8].ArrayCharacterActive[0] != null)
                    {
                        if (ListUnitSelected.Contains(CursorIndex + (PageCurrent - 1) * 8))
                        {
                            ListUnitSelected.Remove(CursorIndex + (PageCurrent - 1) * 8);
                        }
                        else
                        {
                            ListUnitSelected.Add(CursorIndex + (PageCurrent - 1) * 8);
                        }
                        if (ListUnitSelected.Count >= NbUnitsToSelect)
                        {
                            List <Player> ListPlayers    = new List <Player>();
                            List <Unit>   ListPlayerUnit = new List <Unit>();
                            for (int U = 0; U < ListUnitSelected.Count; U++)
                            {
                                ListPlayerUnit.Add(ListUnitSelection[ListUnitSelected[U]]);
                            }
                            ListPlayers.Add(new Player("noname", PlayerTypes.Human, ListPlayerUnit, 0));

                            GameScreen.PushScreen(new DeathmatchMap(ListPlayers));
                            GameScreen.RemoveScreen(this);
                        }
                    }
                    else//Open the pop up menu.
                    {
                        Stage++;
                    }
                }
                else if (KeyboardHelper.InputCancelPressed())
                {
                    GameScreen.RemoveAllScreens();
                    GameScreen.PushScreen(new IntermissionScreen());
                }
            }
            else
            {
                if (KeyboardHelper.InputCancelPressed() || KeyboardHelper.InputConfirmPressed())
                {
                    Stage--;
                }
            }
        }