public LevelEditorState(Surface _sfcGameWindow, string _name = "untitled") : base(_sfcGameWindow) { camera = new Camera(); name = _name; map = new Map(); map.editor = true; vecPlayer = new Vector(new Point(2, 3)); player = new EditorSprite(vecPlayer, new Player(0, 0)); enemies = new List <EditorSprite> (); if (name.EndsWith(".xml")) { XmlDocument doc = new XmlDocument(); doc.Load(Constants.Constants.GetResourcePath(name)); map.FromXML(doc); XmlNode p = doc.SelectSingleNode("//player"); player.gridPos.X = Convert.ToInt16(p.Attributes ["x"].InnerText); player.gridPos.Y = Convert.ToInt16(p.Attributes ["y"].InnerText); name = name.Replace(".xml", ""); foreach (XmlNode node in doc.SelectNodes("//enemy")) { EnemyType typ = (EnemyType)Enum.Parse(typeof(EnemyType), node.Attributes ["type"].InnerText); int x = Convert.ToInt16(node.Attributes ["x"].InnerText); int y = Convert.ToInt16(node.Attributes ["y"].InnerText); Enemy enemy = Enemy.GetEnemy(typ, x, y); EditorSprite s = new EditorSprite(new Vector(new Point(x, y)), enemy); Vector vec = map.GetTilePos(x, y); s.x = vec.X; s.y = vec.Y; s.data = (object)typ; enemies.Add(s); } } else { map.EmptyMap(); } Vector v = map.GetTilePos((int)player.gridPos.X, (int)player.gridPos.Y); player.x = v.X; player.y = v.Y; grid = new EditorGrid(); List <MenuObject> menuObjs = new List <MenuObject> (); foreach (TileType typ in Enum.GetValues(typeof(TileType))) { MenuText t = new MenuText(typ.ToString(), Color.Gold, Color.Black, TEXT_SIZE); menuObjs.Add(t); } foreach (EnemyType typ in Enum.GetValues(typeof(EnemyType))) { MenuText t = new MenuText(typ.ToString(), Color.Gold, Color.Gray, TEXT_SIZE); menuObjs.Add(t); } MenuText menuNoEnemy = new MenuText("NoEnemy", Color.Gold, Color.Gray, TEXT_SIZE); menuObjs.Add(menuNoEnemy); MenuText menuPlayer = new MenuText("Player", Color.Gold, Color.Blue, TEXT_SIZE); menuObjs.Add(menuPlayer); MenuText menuSave = new MenuText("Save", Color.Gold, Color.Red, TEXT_SIZE); menuSave.selectedHandler += EventSave; menuObjs.Add(menuSave); MenuText menuDelete = new MenuText("Delete", Color.Gold, Color.Red, TEXT_SIZE); menuDelete.selectedHandler += EventDelete; menuObjs.Add(menuDelete); MenuText menuQuit = new MenuText("Exit", Color.Gold, Color.Red, TEXT_SIZE); menuQuit.selectedHandler += delegate(MenuObject obj) { backToMenuHandler(obj); }; menuObjs.Add(menuQuit); MenuText menuName = new MenuText(name, Color.Green, Color.Green, TEXT_SIZE); menuObjs.Add(menuName); menu = new Menu(menuObjs, MenuLayout.Horizontal, 5, 700); GenerateMenuBackground(); }
public LevelEditorState(Surface _sfcGameWindow, string _name="untitled") : base(_sfcGameWindow) { camera = new Camera (); name = _name; map = new Map (); map.editor = true; vecPlayer = new Vector (new Point (2, 3)); player = new EditorSprite (vecPlayer, new Player (0, 0)); enemies = new List<EditorSprite> (); if (name.EndsWith (".xml")) { XmlDocument doc = new XmlDocument (); doc.Load (Constants.Constants.GetResourcePath (name)); map.FromXML (doc); XmlNode p = doc.SelectSingleNode ("//player"); player.gridPos.X = Convert.ToInt16 (p.Attributes ["x"].InnerText); player.gridPos.Y = Convert.ToInt16 (p.Attributes ["y"].InnerText); name = name.Replace (".xml", ""); foreach (XmlNode node in doc.SelectNodes("//enemy")) { EnemyType typ = (EnemyType)Enum.Parse (typeof(EnemyType), node.Attributes ["type"].InnerText); int x = Convert.ToInt16 (node.Attributes ["x"].InnerText); int y = Convert.ToInt16 (node.Attributes ["y"].InnerText); Enemy enemy = Enemy.GetEnemy (typ, x, y); EditorSprite s = new EditorSprite (new Vector (new Point (x, y)), enemy); Vector vec = map.GetTilePos (x, y); s.x = vec.X; s.y = vec.Y; s.data = (object)typ; enemies.Add (s); } } else { map.EmptyMap (); } Vector v = map.GetTilePos ((int)player.gridPos.X, (int)player.gridPos.Y); player.x = v.X; player.y = v.Y; grid = new EditorGrid (); List<MenuObject > menuObjs = new List<MenuObject> (); foreach (TileType typ in Enum.GetValues(typeof(TileType))) { MenuText t = new MenuText (typ.ToString (), Color.Gold, Color.Black, TEXT_SIZE); menuObjs.Add (t); } foreach (EnemyType typ in Enum.GetValues(typeof(EnemyType))) { MenuText t = new MenuText (typ.ToString (), Color.Gold, Color.Gray, TEXT_SIZE); menuObjs.Add (t); } MenuText menuNoEnemy = new MenuText ("NoEnemy", Color.Gold, Color.Gray, TEXT_SIZE); menuObjs.Add (menuNoEnemy); MenuText menuPlayer = new MenuText ("Player", Color.Gold, Color.Blue, TEXT_SIZE); menuObjs.Add (menuPlayer); MenuText menuSave = new MenuText ("Save", Color.Gold, Color.Red, TEXT_SIZE); menuSave.selectedHandler += EventSave; menuObjs.Add (menuSave); MenuText menuDelete = new MenuText ("Delete", Color.Gold, Color.Red, TEXT_SIZE); menuDelete.selectedHandler += EventDelete; menuObjs.Add (menuDelete); MenuText menuQuit = new MenuText ("Exit", Color.Gold, Color.Red, TEXT_SIZE); menuQuit.selectedHandler += delegate(MenuObject obj) { backToMenuHandler (obj); }; menuObjs.Add (menuQuit); MenuText menuName = new MenuText (name, Color.Green, Color.Green, TEXT_SIZE); menuObjs.Add (menuName); menu = new Menu (menuObjs, MenuLayout.Horizontal, 5, 700); GenerateMenuBackground (); }