Example #1
0
    // Use this for initialization
    void Start()
    {
        TPHandler tp = Resources.Load <TPHandler>("Prefabs/TP On-the-fly");

        if (tp != null && tp.ToString().ToLower() != "null")
        {
            tpOnTheFlyPrefab = tp;
        }
        FindObjectOfType <Fading>().BeginFade(-1);

        tmMain       = GameObject.Find("TextManager Main").GetComponent <TextManager>();
        tmChoice     = GameObject.Find("TextManager Choice").GetComponent <TextManager>();
        tmInfo       = GameObject.Find("TextManager Info").GetComponent <TextManager>();
        tmBigTalk    = GameObject.Find("TextManager BigTalk").GetComponent <TextManager>();
        tmGold       = GameObject.Find("TextManager Gold").GetComponent <TextManager>();
        tmItem       = GameObject.Find("TextManager Item").GetComponent <TextManager>();
        tmInfoParent = tmInfo.transform.parent.parent.gameObject;
        tmBigTalk.SetTextQueue(new TextMessage[] { new TextMessage("[noskipatall][novoice]", false, true) });
        utHeart = GameObject.Find("utHeart");
        EnableBigText(false);

        if (scriptName == null)
        {
            UnitaleUtil.DisplayLuaError("Creating the shop menu", "You must give a valid script name to the function General.EnterShop()");
            return;
        }

        script = new ScriptWrapper()
        {
            scriptname = scriptName
        };
        string scriptText = ScriptRegistry.Get(ScriptRegistry.SHOP_PREFIX + scriptName);

        if (scriptText == null)
        {
            UnitaleUtil.DisplayLuaError("Creating the shop menu", "You must give a valid script name to the function General.EnterShop()");
            return;
        }


        script.DoString(scriptText);
        script.SetVar("background", UserData.Create(new LuaSpriteController(GameObject.Find("Background").GetComponent <Image>())));
        script.script.Globals["Interrupt"]    = ((Action <DynValue, string>)Interrupt);
        script.script.Globals["CreateSprite"] = (Func <string, string, int, DynValue>)SpriteUtil.MakeIngameSprite;
        script.script.Globals["CreateLayer"]  = (Action <string, string, bool>)SpriteUtil.CreateLayer;
        script.script.Globals["CreateText"]   = (Func <Script, DynValue, DynValue, int, string, int, LuaTextManager>)LuaScriptBinder.CreateText;
        script.Call("Start");

        tmMain.SetCaller(script);
        tmChoice.SetCaller(script);
        tmInfo.SetCaller(script);
        tmBigTalk.SetCaller(script);

        tmMain.SetTextQueue(new TextMessage[] { new TextMessage("[noskipatall][linespacing:11]" + script.GetVar("maintalk").String, true, false) });
        tmChoice.SetTextQueue(new TextMessage[] { new TextMessage("[noskipatall][novoice][font:uidialoglilspace][linespacing:9]    Buy\n    Sell\n    Talk\n    Exit", false, true) });
        tmGold.SetTextQueue(new TextMessage[] { new TextMessage("[noskipatall][novoice]" + PlayerCharacter.instance.Gold + "G", false, true) });
        tmItem.SetTextQueue(new TextMessage[] { new TextMessage("[noskipatall][novoice]" + Inventory.inventory.Count + "/8", false, true) });
        tmInfo.SetTextQueue(new TextMessage[] { new TextMessage("[noskipatall][novoice]", false, true) });

        Camera.main.GetComponent <AudioSource>().clip = AudioClipRegistry.GetMusic(script.GetVar("music").String);
        Camera.main.GetComponent <AudioSource>().Play();
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        if (hasRevived && reviveFade2)
        {
            if (reviveFade2.transform.localPosition != new Vector3(0, 0, 0))
            {
                reviveFade2.transform.localPosition = new Vector3(0, 0, 0);
            }
            if (reviveFade2.color.a > 0.0f)
            {
                reviveFade2.color = new Color(1, 1, 1, reviveFade2.color.a - Time.deltaTime / 2);
            }
            else
            {
                GameObject.Destroy(reviveFade2.gameObject);
            }
        }
        if (!started)
        {
            return;
        }
        if (!revived)
        {
            if (!once && UnitaleUtil.IsOverworld)
            {
                once = true;
                GameObject.Find("utHeart").transform.SetParent(GameObject.Find("Canvas GameOver").transform);
                GameObject.Find("utHeart").transform.position           = heartPos;
                GameObject.Find("utHeart").GetComponent <Image>().color = heartColor;
                GameObject.Destroy(GameObject.Find("Canvas OW"));
            }
            else if (!once)
            {
                once = true;
                gameObject.GetComponent <RectTransform>().sizeDelta = new Vector2(16, 16);
                gameObject.GetComponent <Image>().enabled           = true; // abort the blink animation if it was playing
            }

            if (internalTimer > breakHeartAfter)
            {
                AudioSource.PlayClipAtPoint(AudioClipRegistry.GetSound("heartbeatbreaker"), Camera.main.transform.position, 0.75f);
                brokenHeartPrefab = Instantiate(brokenHeartPrefab);
                if (UnitaleUtil.IsOverworld)
                {
                    brokenHeartPrefab.transform.SetParent(GameObject.Find("Canvas GameOver").transform);
                }
                else
                {
                    brokenHeartPrefab.transform.SetParent(gameObject.transform);
                }
                brokenHeartPrefab.GetComponent <RectTransform>().position = heartPos;
                brokenHeartPrefab.GetComponent <Image>().color            = heartColor;
                brokenHeartPrefab.GetComponent <Image>().enabled          = true;
                if (UnitaleUtil.IsOverworld)
                {
                    GameObject.Find("utHeart").GetComponent <Image>().enabled = false;
                }
                else
                {
                    Color color = gameObject.GetComponent <Image>().color;
                    gameObject.GetComponent <Image>().color = new Color(color.r, color.g, color.b, 0);
                    if (LuaEnemyEncounter.script.GetVar("revive").Boolean)
                    {
                        Revive();
                    }
                }
                breakHeartAfter = 999.0f;
            }

            if (internalTimer > explodeHeartAfter)
            {
                AudioSource.PlayClipAtPoint(AudioClipRegistry.GetSound("heartsplosion"), Camera.main.transform.position, 0.75f);
                brokenHeartPrefab.GetComponent <Image>().enabled = false;
                heartShardInstances = new RectTransform[6];
                heartShardRelocs    = new Vector2[6];
                heartShardCtrl      = new LuaSpriteController[6];
                for (int i = 0; i < heartShardInstances.Length; i++)
                {
                    heartShardInstances[i] = Instantiate(heartShardPrefab).GetComponent <RectTransform>();
                    heartShardCtrl[i]      = new LuaSpriteController(heartShardInstances[i].GetComponent <Image>());
                    if (UnitaleUtil.IsOverworld)
                    {
                        heartShardInstances[i].transform.SetParent(GameObject.Find("Canvas GameOver").transform);
                    }
                    else
                    {
                        heartShardInstances[i].transform.SetParent(this.gameObject.transform);
                    }
                    heartShardInstances[i].GetComponent <RectTransform>().position = heartPos;
                    heartShardInstances[i].GetComponent <Image>().color            = heartColor;
                    heartShardRelocs[i] = UnityEngine.Random.insideUnitCircle * 100.0f;
                    heartShardCtrl[i].Set(heartShardAnim[0]);
                    heartShardCtrl[i].SetAnimation(heartShardAnim, 1 / 5f);
                }
                explodeHeartAfter = 999.0f;
            }

            if (internalTimer > gameOverAfter)
            {
                AudioClip originMusic = gameOverMusic.clip;
                if (deathMusic != null)
                {
                    gameOverMusic.clip = AudioClipRegistry.GetMusic(deathMusic);
                    if (gameOverMusic.clip == null)
                    {
                        UnitaleUtil.WriteInLogAndDebugger("[WARN]The specified death music doesn't exist. (" + deathMusic + ")");

                        gameOverMusic.clip = originMusic;
                    }
                }
                gameOverMusic.Play();
                gameOverAfter = 999.0f;
            }

            if (internalTimer > fluffybunsAfter)
            {
                gameOverTxt.SetHorizontalSpacing(7);
                if (deathText != null)
                {
                    List <TextMessage> text = new List <TextMessage>();
                    foreach (string str in deathText)
                    {
                        text.Add(new TextMessage(str, false, false));
                    }
                    TextMessage[] text2 = new TextMessage[text.Count + 1];
                    for (int i = 0; i < text.Count; i++)
                    {
                        text2[i] = text[i];
                    }
                    text2[text.Count] = new TextMessage("", false, false);
                    if (Random.Range(0, 400) == 44)
                    {
                        gameOverTxt.SetTextQueue(new TextMessage[] {
                            new TextMessage("[color:ffffff][voice:v_fluffybuns][waitall:2]4", false, false),
                            new TextMessage("[color:ffffff][voice:v_fluffybuns][waitall:2]" + PlayerCharacter.instance.Name + "!\n[w:15]Stay determined...", false, false),
                            new TextMessage("", false, false)
                        });
                    }
                    else
                    {
                        gameOverTxt.SetTextQueue(text2);
                    }
                }
                else
                {
                    //This "4" made us laugh so hard that I kept it :P
                    int fourChance = Random.Range(0, 80);

                    string[] possibleDeathTexts = new string[] { "You cannot give up\njust yet...", "It cannot end\nnow...", "Our fate rests upon\nyou...",
                                                                 "Don't lose hope...", "You're going to\nbe alright!" };
                    if (fourChance == 44)
                    {
                        possibleDeathTexts[4] = "4";
                    }

                    gameOverTxt.SetTextQueue(new TextMessage[] {
                        new TextMessage("[color:ffffff][voice:v_fluffybuns][waitall:2]" + possibleDeathTexts[Math.RandomRange(0, possibleDeathTexts.Length)], false, false),
                        new TextMessage("[color:ffffff][voice:v_fluffybuns][waitall:2]" + PlayerCharacter.instance.Name + "!\n[w:15]Stay determined...", false, false),
                        new TextMessage("", false, false)
                    });
                }

                fluffybunsAfter = 999.0f;
            }

            if (!done)
            {
                gameOverImage.color = new Color(1, 1, 1, gameOverFadeTimer);
                if (gameOverAfter >= 999.0f && gameOverFadeTimer < 1.0f)
                {
                    gameOverFadeTimer += Time.deltaTime / 2;
                    if (gameOverFadeTimer >= 1.0f)
                    {
                        gameOverFadeTimer = 1.0f;
                        done = true;
                    }
                }
                internalTimer += Time.deltaTime; // this is actually dangerous because done can be true before everything's done if timers are modified
            }
            else if (!exiting && !gameOverTxt.AllLinesComplete())
            {
                // Note: [noskip] only affects the UI controller's ability to skip, so we have to redo that here.
                if (InputUtil.Pressed(GlobalControls.input.Confirm) && gameOverTxt.LineComplete())
                {
                    gameOverTxt.NextLineText();
                }
            }
        }
        else
        {
            /*if (internalTimer <= breakHeartAfter) {
             *
             * } else {*/
            if (reviveTextSet && !reviveText.AllLinesComplete())
            {
                // Note: [noskip] only affects the UI controller's ability to skip, so we have to redo that here.
                if (InputUtil.Pressed(GlobalControls.input.Confirm) && reviveText.LineComplete())
                {
                    reviveText.NextLineText();
                }
            }
            else if (reviveTextSet && !exiting)
            {
                exiting = true;
            }
            else if (internalTimerRevive >= 5.0f && !reviveTextSet && breakHeartReviveAfter)
            {
                if (deathText != null)
                {
                    reviveText.SetHorizontalSpacing(7);
                    List <TextMessage> text = new List <TextMessage>();
                    foreach (string str in deathText)
                    {
                        text.Add(new TextMessage(str, false, false));
                    }
                    TextMessage[] text2 = new TextMessage[text.Count + 1];
                    for (int i = 0; i < text.Count; i++)
                    {
                        text2[i] = text[i];
                    }
                    text2[text.Count] = new TextMessage("", false, false);
                    reviveText.SetTextQueue(text2);
                }
                reviveTextSet = true;
            }
            else if (internalTimerRevive > 2.5f && internalTimerRevive < 4.0f)
            {
                brokenHeartPrefab.transform.localPosition = new Vector2(UnityEngine.Random.Range(-3, 2), UnityEngine.Random.Range(-3, 2));
            }
            else if (!breakHeartReviveAfter && internalTimerRevive > 2.5f)
            {
                breakHeartReviveAfter = true;
                AudioSource.PlayClipAtPoint(AudioClipRegistry.GetSound("heartbeatbreaker"), Camera.main.transform.position, 0.75f);
                if (UnitaleUtil.IsOverworld)
                {
                    GameObject.Find("utHeart").GetComponent <Image>().enabled = true;
                }
                else
                {
                    Color color = gameObject.GetComponent <Image>().color;
                    gameObject.GetComponent <Image>().color = new Color(color.r, color.g, color.b, 1);
                }
                GameObject.Destroy(brokenHeartPrefab);
            }
            //}

            if (internalTimer > explodeHeartAfter)
            {
            }

            if (internalTimer > gameOverAfter)
            {
            }

            if (internalTimer > fluffybunsAfter)
            {
            }

            if (!done)
            {
            }
            else if (!exiting && !reviveText.AllLinesComplete())
            {
            }

            if (!reviveTextSet)
            {
                internalTimerRevive += Time.deltaTime;
            }

            if (exiting && reviveFade.color.a < 1.0f && reviveFade.isActiveAndEnabled)
            {
                reviveFade.color = new Color(1, 1, 1, reviveFade.color.a + Time.deltaTime / 2);
            }
            else if (exiting)
            {
                // repurposing the timer as a reset delay
                gameOverFadeTimer -= Time.deltaTime;
                if (gameOverMusic.volume - Time.deltaTime > 0.0f)
                {
                    gameOverMusic.volume -= Time.deltaTime;
                }
                else
                {
                    gameOverMusic.volume = 0.0f;
                }
                if (gameOverFadeTimer < -1.0f)
                {
                    reviveFade2 = GameObject.Instantiate(reviveFade.gameObject).GetComponent <Image>();
                    Player.transform.SetParent(playerParent);
                    Player.transform.SetSiblingIndex(playerIndex);
                    Player.transform.position = new Vector3(Player.transform.position.x, Player.transform.position.y, playerZ);
                    reviveFade2.transform.SetParent(playerParent);
                    reviveFade2.transform.SetAsLastSibling();
                    reviveFade2.transform.localPosition = new Vector3(0, 0, 0);
                    reviveFade.color = new Color(1, 1, 1, 0);
                    ResetGameOver();
                    gameOverContainer.SetActive(false);
                    if (!UnitaleUtil.IsOverworld)
                    {
                        battleCamera.SetActive(true);
                    }
                    else
                    {
                        GameObject cam = GameObject.Instantiate <GameObject>(Resources.Load <GameObject>("Prefabs/Main Camera OW"));
                        cam.name = "Main Camera OW";
                    }
                    if (musicBefore != null)
                    {
                        musicBefore.clip = music;
                        musicBefore.Play();
                    }
                    hasRevived = true;
                }
            }
        }

        for (int i = 0; i < heartShardInstances.Length; i++)
        {
            heartShardInstances[i].position += (Vector3)heartShardRelocs[i] * Time.deltaTime;
            heartShardRelocs[i].y           -= 100f * Time.deltaTime;
        }

        if (gameOverTxt.textQueue != null)
        {
            if (!exiting && gameOverTxt.AllLinesComplete() && gameOverTxt.LineCount() != 0)
            {
                exiting           = true;
                gameOverFadeTimer = 1.0f;
            }
            else if (exiting && gameOverFadeTimer > 0.0f)
            {
                gameOverImage.color = new Color(1, 1, 1, gameOverFadeTimer);
                if (gameOverFadeTimer > 0.0f)
                {
                    gameOverFadeTimer -= Time.deltaTime / 2;
                    if (gameOverFadeTimer <= 0.0f)
                    {
                        gameOverFadeTimer = 0.0f;
                    }
                }
            }
            else if (exiting)
            {
                // repurposing the timer as a reset delay
                gameOverFadeTimer -= Time.deltaTime;
                if (gameOverMusic.volume - Time.deltaTime > 0.0f)
                {
                    gameOverMusic.volume -= Time.deltaTime;
                }
                else
                {
                    gameOverMusic.volume = 0.0f;
                }
                if (gameOverFadeTimer < -1.0f)
                {
                    //StaticInits.Reset();
                    Destroy(gameObject);
                    if (!GlobalControls.modDev)
                    {
                        SaveLoad.Load(false);
                    }
                    if (!UnitaleUtil.IsOverworld)
                    {
                        UIController.EndBattle(false);
                    }
                    else //{
                    {
                        GameObject.Destroy(gameOverContainer);
                    }
                    if (!GlobalControls.modDev)
                    {
                        SceneManager.LoadScene("TransitionOverworld");
                    }
                    else
                    {
                        SceneManager.LoadScene("ModSelect");
                    }
                    //}
                }
            }
        }
    }
Example #3
0
    public static IEnumerator GetIntoDaMap(string call, object[] neededArgs)
    {
        //GlobalControls.fadeAuto = true;
        if (GameObject.Find("Main Camera OW"))
        {
            GameObject.Find("Main Camera OW").GetComponent <EventManager>().readyToReLaunch = true;
            GameObject.Find("Main Camera OW").tag = "MainCamera";
        }

        yield return(0);

        Camera.main.transparencySortMode = TransparencySortMode.CustomAxis;
        Camera.main.transparencySortAxis = new Vector3(0.0f, 1.0f, 1000000.0f);

        try { PlayerOverworld.instance.backgroundSize = GameObject.Find("Background").GetComponent <RectTransform>().sizeDelta *GameObject.Find("Background").GetComponent <RectTransform>().localScale.x; }
        catch { UnitaleUtil.WriteInLogAndDebugger("RectifyCameraPosition: The 'Background' GameObject is missing."); }

        EventManager.instance.onceReload = false;
        //Permits to reload the current data if needed
        MapInfos mi = GameObject.Find("Background").GetComponent <MapInfos>();

        if (StaticInits.MODFOLDER != mi.modToLoad)
        {
            StaticInits.MODFOLDER   = mi.modToLoad;
            StaticInits.Initialized = false;
            StaticInits.InitAll();
            LuaScriptBinder.Set(null, "ModFolder", DynValue.NewString(StaticInits.MODFOLDER));
            if (call == "transitionoverworld")
            {
                EventManager.instance.ScriptLaunched = false;
                EventManager.instance.script         = null;
            }
        }

        AudioSource audio = UnitaleUtil.GetCurrentOverworldAudio();

        if (mi.isMusicKeptBetweenBattles)
        {
            Camera.main.GetComponent <AudioSource>().Stop();
            Camera.main.GetComponent <AudioSource>().clip = null;
        }
        else
        {
            PlayerOverworld.audioKept.Stop();
            PlayerOverworld.audioKept.clip = null;
        }

        //Starts the music if there's no music
        if (audio.clip == null)
        {
            if (mi.music != "none")
            {
                audio.clip = AudioClipRegistry.GetMusic(mi.music);
                audio.time = 0;
                audio.Play();
            }
            else
            {
                audio.Stop();
            }
        }
        else
        {
            //Get the file's name with this...thing?
            string test = audio.clip.name.Replace('\\', '/').Split(new string[] { "/Audio/" }, System.StringSplitOptions.RemoveEmptyEntries)[1].Split('.')[0];
            if (test != mi.music)
            {
                if (mi.music != "none")
                {
                    audio.clip = AudioClipRegistry.GetMusic(mi.music);
                    audio.time = 0;
                    audio.Play();
                }
                else
                {
                    audio.Stop();
                }
            }
        }

        GameObject.Find("utHeart").GetComponent <Image>().color = new Color(GameObject.Find("utHeart").GetComponent <Image>().color.r, GameObject.Find("utHeart").GetComponent <Image>().color.g,
                                                                            GameObject.Find("utHeart").GetComponent <Image>().color.b, 0);
        if (call == "tphandler")
        {
            GameObject.Find("Player").transform.parent.position = (Vector2)neededArgs[0];
            PlayerOverworld.instance.gameObject.GetComponent <CYFAnimator>().movementDirection = ((TPHandler)neededArgs[1]).direction;
            ((TPHandler)neededArgs[1]).activated = false;
            GameObject.Destroy(((TPHandler)neededArgs[1]).gameObject);
        }

        if (GameObject.Find("Don't show it again"))
        {
            GameObject.Destroy(GameObject.Find("Don't show it again"));
        }
        StaticInits.SendLoaded();
    }