public FIRL MeterAlert(GrandData g, AlertType t) { Face f = g.TargetFace; FIRL alert = Instantiate(Prefabs.GetObject("fobj_meter") as GameObject).GetComponent <FIRL>(); alert.Init(0, null); alert.transform.position = f.pos + f.T.up; Resource res = null; string title = ""; switch (t) { case AlertType.Hunger: res = g.Hunger; title = "HUNGER"; break; case AlertType.Fitness: res = g.Fitness; title = "Fitness"; break; case AlertType.Social: res = g.Social; title = "Social"; break; } alert[0].transform.localScale = new Vector3(res.Ratio, 1.0F, 1.0F); alert.Text[0].text = title; alert.TweenActive(true); return(alert); }
public void SetupFace(Face f, FIRL frame, GrandData g) { f.AddAction(TouchAction.Up, () => { if (ginfo_target != g) { if (ginfo != null) { ginfo.PoolDestroy(); } ginfo_face = f; ginfo_target = g; ginfo = GameManager.UI.GrandInfo(g); Vector3 pos = new Vector3(this.transform.position.x, f.transform.position.y - 10, 0.0F); ginfo.SetUIPositionFromWorld(pos); ginfo.FitOnScreen(); ginfo.SetActive(false); ginfo.TweenActive(true); lastsmiles = g.Smiles.Value; lastgrumps = g.Grumps.Value; Tweens.Bounce(f.transform); } else if (ginfo != null) { ginfo.PoolDestroy(); ginfo_target = null; } }); }
public IEnumerator GoThroughAlerts(List <FIRL> alerts) { GameManager.Paused = true; Vector3 worldoffset = GameManager.Data.WorldObjects.pos; // + new Vector3(0,0,-13.5F); for (int i = 0; i < alerts.Count; i++) { alerts[i].T.position = worldoffset + Vector3.forward * ((float)(i) * 2); //alerts[i].T.localScale = Vector3.one + Vector3.one * (0.1F * i); } for (int i = 0; i < alerts.Count; i++) { FIRL alert = alerts[i]; bool isAlive = true; Vector3 finscroll = Vector3.zero; while (isAlive) { Vector2 scroll = Input.GetMouseButton(0) ? GameManager._Input.GetScroll() / 25 : Vector2.zero; scroll.y = 0; if (scroll == Vector2.zero) { alert.T.position = (Vector3.Lerp(alert.pos, worldoffset, Time.deltaTime * 15)); //alert.T.localScale = Vector3.Lerp(alert.T.localScale, Vector3.one, Time.deltaTime*15); } else if (Vector3.Distance(alert.pos, worldoffset) > 7) { finscroll = new Vector3(scroll.x, 0.0F, 0.0F); isAlive = false; } else { alert.T.position = (alert.pos + new Vector3(scroll.x, 0.0F, 0.0F)); } yield return(null); } finscroll.Normalize(); float throwtime = 0.2F; while ((throwtime -= Time.deltaTime) > 0.0F) { alert.T.position = alert.pos + finscroll + Vector3.down; for (int x = i + 1; x < alerts.Count; x++) { alerts[x].T.position = Vector3.Lerp(alerts[x].pos, worldoffset + Vector3.forward * (x - i - 1) * 2, 0.5F); } yield return(null); } alert.PoolDestroy(); yield return(null); } GameManager.Paused = false; }
public IEnumerator GrumpAlert(_Grump g) { float time_pause = 0.7F; FIRL alert = (FIRL)Instantiate(GrumpAlertObj); //GameManager.UI.WorldObjects.AddChild(alert); alert.Init(-1, GameManager.UI.FOBJ_World); alert.Child[1].AddChild(Instantiate(g.Target.FObject)); alert.IMG[0].sprite = g.LikesIt ? Alert_Right : Alert_Wrong; alert.SetActive(false); alert.T.position = MOB[0][0].T.position; alert.T.localScale = Vector3.one * 4.0F; //alert[0].T.rotation = g.Parent.Seat.Rotation * Quaternion.Euler(50,0,180); alert.TweenActive(true); float t = 0.0F; while ((t += Time.deltaTime) < time_pause || Target == g.Parent) { //Vector3 targpos = g.Parent.Position; //alert.transform.position = targpos; //alert.Child[0].transform.rotation = Quaternion.identity; //alert.IMG[0].transform.rotation = Quaternion.identity; yield return(null); } alert.SetActive(false); yield return(new WaitForSeconds(0.4F)); if (alert != null) { alert.PoolDestroy(); } yield return(null); }
public FIRL RewardAlert(RewardCon r) { FIRL alert = Instantiate(Prefabs.GetObject("govletter") as GameObject).GetComponent <FIRL>(); alert.SetParent(GameManager.Data.WorldObjects); alert.Init(-1, GameManager.Data.WorldObjects); alert.Text[0].text = r.Title; alert.Text[1].text = ""; alert.Text[2].text = r.Description; if (r.Rep > 0) { alert.AddAction(TouchAction.Destroy, () => { StartCoroutine(ResourceAlert(GameManager.WorldRes.Rep, r.Rep)); }); alert.Text[1].text += "+" + r.Rep + " REP\n"; } if (r.Funds > 0) { alert.AddAction(TouchAction.Destroy, () => { StartCoroutine(ResourceAlert(GameManager.WorldRes.Funds, r.Funds)); }); alert.Text[1].text += "+" + r.Funds + " FUNDS\n"; } if (r.Meds > 0) { alert.AddAction(TouchAction.Destroy, () => { StartCoroutine(ResourceAlert(GameManager.WorldRes.Meds, r.Meds)); }); alert.Text[1].text += "+" + r.Meds + " MEDS\n"; } return(alert); }
IEnumerator EndGame() { while (!AllSeated) { yield return(null); } UIObj endgame = MUI["endgame"]; Running = false; GameManager.IgnoreInput = true; timerobj.Txt[0].text = ""; timerobj.Txt[1].text = ""; if (!GameManager.WorldRes.Funds.Charge(DinnerCost)) { endgame[0].TweenActive(true); endgame[1].SetActive(false); endgame[2].SetActive(false); endgame[0].Txt[0].text = "No Funds!"; FinalScore = 0; yield return(new WaitForSeconds(0.8F)); endgame[0].TweenActive(false); yield return(StartCoroutine(FinishDinner())); yield break; } endgame[0].TweenActive(true); endgame[1].SetActive(false); endgame[2].SetActive(false); endgame[0].Txt[0].text = "Let's Eat!"; FinalScore = 0; yield return(new WaitForSeconds(0.85F)); endgame[0].TweenActive(false); List <FOBJ> correct = new List <FOBJ>(); List <FOBJ> wrong = new List <FOBJ>(); for (int i = 0; i < _TableManager.Seat.Length; i++) { GreatGrand grand = _TableManager.Seat[i].Target; if (grand == null) { continue; } int targ_grumps = grand.GetGrumps(false); yield return(new WaitForSeconds(Time.deltaTime * 5)); Sprite s = targ_grumps >= 0 ? Alert_Right : Alert_Wrong; FOBJ a = Instantiate(GameManager.UI.Prefabs.GetObject("FOBJ_Default") as GameObject).GetComponent <FOBJ>(); (a as FIRL).IMG[0].sprite = s; a.SetActive(false); a.transform.position = grand.TargetFace.pos - Vector3.forward * 1; a.transform.localScale = Vector3.one * 1.8F; a.TweenActive(true); if (targ_grumps >= 0) { correct.Add(a); } else { wrong.Add(a); } yield return(new WaitForSeconds(0.12F)); } UIObj info = MUI["kitchen"]; info.Txt[1].text = "HAPPY\nGRANDS"; info.Txt[0].text = FinalScore + ""; Tweens.Bounce(info.transform); info.TweenActive(true); yield return(new WaitForSeconds(0.5F)); bool isCounting = true; for (int i = 0; i < correct.Count; i++) { SendCorrectAlert(correct[i], info.transform); } for (int i = 0; i < wrong.Count; i++) { wrong[i].transform.DOScale(Vector3.zero, 0.3F).OnComplete(() => {}); } while (isCounting) { info.Txt[0].text = FinalScore + ""; bool complete = true; for (int i = 0; i < correct.Count; i++) { if (correct[i] != null) { complete = false; break; } } if (complete) { isCounting = false; } yield return(null); } int rep = (int)((FinalScore * 5) * (1.0F + (Difficulty * Bonus_DifficultyMultiplier))); info.Txt[0].text = rep + ""; if (GameTime < Timer) { yield return(new WaitForSeconds(0.4F)); float mult = 1.0F - (GameTime / Timer * Bonus_TimerDecay); mult = Mathf.Clamp(1.0F + mult, 1.0F, Bonus_TimerMax); rep = (int)((float)rep * mult); info.Txt[0].text = rep + ""; info.Txt[1].text = "TIME\nBONUS"; info.Txt[1].color = Color.green; Tweens.Bounce(info.transform); yield return(null); } if (FinalScore == GGNum) { yield return(new WaitForSeconds(0.4F)); rep = (int)((float)rep * Bonus_Perfect); info.Txt[0].text = rep + ""; info.Txt[1].text = "PERFECT!"; info.Txt[1].color = Color.blue; Tweens.Bounce(info.transform); yield return(null); } yield return(new WaitForSeconds(0.4F)); StartCoroutine(GameManager.UI.ResourceAlert(GameManager.WorldRes.Rep, rep)); List <FIRL> alerts = new List <FIRL>(); for (int i = 0; i < _TableManager.Seat.Length; i++) { GrandData g = _TableManager.Seat[i].Target.Data; FIRL a = GameManager.UI.MeterAlert(g, AlertType.Hunger); alerts.Add(a); Tweens.Bounce(a.transform); yield return(null); } //FUTURE ANIMATION OF GRANDS EATING yield return(new WaitForSeconds(0.3F)); //$$$$$$$ int hungerticks = 10 + FinalScore * 10; int ticks = 0; float tickrate = 1; while (true) { for (int i = 0; i < _TableManager.Seat.Length; i++) { GrandData g = _TableManager.Seat[i].Target.Data; g.Hunger.Add((int)tickrate); alerts[i][0].transform.localScale = new Vector3(g.Hunger.Ratio, 1.0F, 1.0f); } ticks += (int)tickrate; tickrate *= 1.1F; if (ticks >= hungerticks) { break; } yield return(null); } yield return(new WaitForSeconds(0.3F)); for (int i = 0; i < alerts.Count; i++) { alerts[i].PoolDestroy(); } yield return(new WaitForSeconds(0.5F)); yield return(StartCoroutine(FinishDinner())); }
public FIRL ShowGrandAlert(GrandAlert g, int num = 0) { FIRL alert = Instantiate(Prefabs.GetObject("grandletter") as GameObject).GetComponent <FIRL>(); alert.SetParent(GameManager.Data.WorldObjects); alert.Init(-1, GameManager.Data.WorldObjects); alert.Text[0].text = ""; alert.Text[1].text = ""; string title = ""; string desc = ""; string pref = "A Grand is"; //g.Count > 1 ? g.Count + " Grands are" : switch (g.Type) { case AlertType.Hunger: title = pref + " Hungry!"; desc = "Hungry Grands Get Grumpy!"; break; case AlertType.Fitness: title = pref + " Out of Shape!"; desc = "Low Fitness Grands Get Grumpy!"; break; case AlertType.Social: title = pref + " Anti-Social!"; desc = "Anti-Social Grands Get Grumpy!"; break; case AlertType.Ageup: title = "A Grand had a Birthday!"; desc = ""; break; } alert.Text[0].text = title; alert.Text[1].text = desc; FIRL frame = Instantiate(GameManager.Data.RandomFrame()) as FIRL; alert.Child[0].AddChild(frame); Face f = GameManager.Generator.GenerateNewFace(g.Grand); frame[0].AddChild(f); frame.Text[0].text = g.Grand.Info.Name; string amt = ""; switch (g.Type) { case AlertType.Hunger: amt = (g.Grand.Hunger.Ratio * 100).ToString("0") + "%"; break; case AlertType.Fitness: amt = (g.Grand.Fitness.Ratio * 100).ToString("0") + "%"; break; case AlertType.Social: amt = (g.Grand.Social.Ratio * 100).ToString("0") + "%"; break; case AlertType.Ageup: amt = g.Grand.Age + ""; break; } frame.T.position = alert[0].pos; alert.T.rotation = Quaternion.Euler(0, 0, Random.Range(-3, 3)); alert.TweenActive(true); return(alert); }