Пример #1
0
        private bool ParseInteractionFlagLevelCaps(PgSkill item, object value, string parsedFile, string parsedKey)
        {
            PgLevelCapInteractionList ParsedLevelCapInteractionList = null !;

            if (!Inserter <PgLevelCapInteractionList> .SetItemProperty((PgLevelCapInteractionList valueLevelCapInteractionList) => ParsedLevelCapInteractionList = valueLevelCapInteractionList, value))
            {
                return(false);
            }

            foreach (PgLevelCapInteraction Item in ParsedLevelCapInteractionList.List)
            {
                int    Level    = Item.Level;
                string?SkillKey = Item.Skill_Key;

                PgSkillAdvancement NewSkillAdvancement = new PgSkillAdvancementLevelCapInteraction()
                {
                    RawLevel = Level, Skill_Key = SkillKey
                };

                ParsingContext.AddSuplementaryObject(NewSkillAdvancement);
                item.SkillAdvancementList.Add(NewSkillAdvancement);
            }

            return(true);
        }
Пример #2
0
        private bool FinishItem(PgLevelCapInteractionList 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;

                if (!(Value is int EntryLevel))
                {
                    return(Program.ReportFailure($"Invalid level cap interaction '{Value}'"));
                }

                if (!ParseInteraction(item, Key, EntryLevel, parsedFile, parsedKey))
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #3
0
        private bool ParseInteraction(PgLevelCapInteractionList item, string interaction, int level, string parsedFile, string parsedKey)
        {
            if (interaction.Length > 0 && char.IsDigit(interaction[interaction.Length - 1]))
            {
                int FirstDigitIndex = interaction.Length - 1;
                while (FirstDigitIndex > 0 && char.IsDigit(interaction[FirstDigitIndex - 1]))
                {
                    FirstDigitIndex--;
                }

                if (FirstDigitIndex > 0 && interaction[FirstDigitIndex - 1] != '_' && interaction[FirstDigitIndex - 1] != ' ')
                {
                    interaction = interaction.Substring(0, FirstDigitIndex) + "_" + interaction.Substring(FirstDigitIndex);
                }
            }

            string[] Split = interaction.Split('_');

            if (Split.Length < 3 || Split[0] != "LevelCap")
            {
                return(Program.ReportFailure($"Invalid level cap interaction '{interaction}'"));
            }

            string MergedSkill = string.Empty;
            int    i;

            for (i = 1; i + 1 < Split.Length; i++)
            {
                if (MergedSkill.Length > 0)
                {
                    MergedSkill += "_";
                }
                MergedSkill += Split[i];
            }

            if (MergedSkill == "Dance")
            {
                MergedSkill = "Performance_Dance";
            }

            PgSkill ParsedSkill = null !;

            if (!ParserSkill.Parse((PgSkill valueSkill) => ParsedSkill = valueSkill, MergedSkill, parsedFile, parsedKey))
            {
                return(false);
            }

            int OtherLevel;

            if (!int.TryParse(Split[i], out OtherLevel) || OtherLevel <= 0)
            {
                return(Program.ReportFailure($"Invalid level cap interaction '{interaction}'"));
            }

            if (OtherLevel != level + 10 && OtherLevel != level + 5)
            {
                return(Program.ReportFailure("Inconsistent interaction level cap"));
            }

            PgLevelCapInteraction NewInteraction = new PgLevelCapInteraction();

            NewInteraction.RawLevel       = level;
            NewInteraction.RawRangeUnlock = OtherLevel - level;
            NewInteraction.Skill_Key      = ParsedSkill.Key;

            ParsingContext.AddSuplementaryObject(NewInteraction);
            item.List.Add(NewInteraction);
            return(true);
        }