// 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(); }
// 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"); } //} } } } }
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(); }