public IEnumerator PostMortemRoutine(BattleUnit killer) { halting = true; pc.unit.unit.stats.Set(StatTag.HP, 0); Populate(); yield return(PrepareTalkRoutine(killer)); face2.Populate(killer); rightDisplayEnabled = true; narrator.Clear(); yield return(fader.FadeRoutine(fader.startFade, false)); LuaScript script = new LuaScript(GetComponent <LuaContext>(), killer.unit.luaOnDefeat); GetComponent <LuaContext>().SetGlobal("name", killer.ToString()); yield return(script.RunRoutine()); rightDisplayEnabled = false; postMortem.text = "Made it to floor " + pc.battle.map.GetComponent <MapGenerator>().level + " before a disastrous encounter with " + killer; postMortem.text += "\n\nGot " + pc.gold + " gold out of it though!"; postMortem.text = postMortem.text.Replace("\\n", "\n"); yield return(CoUtils.RunTween(GetComponent <CanvasGroup>().DOFade(0.0f, 3.0f))); yield return(CoUtils.RunTween(postMortem.GetComponent <CanvasGroup>().DOFade(1.0f, 1.0f))); yield return(CoUtils.Wait(3.0f)); yield return(CoUtils.RunTween(postMortem.GetComponent <CanvasGroup>().DOFade(0.0f, 3.0f))); killer.battle.GetComponent <LineOfSightEffect>().sitemap = null; SceneManager.LoadScene("Title", LoadSceneMode.Single); }
private IEnumerator ScanRoutine() { narrator.Clear(); Cursor cursor = unit.battle.SpawnCursor(unit.location, true); Result <Vector2Int> result = new Result <Vector2Int>(); yield return(cursor.AwaitSelectionRoutine(result, _ => true, ScanAtRoutine)); if (!result.canceled) { BattleEvent ev = unit.battle.map.GetEventAt <BattleEvent>(result.value); if (ev != null) { BattleUnit unit = ev.unit; yield return(PrepareTalkRoutine(unit)); pc.GetComponent <CharaEvent>().FaceToward(unit.battler.GetComponent <MapEvent>()); unit.battler.GetComponent <CharaEvent>().FaceToward(pc.GetComponent <MapEvent>()); LuaScript script = new LuaScript(GetComponent <LuaContext>(), unit.unit.luaOnExamine); GetComponent <LuaContext>().SetGlobal("name", unit.ToString()); yield return(script.RunRoutine()); narrator.Log(unit.StatusString(), true); } } rightDisplayEnabled = false; unit.battle.DespawnCursor(); executeResult.Cancel(); }
public IEnumerator OnVisibleRoutine(PCEvent pc) { while (IsAnimating()) { yield return(null); } BattleEvent ev = GetComponent <BattleEvent>(); if (ev != null) { BattleUnit unit = ev.unit; var ui = FindObjectOfType <RogueUI>(); yield return(ui.PrepareTalkRoutine(unit)); ui.face2.Populate(unit); pc.GetComponent <CharaEvent>().FaceToward(unit.battler.GetComponent <MapEvent>()); unit.battler.GetComponent <CharaEvent>().FaceToward(pc.GetComponent <MapEvent>()); LuaScript script = new LuaScript(ui.GetComponent <LuaContext>(), luaVisible); ui.GetComponent <LuaContext>().SetGlobal("name", unit.ToString()); ui.rightDisplayEnabled = true; yield return(script.RunRoutine()); ui.rightDisplayEnabled = false; } else { yield return(luaObject.RunRoutine(PropertyVisible)); } }
public virtual IEnumerator PlayAnimationRoutine() { isPlayingAnimation = true; LuaScript script = anim.ToScript(GetComponent <LuaContext>()); GetComponent <LuaContext>().SetGlobal("target", target); yield return(script.RunRoutine()); isPlayingAnimation = false; }
public IEnumerator RunRoutine(string eventName) { DynValue function = luaValue.Table.Get(eventName); if (function != DynValue.Nil) { LuaScript script = new LuaScript(context, function); yield return(script.RunRoutine()); } }
public void Run(string eventName, bool canBlock = true) { if (values.ContainsKey(eventName) && values[eventName] != null) { var context = Global.Instance().Maps.Lua; var luaValue = context.Marshal(this); context.lua.Globals["this"] = luaValue; LuaScript script = new LuaScript(context, values[eventName]); Global.Instance().StartCoroutine(script.RunRoutine(canBlock)); } }
public void Run(string eventName, Action callback = null) { if (!values.ContainsKey(eventName) || values[eventName] == null) { callback?.Invoke(); } else { LuaScript script = new LuaScript(context, values[eventName]); Global.Instance().StartCoroutine(CoUtils.RunWithCallback(script.RunRoutine(), callback)); } }
public void Run(string eventName, Action callback = null) { DynValue function = luaValue.Table.Get(eventName); if (function == DynValue.Nil) { callback?.Invoke(); } else { LuaScript script = new LuaScript(context, function); Global.Instance().StartCoroutine(CoUtils.RunWithCallback(script.RunRoutine(), callback)); } }
public virtual IEnumerator PlayAnimationRoutine(LuaContext context = null) { if (context == null) { context = GetComponent <LuaContext>(); } isPlayingAnimation = true; LuaScript script = anim.ToScript(context); context.SetGlobal("target", target); yield return(script.RunRoutine()); isPlayingAnimation = false; }
public void Run(string eventName, Action callback = null) { DynValue function = LuaValue.Table.Get(eventName); if (function == DynValue.Nil) { if (callback != null) { callback(); } } else { LuaScript script = new LuaScript(context, function); mapEvent.StartCoroutine(CoUtils.RunWithCallback(script.RunRoutine(), callback)); } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); LuaComponent component = (LuaComponent)target; LuaContext context = component.Context; if (Application.IsPlaying(component)) { GUILayout.Space(12); if (!context.IsRunning()) { EditorGUILayout.LabelField("Lua debug prompt!"); } else { EditorGUILayout.LabelField("Running..."); EditorGUI.BeginDisabledGroup(true); } customLua = EditorGUILayout.TextArea(customLua, new GUILayoutOption[] { GUILayout.Height(120) }); GUILayout.Space(12); if (!context.IsRunning()) { if (GUILayout.Button("Run")) { LuaScript script = new LuaScript(context, customLua); component.StartCoroutine(script.RunRoutine()); } } else { EditorGUI.EndDisabledGroup(); if (GUILayout.Button("Force terminate")) { context.ForceTerminate(); } } GUILayout.Space(6); } }
public IEnumerator TutorialRoutine() { LuaScript script = new LuaScript(GetComponent <LuaContext>(), luaTutorial); yield return(script.RunRoutine()); }
public IEnumerator PlayScriptRoutine(SmsScript sms) { var luaScript = new LuaScript(Lua, sms.script); yield return(luaScript.RunRoutine(true)); }