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

            // 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.Health = data.ReadUInt32();
                result.Damage = data.ReadUInt32();
            }
            if (bosslevelcashe.ContainsKey(result.ID))
            {
                for (int j = 0; j < bosslevelcashe[result.ID].Count; j++)
                {
                    bosslevelcashe[result.ID][j].Boss = result;
                }
            }
            BossCashe.Add(result);
            return(new Tuple <IBoss, ListResourse>(result, new ListResourse {
                obj
            }));
        }
        public static SaveUserData ResourceToSaveUser(ResourceItem obj, ListResourse lr)
        {
            obj.Data.Position = 0;
            SaveUserData result = new SaveUserData();

            using (var data = new BinaryReader(obj.Data, Encoding.UTF8, true))
            {
                var stateLevelSavecount = data.ReadInt32();
                result.CorrectName.Clear();

                for (int i = 0; i < stateLevelSavecount; i++)
                {
                    result.CorrectName.Add(data.ReadUInt64(), data.ReadString());
                }
            }
            return(result);
        }
Example #3
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
            }));
        }
Example #4
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
            }));
        }
Example #5
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
            }));
        }
Example #6
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
            }));
        }
Example #7
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
            }));
        }
Example #8
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
            }));
        }