/// <summary> /// Initializes game from a given map /// </summary> /// <returns>returns true if successful, else false</returns> public void LoadMap(Map map) { UnloadGame(); GameLogic gameLogic = GameLogic.GetInstance(); gameLogic.SetMap(map); // already initialised sectorManager by setting new map //gameLogic.SectorManager = new UnitSectorManager(map.GetWidth(), map.GetHeight()); CollisionManager collisionManager = new CollisionManager(); collisionManager.Init(); gameLogic.SetCollisionManager(collisionManager); gameLogic.SuperFogManager = new SuperFogManager(); PlayerFogManager playerFogManager = new PlayerFogManager(); playerFogManager.Init(); gameLogic.SuperFogManager.PlayerFogManager = playerFogManager; PcFogManager pcFogManager = new PcFogManager(); pcFogManager.Init(); gameLogic.SuperFogManager.PcFogManager = pcFogManager; GameObjectManager objectManager = GameObjectManager.GetInstance(); IEnumerable<GameObject> list = map.GetGameObjects(); foreach (GameObject obj in list) { objectManager.AddUnit(obj); } Debug.Assert(map != null); PathFinder.GetInstance().LoadMeshFromObstructions(map.GetWidth(), map.GetHeight(), GlobalValues.GetInstance().MeshScale); // hinzugefügt von jonas (ka ob das wo besser passt) view.HumanView.GetInstance().GetRenderer().GetCamera().SetBoundaries(new Rectangle(0, 0, map.GetWidth(), map.GetHeight())); }
/// <summary> /// Tries to load an old game. /// </summary> /// <param name="path">the file to load from</param> /// <returns>true if loading was successful, else false</returns> internal bool LoadGame(string path) { if (File.Exists(path)) { // Unload previous game: UnloadGame(); Stream fileStream = File.Open(path, FileMode.Open, FileAccess.Read); BinaryFormatter bf = new BinaryFormatter(); object obj = bf.Deserialize(fileStream); Map map = (Map)obj; obj = bf.Deserialize(fileStream); Stats stats = (Stats)obj; List<GameObject> units = new List<GameObject>(); while (fileStream.Position < fileStream.Length) { obj = bf.Deserialize(fileStream); Debug.WriteLine("Deserialized one object."); units.Add((GameObject)obj); } fileStream.Close(); GameLogic gameLogic = GameLogic.GetInstance(); GlobalValues globalValues = GlobalValues.GetInstance(); gameLogic.SetMap(map); //gameLogic.SectorManager = new UnitSectorManager(globalValues.mUnitSectorWidth, // globalValues.mUnitSectorHeight, map.GetWidth(), map.GetHeight()); CollisionManager collisionManager = new CollisionManager(); collisionManager.Init(); gameLogic.SetCollisionManager(collisionManager); gameLogic.SuperFogManager = new SuperFogManager(); PlayerFogManager playerFogManager = new PlayerFogManager(); playerFogManager.Init(); gameLogic.SuperFogManager.PlayerFogManager = playerFogManager; PcFogManager pcFogManager = new PcFogManager(); pcFogManager.Init(); gameLogic.SuperFogManager.PcFogManager = pcFogManager; GameObjectManager gameObjectManager = GameObjectManager.GetInstance(); foreach (GameObject unit in units) { gameObjectManager.AddUnit(unit); } gameObjectManager.Stats = stats; PathFinder.GetInstance().LoadMeshFromObstructions( map.GetWidth(), map.GetHeight(), globalValues.MeshScale); return true; } Debug.WriteLine("Spielstand existiert nicht!"); return false; }
private static void CollisionTest() { GameLogic.GetInstance().SetMap(new Map(10, 10)); CollisionManager colMan = new CollisionManager(); colMan.Init(); GameLogic.GetInstance().SetCollisionManager(colMan); colMan.MinimumSideLength = 1; Interceptor iceptor1 = new Interceptor(new Vector2(1, 1), Allegiance.Player); Interceptor iceptor2 = new Interceptor(new Vector2(9, 9), Allegiance.Player); Interceptor iceptor3 = new Interceptor(new Vector2(3, 3), Allegiance.Player); colMan.RegisterUnit(iceptor1); colMan.RegisterUnit(iceptor2); colMan.RegisterUnit(iceptor3); iceptor3.Position = new Vector2(7, 7); //List<QuadNode> leaves = colMan.mRoot.mChild[Orientation.LeftLower].GetAllNeighbourLeaves(false); Debug.WriteLine("CollisionTest done."); GameLogic.GetInstance().GetGameStateManager().UnloadGame(); }