Beispiel #1
0
        private bool ParseSelfPreEffect(PgAbilityPvX item, string value, out PgSelfPreEffect selfPreEffect)
        {
            selfPreEffect = null !;

            int StartIndex = value.IndexOf('(');
            int EndIndex   = value.IndexOf(')');

            if (StartIndex > 0 && EndIndex > StartIndex + 1 && EndIndex + 1 == value.Length)
            {
                string Prefix = value.Substring(0, StartIndex);
                if (Prefix == "EnhanceZombie")
                {
                    string Enhancement = value.Substring(StartIndex + 1, EndIndex - StartIndex - 1);
                    if (!StringToEnumConversion <PreEffect> .TryParse(Enhancement, out PreEffect enumValue))
                    {
                        return(false);
                    }

                    selfPreEffect = new PgSelfPreEffectEnhanceZombie()
                    {
                        Value = enumValue
                    };
                }
                else if (Prefix == "ConfigGalvanize")
                {
                    if (value[StartIndex + 1] != ',')
                    {
                        return(Program.ReportFailure($"Symbol ',' was expected"));
                    }

                    string Enhancement = value.Substring(StartIndex + 2, EndIndex - StartIndex - 2);
                    if (!int.TryParse(Enhancement, out int Value))
                    {
                        return(Program.ReportFailure($"Value {Enhancement} was expected to be an int"));
                    }

                    selfPreEffect = new PgSelfPreEffectConfigGalvanize()
                    {
                        RawValue = Value
                    };
                }
                else
                {
                    return(Program.ReportFailure($"Invalid SelfPreEffect format {Prefix}"));
                }
            }
            else
            {
                if (!StringToEnumConversion <PreEffect> .TryParse(value, out PreEffect enumValue))
                {
                    return(false);
                }

                selfPreEffect = new PgSelfPreEffectSimple()
                {
                    Value = enumValue
                };
            }

            return(true);
        }