protected override void LoadContent() { sbHUD = new SpriteBatch(GraphicsDevice); spriteBatch = new SpriteBatch(GraphicsDevice); spriteBatchMini = new SpriteBatch(GraphicsDevice); spriteBatchMini2 = new SpriteBatch(GraphicsDevice); destrucTileList = new List <Vector3>(); entityList = new List <Entity>(); animationList = new List <Animate>(); particlesEngineList = new List <ParticleEngine>(); particleList = new List <Particles>(); explosionReseau = new List <Vector2>(); switch (gameState) { case GameState.initialize: //Load Cursor Texture and Position personalFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "TDZ"; cursor = Tools.LoadTexture("Others/cursor", Content); controles.cursorPosition = new Vector2(); Langage.LoadLanguage(); destroyTile = Tools.LoadTexture("SpriteTexture/destroyed", Content); #region Load Textures TexturesGame.LoadAmmo(Content); TexturesGame.LoadPlayers(Content); TexturesGame.LoadArmes(Content); TexturesGame.LoadItem(Content); TexturesGame.LoadImpact(Content); TexturesGame.Loadtest(Content); TexturesGame.LoadBonus(Content); TexturesGame.LoadIAs(Content); TexturesGame.LoadPlatForm(Content); TexturesGame.Loadtest(Content); TexturesGame.LoadSpeedUp(Content); TexturesGame.LoadBackgrounds(Content); #endregion Load Textures menu = new Menu(Content, GraphicsDevice); font = Tools.LoadFont("Fonts/AngryBirds/24", Content); GameOver = Tools.LoadTexture("Menu/GameOver", Content); fondRadar = Tools.LoadTexture("Others/fondRadar", Content); HUDarmes = Tools.LoadTexture("HUD/HUD_armes", Content); gameState = GameState.menu; sound = new Sound(Content); Player player = new Player(new Vector2(0, 0), TexturesGame.PlayerTab[0], 0, GraphicsDevice, LoadWeapons.LoadKnife(Content), true, FlagsType.blue); menu = new Menu(Content, GraphicsDevice); try { XmlSerializer serializer = new XmlSerializer(typeof(Opt)); FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/TDZ/Options/OptionMenu", FileMode.Open); XmlReader reader = XmlReader.Create(fs); Opt obj = (Opt)serializer.Deserialize(reader); fullScreenON = obj.Fullscreen; menu.optionsMenu.toFullScreen = obj.Fullscreen; soundON = obj.SoundOn; sound.playEffects = soundON; controles.controleTab = obj.controleTab; Langage.langueactuelle = obj.language; if (obj.masterServerAdress != null) { ConnectMaster.MasterIPAdress = obj.masterServerAdress; } fs.Close(); XmlSerializer serializer2 = new XmlSerializer(typeof(SavPerso)); FileStream fs2 = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/TDZ/Sauvegardes/" + obj.name, FileMode.Open); XmlReader reader2 = XmlReader.Create(fs2); SavPerso obj2 = (SavPerso)serializer2.Deserialize(reader2); player.Deserialise(obj2, Content); fs2.Close(); } catch (Exception) { player = new Player(new Vector2(0, 0), TexturesGame.PlayerTab[0], 0, GraphicsDevice, LoadWeapons.LoadKnife(Content), true, FlagsType.blue); player.ItemList.Add(LoadWeapons.LoadKnife(Content)); } currentPlayer = player; solo = new Solo(player.currentLevel, player); menu.LaunchMenuSound(sound); break; case GameState.editor: sound.soundPlayer.Stop(); // Prepare the process to run ProcessStartInfo start = new ProcessStartInfo(); // Enter the executable to run, including the complete path start.FileName = "./MapEditor.exe"; // Do you want to show a console window? start.WindowStyle = ProcessWindowStyle.Hidden; start.CreateNoWindow = true; // Run the external process & wait for it to finish using (Process proc = Process.Start(start)) { proc.WaitForExit(); } gameState = GameState.menu; menu = new Menu(Content, GraphicsDevice); menu.LaunchMenuSound(sound); break; case GameState.solo: sound.soundPlayer.Stop(); //Load List Tirs and Texture shotsPlayer = new Shot(); //Load Map LoadMap(menu.mapname + ".xml"); LoadMapTextures(); //Load Player Array hostPlayer = 0; LoadPlayer(); players[hostPlayer].position = mapWorld.spawnPoint; players[hostPlayer].image = TexturesGame.PlayerTab[players[hostPlayer].spritePerso]; // LoadEnemy(); LoadSurvivalEnemy(); LoadItem(); //Load HUD LoadHUD(); background = new Background(Content, mapWorld); camera = new Camera(players, hostPlayer, scaleNormValue, GraphicsDevice, mapWorld); break; case GameState.scenario: sound.soundPlayer.Stop(); //Load List Tirs and Texture shotsPlayer = new Shot(); //Load Map LoadMap(solo.currentMap + ".xml"); LoadMapTextures(); //Load Player Array solo.player.position = mapWorld.spawnPoint; hostPlayer = 0; players = new List <Player>(); players.Add(solo.player); entityList.Add(solo.player); Enemys = new List <Enemy>(); for (int i = 0; i < mapWorld.IASpawnList.Count; i++) { Enemys.Add(new Enemy(mapWorld.IASpawnList[i], TexturesGame.IATab[0], 100 + i, Content, LoadWeapons.LoadIAGun(Content), false, 0, GraphicsDevice)); Enemys[i].iaType = IAType.patrouille; entityList.Add(Enemys[i]); Enemys[i].attaque = currentPlayer.niveau * 0.1f; Enemys[i].defense = 2 / currentPlayer.niveau; } LoadItem(); //Load HUD LoadHUD(); background = new Background(Content, mapWorld); camera = new Camera(players, hostPlayer, scaleNormValue, GraphicsDevice, mapWorld); break; case GameState.multi: sound.soundPlayer.Stop(); //Launch Network and Load Map mapWorld = new Map(); client = new Client(ConnectMaster.MasterIPAdress, Convert.ToInt32(menu.multiMenu.tmpserv.port), ref hostPlayer, mapWorld, Content, menu.multiMenu.tmpserv.mode); if (client.mode == ModeMulti.ctf) { flags = new Flag[2]; flags[0] = new Flag(mapWorld.drapeau2, Content, FlagsType.red); flags[1] = new Flag(mapWorld.drapeau1, Content, FlagsType.blue); foreach (Flag item in flags) { mapWorld.itemList.Add(item); } } LoadMapTextures(); //Platforms for (int i = 0; i < mapWorld.platFormList.Count; i++) { entityList.Add(mapWorld.platFormList[i]); } //Load List Tirs and Texture shotsPlayer = new Shot(); //Load Player Array LoadPlayer(); SetCurrentPlayer(); Enemys = new List <Enemy>(); //Load HUD LoadHUD(); background = new Background(Content, mapWorld); camera = new Camera(players, hostPlayer, scaleNormValue, GraphicsDevice, mapWorld); break; default: break; } }
protected override void Update(GameTime gameTime) { UpdateOption(); currentPlayer.UpdateLevel(controles, animationList, Content); if (controles.Pause()) { if (gameState == GameState.scenario || gameState == GameState.solo) { oldGameState = gameState; gameState = GameState.pause; pause = new Pause(Content); } else if (gameState == GameState.pause || gameState == GameState.multiPause) { gameState = oldGameState; } else if (gameState == GameState.creation) { currentPlayer.newChar = false; SavPerso obj = new SavPerso(); currentPlayer.Serialize(obj); System.Xml.Serialization.XmlSerializer writer2 = new System.Xml.Serialization.XmlSerializer(typeof(SavPerso)); System.IO.StreamWriter file2 = new System.IO.StreamWriter((Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/TDZ/Sauvegardes/") + currentPlayer.name); writer2.Serialize(file2, obj); file2.Close(); gameState = GameState.menu; menu.menuState = MenuState.main; menu = new Menu(Content, GraphicsDevice); } else if (gameState == GameState.menu) { gameState = GameState.menu; menu = new Menu(Content, GraphicsDevice); } else if (gameState == GameState.multi) { oldGameState = gameState; gameState = GameState.multiPause; pause = new Pause(Content); } else { gameState = GameState.menu; menu.menuState = MenuState.main; menu = new Menu(Content, GraphicsDevice); sound.soundPlayer.Stop(); menu.LaunchMenuSound(sound); } } //Events States Mouse and Keyboard msg = ""; switch (gameState) { case GameState.solo: sound.UpdateMusic(); destrucTileList = new List <Vector3>(); players[hostPlayer].Update(animationList); Player1Events.CheckEvents(players[hostPlayer], mapWorld, destrucTileList, hostPlayer, shotsPlayer, sound, ref msg, controles, entityList, animationList, particlesEngineList, Content, explosionReseau); Player1Events.MouseEvents(players[hostPlayer], shotsPlayer, camera, sound, controles, animationList, particlesEngineList); shotsPlayer.Update(animationList); UpdateItem(); UpdateExplosion(); UpdateAnimation(); Reset(); UpdateParticleEngine(); #region IA Update if (!currentPlayer.God) { for (int i = 0; i < Enemys.Count; i++) { Enemys[i].shotsIA.otherTirList = new List <Tirs>(); Enemys[i].shotsIA.otherTirList = shotsPlayer.tirList; for (int j = 0; j < Enemys[i].shotsIA.tirList.Count; j++) { shotsPlayer.otherTirList.Add(Enemys[i].shotsIA.tirList[j]); } } for (int i = 0; i < Enemys.Count; i++) { IA.IACheckEvents(Enemys[i], IAType.Survival, mapWorld, players, Enemys[i].shotsIA, destrucTileList, hostPlayer, sound, entityList, animationList, particlesEngineList, Content, Enemys, explosionReseau); LoadSurvival(Enemys); } for (int i = 0; i < Enemys.Count; i++) { Enemys[i].shotsIA.Update(animationList); } } #endregion IA Update mapWorld.Update(); camera.UpdateCentered(players, hostPlayer, scaleNormValue, GraphicsDevice, controles); break; case GameState.pause: pause.Update(mouseCoef, controles); if (pause.menu) { gameState = GameState.menu; menu.menuState = MenuState.main; menu = new Menu(Content, GraphicsDevice); sound.soundPlayer.Stop(); menu.LaunchMenuSound(sound); } else if (pause.resumeGame) { gameState = oldGameState; } break; case GameState.scenario: sound.UpdateMusic(); solo.Update(players[hostPlayer], mapWorld); if (solo.levelUp) { solo = new Solo(solo.currentLevel, solo.player); LoadContent(); } if (currentPlayer.lifes < 1) { gameState = GameState.gameOver; } players[hostPlayer].Update(animationList); Player1Events.CheckEvents(players[hostPlayer], mapWorld, destrucTileList, hostPlayer, shotsPlayer, sound, ref msg, controles, entityList, animationList, particlesEngineList, Content, explosionReseau); Player1Events.MouseEvents(players[hostPlayer], shotsPlayer, camera, sound, controles, animationList, particlesEngineList); shotsPlayer.Update(animationList); UpdateItem(); UpdateExplosion(); UpdateAnimation(); Reset(); UpdateParticleEngine(); if (!currentPlayer.God) { for (int i = 0; i < Enemys.Count; i++) { Enemys[i].shotsIA.otherTirList = new List <Tirs>(); Enemys[i].shotsIA.otherTirList = shotsPlayer.tirList; for (int j = 0; j < Enemys[i].shotsIA.tirList.Count; j++) { shotsPlayer.otherTirList.Add(Enemys[i].shotsIA.tirList[j]); } } for (int i = 0; i < Enemys.Count; i++) { IA.IACheckEvents(Enemys[i], IAType.patr_Snd, mapWorld, players, Enemys[i].shotsIA, destrucTileList, hostPlayer, sound, entityList, animationList, particlesEngineList, Content, Enemys, explosionReseau); if (!Enemys[i].IsAlive) { entityList.Remove(Enemys[i]); Enemys.RemoveAt(i); } } for (int i = 0; i < Enemys.Count; i++) { Enemys[i].shotsIA.Update(animationList); } } mapWorld.Update(); camera.UpdateCentered(players, hostPlayer, scaleNormValue, GraphicsDevice, controles); break; case GameState.multi: sound.UpdateMusic(); destrucTileList = new List <Vector3>(); players[hostPlayer].Update(animationList); Player1Events.CheckEvents(players[hostPlayer], mapWorld, destrucTileList, hostPlayer, shotsPlayer, sound, ref msg, controles, entityList, animationList, particlesEngineList, Content, explosionReseau); Player1Events.MouseEvents(players[hostPlayer], shotsPlayer, camera, sound, controles, animationList, particlesEngineList); //Player1Events.SurvivalLvL0 = Player1Events.killplayer0 / 50; UpdateParticleEngine(); shotsPlayer.Update(animationList); UpdateExplosion(); UpdateItem(); UpdateAnimation(); Reset(); camera.UpdateCentered(players, hostPlayer, scaleNormValue, GraphicsDevice, controles); bool flagCapture = false; if (client.mode == ModeMulti.ctf) { foreach (Flag flag in flags) { flagCapture = flag.Update(players[hostPlayer], mapWorld); } } UpdateNetwork(flagCapture); break; case GameState.multiPause: sound.UpdateMusic(); destrucTileList = new List <Vector3>(); players[hostPlayer].Update(animationList); Player1Events.CheckEvents(players[hostPlayer], mapWorld, destrucTileList, hostPlayer, shotsPlayer, sound, ref msg, controles, entityList, animationList, particlesEngineList, Content, explosionReseau); Player1Events.MouseEvents(players[hostPlayer], shotsPlayer, camera, sound, controles, animationList, particlesEngineList); //Player1Events.SurvivalLvL0 = Player1Events.killplayer0 / 50; UpdateParticleEngine(); shotsPlayer.Update(animationList); UpdateExplosion(); UpdateItem(); UpdateAnimation(); Reset(); camera.UpdateCentered(players, hostPlayer, scaleNormValue, GraphicsDevice, controles); flagCapture = false; if (client.mode == ModeMulti.ctf) { foreach (Flag flag in flags) { flagCapture = flag.Update(players[hostPlayer], mapWorld); } } UpdateNetwork(flagCapture); pause.Update(mouseCoef, controles); if (pause.menu) { for (int i = 0; i < players[hostPlayer].ItemList.Count; i++) { if (players[hostPlayer].ItemList[i].type == objectType.flag) { players[hostPlayer].ItemList[i].isOnMap = true; ((Flag)players[hostPlayer].ItemList[i]).isCaptured = false; mapWorld.itemList.Add(players[hostPlayer].ItemList[i]); players[hostPlayer].ItemList.RemoveAt(i); break; } } client.SendExit(hostPlayer); gameState = GameState.menu; menu.menuState = MenuState.main; menu = new Menu(Content, GraphicsDevice); sound.soundPlayer.Stop(); menu.LaunchMenuSound(sound); } else if (pause.resumeGame) { gameState = oldGameState; } break; case GameState.menu: menu.Update(ref gameState, mouseCoef, Content, ref fullScreenON, ref soundON, sound, controles); if (gameState == GameState.exit) { Opt option = new Opt(); option.Fullscreen = fullScreenON; option.SoundOn = soundON; option.controleTab = controles.controleTab; option.name = currentPlayer.name; option.language = Langage.langueactuelle; option.masterServerAdress = ConnectMaster.MasterIPAdress; System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(Opt)); System.IO.StreamWriter file = new System.IO.StreamWriter((Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/TDZ/Options/OptionMenu")); writer.Serialize(file, option); file.Close(); SavPerso obj = new SavPerso(); currentPlayer.Serialize(obj); System.Xml.Serialization.XmlSerializer writer2 = new System.Xml.Serialization.XmlSerializer(typeof(SavPerso)); System.IO.StreamWriter file2 = new System.IO.StreamWriter((Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/TDZ/Sauvegardes/") + currentPlayer.name); writer2.Serialize(file2, obj); file2.Close(); Exit(); } if (gameState == GameState.multi || gameState == GameState.solo || gameState == GameState.editor || gameState == GameState.scenario) { LoadContent(); } break; case GameState.creation: menu.gestion.Update(ref currentPlayer, mouseCoef, controles, Content, GraphicsDevice); break; default: break; } //Save old Events State base.Update(gameTime); }