//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; }
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); }
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); }
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); } }
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; } } } } } } }
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); }