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); } }
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); } }