// Use this for initialization public void LateStart() { if (EventManager.instance.sprCtrls.ContainsKey(gameObject.name)) { sprctrl = EventManager.instance.sprCtrls[gameObject.name]; } else if (gameObject.name == "Player") { sprctrl = PlayerOverworld.instance.sprctrl; } else { EventManager.instance.ResetEvents(false); if (!EventManager.instance.sprCtrls.ContainsKey(gameObject.name)) { throw new CYFException("A CYFAnimator component must be tied to an event, however the GameObject " + gameObject.name + " doesn't seem to have one."); } } lastPos = gameObject.transform.position; if (waitingForLateStart) { ReplaceAnim(beginAnim); waitingForLateStart = false; } }
// Sets the parent of a sprite. public void SetParent(LuaSpriteController parent) { if (parent == null) { throw new CYFException("sprite.SetParent() can't set null as the sprite's parent."); } if (tag == "bubble") { throw new CYFException("sprite.SetParent() can not be used with bubbles."); } if (tag == "event" || parent != null && parent.tag == "event") { throw new CYFException("sprite.SetParent() can not be used with an Overworld Event's sprite."); } if (tag == "letter" ^ (parent != null && parent.tag == "letter")) { throw new CYFException("sprite.SetParent() can not be used between letter sprites and other sprites."); } try { GetTarget().SetParent(parent.img.transform); if (img.GetComponent <MaskImage>()) { img.GetComponent <MaskImage>().inverted = parent._masked == MaskMode.INVERTEDSPRITE || parent._masked == MaskMode.INVERTEDSTENCIL; } } catch { throw new CYFException("sprite.SetParent(): You tried to set a removed sprite/nil sprite as this sprite's parent."); } }
} // retrieve after finishing to get real damage number private void Awake() { foreach (Transform child in gameObject.transform) { if (child.name == "FightUILine") { line = new LuaSpriteController(child.GetComponent <Image>()); } else if (child.name == "SliceAnim") { slice = new LuaSpriteController(child.GetComponent <Image>()); } else if (child.name == "DamageNumber") { damageText = child.GetComponent <TextManager>(); } else if (child.name == "HPBar") { lifeBar = child.GetComponent <LifeBarController>(); } } damageTextRt = damageText.GetComponent <RectTransform>(); }
// Use this for initialization public void LateStart() { if (EventManager.instance.sprCtrls.ContainsKey(gameObject.name)) { sprctrl = EventManager.instance.sprCtrls[gameObject.name]; } else if (gameObject.name == "Player") { sprctrl = PlayerOverworld.instance.sprctrl; } else { EventManager.instance.ResetEvents(false); if (!EventManager.instance.sprCtrls.ContainsKey(gameObject.name)) { throw new CYFException("A CYFAnimator component must be tied to an event, however the GameObject " + gameObject.name + " doesn't seem to be one."); } } lastPos = gameObject.transform.position; waitForStart = false; if (firstCall) { Anim anim = GetAnimPerName(beginAnim); try { sprctrl.SetAnimation(anim.anims.Replace(" ", "").Replace("{", "").Replace("}", "").Split(','), anim.transitionTime); } catch { } firstCall = false; } }
public void Activate(LuaSpriteController sprctrl) { Sprite sprite = sprctrl.img.GetComponent <Image>() ? sprctrl.img.GetComponent <Image>().sprite : sprctrl.img.GetComponent <SpriteRenderer>().sprite; int xLength = Mathf.Abs(Mathf.FloorToInt(sprctrl.xscale * sprite.texture.width)), yLength = Mathf.Abs(Mathf.FloorToInt(sprctrl.yscale * sprite.texture.height)); GetComponentsInChildren <ParticleSystem>(true); ps = FindObjectOfType <ParticleSystem>(); ps.transform.SetAsLastSibling(); //Emit particles from particle system and retrieve into particles array particles = new ParticleSystem.Particle[xLength * yLength]; ps.Emit(particles.Length); ps.GetParticles(particles); //Get sprite viewport coordinates and pixel width/height on display RectTransform rt = GetComponent <RectTransform>(); //Vector2 bottomLeft = new Vector2((rt.position.x - rt.rect.width / 2) / (float)Screen.width, (rt.position.y) / (float)Screen.height); //Vector2 topRight = new Vector2((rt.position.x + rt.rect.width / 2) / (float)Screen.width, (rt.position.y + rt.rect.height) / (float)Screen.height); Vector2 bottomLeft = new Vector2(rt.position.x - rt.pivot.x * rt.sizeDelta.x, rt.position.y - rt.pivot.y * rt.sizeDelta.y); //Vector2 topRight = new Vector2(rt.position.x + (1 - rt.anchorMin.x) * rt.sizeDelta.x, rt.position.y + (1 - rt.anchorMin.x) * rt.sizeDelta.y); //Vector2 vpbl = Camera.main.ViewportToWorldPoint(bottomLeft); //Vector2 vptr = Camera.main.ViewportToWorldPoint(topRight); //float pxWidth = (topRight.x - vpbl.x) / rt.sizeDelta.x; //float pxHeight = (topRight.y - vpbl.y) / rt.sizeDelta.y; //Modify particle placement to reform the original sprite, and put back into particle system int particleCount = 0; bool xIncrement = sprctrl.xscale > 0, yIncrement = sprctrl.yscale > 0; for (int y = 0; y < yLength; y++) { float REALY = yIncrement ? y / sprctrl.yscale : (y / sprctrl.yscale + sprite.texture.height - 1); int realY = yIncrement ? Mathf.FloorToInt(REALY) : Mathf.CeilToInt(REALY); float yFrac = (yLength - y) / (float)yLength; for (int x = 0; x < xLength; x++) { float REALX = xIncrement ? x / sprctrl.xscale : (x / sprctrl.xscale + sprite.texture.width - 1); int realX = yIncrement ? Mathf.FloorToInt(REALX) : Mathf.CeilToInt(REALX); Color c = sprite.texture.GetPixel(realX, realY); if (c.a == 0.0f || (c.r + c.b + c.g) == 0.0f) { continue; } //particles[particleCount].position = new Vector3(vpbl.x + x * pxWidth, vpbl.y + y * pxHeight, -5.0f); particles[particleCount].position = new Vector3(bottomLeft.x + Mathf.RoundToInt(REALX * sprctrl.xscale) + (xIncrement ? 0 : xLength), bottomLeft.y + Mathf.RoundToInt(REALY * sprctrl.yscale) + (yIncrement ? 0 : yLength), -5.0f); particles[particleCount].startColor = c; particles[particleCount].startSize = 1; // we have to assume a square aspect ratio for pixels here particles[particleCount].remainingLifetime = yFrac * 1.5f + Random.value * 0.3f; particles[particleCount].startLifetime = particles[particleCount].remainingLifetime; particleCount++; } } ps.SetParticles(particles, particleCount); GetComponent <Image>().enabled = false; //GameObject.Destroy(gameObject); }
// Sets the parent of a sprite. Can't be used on an enemy public void SetParent(LuaSpriteController parent) { if (tag == "bubble") { return; } try { GetTarget().SetParent(parent.img.transform); } catch { throw new CYFException("You tried to set a removed sprite/unexisting sprite as this sprite's parent."); } }
// Sets the parent of a sprite. Can't be used on an enemy public void SetParent(LuaSpriteController parent) { if (tag == "bubble") { UnitaleUtil.WriteInLogAndDebugger("sprite.SetParent(): bubbles' parent can't be changed."); return; } try { GetTarget().SetParent(parent.img.transform); } catch { throw new CYFException("You tried to set a removed sprite/unexisting sprite as this sprite's parent."); } }
private void Start() { try { string scriptText = ScriptRegistry.Get(ScriptRegistry.MONSTER_PREFIX + scriptName); if (scriptText == null) { UnitaleUtil.DisplayLuaError(StaticInits.ENCOUNTER, "Tried to load monster script " + scriptName + ".lua but it didn't exist. Is it misspelled?"); return; } script.scriptname = scriptName; script.Bind("SetSprite", (Action <string>)SetSprite); script.Bind("SetActive", (Action <bool>)SetActive); script.Bind("isActive", (Func <bool>)InFight); script.Bind("Kill", (Action)DoKill); script.Bind("Spare", (Action)DoSpare); script.Bind("Move", (Action <float, float, bool>)Move); script.Bind("MoveTo", (Action <float, float, bool>)MoveTo); script.Bind("BindToArena", (Action <bool, bool>)BindToArena); script.Bind("SetDamage", (Action <int>)SetDamage); script.Bind("SetBubbleOffset", (Action <int, int>)SetBubbleOffset); script.Bind("SetDamageUIOffset", (Action <int, int>)SetDamageUIOffset); script.Bind("SetSliceAnimOffset", (Action <int, int>)SetSliceAnimOffset); script.Bind("GetLetters", (Func <Letter[]>)GetLetters); script.Bind("State", (Action <Script, string>)UIController.SwitchStateOnString); script.SetVar("canmove", DynValue.NewBoolean(false)); sprite = new LuaSpriteController(GetComponent <Image>()); script.SetVar("monstersprite", UserData.Create(sprite, LuaSpriteController.data)); script.DoString(scriptText); string spriteFile = script.GetVar("sprite").String; if (spriteFile != null) { SetSprite(spriteFile); } else { throw new CYFException("missing sprite"); } ui = FindObjectOfType <UIController>(); if (MaxHP == 0) { MaxHP = HP; } textBubbleSprite = Resources.Load <Sprite>("Sprites/UI/SpeechBubbles/right"); /*if (script.GetVar("canspare") == null) CanSpare = false; * if (script.GetVar("cancheck") == null) CanCheck = true;*/ } catch (InterpreterException ex) { UnitaleUtil.DisplayLuaError(scriptName, ex.DecoratedMessage); } catch (Exception ex) { UnitaleUtil.DisplayLuaError(scriptName, "Unknown error. Usually means you're missing a sprite.\nSee documentation for details.\nStacktrace below in case you wanna notify a dev.\n\nError: " + ex.Message + "\n\n" + ex.StackTrace); } }
private void Awake() { foreach (Transform child in gameObject.transform) { if (child.name == "FightUILine") { line = new LuaSpriteController(child.GetComponent <Image>()); Start(); return; } } }
public void MoveBelow(LuaSpriteController sprite) { if (sprite == null) { throw new CYFException("sprite.MoveBelow: The sprite passed as an argument is nil."); } else if (sprite.GetTarget().parent != GetTarget().parent) { UnitaleUtil.WriteInLogAndDebugger("[WARN]You can't change the order of two sprites without the same parent."); } else { GetTarget().SetSiblingIndex(sprite.GetTarget().GetSiblingIndex()); } }
public void MoveAbove(LuaSpriteController sprite) { if (sprite == null) { throw new CYFException("sprite.MoveAbove: The sprite passed as an argument is nil."); } if (sprite.GetTarget().parent != GetTarget().parent) { UnitaleUtil.Warn("You can't change the order of two sprites without the same parent."); } else { GetTarget().SetSiblingIndex(sprite.GetTarget().GetSiblingIndex() + 1); } }
public void MoveAbove(LuaSpriteController sprite) { if (sprite == null) { throw new CYFException("The sprite passed as an argument is null."); } else if (sprite.GetTarget().parent != GetTarget().parent) { UnitaleUtil.WriteInLogAndDebugger("[WARN]You can't move relatively two sprites without the same parent."); } else { GetTarget().SetSiblingIndex(sprite.GetTarget().GetSiblingIndex() + 1); } }
public void SetParent(LuaSpriteController parent) { CheckExists(); if (parent != null && parent.img.transform != null && parent.img.transform.parent.name == "SpritePivot") { throw new CYFException("text.SetParent(): Can not use SetParent with an Overworld Event's sprite."); } try { container.transform.SetParent(parent.img.transform); foreach (MaskImage ivi in container.GetComponentsInChildren <MaskImage>()) { ivi.inverted = parent._masked > 3; } } catch { throw new CYFException("You tried to set a removed sprite/nil sprite as this text object's parent."); } }
public DynValue GetLetters() { Table table = new Table(null); int key = 0; foreach (Image i in letterReferences) { if (i != null) { key++; LuaSpriteController letter = new LuaSpriteController(i) { tag = "letter" }; table.Set(key, UserData.Create(letter, LuaSpriteController.data)); } } return(DynValue.NewTable(table)); }
// Sets the parent of a sprite. public void SetParent(LuaSpriteController parent) { if (tag == "bubble") { UnitaleUtil.WriteInLogAndDebugger("sprite.SetParent(): bubbles' parent can't be changed."); return; } else if (tag == "event" || (parent != null && parent.tag == "event")) { throw new CYFException("sprite.SetParent(): Can not use SetParent with an Overworld Event's sprite."); } try { GetTarget().SetParent(parent.img.transform); if (img.GetComponent <MaskImage>()) { img.GetComponent <MaskImage>().inverted = parent._masked > 3; } } catch { throw new CYFException("sprite.SetParent(): You tried to set a removed sprite/nil sprite as this sprite's parent."); } }
// Use this for initialization void Start() { StaticInits.Start(); SaveLoad.Start(); new ControlPanel(); new PlayerCharacter(); #if UNITY_STANDALONE_WIN || UNITY_EDITOR if (GlobalControls.crate) { Misc.WindowName = ControlPanel.instance.WinodwBsaisNmae; } else { Misc.WindowName = ControlPanel.instance.WindowBasisName; } #endif SaveLoad.LoadAlMighty(); MisriHalek = GameObject.Find("MisriHalek").GetComponent <Image>(); MainText = FindObjectOfType <Text>(); MainAudio = Camera.main.GetComponent <AudioSource>(); SubAudio = GameObject.Find("SubAudio").GetComponent <AudioSource>(); MainSprite = ((LuaSpriteController)SpriteUtil.MakeIngameSprite("empty", "none", -1).UserData.Object); MainSprite.alpha = 0; MainSprite.SetPivot(.5f, 0); MainSprite.absy = 260; Sprite[] sprs = Resources.LoadAll <Sprite>("Sprites/Punder"); foreach (Sprite spr in sprs) { Sprites.Add(spr.name, spr); } AudioClip[] adcs = Resources.LoadAll <AudioClip>("Audios"); foreach (AudioClip adc in adcs) { Audios.Add(adc.name, adc); } MainAudio.clip = Audios["MisriHalek"]; MainAudio.loop = false; MainAudio.Play(); //MainAudio.time = 137; clipSampleData = new float[sampleDataLength]; }
// Set a given sprite to a sprite controller void SetSprite(Sprite key, string strKey, LuaSpriteController spr, int main = -1) { if (key == null) { throw new Exception("Tried to set sprite with key \"" + strKey + "\"."); } if (main < 0 || main > 1 || (main == 0 ? lastPunderSprite : lastLuSprite) != strKey) { spr.img.GetComponent <Image>().sprite = key; spr.img.GetComponent <RectTransform>().sizeDelta = new Vector2(key.texture.width, key.texture.height); if (main == 0) { lastPunderSprite = strKey; } else if (main == 1) { lastLuSprite = strKey; spr.Scale(2, 2); } } }
// Set a given sprite to a sprite controller protected virtual void SetSprite(Sprite key, string strKey, LuaSpriteController spr, int main = -1) { if (key == null) { throw new Exception("Tried to set sprite with key \"" + strKey + "\"."); } if (main >= 0 && main <= 1 && (main == 0 ? lastPunderSprite : lastLuSprite) == strKey) { return; } spr.img.GetComponent <Image>().sprite = key; spr.img.GetComponent <RectTransform>().sizeDelta = new Vector2(key.texture.width, key.texture.height); switch (main) { case 0: lastPunderSprite = strKey; break; case 1: lastLuSprite = strKey; spr.Scale(2, 2); break; } }
public void Start() { foreach (RectTransform child in transform) { switch (child.name) { case "SliceAnim": slice = new LuaSpriteController(child.GetComponent <Image>()); break; case "HPBar": lifeBar = child.GetComponent <LifeBarController>(); break; case "DamageNumber": damageText = child.GetComponent <TextManager>(); damageTextRt = child.GetComponent <RectTransform>(); break; } } sliceAnim = UIController.instance.fightUI.sliceAnim; sliceAnimFrequency = UIController.instance.fightUI.sliceAnimFrequency; shakeX = UIController.instance.fightUI.shakeX; damageText.SetFont(SpriteFontRegistry.Get(SpriteFontRegistry.UI_DAMAGETEXT_NAME)); damageText.SetMute(true); }
public void SetParent(LuaSpriteController parent) { CheckExists(); if (parent != null && parent.img.transform != null && parent.img.transform.parent.name == "SpritePivot") { throw new CYFException("text.SetParent(): Can not use SetParent with an Overworld Event's sprite."); } try { if (parent == null) { throw new CYFException("text.SetParent(): Can't set a sprite's parent as nil."); } container.transform.SetParent(parent.img.transform); foreach (Transform child in container.transform) { MaskImage childmask = child.gameObject.GetComponent <MaskImage>(); if (childmask != null) { childmask.inverted = parent._masked == LuaSpriteController.MaskMode.INVERTEDSPRITE || parent._masked == LuaSpriteController.MaskMode.INVERTEDSTENCIL; } } } catch { throw new CYFException("You tried to set a removed sprite/nil sprite as this text object's parent."); } }
public void SetParent(LuaSpriteController parent) { try { container.transform.SetParent(parent.img.transform); } catch { throw new CYFException("You tried to set a removed sprite/unexisting sprite as this text's parent."); } }
public void SetParent(LuaSpriteController parent) { CheckExists(); try { container.transform.SetParent(parent.img.transform); } catch { throw new CYFException("You tried to set a removed sprite/nil sprite as this text object's parent."); } }
// Use this for initialization void Start() { // Load CYF's save file StaticInits.Start(); SaveLoad.Start(); // Set up CYF's basic objects new ControlPanel(); new PlayerCharacter(); #if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN if (GlobalControls.crate) { Misc.WindowName = ControlPanel.instance.WinodwBsaisNmae; } else { Misc.WindowName = ControlPanel.instance.WindowBasisName; } #endif // Load CYF's AlMighty save file SaveLoad.LoadAlMighty(); // Store useful scene objects misriHalek = GameObject.Find("MisriHalek").GetComponent <Image>(); mainText = GameObject.Find("MainText").GetComponent <Text>(); subText = GameObject.Find("SubText").GetComponent <Text>(); mainAudio = Camera.main.GetComponent <AudioSource>(); subAudio = GameObject.Find("SubAudio").GetComponent <AudioSource>(); // Load all resources needed for this animation to play Sprite[] punderSprs = Resources.LoadAll <Sprite>("Sprites/Punder"); foreach (Sprite spr in punderSprs) { punderSprites.Add(spr.name, spr); } Sprite[] luSprs = Resources.LoadAll <Sprite>("Sprites/Lu"); foreach (Sprite spr in luSprs) { luSprites.Add(spr.name, spr); } AudioClip[] adcs = Resources.LoadAll <AudioClip>("Audios"); foreach (AudioClip adc in adcs) { audioFiles.Add(adc.name, adc); } // Create all sprites needed for the animation mainSprite = (LuaSpriteController)SpriteUtil.MakeIngameSprite("empty", "Default", -1).UserData.Object; mainSprite.alpha = 0; mainSprite.SetPivot(.5f, 0); mainSprite.x = 0; mainSprite.y = 20; fadeSprite = (LuaSpriteController)SpriteUtil.MakeIngameSprite("black", "Default", -1).UserData.Object; fadeSprite.alpha = 0; pauseSprite = (LuaSpriteController)SpriteUtil.MakeIngameSprite("empty", "Default", -1).UserData.Object; SetSprite(Resources.Load <Sprite>("Sprites/pause"), "", pauseSprite); pauseSprite.alpha = 0; subSprite = (LuaSpriteController)SpriteUtil.MakeIngameSprite("empty", "Lu", -1).UserData.Object; subSprite.x = 0; subSprite.y = -400; SetSprite("HoldNormal0", false); // Preload all other audio files to prevent lag spikes foreach (AudioClip clip in audioFiles.Values) { mainAudio.clip = clip; mainAudio.Play(); } mainAudio.clip = audioFiles["MisriHalek"]; mainAudio.loop = false; mainAudio.Play(); clipSampleData = new float[sampleDataLength]; }
// Set a sprite using a string key void SetSprite(string key, LuaSpriteController spr, int main = -1) { Dictionary <string, Sprite> sprDict = main == 0 ? punderSprites : luSprites; SetSprite(sprDict[key], key, spr, main); }
// Set the main or sub sprite using a string key void SetSprite(string key, bool main) { LuaSpriteController spr = main ? mainSprite : subSprite; SetSprite(key, spr, main ? 0 : 1); }
/// <summary> /// Create a new Lua controller intended for this player. /// </summary> /// <param name="p">PlayerController this controller is intended for</param> public LuaPlayerStatus(PlayerController p) { player = p; spr = new LuaSpriteController(p.GetComponent <Image>()); }
// Update is called once per frame private void Update() { if (hasRevived && reviveFade2) { 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 { Destroy(reviveFade2.gameObject); } } if (!started) { return; } if (!revived) { if (!once && UnitaleUtil.IsOverworld) { once = true; utHeart.transform.SetParent(GameObject.Find("Canvas GameOver").transform); utHeart.transform.position = heartPos; utHeart.GetComponent <Image>().color = heartColor; canvasOW = GameObject.Find("Canvas OW"); canvasOW.SetActive(false); canvasTwo = GameObject.Find("Canvas Two"); canvasTwo.SetActive(false); } 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); brokenHeartPrefab.transform.SetParent(UnitaleUtil.IsOverworld ? GameObject.Find("Canvas GameOver").transform : gameObject.transform); brokenHeartPrefab.GetComponent <RectTransform>().position = heartPos; brokenHeartPrefab.GetComponent <Image>().color = heartColor; brokenHeartPrefab.GetComponent <Image>().enabled = true; if (UnitaleUtil.IsOverworld) { 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 (EnemyEncounter.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>()); heartShardInstances[i].transform.SetParent(UnitaleUtil.IsOverworld ? GameObject.Find("Canvas GameOver").transform : gameObject.transform); heartShardInstances[i].GetComponent <RectTransform>().position = heartPos; heartShardInstances[i].GetComponent <Image>().color = heartColor; heartShardRelocs[i] = 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) { try { gameOverMusic.clip = AudioClipRegistry.GetMusic(deathMusic); } catch { UnitaleUtil.DisplayLuaError("game over screen", "The specified death music doesn't exist. (\"" + deathMusic + "\")"); } if (gameOverMusic.clip == null) { gameOverMusic.clip = originMusic; } } gameOverMusic.Play(); gameOverAfter = 999.0f; } if (internalTimer > fluffybunsAfter) { if (deathText != null) { List <TextMessage> text = deathText.Select(str => new TextMessage(str, false, false)).ToList(); 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[] { 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 = { "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[] { 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 (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) { 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(Random.Range(-3, 2), 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) { 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); } Destroy(brokenHeartPrefab); } 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 = Instantiate(reviveFade.gameObject).GetComponent <Image>(); reviveFade2.transform.SetParent(playerParent); reviveFade2.transform.SetAsLastSibling(); reviveFade2.transform.localPosition = new Vector3(0, 0, 0); reviveFade.color = new Color(1, 1, 1, 0); EndGameOverRevive(); 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) { return; } 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)) { return; } 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(); EndGameOver(); } } }
void Start() { if (Inventory.inventory.Count == 0 && ItemBox.items.Count == 0) { System.Random rnd = new System.Random(); string[] words = new string[] { "effort", "time", "feeling" }; Table text = new Table(EventManager.instance.luainvow.appliedScript.script); text.Set(DynValue.NewNumber(1), DynValue.NewString("You have no items.[w:10]\nYou put a little " + words[rnd.Next(0, 3)] + "\rinto the box.")); EventManager.instance.luagenow.SetDialog(DynValue.NewTable(text)); Destroy(this); return; } active = true; GetComponent <Image>().color = new Color(1, 1, 1, 1); player = GameObject.Find("utHeartMenu"); Color c = player.GetComponent <Image>().color; player.GetComponent <Image>().color = new Color(c.r, c.g, c.b, 1); for (int i = 0; i < Inventory.inventorySize; i++) { GameObject go = new GameObject(); go.AddComponent <RectTransform>(); go.AddComponent <TextManager>(); TextManager tm = go.GetComponent <TextManager>(); tm.transform.SetParent(transform); tm.transform.position = new Vector3(80, 410 - (i * 32)); inventory.Add(tm); LuaSpriteController sprite = (LuaSpriteController)(SpriteUtil.MakeIngameSprite("px", -1).UserData.Object); sprite._img.transform.SetParent(transform); sprite.SetPivot(0, 0.5f); sprite.MoveToAbs(92, 386 - (i * 32)); sprite.xscale = 190; sprite.color = new float[] { 1f, 0f, 0f }; inventorySprites.Add(sprite); } for (int i = 0; i < ItemBox.capacity; i++) { GameObject go = new GameObject(); go.AddComponent <RectTransform>(); go.AddComponent <TextManager>(); TextManager tm = go.GetComponent <TextManager>(); tm.transform.SetParent(transform); tm.transform.position = new Vector3(372, 410 - (i * 32)); boxContents.Add(tm); LuaSpriteController sprite = (LuaSpriteController)(SpriteUtil.MakeIngameSprite("px", -1).UserData.Object); sprite._img.transform.SetParent(transform); sprite.SetPivot(0, 0.5f); sprite.MoveToAbs(384, 386 - (i * 32)); sprite.xscale = 190; sprite.color = new float[] { 1f, 0f, 0f }; boxContentsSprites.Add(sprite); } RefreshDisplay(); }
public void SetParent(LuaSpriteController parent) { img.transform.SetParent(parent.img.transform); }
public ProjectileController(Projectile p) { this.p = p; spr = new LuaSpriteController(p.GetComponent <Image>()); }