Example #1
0
 internal void Render(LuaVariableDeclaratorSyntax node)
 {
     Write(node.LocalKeyword);
     WriteSpace();
     node.Identifier.Render(this);
     node.Initializer?.Render(this);
 }
Example #2
0
        public override LuaVariableListDeclarationSyntax?GenerateGlobalDeclaration(string typeName, string name, LuaExpressionSyntax?value)
        {
            if (value is null)
            {
                return(null);
            }

            var declarator = new LuaVariableDeclaratorSyntax(name, value);

            declarator.IsLocalDeclaration = false;

            var result = new LuaVariableListDeclarationSyntax();

            result.Variables.Add(declarator);
            return(result);
        }
Example #3
0
 internal void Render(LuaVariableDeclaratorSyntax node)
 {
     if (node.IsLocalDeclaration)
     {
         Write(node.LocalKeyword);
         WriteSpace();
     }
     else if (node.Initializer?.Value is LuaFunctionExpressionSyntax functionExpression && functionExpression.RenderAsFunctionDefinition)
     {
         Write(functionExpression.FunctionKeyword);
         WriteSpace();
         node.Identifier.Render(this);
         functionExpression.ParameterList.Render(this);
         functionExpression.Body.Render(this);
         return;
     }
     node.Identifier.Render(this);
     node.Initializer?.Render(this);
 }
Example #4
0
        public LuaStatementSyntax Transpile(JassFunctionDeclarationSyntax functionDeclaration)
        {
            RegisterFunctionReturnType(functionDeclaration.FunctionDeclarator);

            var functionExpression = new LuaFunctionExpressionSyntax();

            functionExpression.AddParameters(Transpile(functionDeclaration.FunctionDeclarator.ParameterList));
            functionExpression.Body.Statements.AddRange(Transpile(functionDeclaration.Body));
            functionExpression.RenderAsFunctionDefinition = true;

            _localTypes.Clear();

            var luaFunctionDeclaration = new LuaVariableDeclaratorSyntax(Transpile(functionDeclaration.FunctionDeclarator.IdentifierName), functionExpression);

            luaFunctionDeclaration.IsLocalDeclaration = false;

            var declaration = new LuaVariableListDeclarationSyntax();

            declaration.Variables.Add(luaFunctionDeclaration);

            return(new LuaLocalDeclarationStatementSyntax(declaration));
        }
Example #5
0
        private LuaVariableListDeclarationSyntax GetMainFunctionSyntax(float left, float right, float top, float bottom, Tileset tileset, SoundEnvironment sound, params string[] initFunctions)
        {
            var localLeft = new LuaBinaryExpressionSyntax(
                new LuaFloatLiteralExpressionSyntax(left),
                LuaSyntaxNode.Tokens.Plus,
                new LuaInvocationExpressionSyntax("GetCameraMargin", "CAMERA_MARGIN_LEFT"));
            var localRight = new LuaBinaryExpressionSyntax(
                new LuaFloatLiteralExpressionSyntax(right),
                LuaSyntaxNode.Tokens.Sub,
                new LuaInvocationExpressionSyntax("GetCameraMargin", "CAMERA_MARGIN_RIGHT"));
            var localTop = new LuaBinaryExpressionSyntax(
                new LuaFloatLiteralExpressionSyntax(top),
                LuaSyntaxNode.Tokens.Sub,
                new LuaInvocationExpressionSyntax("GetCameraMargin", "CAMERA_MARGIN_TOP"));
            var localBottom = new LuaBinaryExpressionSyntax(
                new LuaFloatLiteralExpressionSyntax(bottom),
                LuaSyntaxNode.Tokens.Plus,
                new LuaInvocationExpressionSyntax("GetCameraMargin", "CAMERA_MARGIN_BOTTOM"));
            var locals = new[]
            {
                localLeft,
                localRight,
                localTop,
                localBottom,
            };

            var statements = new List <LuaStatementSyntax>
            {
                new LuaLocalDeclarationStatementSyntax(new LuaLocalVariablesStatementSyntax(
                                                           new[]
                {
                    new LuaSymbolNameSyntax(new LuaIdentifierLiteralExpressionSyntax("left")),
                    new LuaSymbolNameSyntax(new LuaIdentifierLiteralExpressionSyntax("right")),
                    new LuaSymbolNameSyntax(new LuaIdentifierLiteralExpressionSyntax("top")),
                    new LuaSymbolNameSyntax(new LuaIdentifierLiteralExpressionSyntax("bottom")),
                },
                                                           locals)),
                new LuaExpressionStatementSyntax(
                    new LuaInvocationExpressionSyntax(
                        "SetCameraBounds",
                        "left",
                        "bottom",
                        "right",
                        "top",
                        "left",
                        "top",
                        "right",
                        "bottom")),
                new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                     "SetDayNightModels",
                                                     new LuaStringLiteralExpressionSyntax(LightEnvironmentProvider.GetTerrainLightEnvironmentModel(tileset)),
                                                     new LuaStringLiteralExpressionSyntax(LightEnvironmentProvider.GetUnitLightEnvironmentModel(tileset)))),
                new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax("NewSoundEnvironment", new LuaStringLiteralExpressionSyntax(SoundEnvironmentProvider.GetSoundEnvironment(sound)))),
                new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax("SetAmbientDaySound", new LuaStringLiteralExpressionSyntax(SoundEnvironmentProvider.GetAmbientDaySound(tileset)))),
                new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax("SetAmbientNightSound", new LuaStringLiteralExpressionSyntax(SoundEnvironmentProvider.GetAmbientNightSound(tileset)))),
                new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                     "SetMapMusic",
                                                     new LuaStringLiteralExpressionSyntax("Music"),
                                                     LuaIdentifierLiteralExpressionSyntax.False,
                                                     LuaNumberLiteralExpressionSyntax.Zero)),
            };

            foreach (var initFunction in initFunctions)
            {
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(initFunction)));
            }

            var functionSyntax = new LuaFunctionExpressionSyntax();

            functionSyntax.AddStatements(statements);

            var mainFunctionDeclarator = new LuaVariableDeclaratorSyntax("main", functionSyntax);

            mainFunctionDeclarator.IsLocalDeclaration = false;

            var globalFunctionSyntax = new LuaVariableListDeclarationSyntax();

            globalFunctionSyntax.Variables.Add(mainFunctionDeclarator);

            return(globalFunctionSyntax);
        }
Example #6
0
        private LuaVariableListDeclarationSyntax GetConfigFunctionSyntax(string mapName, string mapDescription, string lobbyMusic, params PlayerSlot[] playerSlots)
        {
            var statements = new List <LuaStatementSyntax>
            {
                new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax("SetMapName", new LuaStringLiteralExpressionSyntax(mapName))),
                new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax("SetMapDescription", new LuaStringLiteralExpressionSyntax(mapDescription))),
                new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax("SetPlayers", playerSlots.Length)),
                new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax("SetTeams", playerSlots.Length)),
                new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax("SetGamePlacement", "MAP_PLACEMENT_TEAMS_TOGETHER")),
            };

            if (lobbyMusic != null)
            {
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax("PlayMusic", lobbyMusic)));
            }

            for (var i = 0; i < playerSlots.Length; i++)
            {
                var playerSlot = playerSlots[i];
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                                    "DefineStartLocation",
                                                                    i,
                                                                    playerSlot.StartLocationX,
                                                                    playerSlot.StartLocationY)));
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                                    "SetPlayerStartLocation",
                                                                    new LuaInvocationExpressionSyntax("Player", i),
                                                                    i)));
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                                    "ForcePlayerStartLocation",
                                                                    new LuaInvocationExpressionSyntax("Player", i),
                                                                    i)));
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                                    "SetPlayerColor",
                                                                    new LuaInvocationExpressionSyntax("Player", i),
                                                                    new LuaInvocationExpressionSyntax("ConvertPlayerColor", i))));
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                                    "SetPlayerRacePreference",
                                                                    new LuaInvocationExpressionSyntax("Player", i),
                                                                    new LuaIdentifierLiteralExpressionSyntax(playerSlot.RacePreference))));
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                                    "SetPlayerRaceSelectable",
                                                                    new LuaInvocationExpressionSyntax("Player", i),
                                                                    LuaIdentifierLiteralExpressionSyntax.False)));
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                                    "SetPlayerController",
                                                                    new LuaInvocationExpressionSyntax("Player", i),
                                                                    new LuaIdentifierLiteralExpressionSyntax(playerSlot.Controller))));
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                                    "SetPlayerTeam",
                                                                    new LuaInvocationExpressionSyntax("Player", i),
                                                                    playerSlot.Team)));
                statements.Add(new LuaExpressionStatementSyntax(new LuaInvocationExpressionSyntax(
                                                                    "SetStartLocPrioCount",
                                                                    i,
                                                                    0)));
            }

            var functionSyntax = new LuaFunctionExpressionSyntax();

            functionSyntax.AddStatements(statements);

            var configFunctionDeclarator = new LuaVariableDeclaratorSyntax("config", functionSyntax);

            configFunctionDeclarator.IsLocalDeclaration = false;

            var globalFunctionSyntax = new LuaVariableListDeclarationSyntax();

            globalFunctionSyntax.Variables.Add(configFunctionDeclarator);

            return(globalFunctionSyntax);
        }