Example #1
0
    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);
    }
Example #2
0
    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();
    }
Example #3
0
    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));
        }
    }
Example #4
0
    public virtual IEnumerator PlayAnimationRoutine()
    {
        isPlayingAnimation = true;
        LuaScript script = anim.ToScript(GetComponent <LuaContext>());

        GetComponent <LuaContext>().SetGlobal("target", target);
        yield return(script.RunRoutine());

        isPlayingAnimation = false;
    }
Example #5
0
    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());
        }
    }
Example #6
0
 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));
     }
 }
Example #7
0
 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));
     }
 }
Example #8
0
    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));
        }
    }
Example #9
0
    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;
    }
Example #10
0
    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));
        }
    }
Example #11
0
    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);
        }
    }
Example #12
0
    public IEnumerator TutorialRoutine()
    {
        LuaScript script = new LuaScript(GetComponent <LuaContext>(), luaTutorial);

        yield return(script.RunRoutine());
    }
Example #13
0
    public IEnumerator PlayScriptRoutine(SmsScript sms)
    {
        var luaScript = new LuaScript(Lua, sms.script);

        yield return(luaScript.RunRoutine(true));
    }