public MainView(ProgressReporter reporter, UIPlayer player, GameController controller) : base() { this.isTransparent = true; this.RecievesEmptyMouse = true; RecievesEmptyMouse = true; this.reporter = reporter; this.player = player; gameController = controller; this.player.CurrentCharacter = new SpectatingCharacter(player, null, new MyVector(0, 24, -107), MyQuaternion.FromEulerAngles(0, 0/*(float)Math.PI*/, 0)); }
//public static World FromFile(string fileName) //{ // World world = new World(); // MapData data = MapData.FromFile(fileName); // world.gameObjects.AddRange(data.GameObjects); // foreach (GameObject obj in data.GameObjects) // { // world.AddObject(obj); // } // return world; //} public static void FromFileBkg(string fileName, ProgressReporter reporter) { World world = new World(); MapData.FromFileBkg(fileName, reporter); if (reporter.Data == null) throw new Exception("nie udao sie wczytac mapy!!"); //zle poszlo //reporter.Complete = false; foreach (IGameObject obj in ((MapData)reporter.Data).GameObjects) { //if (obj is RespawnPoint) //{ // world.respawnPoints.Add(obj as RespawnPoint); // //((RespawnPoint)obj). //} //else //{ world.AddObject(obj); //} //prawdopodobnie zbêdne //if (obj is IUpdateable) //{ // GM.AppWindow.AddUpdateableItem(obj as IUpdateable); //} } world.environment = Graphics.Environment.FromFile(fileName); reporter.Data = world; reporter.Complete = true; }
/// <summary> /// Wczytuje opis mapy z pliku /// </summary> /// <param name="fileName">nazwa plku z map¹</param> /// <param name="reporter">Klasa do powiadamiania o postêpie</param> public static void FromFileBkg(string fileName,ProgressReporter reporter) { XmlTextReader reader = new XmlTextReader(fileName); reader.WhitespaceHandling = WhitespaceHandling.None; //string result; MapData data = new MapData(); data.gameObjects = new List<IGameObject>(); reporter.Info = "Otwarto plik"; try { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "Map") { data.name = reader.GetAttribute("name"); if (data.Name == null) throw new FileFormatException("Nie ma nazwy mapy w pliku " + fileName); reporter.Info = "Wczytuje mapê: " + data.name; while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Map")) { reader.Read(); if (reader.Name == "Object") { ObjectType type; IGameObject obj; obj = XmlNodeReader.GetObjectNode(reader, out type); data.GameObjects.Add(obj); reporter.Info = "Wczytano obiekt: " + obj.Name; } else if (reader.Name == "RespawnPointList") { RespawnPoint resp; ObjectType type; while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "RespawnPointList")) { reader.Read(); if (reader.Name == "Assassins") { reader.Read(); while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Assassins")) { resp = (RespawnPoint)XmlNodeReader.GetObjectNode(reader, out type); resp.Team = GameTeam.Assassins; data.GameObjects.Add(resp); reporter.Info = "Wczytano obiekt: " + resp.Name; reader.Read(); } } else if (reader.Name == "Knights") { reader.Read(); while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Knights")) { resp = (RespawnPoint)XmlNodeReader.GetObjectNode(reader, out type); resp.Team = GameTeam.Knights; data.GameObjects.Add(resp); reporter.Info = "Wczytano obiekt: " + resp.Name; reader.Read(); } } } } else if (reader.Name == "WeaponPickupList") { Weapons.WeaponPickup wp; ObjectType type; reader.Read(); while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "WeaponPickupList")) { wp = (Weapons.WeaponPickup)XmlNodeReader.GetObjectNode(reader, out type); data.GameObjects.Add(wp); reporter.Info = "Wczytano obiekt: " + wp.Name; reader.Read(); } } } } } } catch { return; } finally { if (reader != null) reader.Close(); } reporter.Data = data; //reporter.Complete = true; }
void JoinServer(object d) { if (gameController != null) gameController.EndGame(); waitingForJoin = true; JoinGameData data = (JoinGameData)d; ProgressReporter reporter = new ProgressReporter(); Thread bkgLoader = new Thread(new ParameterizedThreadStart(delegate(object o) { object[] tab = (object[])o; World.FromFileBkg((string)tab[0], (ProgressReporter)tab[1]); })); bkgLoader.Start(new object[] { AppConfig.MapPath + "respawn_config.xml", reporter }); //World.FromFileBkg("respawn_config.xml", reporter); //World.Instance=new //ShipClass shipClass=ObjectCache.Instance.GetShipClass(data.PlayerShip); frameworkWindow.RemoveLayer(mainView); UIPlayer player = new UIPlayer(data.PlayerName, null); gameController = new RemoteGameController(player, data.ClientSide, data.GameInfo); mainView = new MainView(reporter, player, gameController); frameworkWindow.RemoveLayer(mainMenu); frameworkWindow.PushLayer(mainView); Cursor.Hide(); }