示例#1
0
        public string GenerateLuaChangeScript(int indentLevel = 0)
        {
            var script = new StringBuilder();

            script.AppendLine(@"local starters = Rom:GetStarters()");
            script.AppendLine();
            for (int i = 0; i < Starters.Length; i++)
            {
                var starter    = Starters[i];
                var oldPokemon = OriginalStarters[i];
                if (starter.PokemonId != oldPokemon.PokemonId)
                {
                    var variableName = $"starter{oldPokemon.PokemonId:d}";
                    script.AppendLine($"{LuaGenerator.GenerateIndentation(indentLevel)}local {variableName} = starters:GetStarterById({luaGenerator.GenerateExpression(oldPokemon.PokemonId)})");
                    script.AppendLine($"{LuaGenerator.GenerateIndentation(indentLevel)}if {variableName} ~= nil then");
                    script.Append(luaGenerator.GenerateSimpleObjectDiff(oldPokemon, starter, variableName, indentLevel + 1));
                    script.AppendLine($"{LuaGenerator.GenerateIndentation(indentLevel)}else");
                    script.AppendLine($"{LuaGenerator.GenerateIndentation(indentLevel + 1)}error(\"Could not find starter '{oldPokemon.PokemonName}' with ID {oldPokemon.PokemonId:d}. This ROM may have already been modified.\")");
                    script.AppendLine($"{LuaGenerator.GenerateIndentation(indentLevel)}end");
                    script.AppendLine();
                }
            }
            return(script.ToString());
        }