Beispiel #1
0
    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);
    }
Beispiel #2
0
    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;
            }
        });
    }
Beispiel #3
0
    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;
    }
Beispiel #4
0
    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);
    }
Beispiel #5
0
    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);
    }
Beispiel #6
0
    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()));
    }
Beispiel #7
0
    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);
    }