private void DoComAddRoom() { TRoom room = new TRoom(this); fRoomList.Add(room); CurRoom = room; IsChange = true; OnPropertyChanged("RoomList"); OnPropertyChanged("CurRoom"); OnPropertyChanged("IsEnableDelRoom"); }
private void DoComDelRoom() { if (IsEnableDelRoom) { TRoom old = CurRoom; int n = fRoomList.IndexOf(old); CurRoom = (n == fRoomList.Count - 1 ? RoomList[n - 1] : RoomList[n + 1]); fRoomList.Remove(old); IsChange = true; OnPropertyChanged("RoomList"); OnPropertyChanged("CurRoom"); OnPropertyChanged("IsEnableDelRoom"); } }
public TTable(TRoom parent) { Parent = parent; ComSetLeft = new RelayCommand(DoComSetLeft); ComSetRight = new RelayCommand(DoComSetRight); }
public void SetXml(XmlDocument xml) { XmlNode xRoot = xml.SelectSingleNode("/OlimpSet"); if (xRoot == null) { throw new Exception("Не найден тег «/OlimpSet»"); } XmlNode xVersion = xRoot.SelectSingleNode("Version"); if (xVersion == null) { throw new Exception("Не найден тег «/OlimpSet/Version»"); } if (Util.NormStr(xVersion.InnerText) != "1.0") { throw new Exception("Неизвестная версия"); } #region PersList XmlNode xPersList = xRoot.SelectSingleNode("PersList"); if (xPersList == null) { throw new Exception("Не найден тег «/OlimpSet/PersList»"); } List <TPers> lsPers = new List <TPers>(); foreach (XmlNode xPers in xPersList.SelectNodes("Pers")) { XmlNode xFio = xPers.SelectSingleNode("Fio"); if (xFio == null) { throw new Exception("Не найден тег «.../Pers/Fio»"); } string Fio = Util.NormStr(xFio.InnerText); XmlNode xLevel = xPers.SelectSingleNode("Level"); if (xLevel == null) { throw new Exception("Не найден тег «.../Pers/Level»"); } int Level = int.Parse(Util.NormStr(xLevel.InnerText)); XmlNode xSymbol = xPers.SelectSingleNode("Symbol"); if (xSymbol == null) { throw new Exception("Не найден тег «.../Pers/Symbol»"); } string Symbol = Util.NormStr(xSymbol.InnerText); XmlNode xRem = xPers.SelectSingleNode("Rem"); if (xRem == null) { throw new Exception("Не найден тег «.../Pers/Rem»"); } string Rem = Util.NormStr(xRem.InnerText); lsPers.Add(new TPers(this, Fio, Level, Symbol, Rem)); } PersList = lsPers.ToArray(); #endregion #region ColorList List <TLevel> lsLevel = new List <TLevel>(); XmlNode xColorList = xRoot.SelectSingleNode("ColorList"); if (xColorList == null) { throw new Exception("Не найден тег «/OlimpSet/ColorList»"); } foreach (XmlNode xColor in xColorList.SelectNodes("Color")) { XmlNode xLevel = xColor.SelectSingleNode("Level"); if (xLevel == null) { throw new Exception("Не найден тег «.../Color/Level»"); } int Level = int.Parse(Util.NormStr(xLevel.InnerText)); XmlNode xRGB = xColor.SelectSingleNode("RGB"); if (xRGB == null) { throw new Exception("Не найден тег «.../Pers/RGB»"); } Color Color = (Color)ColorConverter.ConvertFromString(Util.NormStr(xRGB.InnerText)); TLevel lvl = new TLevel(this, Level); lvl.Color = Color; lsLevel.Add(lvl); } LevelList = (from x in lsLevel orderby x.Level select x).ToArray(); #endregion #region RoomList fRoomList.Clear(); XmlNode xRoomList = xRoot.SelectSingleNode("RoomList"); if (RoomList == null) { throw new Exception("Не найден тег «/OlimpSet/RoomList»"); } foreach (XmlNode xRoom in xRoomList.SelectNodes("Room")) { XmlNode xNumRoom = xRoom.SelectSingleNode("NumRoom"); if (xNumRoom == null) { throw new Exception("Не найден тег «.../Room/NumRoom»"); } string NumRoom = Util.NormStr(xNumRoom.InnerText); XmlNode xBoss = xRoom.SelectSingleNode("Boss"); if (xBoss == null) { throw new Exception("Не найден тег «.../Room/Boss»"); } string Boss = Util.NormStr(xBoss.InnerText); TRoom room = new TRoom(this); fRoomList.Add(room); room.NumRoom = NumRoom; room.Boss = Boss; #region TableList XmlNode xTableList = xRoom.SelectSingleNode("TableList"); if (xTableList == null) { throw new Exception("Не найден тег «.../Room/TableList»"); } foreach (XmlNode xTable in xTableList.SelectNodes("Table")) { XmlNode xRow = xTable.SelectSingleNode("Row"); if (xRow == null) { throw new Exception("Не найден тег «.../Table/Row»"); } int Row = int.Parse(Util.NormStr(xRow.InnerText)); XmlNode xCol = xTable.SelectSingleNode("Col"); if (xCol == null) { throw new Exception("Не найден тег «.../Table/Col»"); } int Col = int.Parse(Util.NormStr(xCol.InnerText)); TTable tb = room.TableList[Row - 1, Col - 1]; XmlNode xLeft = xTable.SelectSingleNode("Left"); if (xLeft == null) { throw new Exception("Не найден тег «.../Table/Left»"); } int Left = int.Parse(Util.NormStr(xLeft.InnerText)); XmlNode xRight = xTable.SelectSingleNode("Right"); if (xRight == null) { throw new Exception("Не найден тег «.../Table/Right»"); } int Right = int.Parse(Util.NormStr(xRight.InnerText)); if (Left != 0) { tb.Left = PersList[Left - 1]; } if (Right != 0) { tb.Right = PersList[Right - 1]; } } #endregion } #endregion CurRoom = RoomList[0]; CurLevel = LevelList[0]; OnPropertyChanged(); }