/// <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); }
/// <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 })); }
/// <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 })); }
/// <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 })); }
/// <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 })); }
/// <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 })); }
/// <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 })); }