private bool ParseRecipesThatUseItem(PgItemUse item, object value, string parsedFile, string parsedKey) { if (!(value is List <object> ObjectList)) { return(Program.ReportFailure(parsedFile, parsedKey, $"Value '{value}' was expected to be a list")); } foreach (object Item in ObjectList) { if (!(Item is int ObjectId)) { return(Program.ReportFailure(parsedFile, parsedKey, $"Value '{Item}' was expected to be an int")); } string Key = $"recipe_{ObjectId}"; PgRecipe ParsedRecipe = null !; if (!Inserter <PgRecipe> .SetItemByKey((PgRecipe valueRecipe) => ParsedRecipe = valueRecipe, Key)) { return(false); } if (item.RecipeList.Contains(ParsedRecipe.Key)) { return(Program.ReportFailure(parsedFile, parsedKey, $"Recipe '{Key}' already listed")); } item.RecipeList.Add(ParsedRecipe.Key); } return(true); }
private bool ParseBestowRecipeList(PgItem item, object value, string parsedFile, string parsedKey) { if (!(value is List <object> ObjectList)) { return(Program.ReportFailure($"Value '{value}' was expected to be a list")); } item.BestowRecipeList = new PgRecipeCollection(); foreach (object Item in ObjectList) { if (!(Item is string RecipeInternalName)) { return(Program.ReportFailure($"Value '{Item}' was expected to be a string")); } PgRecipe ParsedRecipe = null !; if (!Inserter <PgRecipe> .SetItemByInternalName((PgRecipe valueRecipe) => ParsedRecipe = valueRecipe, RecipeInternalName)) { return(false); } item.BestowRecipeList.Add(ParsedRecipe.Key); } return(true); }
public static void UpdateIconIdFromRecipes(PgSkill skill, ref int iconId) { Dictionary <string, ParsingContext> RecipeParsingTable = ParsingContext.ObjectKeyTable[typeof(PgRecipe)]; foreach (KeyValuePair <string, ParsingContext> Entry in RecipeParsingTable) { if (iconId != 0) { break; } PgRecipe Recipe = (PgRecipe)Entry.Value.Item; if (Recipe.Skill_Key == skill.Key && Recipe.IconId != 0) { iconId = Recipe.IconId; } } }
private bool ParseSourceEffect(ref object?item, Dictionary <string, object> contentTable, Dictionary <string, Json.Token> contentTypeTable, List <object> itemCollection, Json.Token lastItemType, string parsedFile, string parsedKey) { if (!contentTable.ContainsKey("EffectName")) { return(Program.ReportFailure(parsedFile, parsedKey, "Source has no effect name")); } if (!(contentTable["EffectName"] is string EffectNameString)) { return(Program.ReportFailure("Source effect name was expected to be a string")); } if (EffectNameString == "Learn Ability") { item = new PgSourceLearnAbility(); return(true); } PgRecipe ParsedRecipe = null !; if (Inserter <PgRecipe> .SetItemByInternalName((PgRecipe valueRecipe) => ParsedRecipe = valueRecipe, EffectNameString, ErrorControl.IgnoreIfNotFound)) { item = new PgSourceRecipe() { Recipe_Key = ParsedRecipe.Key }; return(true); } if (Inserter <PgRecipe> .SetItemByName((PgRecipe valueRecipe) => ParsedRecipe = valueRecipe, EffectNameString, ErrorControl.IgnoreIfNotFound)) { item = new PgSourceRecipe() { Recipe_Key = ParsedRecipe.Key }; return(true); } PgEffect ParsedEffect = null !; if (Inserter <PgEffect> .SetItemByName((PgEffect valueEffect) => ParsedEffect = valueEffect, EffectNameString, ErrorControl.IgnoreIfNotFound)) { item = new PgSourceEffect() { Effect_Key = ParsedEffect.Key }; return(true); } if (!contentTable.ContainsKey("EffectTypeId")) { return(Program.ReportFailure($"Unknown effect name {EffectNameString}")); } if (!(contentTable["EffectTypeId"] is string ValueString)) { return(Program.ReportFailure($"Effect type id was expected to be a string")); } string EffectKey = $"effect_{ValueString}"; if (Inserter <PgEffect> .SetItemByKey((PgEffect valueEffect) => ParsedEffect = valueEffect, EffectKey, ErrorControl.IgnoreIfNotFound)) { item = new PgSourceEffect() { Effect_Key = ParsedEffect.Key }; return(true); } return(Program.ReportFailure($"Unknown effect name {EffectNameString}")); }