예제 #1
0
        static public bool Load(ListBox LB, ComboBox CB_Event, ComboBox CB_Item, ComboBox CB_Art, ref stcDopingEx[] ArrDoping, string FPath)
        {
            bool bRet = true;

            if (File.Exists(FPath))
            {
                FileStream     FS           = new FileStream(FPath, FileMode.Open);
                clsDopingArray ArrTmpDoping = (clsDopingArray)XmlSerializer.Deserialize(FS);
                #region Совсем старая версия без версионизации? (Пересерелиазиция)
                if (ArrTmpDoping.Ver == 0)      //Совсем старая версия без версионизации!
                {
                    FS.Position            = 0; //Прыгаем в начало стрима
                    ArrTmpDoping.ArrDoping = (clsDoping[])(new System.Xml.Serialization.XmlSerializer(typeof(clsDoping[]), XmlRoot)).Deserialize(FS);
                }
                #endregion
                FS.Close();
                #region Определение обрабатываемого к апгрэйду типа (тут, чтоб даже если апгрэйда не будет всё было правильно отображено)
                switch (FPath)
                {
                case "OilLenin.doping":
                    CB_Art.SelectedIndex = 2;
                    break;

                case "Rat.doping":
                    CB_Art.SelectedIndex = 1;
                    break;

                case "Usual.doping":
                    CB_Art.SelectedIndex = 0;
                    break;
                }
                #endregion
                #region Стираю прошлые допинги перед обновлением списка (обязательно после выбора типа допингов)
                LB.Items.Clear();
                ArrDoping = null;
                #endregion
                if (ArrTmpDoping.ArrDoping != null) //Есть допинг?
                {
                    #region Обновление версии допингов?
                    if (ArrTmpDoping.Ver < Version)
                    {
                        bRet &= UpgradeDopingVer(CB_Event, CB_Item, CB_Art, FPath, ref ArrTmpDoping);
                    }
                    #endregion
                    LB.Items.AddRange(ArrTmpDoping.ArrDoping);
                    UpdateDopingArr(LB, ref ArrDoping);
                }
            }
            return(bRet);
        }
예제 #2
0
        public static bool[] AlreadyEated = new bool[Enum.GetValues(typeof(DopingType)).Length + 1]; //Последний элемент показывает все ли допинги из списка были сьедены.

        static private bool UpgradeDopingVer(ComboBox CB_Event, ComboBox CB_Item, ComboBox CB_Art, string FPath, ref clsDopingArray Arr)
        {
            bool bRet        = true;
            int  EventOffset = 0;
            int  TypeOffset  = 0;

            #region Определения типа обрабатываемого допинга и оффсэты
            switch (FPath)
            {
            case "OilLenin.doping":
                break;

            case "Rat.doping":
                TypeOffset = 2;     //Оффсэт на синхронизазию крыс и партбилеты
                break;

            case "Usual.doping":
                EventOffset = 1;    //Оффсэт на нападать при уровне.
                TypeOffset  = 2;    //Оффсэт на синхронизазию крыс и партбилеты
                break;
            }
            #endregion
            #region Апгрэйд списка допингов
            Regex regex = new Regex("(?<=. )([^:])+(?(?=[:] [0-9]):|.+)");
            foreach (clsDoping Doping in Arr.ArrDoping)
            {
                switch (Doping.Grp)
                {
                case 1:     //Event
                    // Match match = Regex.Match(Doping.Text, "(?<=. )([^:])+(?(?=[:] [0-9]):|.+)");
                    Doping.Item = CB_Event.Items.IndexOf(regex.Match(Doping.Text).Value);
                    if (Doping.Item < 0)
                    {
                        bRet = false;                      //Допинг не найден!
                    }
                    else
                    {
                        Doping.Item += EventOffset;
                    }
                    break;

                case 2:     //Item
                    Doping.Item = CB_Item.Items.IndexOf(regex.Match(Doping.Text).Value);
                    if (Doping.Item < 0)
                    {
                        bRet = false;                      //Допинг не найден!
                    }
                    else
                    {
                        Doping.Item += TypeOffset;
                    }
                    break;
                }
            }
            #endregion
            return(bRet);
        }