Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }