Ejemplo n.º 1
0
        public static LeaveMeAlone.GameState Update(GameTime gameTime)
        {
            lastMouseState    = currentMouseState;
            currentMouseState = Mouse.GetState();
            if (menu_state == MenuState.main)
            {
                if (lastMouseState.LeftButton == ButtonState.Pressed && currentMouseState.LeftButton == ButtonState.Released)
                {
                    if (newGame.Intersects(currentMouseState.X, currentMouseState.Y))
                    {
                        menu_state = MenuState.opening;
                    }
                    else if (loadGame.Intersects(currentMouseState.X, currentMouseState.Y) && !isNewGame)
                    {
                        LeaveMeAlone.Main_Song_Instance.Stop();
                        LeaveMeAlone.Menu_Song_Instance.Play();
                        return(LeaveMeAlone.GameState.Upgrade);
                    }
                    else if (quit.Intersects(currentMouseState.X, currentMouseState.Y))
                    {
                        return(LeaveMeAlone.GameState.Quit);
                    }
                }
            }
            else if (menu_state == MenuState.opening)
            {
                if (lastMouseState.LeftButton == ButtonState.Pressed && currentMouseState.LeftButton == ButtonState.Released)
                {
                    if (next_intro.Intersects(currentMouseState.X, currentMouseState.Y))
                    {
                        line_number++;
                        opening_timer = 0;
                    }
                    if (skip_intro.Intersects(currentMouseState.X, currentMouseState.Y))
                    {
                        line_number = 1 + opening_monologue.Count();
                    }
                }
                if (line_number == 1 + opening_monologue.Count())
                {
                    menu_state = MenuState.boss;
                }
                else if (opening_timer > 300)
                {
                    if (line_number != opening_monologue.Count())
                    {
                        opening_timer = 0;
                    }
                    line_number++;
                }
                else
                {
                    opening_timer++;
                }
            }
            else
            {
                if (brute.Contains(new Vector2(currentMouseState.X, currentMouseState.Y)))
                {
                    bruteHover      = true;
                    mastermindHover = false;
                    operativeHover  = false;
                    brute.walk();
                    mastermind.idle();
                    operative.idle();
                    current = brute;
                }
                else if (mastermind.Contains(new Vector2(currentMouseState.X, currentMouseState.Y)))
                {
                    bruteHover      = false;
                    mastermindHover = true;
                    operativeHover  = false;
                    brute.idle();
                    mastermind.walk();
                    operative.idle();
                    current = mastermind;
                }
                else if (operative.Contains(new Vector2(currentMouseState.X, currentMouseState.Y)))
                {
                    bruteHover      = false;
                    mastermindHover = false;
                    operativeHover  = true;
                    brute.idle();
                    mastermind.idle();
                    operative.walk();
                    current = operative;
                }
                else
                {
                    current         = null;
                    bruteHover      = false;
                    mastermindHover = false;
                    operativeHover  = false;
                    brute.idle();
                    mastermind.idle();
                    operative.idle();
                }
                brute.Update(gameTime);
                mastermind.Update(gameTime);
                operative.Update(gameTime);
                if (lastMouseState.LeftButton == ButtonState.Pressed && currentMouseState.LeftButton == ButtonState.Released && canFinish)
                {
                    Vector2 mousePos = new Vector2(currentMouseState.X, currentMouseState.Y);
                    if (operative.Contains(mousePos) || brute.Contains(mousePos) || mastermind.Contains(mousePos))
                    {
                        BattleManager.boss = new Character(current.bossType, 1, new Vector2(BattleManager.bossLoc.X, BattleManager.bossLoc.Y));


                        BattleManager.heroes = PartyManager.CreateParty();

                        LeaveMeAlone.Main_Song_Instance.Stop();

                        UpgradeMenu.boughtRooms.Clear();
                        Resources.gold = 1000;
                        Resources.exp  = 0;
                        UpgradeMenu.Init(current);
                        LairManager.Init();
                        PartyManager.Init();
                        LairManager.EndOfGame   = false;
                        LairManager.TowerLevel  = 0;
                        LairManager.MaxLevel    = 3;
                        LairManager.LairRooms   = new List <Room>();
                        LairManager.boughtRooms = new List <UpgradeMenu.ButtonRoom>();

                        //return LeaveMeAlone.GameState.Upgrade;
                        return(LeaveMeAlone.GameState.Upgrade);
                    }
                }
                canFinish = true;
            }
            return(LeaveMeAlone.GameState.Main);
        }
Ejemplo n.º 2
0
        public static LeaveMeAlone.GameState Update(GameTime gameTime)
        {
            lastMouseState    = currentMouseState;
            currentMouseState = Mouse.GetState();

            if (BattleManager.boss.level < 2)
            {
                HandleTutorial();
            }

            if (lastMouseState.LeftButton == ButtonState.Pressed && currentMouseState.LeftButton == ButtonState.Released)
            {
                for (int i = 0; i < TowerLevel; i++)
                {
                    var rectpos = new Rectangle((int)(towerPosition.X + LeaveMeAlone.WindowX / 3), (int)(towerPosition.Y + LeaveMeAlone.WindowY - 100 - 100 * (i + 1)), 400, 100);
                    if (selectedRoomSwapButton.r != null && LairRooms.Contains(selectedRoomSwapButton.r) == false && rectpos.Contains(currentMouseState.X, currentMouseState.Y))
                    {
                        foreach (UpgradeMenu.ButtonRoom oldroom in boughtRooms)
                        {
                            if (oldroom.r == LairRooms[i])
                            {
                                oldroom.used = false;
                            }
                        }
                        LairRooms[i] = selectedRoomSwapButton.r;
                        selectedRoomSwapButton.used = true;
                        tutorial_state = TutorialState.SendWave;
                    }
                }
                if ((EndOfGame && grindwaveBtn.Intersects(currentMouseState.X, currentMouseState.Y)))
                {
                    BattleManager.Init();
                    List <Character> newParty = PartyManager.CreateParty();
                    BattleManager.heroes = newParty;
                    return(LeaveMeAlone.GameState.Battle);
                }
                //next wave
                if (nextwaveBtn.Intersects(currentMouseState.X, currentMouseState.Y))
                {
                    BossBattle = false;
                    if (EndOfGame)
                    {
                        InfoText.changeMessage("PEASANTS!\nOUT OF THE WAY!\nHE'S OURS");
                        //create the last party
                        if (one_last_party)
                        {
                            for (int i = 0; i <= PartyManager.partyQueue.Count(); i++)
                            {
                                PartyManager.partyQueue.Add(null);
                                PartyManager.popParty();
                            }
                            List <Character> FinalParty = new List <Character>();

                            FinalParty.Add(new Character(Character.Type.Knight, 14, new Vector2(sideOffset + sideScaling, topOffset)));
                            FinalParty.Add(new Character(Character.Type.Ranger, 14, new Vector2(sideOffset, topOffset + topScaling * 1)));
                            FinalParty.Add(new Character(Character.Type.Mage, 14, new Vector2(sideOffset + sideScaling, topOffset + topScaling * 2)));
                            FinalParty.Add(new Character(Character.Type.Mage, 14, new Vector2(sideOffset, topOffset + topScaling * 3)));
                            PartyManager.partyQueue.Add(FinalParty);
                            PartyManager.popParty();
                            one_last_party = false;
                        }
                        //push nothing else
                        else
                        {
                            if (PartyManager.popParty())
                            {
                                BattleManager.Init();
                                //Re-Add the party in case the player loses
                                List <Character> FinalParty = new List <Character>();
                                FinalParty.Add(new Character(Character.Type.Knight, 14, new Vector2(sideOffset + sideScaling, topOffset)));
                                FinalParty.Add(new Character(Character.Type.Ranger, 14, new Vector2(sideOffset, topOffset + topScaling * 1)));
                                FinalParty.Add(new Character(Character.Type.Mage, 14, new Vector2(sideOffset + sideScaling, topOffset + topScaling * 2)));
                                FinalParty.Add(new Character(Character.Type.Mage, 14, new Vector2(sideOffset, topOffset + topScaling * 3)));
                                PartyManager.partyQueue.Add(FinalParty);
                                BossBattle = true;
                                return(LeaveMeAlone.GameState.Battle);
                            }
                            else
                            {
                                PartyManager.partyQueue.Add(null);
                                return(LeaveMeAlone.GameState.Lair);
                            }
                        }
                    }
                    //Normally push a party
                    else
                    {
                        for (int i = 0; i < TowerLevel; i++)
                        {
                            LairAttack(LairRooms[i], PartyManager.partyQueue[i]);
                        }
                        Random random    = new Random();
                        int    makeParty = 0;//random.Next(100) % 4;
                        if (makeParty != 1)
                        {
                            List <Character> newParty = PartyManager.CreateParty();
                            PartyManager.partyQueue.Add(newParty);
                        }
                        else
                        {
                            PartyManager.partyQueue.Add(null);
                        }
                        if (PartyManager.popParty())
                        {
                            BattleManager.Init();
                            InfoText.changeMessage("");
                            return(LeaveMeAlone.GameState.Battle);
                        }
                        else
                        {
                            //Should have some sort of interface on screen
                            InfoText.changeMessage("Here they come\n      I can feel them.");
                            return(LeaveMeAlone.GameState.Lair);
                        }
                    }
                }
                if (skillsBtn.Intersects(currentMouseState.X, currentMouseState.Y))
                {
                    return(LeaveMeAlone.GameState.Upgrade);
                }
                if (constructionBtn.Intersects(currentMouseState.X, currentMouseState.Y))
                {
                    if (TowerLevel < MaxLevel)
                    {
                        TowerLevel++;
                        LairRooms.Add(UnconstructedRoom);
                        PartyManager.partyQueue.Add(null);
                        for (int j = PartyManager.partyQueue.Count() - 1; j > 0; j--)
                        {
                            PartyManager.partyQueue[j] = PartyManager.partyQueue[j - 1];
                        }
                        PartyManager.partyQueue[0] = null;
                    }
                    else
                    {
                        InfoText.changeMessage("Max Lair Height");
                        texttimer = 600;
                    }
                    tutorial_state = TutorialState.Build2;
                    return(LeaveMeAlone.GameState.Lair);
                }
                if (mainmenuBtn.Intersects(currentMouseState.X, currentMouseState.Y))
                {
                    MainMenu.init(false);
                    LeaveMeAlone.Menu_Song_Instance.Stop();
                    //UpgradeMenu.boughtRooms.Clear();
                    return(LeaveMeAlone.GameState.Main);
                }
                //checks if a room button was selected
                selected_flag = false;
                foreach (UpgradeMenu.ButtonRoom r in boughtRooms)
                {
                    if (r.b.Intersects(currentMouseState.X, currentMouseState.Y) && !r.used)
                    {
                        Console.WriteLine(r.b.text);
                        //already have a selected thing;
                        if (selectedRoomSwapButton.b != null)
                        {
                            selectedRoomSwapButton.b.selected = false;
                        }
                        selectedRoomSwapButton = r;
                        r.b.selected           = true;
                        selected_flag          = true;
                        tutorial_state         = TutorialState.Build3;
                    }
                }
                //otherwise we unselect any previously selected button
                if (selected_flag == false && selectedRoomSwapButton.b != null)
                {
                    selectedRoomSwapButton.b.selected = false;
                    selectedRoomSwapButton            = new UpgradeMenu.ButtonRoom();
                }
            }

            return(LeaveMeAlone.GameState.Lair);
        }