Example #1
0
        public void Transpile()
        {
            Grammar          rubyGrammar = new RubyGrammar();
            LanguageCompiler rubyCompiler;

            SyntaxErrors = new SyntaxErrorList();
            Generator generator = new Generator();

            try
            {
                rubyCompiler = new LanguageCompiler(rubyGrammar);
            }
            catch (Exception ex)
            {
                throw new ArgumentException("Ruby Grammar: " + ex.Message);
            }

            try
            {
                AstRootNode  = rubyCompiler.Parse(RubyScript);
                SyntaxErrors = rubyCompiler.Context.Errors;
            }
            catch (Exception ex)
            {
                throw new ArgumentException("Parser error: " + rubyCompiler.Parser.CurrentState + " " + ex.Message);
            }

            if (SyntaxErrors.Count > 0)
            {
                foreach (SyntaxError err in SyntaxErrors)
                {
                    Logger.log("error", err + " >> " + RubyScript.Insert(err.Location.Position, "ยง"));
                }
            }
            try
            {
                GeneratedDictionary = generator.Generate(AstRootNode).Dictionary;
            }
            catch (Exception ex)
            {
                Logger.log("error", "Compile error: " + ex.Message);
            }

            try
            {
                TranspiledPowerShell = ToPowerShell();
            }
            catch (Exception ex)
            {
                Logger.log("error", "Error transpiling to PowerShell: " + ex.Message);
            }

            try
            {
                CompiledJson = JsonHelper.Serialize(GeneratedDictionary);
            }
            catch (Exception ex)
            {
                Logger.log("error", "Error generating json result: " + ex.Message);
            }
        }
Example #2
0
    private IEnumerator PostGame(bool passed)
    {
        gameState = GameState.PostGame;
        int endReason = EndReason.lose;

        //Determine why the level ended
        if (passed == true && objectives.AllObjectiveCompleted())
        {
            endReason = EndReason.winner;
        }
        else if (passed == true && objectives.AnyObjectiveCompleted())
        {
            endReason = EndReason.passed;
        }
        else if (exploded == true)
        {
            endReason = EndReason.explode;
        }
        else if (splash == true)
        {
            endReason = EndReason.drowned;
        }

        LevelEndInfo end = new LevelEndInfo(passed, endReason);

        end.level      = LevelHandler.CurrentLevel;
        end.itemsSaved = getSavedCrates();
        end.maxItems   = getCrateAmount();
        end.Reward     = reward;
        end.levelTime  = levelTimer;

        RubyScript ruby = GameObject.FindObjectOfType <RubyScript>();

        if (ruby == null)
        {
            Debug.LogError("Ruby not found");
        }
        else
        {
            end.rubyFound     = ruby.found;
            end.sapphireFound = ruby.found && ruby.IsSapphire;
        }

        if (objectives == null)
        {
            Debug.LogError("Objectives not found");
        }
        else if (passed == true)
        {
            end.obj1Passed = objectives.LevelObjective1();
            end.obj2Passed = objectives.LevelObjective2();
            end.obj3Passed = objectives.LevelObjective3();
        }

        if (passed == true)
        {
            LevelHandler.CompleteLevel(end.level);
            FireworksController fw = GameObject.FindObjectOfType <FireworksController>();
            if (!cheerOnce)
            {
                endCheer.PlaySound();
                cheerOnce = true;
            }
            if (fw != null)
            {
                //fw.transform.position = GameObject.FindObjectOfType<Copter>().transform.position + Vector3.up * 3;
                fw.Launch();
            }
        }

        if (!passed)
        {
            setResetButton(true);
        }
        float timer     = resetCountdown;
        float deltaTime = Time.time;

        while (timer > 0)
        {
            timer    -= (Time.time - deltaTime);
            deltaTime = Time.time;
            yield return(null);
        }

        if (SceneManager.GetActiveScene().name == "Tutorial00" && !passed)
        {
            GameManager.LoadLevel("IntroScreen");
        }
        else
        {
            gameManager.loadMainMenu(true, end, 2);
        }
    }