Esempio n. 1
0
        //Later on, add struct where it takes the race
        public Player(byte a_id, ViewClasses.GameAssets a_assets, Map a_map, PathFinder a_pathfinder)
        {
            m_playerID = a_id;
            m_race     = Races.Cubes;

            m_thingsAssets = new CubesAssets(this, a_assets, a_map, a_pathfinder);

            CurrentMaxSupply = 10;
            CurrentSupply    = 0;
        }
Esempio n. 2
0
        public Game(ViewClasses.GameAssets a_assets, int a_gameWidth, int a_gameHeight)
        {
            m_state = GameState.Game;

            m_map        = new Map(a_gameWidth, a_gameHeight);
            m_pathFinder = new PathFinder(ref m_map);

            GameBuilder f_gameBuilder = new GameBuilder();

            f_gameBuilder.BuildWorldForFourCO(this, a_assets);
        }
Esempio n. 3
0
        public CubesAssets(Player a_player, ViewClasses.GameAssets a_assets, Map a_map, PathFinder a_pathfinder)
        {
            m_ownerID = a_player.m_playerID;
            m_race    = a_player.m_race;

            m_cube = new Cube(m_ownerID, a_assets.c_cube, 10, 10, Vector3.Zero, 10, a_player.AddUnderAttackPosition);

            m_cube.m_moveBehavior   = MovementFactory.m_standardMovement;
            m_cube.m_attackBehavior = new StandardAttack(m_cube, 1, 1, 3);

            m_cube.m_buildBehavior = BuildFactory.CreateNewVisibleBuild(a_player, m_cube, 1, a_map, a_pathfinder);

            m_barbarian = new Barbarian(m_ownerID, a_assets.c_barbarian, 30, 30, Vector3.Zero, 10, a_player.AddUnderAttackPosition);

            m_barbarian.m_moveBehavior   = MovementFactory.m_standardMovement;
            m_barbarian.m_attackBehavior = AttackFactory.CreateNewStandardAttack(m_barbarian, 1, 5, 3);

            m_extractor = new Extractor(m_ownerID, a_assets.c_extractor, 500, 500, Vector3.Zero, a_player.AddUnderAttackPosition);

            m_igloo = new CubeIgloo(m_ownerID, a_assets.c_igloo, 100, 100, Vector3.Zero, a_player.AddUnderAttackPosition);

            m_barrack = new Barrack(m_ownerID, a_assets.c_barrack, 200, 200, Vector3.Zero, a_player.AddUnderAttackPosition);
        }
Esempio n. 4
0
        public void BuildWorldForFourCO(Game a_game, ViewClasses.GameAssets a_assets)
        {
            #region WorldObjects

            a_game.m_buildingSpeedModifier = 10;
            a_game.m_map.m_worldObjects    = new List <WorldObject>();
            a_game.m_allPlayers            = new List <Player>();
            a_game.m_computers             = new List <ROB>();

            Point bottomLeft = new Point(0, 0);

            int     x = bottomLeft.X + 4; int y = bottomLeft.Y + 4;
            Vector3 p1SpawnPos = new Vector3(x, y, a_game.m_map.m_tiles[x, y].m_height);

            x += 4;
            Vector3 p1ExtraSoLPos = new Vector3(x, y, a_game.m_map.m_tiles[x, y].m_height);

            Point bottomRight = new Point(a_game.m_map.m_Xlength, 0);

            x = bottomRight.X - 4; y = bottomRight.Y + 4;
            Vector3 p2SpawnPos = new Vector3(x, y, a_game.m_map.m_tiles[x, y].m_height);
            x -= 4;
            Vector3 p2ExtraSoLPos = new Vector3(x, y, a_game.m_map.m_tiles[x, y].m_height);

            Point topLeft = new Point(0, a_game.m_map.m_Ylength);

            x = topLeft.X + 4; y = topLeft.Y - 4;
            Vector3 p3SpawnPos = new Vector3(x, y, a_game.m_map.m_tiles[x, y].m_height);
            x += 4;
            Vector3 p3ExtraSoLPos = new Vector3(x, y, a_game.m_map.m_tiles[x, y].m_height);

            Point topRight = new Point(a_game.m_map.m_Xlength, a_game.m_map.m_Ylength);

            x = topRight.X - 4; y = topRight.Y - 4;
            Vector3 p4SpawnPos = new Vector3(x, y, a_game.m_map.m_tiles[x, y].m_height);
            x -= 4;
            Vector3 p4ExtraSoLPos = new Vector3(x, y, a_game.m_map.m_tiles[x, y].m_height);

            a_game.m_map.AddWorldObject(new SoL(a_assets.m_sparkOfLife, p1SpawnPos));
            a_game.m_map.AddWorldObject(new SoL(a_assets.m_sparkOfLife, p1ExtraSoLPos));

            a_game.m_map.AddWorldObject(new SoL(a_assets.m_sparkOfLife, p2SpawnPos));
            a_game.m_map.AddWorldObject(new SoL(a_assets.m_sparkOfLife, p2ExtraSoLPos));

            a_game.m_map.AddWorldObject(new SoL(a_assets.m_sparkOfLife, p3ExtraSoLPos));
            a_game.m_map.AddWorldObject(new SoL(a_assets.m_sparkOfLife, p3SpawnPos));

            a_game.m_map.AddWorldObject(new SoL(a_assets.m_sparkOfLife, p4ExtraSoLPos));
            a_game.m_map.AddWorldObject(new SoL(a_assets.m_sparkOfLife, p4SpawnPos));
            #endregion



            //Ze Player which is needed to be initilized :(
            a_game.m_player = new Player(100, a_assets, a_game.m_map, a_game.m_pathFinder);
            a_game.m_player.Surrender(a_game.m_map);

            byte a_id = 0;

            //Computer1
            ROB f_computer = new ROB(a_id++, a_assets, a_game.m_map, a_game.m_pathFinder, p1SpawnPos);
            a_game.m_computers.Add(f_computer);
            a_game.m_allPlayers.Add(f_computer);

            CreateExtractor(f_computer, a_game.m_map, p1SpawnPos);

            for (float i = p1SpawnPos.X - 2; i < p1SpawnPos.X + 2; i++)
            {
                CreateCube(f_computer, new Vector3(i, p1SpawnPos.Y + 4, p1SpawnPos.Z));
            }

            //Computer2
            f_computer = new ROB(a_id++, a_assets, a_game.m_map, a_game.m_pathFinder, p2SpawnPos);
            a_game.m_computers.Add(f_computer);
            a_game.m_allPlayers.Add(f_computer);

            CreateExtractor(f_computer, a_game.m_map, p2SpawnPos);

            for (float i = p2SpawnPos.X - 2; i < p2SpawnPos.X + 2; i++)
            {
                CreateCube(f_computer, new Vector3(i, p2SpawnPos.Y + 4, p2SpawnPos.Z));
            }

            //Computer3
            f_computer = new ROB(a_id++, a_assets, a_game.m_map, a_game.m_pathFinder, p3SpawnPos);
            a_game.m_computers.Add(f_computer);
            a_game.m_allPlayers.Add(f_computer);

            CreateExtractor(f_computer, a_game.m_map, p3SpawnPos);

            for (float i = p3SpawnPos.X - 2; i < p3SpawnPos.X + 2; i++)
            {
                CreateCube(f_computer, new Vector3(i, p3SpawnPos.Y - 4, p3SpawnPos.Z));
            }

            //Computer4
            f_computer = new ROB(a_id++, a_assets, a_game.m_map, a_game.m_pathFinder, p4SpawnPos);
            a_game.m_computers.Add(f_computer);
            a_game.m_allPlayers.Add(f_computer);

            CreateExtractor(f_computer, a_game.m_map, p4SpawnPos);

            for (float i = p4SpawnPos.X - 2; i < p4SpawnPos.X + 2; i++)
            {
                CreateCube(f_computer, new Vector3(i, p4SpawnPos.Y - 4, p4SpawnPos.Z));
            }

            foreach (ROB computer in a_game.m_computers)
            {
                computer.InitilizeROB(a_game);
            }
        }
Esempio n. 5
0
        public void MenuHandling(GraphicsDevice a_graphics, ref ModelClasses.Game a_game, ViewClasses.Menu.Menu a_menu,
                                 ViewClasses.DebugView a_debugView, ViewClasses.GameAssets a_gameAssets, ref ViewClasses.GameView a_gameView)
        {
            //When menu is opened
            if (m_input.KeyClicked(m_input.m_f1))
            {
                if (a_menu.m_menuState == Menu.MenuState.None)
                {
                    a_game.m_state = ModelClasses.Game.GameState.Pause;

                    a_menu.m_menuState = Menu.MenuState.InGameMenu;
                }
                else if (a_menu.m_menuState == Menu.MenuState.Main)
                {
                    //Nothing
                }
                //when it's closed
                else
                {
                    a_game.m_state = ModelClasses.Game.GameState.Game;
                }
            }
            else
            {
                //Checks to se if mouse is in the menu area
                if (m_input.m_mouse.m_mouseState.Y < Menu.m_menu.Bottom && m_input.m_mouse.m_mouseState.X > Menu.m_menu.Left)
                {
                    VisualMenuCheck(a_menu);

                    if (m_input.mouseLeftClick())
                    {
                        if (a_menu.m_menuState == Menu.MenuState.Main)
                        {
                            if (ButtonPress(a_menu.m_mainButtons[0]))
                            {
                                a_menu.m_menuState = Menu.MenuState.PreGame;
                            }
                            else if (ButtonPress(a_menu.m_mainButtons[1]))
                            {
                                a_menu.m_menuState = Menu.MenuState.Load;
                            }
                            else if (ButtonPress(a_menu.m_mainButtons[2]))
                            {
                                a_menu.m_menuState = Menu.MenuState.Options;
                            }
                            else if (ButtonPress(a_menu.m_mainButtons[3]))
                            {
                                MasterController.m_exit = true;
                            }
                        }
                        else if (a_menu.m_menuState == Menu.MenuState.PreGame)
                        {
                            //Starts a session to play against computer
                            if (ButtonPress(a_menu.m_play))
                            {
                                ModelClasses.Game f_game        = new ModelClasses.Game(a_gameAssets, MasterController.m_mapSize, MasterController.m_mapSize);
                                GameBuilder       f_gameBuilder = new GameBuilder();

                                f_gameBuilder.BuildWorldForFour(f_game, a_gameAssets);

                                a_gameAssets.LoadHeightMap(a_graphics, f_game.m_map);

                                a_gameView = new ViewClasses.GameView(a_graphics, a_gameAssets, f_game);

                                f_game.SetParticleHandler(a_gameView.m_particleHandler);

                                a_gameView.m_mapTransformer.LoadGraphicsContent(a_graphics);

                                a_game = f_game;

                                a_menu.m_menuState = Menu.MenuState.None;
                            }
                            //Starts a Session to observe a Computer battle
                            else if (ButtonPress(a_menu.m_observer))
                            {
                                ModelClasses.Game f_game = new ModelClasses.Game(a_gameAssets, MasterController.m_mapSize, MasterController.m_mapSize);

                                f_game.SetParticleHandler(a_gameView.m_particleHandler);

                                a_gameAssets.LoadHeightMap(a_graphics, f_game.m_map);

                                a_gameView = new ViewClasses.GameView(a_graphics, a_gameAssets, f_game);

                                f_game.SetParticleHandler(a_gameView.m_particleHandler);

                                a_gameView.m_mapTransformer.LoadGraphicsContent(a_graphics);

                                a_game = f_game;

                                a_menu.m_menuState = Menu.MenuState.None;
                            }
                            //Return u to main menu
                            else if (ButtonPress(a_menu.m_ret))
                            {
                                a_menu.m_menuState = Menu.MenuState.Main;
                            }
                        }
                        else if (a_menu.m_menuState == Menu.MenuState.InGameMenu)
                        {
                            //Return to game button
                            if (ButtonPress(a_menu.m_return))
                            {
                                a_game.m_state = ModelClasses.Game.GameState.Game;
                            }

                            //Options button
                            else if (ButtonPress(a_menu.m_options))
                            {
                                a_menu.m_menuState = Menu.MenuState.Options;
                            }

                            //Save button
                            else if (ButtonPress(a_menu.m_save))
                            {
                                a_menu.m_menuState = Menu.MenuState.Save;
                            }

                            //Load Button
                            else if (ButtonPress(a_menu.m_load))
                            {
                                a_menu.m_menuState = Menu.MenuState.Load;
                            }

                            //Main Menu Button
                            else if (ButtonPress(a_menu.m_quit))
                            {
                                a_game.m_state     = ModelClasses.Game.GameState.Main;
                                a_menu.m_menuState = Menu.MenuState.Main;
                            }

                            //Quit button
                            else if (ButtonPress(a_menu.m_ret))
                            {
                                MasterController.m_exit = true;
                            }
                        }

                        //Options Screen
                        else if (a_menu.m_menuState == Menu.MenuState.Options)
                        {
                            if (a_game.m_state == ModelClasses.Game.GameState.Main)
                            {
                                //Debug Button
                                if (ButtonPress(a_menu.m_debug))
                                {
                                    a_menu.m_menuState = Menu.MenuState.DebugMenu;
                                }
                                else if (ButtonPress(a_menu.m_ret))
                                {
                                    a_menu.m_menuState = Menu.MenuState.Main;
                                }
                            }
                            else
                            {
                                //Debug Button
                                if (ButtonPress(a_menu.m_debug))
                                {
                                    a_menu.m_menuState = Menu.MenuState.DebugMenu;
                                }
                                else if (ButtonPress(a_menu.m_ret))
                                {
                                    a_menu.m_menuState = Menu.MenuState.InGameMenu;
                                }
                            }
                        }

                        //Debug Screen
                        else if (a_menu.m_menuState == Menu.MenuState.DebugMenu)
                        {
                            if (ButtonPress(a_menu.m_ret))
                            {
                                a_menu.m_menuState = Menu.MenuState.Options;
                            }
                            else
                            {
                                for (int i = 0; i < a_menu.m_checkBoxes.Length; i++)
                                {
                                    if (a_menu.m_checkBoxes[i].m_state == CheckBox.ChkState.Checked)
                                    {
                                        a_debugView.m_debugOptions.m_options[i] = true;

                                        a_debugView.m_debugOptions.Update();
                                    }
                                    else if (a_menu.m_checkBoxes[i].m_state == CheckBox.ChkState.Unchecked)
                                    {
                                        a_debugView.m_debugOptions.m_options[i] = false;

                                        a_debugView.m_debugOptions.Update();
                                    }
                                }
                            }
                        }
                        //Save screen
                        else if (a_menu.m_menuState == Menu.MenuState.Save)
                        {
                            if (ButtonPress(a_menu.m_ret))
                            {
                                a_menu.m_menuState = Menu.MenuState.InGameMenu;
                            }
                            //New save button
                            //It creates a new save slot and saves the game and adds it to the save/load screens
                            else if (ButtonPress(a_menu.m_newSave))
                            {
                                m_save.TryToSave(a_game, "New Save");

                                //in order to update save/load screens to populate new saves
                                a_menu.UpdateSlots(a_gameAssets, m_save);

                                a_game.m_state = ModelClasses.Game.GameState.Game;
                            }
                            else if (ButtonPress(a_menu.m_Sup))
                            {
                                a_menu.ScrollUp();

                                a_menu.UpdateSlots(a_gameAssets, m_save);
                            }
                            else if (ButtonPress(a_menu.m_Sdown))
                            {
                                a_menu.ScrollDown();

                                a_menu.UpdateSlots(a_gameAssets, m_save);
                            }
                            else
                            {
                                //Loops through the saves to see if user have pressed a save and if true it saves the game and break
                                Button f_click = ButtonClicked(a_menu.m_saves);

                                if (f_click != null)
                                {
                                    m_save.TryToSave(a_game, f_click.m_buttonText);

                                    a_menu.UpdateSlots(a_gameAssets, m_save);

                                    a_game.m_state = ModelClasses.Game.GameState.Game;
                                }
                            }
                        }
                        //Load screen
                        else if (a_menu.m_menuState == Menu.MenuState.Load)
                        {
                            if (ButtonPress(a_menu.m_Lup))
                            {
                                a_menu.ScrollUp();

                                a_menu.UpdateSlots(a_gameAssets, m_save);
                            }
                            else if (ButtonPress(a_menu.m_Ldown))
                            {
                                a_menu.ScrollDown();

                                a_menu.UpdateSlots(a_gameAssets, m_save);
                            }
                            else
                            {
                                Button f_click = ButtonClicked(a_menu.m_loaded);

                                if (f_click != null)
                                {
                                    ModelClasses.Game f_game = m_save.TryToLoad(f_click.m_buttonText);

                                    if (f_game != null)
                                    {
                                        f_game.InitializeModels(a_gameView.m_particleHandler, a_gameAssets);

                                        a_gameAssets.LoadHeightMap(a_graphics, f_game.m_map);

                                        a_gameView = new ViewClasses.GameView(a_graphics, a_gameAssets, f_game);

                                        f_game.SetParticleHandler(a_gameView.m_particleHandler);

                                        a_gameView.m_mapTransformer = new ViewClasses.MapTransformer(f_game.m_map);

                                        a_gameView.m_mapTransformer.LoadGraphicsContent(a_graphics);

                                        a_game = f_game;

                                        a_game.m_state = ModelClasses.Game.GameState.Game;
                                    }
                                }
                            }

                            if (a_game.m_state == ModelClasses.Game.GameState.Main)
                            {
                                if (ButtonPress(a_menu.m_ret))
                                {
                                    a_menu.m_menuState = Menu.MenuState.Main;
                                }
                            }
                            else
                            {
                                if (ButtonPress(a_menu.m_ret))
                                {
                                    a_menu.m_menuState = Menu.MenuState.InGameMenu;
                                }
                            }
                        }
                        else if (a_menu.m_menuState == Menu.MenuState.Win)
                        {
                            if (a_game.m_state == ModelClasses.Game.GameState.GameOver)
                            {
                                if (ButtonPress(a_menu.m_ret))
                                {
                                    a_game.m_state = ModelClasses.Game.GameState.Main;

                                    a_menu.m_menuState = Menu.MenuState.Main;
                                }
                            }
                        }
                        else if (a_menu.m_menuState == Menu.MenuState.Lose)
                        {
                            if (a_game.m_state == ModelClasses.Game.GameState.GameOver)
                            {
                                if (ButtonPress(a_menu.m_ret))
                                {
                                    a_game.m_state = ModelClasses.Game.GameState.Main;

                                    a_menu.m_menuState = Menu.MenuState.Main;
                                }
                            }
                        }
                    }
                }
            }
        }
Esempio n. 6
0
        public void DoInputControl(GraphicsDevice a_graphics, ref ModelClasses.Game a_game, ref ViewClasses.GameView a_gameView,
                                   ViewClasses.DebugView a_debugView, ViewClasses.Menu.Menu a_menu, ViewClasses.GameAssets a_gameAssets)
        {
            m_input.GetKeyboardMouseState();

            if (a_game.m_state == ModelClasses.Game.GameState.Game)
            {
                CameraInputHandling(a_game, a_gameView.m_camera);

                MouseHandling(a_graphics, a_game, a_gameView);

                HUDHandling(a_graphics, a_game, a_gameView);
            }

            MenuHandling(a_graphics, ref a_game, a_menu, a_debugView, a_gameAssets, ref a_gameView);
        }