private bool FinishItem(PgRewardList item, Dictionary <string, object> contentTable, Dictionary <string, Json.Token> contentTypeTable, List <object> itemCollection, Json.Token lastItemType, string parsedFile, string parsedKey) { foreach (KeyValuePair <string, object> Entry in contentTable) { string Key = Entry.Key; object Value = Entry.Value; string[] Split = Key.Split('_'); string EntryLevelString = Split[0]; if (!int.TryParse(EntryLevelString, out int EntryLevel)) { return(Program.ReportFailure($"Invalid skill reward level '{EntryLevelString}'")); } List <Race> EntryRaceList = new List <Race>(); for (int i = 1; i < Split.Length; i++) { string EntryRaceString = Split[i]; if (!StringToEnumConversion <Race> .TryParse(EntryRaceString, out Race EntryRace)) { return(Program.ReportFailure($"Invalid skill reward race '{EntryRaceString}'")); } EntryRaceList.Add(EntryRace); } foreach (PgReward Reward in item.List) { bool IsFound = false; foreach (Race Race in EntryRaceList) { IsFound |= Reward.RaceRestrictionList.Contains(Race); } if (IsFound && Reward.RewardLevel == EntryLevel) { return(Program.ReportFailure($"Level {EntryLevel} already added")); } } if (!(Value is ParsingContext Context)) { return(Program.ReportFailure($"Value '{Value}' was expected to be a context")); } if (!(Context.Item is PgReward AsReward)) { return(Program.ReportFailure($"Object '{Value}' was unexpected")); } AsReward.RawRewardLevel = EntryLevel; AsReward.RaceRestrictionList.AddRange(EntryRaceList); item.List.Add(AsReward); } return(true); }
private bool ParseRewards(PgSkill item, object value, string parsedFile, string parsedKey) { PgRewardList ParsedRewardList = null !; if (!Inserter <PgRewardList> .SetItemProperty((PgRewardList valueRewardList) => ParsedRewardList = valueRewardList, value)) { return(false); } foreach (PgReward Reward in ParsedRewardList.List) { int Level = Reward.RewardLevel; List <Race> RaceRestrictionList = Reward.RaceRestrictionList; string? AbilityKey = Reward.Ability_Key; string? BonusLevelSkillKey = Reward.BonusLevelSkill_Key; string? RecipeKey = Reward.Recipe_Key; string Notes = Reward.Notes; if (AbilityKey != null) { PgSkillAdvancement NewSkillAdvancement = new PgSkillAdvancementRewardAbility() { RawLevel = Level, RaceRestrictionList = RaceRestrictionList, Ability_Key = AbilityKey }; ParsingContext.AddSuplementaryObject(NewSkillAdvancement); item.SkillAdvancementList.Add(NewSkillAdvancement); } if (BonusLevelSkillKey != null) { PgSkillAdvancement NewSkillAdvancement = new PgSkillAdvancementRewardBonusLevel() { RawLevel = Level, RaceRestrictionList = RaceRestrictionList, BonusLevelSkill_Key = BonusLevelSkillKey }; ParsingContext.AddSuplementaryObject(NewSkillAdvancement); item.SkillAdvancementList.Add(NewSkillAdvancement); } if (RecipeKey != null) { PgSkillAdvancement NewSkillAdvancement = new PgSkillAdvancementRewardRecipe() { RawLevel = Level, RaceRestrictionList = RaceRestrictionList, Recipe_Key = RecipeKey }; ParsingContext.AddSuplementaryObject(NewSkillAdvancement); item.SkillAdvancementList.Add(NewSkillAdvancement); } if (Notes.Length > 0) { PgSkillAdvancement NewSkillAdvancement = new PgSkillAdvancementNotes() { RawLevel = Level, RaceRestrictionList = RaceRestrictionList, Text = Notes }; ParsingContext.AddSuplementaryObject(NewSkillAdvancement); item.SkillAdvancementList.Add(NewSkillAdvancement); } } return(true); }