/// <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> /// Преобразует 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 }); }
/// <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 }); }
/// <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 }); }
/// <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 }); }
/// <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 }); }
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 }); }
/// <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 }); }
/// <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 <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 })); }
/// <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 <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 })); }