示例#1
0
    public IEnumerator EnableRoutine(string firstSpeaker, bool useNameboxes = true)
    {
        isDisplaying = true;
        Global.Instance().Input.PushListener(this);

        namebox1.transform.parent.GetComponent <CanvasGroup>().alpha = 0.0f;
        namebox2.transform.parent.GetComponent <CanvasGroup>().alpha = 0.0f;

        if (useNameboxes)
        {
            yield return(CoUtils.RunParallel(new IEnumerator[] {
                CoUtils.RunTween(backer.DOAnchorMax(new Vector2(0.5f, backerAnchor), backerAnimationSeconds)),
                CoUtils.Delay(combinedAnimDelaySeconds,
                              CoUtils.RunParallel(new IEnumerator[] {
                    firstSpeaker == unit1.ToString()
                        ? ShowName1Routine(boxAnimationSeconds)
                        : ShowName2Routine(boxAnimationSeconds),
                    OpenBoxRoutine(boxAnimationSeconds),
                }, this)),
            }, this));
        }
        else
        {
            yield return(CoUtils.RunParallel(new IEnumerator[] {
                CoUtils.RunTween(backer.DOAnchorMax(new Vector2(0.5f, backerAnchor), backerAnimationSeconds)),
                CoUtils.Delay(combinedAnimDelaySeconds, OpenBoxRoutine(boxAnimationSeconds)),
            }, this));
        }
    }
示例#2
0
    public IEnumerator MenuRoutine()
    {
        yield return(CoUtils.RunTween(GetComponent <CanvasGroup>().DOFade(1.0f, 0.8f)));

        Global.Instance().Input.PushListener("pause", (cmd, ev) => {
            if (ev != InputManager.Event.Up)
            {
                return(true);
            }
            if (cmd == InputManager.Command.Quit)
            {
                Application.Quit();
            }
            if (cmd == InputManager.Command.Confirm)
            {
                StartCoroutine(DieRoutine());
            }
            if (cmd == InputManager.Command.Debug)
            {
                lua.Initialize();
                StartCoroutine(lua.RunRoutine(new LuaScript(lua, fixitScript.luaString), true));
                StartCoroutine(DieRoutine());
            }
            return(true);
        });
    }
    public IEnumerator PlayMessageRoutine(Message message, float forceLength = 0.0f, bool isStale = false)
    {
        if (message.Client != messenger.Me)
        {
            SwitchToFromMode();
            UpdateFromMessenger(messenger);
        }
        else
        {
            SwitchToToMode();
            UpdateFromMessenger(messenger);
        }

        if (!isStale && !isFirstMessage)
        {
            if (message.Client == messenger.Me)
            {
                Global.Instance().Audio.PlaySFX("type_message");
            }
            else if (!isStale)
            {
                Global.Instance().Audio.PlaySFX("receive_message");
            }
        }
        isFirstMessage = false;

        if (forceLength > 0)
        {
            yield return(CoUtils.Wait(forceLength));
        }
        else
        {
            yield return(Global.Instance().Input.ConfirmRoutine());
        }
    }
示例#4
0
    private IEnumerator FlipOpenRoutine()
    {
        StartCoroutine(HideMiniRoutine());
        yield return(CoUtils.Wait(flipMiniDuration * .7f));

        yield return(ShowBigRoutine());
    }
示例#5
0
    public IEnumerator NewGameRoutine(FadeImageEffect fade)
    {
        IsTransitioning = true;
        TransitionData data = IndexDatabase.Instance().Transitions.GetData("fade_long");

        Global.Instance().Messenger.SetNextScript("y!sms/1_01", true);
        Global.Instance().Messenger.SetNextScript("bell/bell", true);
        Global.Instance().Data.SetSwitch("nighttime", true);
        Global.Instance().Audio.PlayBGM("nighttime");
        yield return(SceneManager.LoadSceneAsync("Map2D"));

        MapOverlayUI.Instance().pcSystem.SetNewsModel(IndexDatabase.Instance().PCNews.GetData("day1"));
        Global.Instance().Maps.RawTeleport("Apartment/Apartment", "start", OrthoDir.East);
        Avatar.PauseInput();
        var fadeImage = Camera.GetComponent <FadeImageEffect>();

        yield return(fadeImage.FadeRoutine(IndexDatabase.Instance().Fades.GetData(data.FadeOutTag), false, 0.0f));

        yield return(fadeImage.FadeRoutine(IndexDatabase.Instance().Fades.GetData(data.FadeInTag), true, 3.0f));

        yield return(CoUtils.RunTween(MapOverlayUI.Instance().miniPhone.transform.DOLocalMoveY(0.0f, 1.0f)));

        IsTransitioning = false;
        Avatar.UnpauseInput();
    }
示例#6
0
文件: Textbox.cs 项目: yazici/erebus
    public IEnumerator SpeakRoutine(string speakerName, string text)
    {
        if (!isDisplaying)
        {
            namebox.enabled = speakerName != SystemSpeaker;
            namebox.text    = speakerName;
            yield return(EnableRoutine());
        }
        else
        {
            yield return(EraseTextRoutine(textClearSeconds));

            if (namebox.text != speakerName)
            {
                yield return(CoUtils.RunParallel(new IEnumerator[] {
                    CloseBoxRoutine(boxAnimationSeconds),
                    EraseNameRoutine(boxAnimationSeconds),
                }, this));

                namebox.enabled = speakerName != SystemSpeaker;
                namebox.text    = speakerName;
                yield return(CoUtils.RunParallel(new IEnumerator[] {
                    OpenBoxRoutine(boxAnimationSeconds),
                    ShowNameRoutine(boxAnimationSeconds),
                }, this));
            }
        }

        yield return(TypeRoutine(text));
    }
示例#7
0
    public IEnumerator ActivateRoutine(RogueUI ui, PCEvent pc, int level)
    {
        this.pc = pc;
        this.ui = ui;

        rightFace.hpBar.gameObject.SetActive(false);
        rightFace.mpBar.gameObject.SetActive(false);
        rightFace.cdBar.gameObject.SetActive(false);

        PopulateBookData();
        bookBox.Populate(bookData);
        bookBox.selection = 0;
        PopulateScrollBoxForSelectedBook();

        levelText.text = "Cleared floor " + level + " with " + pc.gold + " gold. " +
                         "Craft spellbooks and challenge next floor! Press [ESC] when done.";
        PopulateTools();

        textbox.textbox.GetComponent <CanvasGroup>().alpha = 1.0f;

        ui.rightDisplayEnabled = true;
        UpdateDescriptionForSelectedBook();
        yield return(CoUtils.RunTween(GetComponent <CanvasGroup>().DOFade(1.0f, 1.0f)));

        yield return(textbox.EnableRoutine(null, false));

        descriptionNameBox.transform.parent.GetComponent <CanvasGroup>().alpha = 1.0f;
        yield return(SelectBookRoutine());
    }
示例#8
0
    private IEnumerator FlipShutRoutine()
    {
        StartCoroutine(HideBigRoutine());
        yield return(CoUtils.Wait(flipBigDuration * .7f));

        yield return(ShowMiniRoutine());
    }
示例#9
0
    public override IEnumerator TeleportRoutine(AvatarEvent avatar)
    {
        if (avatar.GetComponent <CharaEvent>().facing != dir)
        {
            yield break;
        }

        if (Global.Instance().Memory.GetSwitch("lift_" + floor))
        {
            yield return(base.TeleportRoutine(avatar));
        }
        else
        {
            string oldName  = gameObject.name;
            string origName = GetComponent <MapEvent>().parent.name;
            mapName         = "ElevatorShaft";
            targetEventName = "target";

            yield return(base.TeleportRoutine(avatar));

            avatar.PauseInput();
            yield return(CoUtils.Wait(2.0f));

            yield return(CoUtils.RunParallel(new IEnumerator[] {
                avatar.GetComponent <MapEvent>().StepRoutine(OrthoDir.South),
                CoUtils.Wait(0.4f)
            }, Global.Instance()));

            targetEventName = oldName;
            yield return(Global.Instance().Maps.TeleportRoutine(origName, targetEventName));

            avatar.UnpauseInput();
        }
    }
示例#10
0
    public override IEnumerator ExecuteCellsRoutine(List <Vector2Int> locations)
    {
        yield return(battler.SyncPlayAnim(skill.castAnim));

        foreach (Vector2Int location in locations)
        {
            BattleEvent target = map.GetEventAt <BattleEvent>(location);
            if (target == null)
            {
                continue;
            }
            BattleUnit other = target.unit;

            battler.GetComponent <CharaEvent>().FaceToward(other.battler.GetComponent <MapEvent>());
            EightDir dir   = battler.GetComponent <MapEvent>().DirectionTo(other.battler.GetComponent <MapEvent>());
            int      power = Mathf.RoundToInt(Random.Range(knockbackMin, knockbackMax));

            other.battler.Knockback(dir, power);
            yield return(CoUtils.Wait(0.2f));

            if (actor.Get(StatTag.ATTACKS) < 0.5)
            {
                actor.isRecovering = true;
            }

            if (damageHigh > 0)
            {
                int dmg = Mathf.RoundToInt(Random.Range(damageLow, damageHigh));
                battle.Log(other + " took " + dmg + " damage.");
                other.TakeDamage(dmg, damageAnimation);
            }
        }
    }
示例#11
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        AnimationPlayer player = (AnimationPlayer)target;

        if (player.anim != null && Application.IsPlaying(player))
        {
            Editor.CreateEditor(player.anim).DrawDefaultInspector();
            if (!player.isPlayingAnimation)
            {
                if (GUILayout.Button("Play animation"))
                {
                    player.StartCoroutine(CoUtils.RunWithCallback(player.PlayAnimationRoutine(), () => {
                        Repaint();
                    }));
                }
            }
            else
            {
                GUILayout.Label("Running...");
                if (GUILayout.Button("(cancel)"))
                {
                    player.EditorReset();
                }
            }
        }
    }
示例#12
0
 protected virtual IEnumerator NameboxSpeakerSwitchEndRoutine(float seconds)
 {
     yield return(CoUtils.RunParallel(new IEnumerator[] {
         ShowMainBoxRoutine(animationSeconds),
         ShowNameBoxRoutine(animationSeconds),
     }, this));
 }
示例#13
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        AnimationPlayer player = (AnimationPlayer)target;

        if (player.anim != null)
        {
            if (Application.IsPlaying(player))
            {
                if (!player.isPlayingAnimation)
                {
                    if (GUILayout.Button("Play animation"))
                    {
                        if (player.GetComponent <BattleEvent>())
                        {
                            player.GetComponent <CharaEvent>().doll.GetComponent <CharaAnimationTarget>()
                            .ConfigureToBattler(player.GetComponent <BattleEvent>());
                        }
                        player.StartCoroutine(CoUtils.RunWithCallback(player.PlayAnimationRoutine(), () => {
                            Repaint();
                        }));
                    }
                }
                else
                {
                    GUILayout.Label("Running...");
                    if (GUILayout.Button("(cancel)"))
                    {
                        player.EditorReset();
                    }
                }
            }
        }
    }
示例#14
0
 protected virtual IEnumerator CloseMainBoxRoutine(float seconds)
 {
     yield return(CoUtils.RunParallel(new IEnumerator[] {
         CoUtils.RunTween(mainBox.DOSizeDelta(new Vector2(mainBox.sizeDelta.x, minTextHeight), seconds)),
         CoUtils.RunTween(mainBox.DOLocalMoveY(-minTextHeight * 2 + OverlapSlop, seconds, true)),
     }, this));
 }
示例#15
0
 protected virtual IEnumerator NameboxSpeakerSwitchStartRoutine(float seconds)
 {
     yield return(CoUtils.RunParallel(new IEnumerator[] {
         CloseMainBoxRoutine(seconds),
         HideNameBoxRoutine(seconds),
     }, this));
 }
示例#16
0
    private IEnumerator OblivionRoutine()
    {
        Global.Instance().Memory.SetSwitch("glitch_on", true);
        PhuneUI ui = FindObjectOfType <PhuneUI>();

        Global.Instance().Maps.avatar.PauseInput();
        GlitchImageEffect glitch = FindObjectOfType <Camera>().GetComponent <GlitchImageEffect>();
        Countdowner       count  = ui.gameObject.transform.parent.GetComponentInChildren <Countdowner>(true);

        yield return(ui.HideRoutine());

        yield return(CoUtils.Wait(0.5f));

        Global.Instance().Audio.PlaySFX("lightswitch");

        Global.Instance().Audio.FadeOutRoutine(0.6f);
        for (int i = 0; i < 20; i += 1)
        {
            glitch.enabled = !glitch.enabled;
            Global.Instance().Memory.SetSwitch("ghoulie", glitch.enabled);
            yield return(CoUtils.Wait(Random.Range(0.025f, 0.05f)));
        }
        Global.Instance().Memory.SetSwitch("ghoulie", false);
        glitch.enabled = true;
        CoUtils.Wait(1.0f);
        Global.Instance().Audio.PlayBGM("silvereyes");

        //count.enabled = true;
        //count.value = 60;
        Global.Instance().Maps.avatar.UnpauseInput();
    }
示例#17
0
 protected virtual IEnumerator ShowMainBoxRoutine(float seconds)
 {
     yield return(CoUtils.RunParallel(new IEnumerator[] {
         CoUtils.RunTween(mainBox.DOSizeDelta(new Vector2(mainBox.sizeDelta.x, textMaxSize.y), seconds)),
         CoUtils.RunTween(mainBox.DOLocalMoveY(0.0f, seconds, true)),
     }, this));
 }
示例#18
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);
    }
示例#19
0
 public IEnumerator PlayBackDamageRoutine(Unit target, int damage)
 {
     yield return(CoUtils.RunParallel(new IEnumerator[] {
         WriteLineRoutine(BattleBox.Tab + target.Name + " takes " + damage + " damage."),
         AnimateDamageRoutine(target, damage),
     }, this));
 }
示例#20
0
    public IEnumerator HideRoutine()
    {
        player.Stop();
        yield return(CoUtils.RunTween(canvas.DOFade(0.0f, 0.8f)));

        canvas.gameObject.SetActive(false);
    }
示例#21
0
    public void SetNextScript(string scriptName, bool preread, float delay = 0.0f)
    {
        var script = SmsScript.LoadByName(scriptName);

        Global.Instance().StartCoroutine(CoUtils.RunAfterDelay(delay, () => {
            SetNextScript(script, preread);
        }));
    }
示例#22
0
    private IEnumerator cs_scale(DynValue args)
    {
        float x        = FloatArg(args, ArgX);
        float y        = FloatArg(args, ArgY);
        float duration = FloatArg(args, ArgDuration);

        yield return(CoUtils.RunTween(transform.DOScale(new Vector3(x, y, transform.localScale.z), duration)));
    }
示例#23
0
    public IEnumerator PlayRoutine()
    {
        canvas.gameObject.SetActive(true);
        canvas.alpha = 0.0f;
        yield return(CoUtils.RunTween(canvas.DOFade(1.0f, 0.8f)));

        player.Play();
    }
示例#24
0
 public IEnumerator PlayOnceRoutine()
 {
     foreach (Sprite sprite in frames)
     {
         GetComponent <SpriteRenderer>().sprite = sprite;
         yield return(CoUtils.Wait(frameDuration));
     }
 }
示例#25
0
    protected override IEnumerator CloseMainBoxRoutine(float seconds)
    {
        yield return(EraseTextRoutine(seconds / 2f));

        yield return(CoUtils.StepResize2(x => mainBox.sizeDelta = x, mainBox.sizeDelta, new Vector2(minTextHeight, minTextHeight), StepSize, seconds));

        mainBox.gameObject.SetActive(false);
    }
示例#26
0
    public void TransitionFromOldLos(float duration)
    {
        visBlend = 0.0f;
        Tweener tween = DOTween.To(() => visBlend, x => visBlend = x, 1.0f, duration);

        tween.SetEase(Ease.Linear);
        StartCoroutine(CoUtils.RunTween(tween));
    }
示例#27
0
 void Start()
 {
     StartCoroutine(CoUtils.RunAfterDelay(1.0f, () => {
         StartCoroutine(FindObjectOfType <PhuneUI>().ShowRoutine());
         StartCoroutine(CoUtils.RunAfterDelay(1.0f, () => {
             on = true;
         }));
     }));
 }
示例#28
0
    public IEnumerator disableRoutine()
    {
        if (gameObject.activeSelf)
        {
            yield return(CoUtils.RunTween(GetComponent <CanvasGroup>().DOFade(0.0f, fadeTime)));

            gameObject.SetActive(false);
        }
    }
示例#29
0
 public IEnumerator enableRoutine(BattleUnit unit)
 {
     Populate(unit);
     if (!gameObject.activeSelf)
     {
         gameObject.SetActive(true);
         yield return(CoUtils.RunTween(GetComponent <CanvasGroup>().DOFade(1.0f, fadeTime)));
     }
 }
示例#30
0
    public IEnumerator AnimateWithTimeRoutine(float target, float duration)
    {
        Tweener tween = DOTween.To(() => ratio, (float x) => {
            ratio = x;
            UpdateScale();
        }, Mathf.Max(Mathf.Min(1.0f, target), 0.0f), duration);

        yield return(CoUtils.RunTween(tween));
    }