示例#1
0
        public static void Main(string[] args)
        {
            var inFile     = Path.GetFullPath(args[0]);
            var outFile    = Path.GetFullPath(args[1]);
            var parsedFile = new ScriptFile(File.ReadAllText(inFile));

            var luaFile = LuaGenerator.Generate(parsedFile);

            File.WriteAllText(outFile, luaFile);
        }
示例#2
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());
        }
示例#3
0
 public static void Dispose()
 {
     mGenerator     = null;
     mInterpreter   = null;
     mVariableNames = null;
 }