示例#1
0
        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));
        }
示例#2
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;
        }
示例#3
0
        /// <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;
        }
示例#4
0
        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();
        }