示例#1
0
 public void AddPers(IEnumerable <TPers> lsPers)
 {
     if (lsPers.Count() > 0)
     {
         List <TPers> newPers = new List <TPers>();
         newPers.AddRange(PersList);
         List <TLevel> newLevel = new List <TLevel>();
         newLevel.AddRange(LevelList);
         foreach (TPers p in lsPers)
         {
             newPers.Add(p);
             if ((from x in newLevel where x.Level == p.Level select x).Count() == 0)
             {
                 TLevel lvl = new TLevel(this, p.Level);
                 lvl.Color = ColorList[p.Level % ColorList.Length];
                 newLevel.Add(lvl);
             }
         }
         PersList  = newPers.ToArray();
         LevelList = newLevel.ToArray();
         if (RoomList.Length == 0)
         {
             fRoomList.Add(new TRoom(this));
             CurRoom = RoomList[0];
         }
         if (CurLevel == null)
         {
             CurLevel = LevelList[0];
         }
         IsChange = true;
         OnPropertyChanged();
     }
 }
示例#2
0
 public TSetting()
 {
     PersList   = new TPers[] { };
     LevelList  = new TLevel[] { };
     ComAddRoom = new RelayCommand(DoComAddRoom);
     ComDelRoom = new RelayCommand(DoComDelRoom);
     ComSave    = new RelayCommand(DoComSave);
     ComLoad    = new RelayCommand(DoComLoad);
     ComNew     = new RelayCommand(DoComNew);
     ComAddPers = new RelayCommand(DoComAddPers);
     ComRepMap  = new RelayCommand(DoComRepMap);
     ComRepList = new RelayCommand(DoComRepList);
     ComRepRoom = new RelayCommand(DoComRepRoom);
 }
示例#3
0
 private void DoComNew()
 {
     if (IsChange && (MessageBox.Show("Текущая рассадка не сохранена. Продолжить?", "Вопрос", MessageBoxButton.YesNo) == MessageBoxResult.No))
     {
         return;
     }
     PersList  = new TPers[] { };
     LevelList = new TLevel[] { };
     fRoomList.Clear();
     fRoomList.Add(new TRoom(this));
     CurRoom  = null;
     CurLevel = null;
     IsChange = false;
     OnPropertyChanged();
 }
示例#4
0
        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();
        }