Пример #1
0
        /// <summary>
        /// Преобразование ресурса в объект стиль текста
        /// </summary>
        /// <param name="obj">Преобразуемый ресурс</param>
        /// <param name="lr">список всех ресурсов</param>
        public static Tuple <ITextStyle, ListResourse> ResourceToTextStyle(ResourceItem obj, ListResourse lr)
        {
            obj.Data.Position = 0;
            ITextStyle result = new TextStyle();

            // SerializableInventoryItem s = new SerializableInventoryItem(obj.Data);
            using (var data = new BinaryReader(obj.Data, Encoding.UTF8, true))
            {
                result.Name      = data.ReadString();
                result.ID        = obj.Identifier;
                result.Font      = new Font(data.ReadString());
                result.FontSize  = data.ReadInt32();
                result.FontStyle = (FontStyle)data.ReadInt32();
            }

            TextStyleCashe.Add(result);
            return(new Tuple <ITextStyle, ListResourse>(result, new ListResourse {
                obj
            }));
        }
Пример #2
0
        /// <summary>
        /// Преобразует ILanguagePack в масив ресуров
        /// </summary>
        /// <param name="languagePack">Объект языкового пакета</param>
        /// <returns>Массив русурсов</returns>
        public static ListResourse ToResource(ILanguagePack languagePack)
        {
            ResourceItem resourse = null;

            using (MemoryStream ms = new MemoryStream())
            {
                using (var data = new BinaryWriter(ms, Encoding.UTF8, true))
                {
                    data.Write(languagePack.Name); //Поле Name


                    data.Write(languagePack.LanguageData.Count);
                    languagePack.LanguageData.ForEach((item) => { data.Write(item.Key ?? string.Empty); data.Write(item.Value ?? string.Empty); });
                }
                resourse = CreateItem(languagePack.ID, StringNameLanguagePackData + languagePack.Name, FileTypes.Language, ms);
            }

            return(new ListResourse {
                resourse
            });
        }
Пример #3
0
        /// <summary>
        /// Преобразует IBoss в масив ресуров
        /// </summary>
        /// <param name="boss">Объект босса</param>
        /// <returns>Массив русурсов</returns>
        public static ListResourse ToResource(IBoss boss)
        {
            ResourceItem resourse = null;

            using (MemoryStream ms = new MemoryStream())
            {
                using (var data = new BinaryWriter(ms, Encoding.UTF8, true))
                {
                    data.Write(boss.Name);                  //Поле Name
                    data.Write(boss.TranslationIdentifier); //Идентификатор перевода

                    data.Write(boss.Health);
                    data.Write(boss.Damage);
                }
                resourse = CreateItem(boss.ID, StringNameBossData + boss.Name, FileTypes.Boss, ms);
            }

            return(new ListResourse {
                resourse
            });
        }
Пример #4
0
        /// <summary>
        /// Преобразует ITextStyle в масив ресуров
        /// </summary>
        /// <param name="languagePack">Объект элемента инвентаря</param>
        /// <returns>Массив русурсов</returns>
        public static ListResourse ToResource(ITextStyle textStyle)
        {
            ResourceItem resourse = null;

            using (MemoryStream ms = new MemoryStream())
            {
                using (var data = new BinaryWriter(ms, Encoding.UTF8, true))
                {
                    data.Write(textStyle.Name); //Поле Name


                    data.Write(textStyle.Font.name);
                    data.Write(textStyle.FontSize);
                    data.Write((int)textStyle.FontStyle); //Поле типа улучшения для здоровья
                }
                resourse = CreateItem(textStyle.ID, StringNameTextStyleData + textStyle.Name, FileTypes.TextStyle, ms);
            }

            return(new ListResourse {
                resourse
            });
        }
Пример #5
0
        /// <summary>
        /// Преобразует IAge в масив ресуров
        /// </summary>
        /// <param name="languagePack">Объект эры</param>
        /// <returns>Массив русурсов</returns>
        public static ListResourse ToResource(IAge age)
        {
            ResourceItem resourse       = null;
            ResourceItem resourseLevels = null;

            using (MemoryStream ms = new MemoryStream())
            {
                using (var data = new BinaryWriter(ms, Encoding.UTF8, true))
                {
                    data.Write(age.Name);                  //Поле Name
                    data.Write(age.TranslationIdentifier); //Идентификатор перевода

                    // data.Write(age.Levels.Count);
                    //  age.Levels.ForEach((item) => data.Write(item.ID));
                    var isparent = age.Parent != null;
                    data.Write(isparent);
                    if (isparent)
                    {
                        data.Write(age.Parent.ID);
                    }
                    data.Write(age.Price.Gold);
                    data.Write(age.Price.Brains);
                }
                resourse = CreateItem(age.ID, StringNameAgeData + age.Name, FileTypes.Age, ms);
            }
            using (MemoryStream ms = new MemoryStream())
            {
                using (var data = new BinaryWriter(ms, Encoding.UTF8, true))
                {
                    data.Write(age.Levels.Count);
                    age.Levels.ForEach((item) => data.Write(item.ID));
                }
                resourseLevels = CreateItem(age.ID, StringNameLevelsAgeData + age.Name, FileTypes.LevelsAge, ms);
            }
            return(new ListResourse {
                resourse, resourseLevels
            });
        }
Пример #6
0
        /// <summary>
        /// Преобразует ILevel в масив ресуров
        /// </summary>
        /// <param name="level">Объект уровня</param>
        /// <returns>Массив русурсов</returns>
        public static ListResourse ToResource(ILevel level)
        {
            ResourceItem resourse = null;

            using (MemoryStream ms = new MemoryStream())
            {
                using (var data = new BinaryWriter(ms, Encoding.UTF8, true))
                {
                    data.Write(level.Name);                  //Поле Name
                    data.Write(level.TranslationIdentifier); //Идентификатор перевода
                    var isboss = level.Boss != null;
                    data.Write(isboss);
                    if (isboss)
                    {
                        data.Write(level.Boss.ID);
                    }
                    data.Write(level.QuestionsLevel.Count);
                    for (int i = 0; i < level.QuestionsLevel.Count; i++)
                    {
                        data.Write(level.QuestionsLevel[i].ID);
                    }
                    data.Write(level.Price.Gold);
                    data.Write(level.Price.Brains);
                    data.Write(level.Remuneration.Gold);
                    data.Write(level.Remuneration.Brains);
                    data.Write(level.Parents.Count);
                    for (int i = 0; i < level.Parents.Count; i++)
                    {
                        data.Write(level.Parents[i].ID);
                    }
                }
                resourse = CreateItem(level.ID, StringNameLevelData + level.Name, FileTypes.Level, ms);
            }

            return(new ListResourse {
                resourse
            });
        }
Пример #7
0
        public static ListResourse ToResource(SaveLevelData obj)
        {
            ResourceItem resourse = null;

            using (MemoryStream ms = new MemoryStream())
            {
                using (var data = new BinaryWriter(ms, Encoding.UTF8, true))
                {
                    data.Write(obj.StateLevel.Count); //Колличесво элементов

                    for (int i = 0; i < obj.StateLevel.Count; i++)
                    {
                        data.Write(obj.StateLevel.ElementAt(i).Key);
                        data.Write((UInt64)obj.StateLevel.ElementAt(i).Value);
                    }
                }
                resourse = CreateItem(obj.ID, obj.Name, FileTypes.SaveData, ms);
            }

            return(new ListResourse {
                resourse
            });
        }
Пример #8
0
        /// <summary>
        /// Преобразует IInventoryItem в масив ресуров
        /// </summary>
        /// <param name="languagePack">Объект элемента инвентаря</param>
        /// <returns>Массив русурсов</returns>
        public static ListResourse ToResource(IInventoryItem inventoryItem)
        {
            ResourceItem resourse = null;

            using (MemoryStream ms = new MemoryStream())
            {
                using (var data = new BinaryWriter(ms, Encoding.UTF8, true))
                {
                    data.Write(inventoryItem.Name);                                       //Поле Name
                    data.Write(inventoryItem.TranslationIdentifier);                      //Идентификатор перевода

                    data.Write((ulong)inventoryItem.ImproveResponseTime.TypeEnhancement); //Поле типа улучшения для времени
                    data.Write(inventoryItem.ImproveResponseTime.Value);                  //Поле значения улучшения для времени
                    data.Write((ulong)inventoryItem.ImprovingHealth.TypeEnhancement);     //Поле типа улучшения для здоровья
                    data.Write(inventoryItem.ImprovingHealth.Value);                      //Поле значения улучшения для здоровья
                }
                resourse = CreateItem(inventoryItem.ID, StringNameInventoryItemData + inventoryItem.Name, FileTypes.InventoryItem, ms);
            }

            return(new ListResourse {
                resourse
            });
        }
Пример #9
0
        /// <summary>
        /// Преобразование ресурса в объект типа элемент инвентаря
        /// </summary>
        /// <param name="obj">Преобразуемый ресурс</param>
        /// <param name="lr">список всех ресурсов</param>
        public static Tuple <IInventoryItem, ListResourse> ResourceToInventoryItem(ResourceItem obj, ListResourse lr)
        {
            obj.Data.Position = 0;
            IInventoryItem result = new InventoryItem();

            // SerializableInventoryItem s = new SerializableInventoryItem(obj.Data);
            using (var data = new BinaryReader(obj.Data, Encoding.UTF8, true))
            {
                result.Name = data.ReadString();
                result.ID   = obj.Identifier;
                result.TranslationIdentifier = data.ReadString();
                result.ImproveResponseTime   = new Enhancements();
                result.ImproveResponseTime.TypeEnhancement = (TypeEnhancements)data.ReadUInt64();
                result.ImproveResponseTime.Value           = data.ReadDouble();
                result.ImprovingHealth = new Enhancements {
                    TypeEnhancement = (TypeEnhancements)data.ReadUInt64(), Value = data.ReadDouble()
                };
            }

            InventoryItemCashe.Add(result);
            return(new Tuple <IInventoryItem, ListResourse>(result, new ListResourse {
                obj
            }));
        }
Пример #10
0
        /// <summary>
        /// Преобразование ресурса в объект типа языковой пакет
        /// </summary>
        /// <param name="obj">Преобразуемый ресурс</param>
        /// <param name="lr">список всех ресурсов</param>
        public static Tuple <ILanguagePack, ListResourse> ResourceToLanguagePack(ResourceItem obj, ListResourse lr)
        {
            obj.Data.Position = 0;
            ILanguagePack result = new LanguagePack();

            // SerializableInventoryItem s = new SerializableInventoryItem(obj.Data);
            using (var data = new BinaryReader(obj.Data, Encoding.UTF8, true))
            {
                result.Name = data.ReadString();
                //result.ID = obj.Identifier;

                int ldatacount = data.ReadInt32();
                result.LanguageData = new LocalizationDictionary();
                for (int i = 0; i < ldatacount; i++)
                {
                    result.LanguageData.Add(new LocalizationKeyValuePair(data.ReadString(), data.ReadString()));
                }
            }

            LanguagePackCashe.Add(result);
            return(new Tuple <ILanguagePack, ListResourse>(result, new ListResourse {
                obj
            }));
        }
Пример #11
0
        /// <summary>
        /// Преобразование ресурса в объект типа вопрос
        /// </summary>
        /// <param name="obj">Преобразуемый ресурс</param>
        /// <param name="lr">список всех ресурсов</param>
        public static Tuple <IQuestion, ListResourse> ResourceToQuestion(ResourceItem obj, ListResourse lrp)
        {
            obj.Data.Position = 0;
            IQuestion result = null;

            // SerializableInventoryItem s = new SerializableInventoryItem(obj.Data);
            using (var data = new BinaryReader(obj.Data, Encoding.UTF8, true))
            {
                String name = data.ReadString();
                String translationIdentifier = data.ReadString();

                TypeQuestionEnum typeQuestion = (TypeQuestionEnum)data.ReadUInt64();
                if (typeQuestion == TypeQuestionEnum.SelectOne)
                {
                    QuestionSelectOne qsoresult = new QuestionSelectOne();
                    qsoresult.Name = name;
                    qsoresult.ID   = obj.Identifier;
                    qsoresult.TranslationIdentifier = translationIdentifier;

                    qsoresult.NumberAnswer = data.ReadUInt32();
                    qsoresult.RightAnswer  = data.ReadUInt32();
                    result = qsoresult;
                }
            }
            if (questionlevelcashe.ContainsKey(result.ID))
            {
                for (int j = 0; j < questionlevelcashe[result.ID].Count; j++)
                {
                    questionlevelcashe[result.ID][j].QuestionsLevel.Add(result);
                }
            }
            QuestionCashe.Add(result);
            return(new Tuple <IQuestion, ListResourse>(result, new ListResourse {
                obj
            }));
        }
Пример #12
0
        /// <summary>
        /// Преобразование ресурса в объект типа уровень
        /// </summary>
        /// <param name="obj">Преобразуемый ресурс</param>
        /// <param name="lr">список всех ресурсов</param>
        /// <param name="bosses">Боссы</param>
        /// <param name="questions">Вопросы</param>
        /// <param name="levels">Уровни</param>
        /// <returns></returns>
        public static Tuple <ILevel, ListResourse> ResourceToLevel(ResourceItem obj, ListResourse lr)
        {
            obj.Data.Position = 0;
            Level result = new Level();

            // SerializableInventoryItem s = new SerializableInventoryItem(obj.Data);
            using (var data = new BinaryReader(obj.Data, Encoding.UTF8, true))
            {
                result.Name = data.ReadString();
                result.ID   = obj.Identifier;
                result.TranslationIdentifier = data.ReadString();

                {     //Обработка босса уровня
                    var Isboss = data.ReadBoolean();
                    if (Isboss)
                    {
                        var   bossid    = data.ReadUInt64();
                        IBoss bosslevel = BossCashe.Find((item) => item.ID == bossid);
                        if (bosslevel != null)
                        {
                            result.Boss = bosslevel;
                        }
                        else
                        {
                            result.Boss = new Boss {
                                ID = bossid
                            };
                            if (!bosslevelcashe.ContainsKey(bossid))
                            {
                                bosslevelcashe[bossid] = new List <ILevel>();
                            }
                            bosslevelcashe[bossid].Add(result);
                        }
                    }
                }
                {     //Обработка вопросов уровня
                    var questioncount = data.ReadInt32();
                    result.QuestionsLevel = new DataList <IQuestion>();
                    for (int j = 0; j < questioncount; j++)
                    {
                        var       questionid   = data.ReadUInt64();
                        IQuestion qestionlevel = QuestionCashe.Find((item) => item.ID == questionid);
                        if (qestionlevel != null)
                        {
                            result.QuestionsLevel.Add(qestionlevel);
                        }
                        else
                        {
                            result.QuestionsLevel.Add(new QuestionSelectOne {
                                ID = questionid
                            });
                            if (!questionlevelcashe.ContainsKey(questionid))
                            {
                                questionlevelcashe[questionid] = new List <ILevel>();
                            }
                            questionlevelcashe[questionid].Add(result);
                        }
                    }
                }
                result.Price        = new Money(data.ReadUInt32(), data.ReadUInt32());
                result.Remuneration = new Money(data.ReadUInt32(), data.ReadUInt32());

                {     //Обработка родителей уровня 1
                    result.Parents = new DataList <ILevel>();
                    var parentcount = data.ReadInt32();
                    for (int j = 0; j < parentcount; j++)
                    {
                        var    parentid   = data.ReadUInt64();
                        ILevel levellevel = LevelCashe.Find((item) => item.ID == parentid);
                        if (levellevel != null)
                        {
                            result.Parents.Add(levellevel);
                        }
                        else
                        {
                            result.Parents.Add(new Level {
                                ID = parentid
                            });
                            if (!levellevelcashe.ContainsKey(parentid))
                            {
                                levellevelcashe[parentid] = new List <ILevel>();
                            }
                            levellevelcashe[parentid].Add(result);
                        }
                    }
                }
                {     //Обработка родителей уровня 2
                    if (levellevelcashe.ContainsKey(result.ID))
                    {
                        for (int j = 0; j < levellevelcashe[result.ID].Count; j++)
                        {
                            levellevelcashe[result.ID][j].Parents.Add(result);
                        }
                    }
                }
                {     //Обработка эр
                    if (levelagecashe.ContainsKey(result.ID))
                    {
                        for (int j = 0; j < levellevelcashe[result.ID].Count; j++)
                        {
                            levelagecashe[result.ID][j].Levels.Add(result);
                        }
                    }
                }
            }

            LevelCashe.Add(result);
            return(new Tuple <ILevel, ListResourse>(result, new ListResourse {
                obj
            }));
        }
Пример #13
0
        /// <summary>
        /// Преобразование ресурса в объект типа эра
        /// </summary>
        /// <param name="obj">Преобразуемый ресурс</param>
        /// <param name="lr">список всех ресурсов</param>
        public static Tuple <IAge, ListResourse> ResourceToAge(ResourceItem obj, ListResourse lr)
        {
            obj.Data.Position = 0;

            IAge result = new Age();

            // SerializableInventoryItem s = new SerializableInventoryItem(obj.Data);
            using (var data = new BinaryReader(obj.Data, Encoding.UTF8, true))
            {
                result.Name = data.ReadString();
                result.ID   = obj.Identifier;
                result.TranslationIdentifier = data.ReadString();
                { //Обработка уровней
                    var levelsage = lr.FindAllByTypeAndIdentifier(FileTypes.LevelsAge, obj.Identifier);
                    result.Levels = new DataList <ILevel>();
                    for (int i = 0; i < levelsage.Count; i++)
                    {
                        using (var data1 = new BinaryReader(levelsage[i].Data, Encoding.UTF8, true))
                        {
                            int levelcount = data1.ReadInt32();
                            for (int j = 0; j < levelcount; j++)
                            {
                                var    levelid  = data1.ReadUInt64();
                                ILevel levelage = LevelCashe.Find((item) => item.ID == levelid);
                                if (levelage != null)
                                {
                                    result.Levels.Add(levelage);
                                }
                                else
                                {
                                    result.Levels.Add(new Level {
                                        ID = levelid
                                    });
                                    if (!levelagecashe.ContainsKey(levelid))
                                    {
                                        levelagecashe[levelid] = new List <IAge>();
                                    }
                                    levelagecashe[levelid].Add(result);
                                }
                            }
                        }
                    }
                }

                /*{ //Обработка уровней
                 *   int levelcount = data.ReadInt32();
                 *   result.Levels = new DataList<ILevel>();
                 *   for (int j = 0; j < levelcount; j++)
                 *   {
                 *       var levelid = data.ReadUInt64();
                 *       ILevel levelage = LevelCashe.Find((item) => item.ID == levelid);
                 *       if (levelage != null)
                 *       {
                 *           result.Levels.Add(levelage);
                 *       }
                 *       else
                 *       {
                 *           result.Levels.Add(new Level { ID = levelid });
                 *           if (!levelagecashe.ContainsKey(levelid))
                 *               levelagecashe[levelid] = new List<IAge>();
                 *           levelagecashe[levelid].Add(result);
                 *       }
                 *   }
                 *
                 *
                 *
                 * }*/

                {     //Обработка родителя эры 1
                    var Isparent = data.ReadBoolean();
                    if (Isparent)
                    {
                        var  parentid = data.ReadUInt64();
                        IAge AgeAge   = AgeCashe.Find((item) => item.ID == parentid);
                        if (AgeAge != null)
                        {
                            result.Parent = AgeAge;
                        }
                        else
                        {
                            result.Parent = new Age {
                                ID = parentid
                            };
                            if (!ageagecashe.ContainsKey(parentid))
                            {
                                ageagecashe[parentid] = new List <IAge>();
                            }
                            ageagecashe[parentid].Add(result);
                        }
                    }
                }
                result.Price = new Money(data.ReadUInt32(), data.ReadUInt32());

                {     //Обработка родителя эры 2
                    if (ageagecashe.ContainsKey((ulong)result.ID))
                    {
                        for (int j = 0; j < levellevelcashe[(ulong)result.ID].Count; j++)
                        {
                            ageagecashe[(ulong)result.ID][j].Parent = result;
                        }
                    }
                }
            }
            AgeCashe.Add(result);
            return(new Tuple <IAge, ListResourse>(result, new ListResourse {
                obj
            }));
        }