Exemple #1
0
    public void CloseUIPanel(string PanelName)
    {
        GameObject Panel = UIPanels[PanelName];

        if (Panel.activeInHierarchy == false)
        {
            return;
        }

        PendingOldPanel = PanelName;
        MovingObjects.Clear();


        foreach (Transform child in Panel.transform)
        {
            GameObject ChildObject = child.gameObject;

            if (ChildObject.tag == "Fade")
            {
                FadingObjects.Add(new FadingUIObject(ChildObject, false, 0.1f));
            }
            else
            {
                Vector2 Target = GetObjectSlideTarget(ChildObject);
                MovingObjects.Add(new MovingUIObject(ChildObject, Target, 20f));
            }
        }

        State = UIAnimationStates.ClearingPanel;
    }
Exemple #2
0
    // Use this for initialization
    void Start()
    {
        UIPanels = new Dictionary <string, GameObject>();

        Transform Canvas = GameObject.Find("UICanvas").GetComponent <Transform>();

        for (int i = 0; i < Canvas.childCount; i++)
        {
            Transform  T       = Canvas.GetChild(i);
            GameObject UIPanel = T.gameObject;

            UIPanels.Add(UIPanel.name, UIPanel);

            if (UIPanel.name == "MainMenuPanel")
            {
                UIPanel.SetActive(true);
            }
            else
            {
                UIPanel.SetActive(false);
            }
        }

        GoldText = GameObject.Find("GoldText").GetComponent <Text>();

        //this panel is disabled, so a little extra work is needed


        TimerFG   = GetNamedObject(UIPanels["GamePanel"], "TimerFG");
        TimerText = GetNamedObject(UIPanels["GamePanel"], "TimerText");

        MovingObjects   = new List <MovingUIObject>();
        FinishedObjects = new List <MovingUIObject>();

        FadingObjects         = new List <FadingUIObject>();
        FinishedFadingObjects = new List <FadingUIObject>();

        State = UIAnimationStates.Default;

        //GoldText.text = "" + PlayerPrefs.GetInt("Coins");
        //EmeraldText.text = "" + PlayerPrefs.GetInt("Emeralds");

        HeartObjects = new List <GameObject>();
    }
Exemple #3
0
    // Update is called once per frame
    void Update()
    {
        switch (State)
        {
        case UIAnimationStates.Default: return;

        case UIAnimationStates.ClearingPanel:
        {
            foreach (MovingUIObject O in new List <MovingUIObject>(MovingObjects))
            {
                O.Update();
                if (O.Completed)
                {
                    MovingObjects.Remove(O);
                    FinishedObjects.Add(O);
                }
            }

            foreach (FadingUIObject O in new List <FadingUIObject>(FadingObjects))
            {
                O.Update();
                if (O.Completed)
                {
                    FadingObjects.Remove(O);
                    FinishedFadingObjects.Add(O);
                }
            }

            if (MovingObjects.Count == 0 && FadingObjects.Count == 0)
            {
                foreach (MovingUIObject O in FinishedObjects)
                {
                    O.Dispose();
                }
                FinishedObjects.Clear();

                foreach (FadingUIObject O in FinishedFadingObjects)
                {
                    O.Dispose();
                }
                FinishedFadingObjects.Clear();

                GameObject Panel = UIPanels[PendingNewPanel];
                foreach (Transform child in Panel.transform)
                {
                    GameObject ChildObject = child.gameObject;

                    if (ChildObject.tag == "Fade")
                    {
                        FadingObjects.Add(new FadingUIObject(ChildObject, true, 0.1f));
                    }
                    else
                    {
                        Vector2 NewPos = GetObjectSlideTarget(ChildObject);
                        Vector2 Target = new Vector2(ChildObject.transform.localPosition.x, ChildObject.transform.localPosition.y);

                        ChildObject.transform.localPosition = new Vector3(NewPos.x, NewPos.y, 0);
                        MovingObjects.Add(new MovingUIObject(ChildObject, Target, 20f));
                    }
                }

                UIPanels[PendingOldPanel].SetActive(false);
                UIPanels[PendingNewPanel].SetActive(true);

                State = UIAnimationStates.OpeningPanel;
            }

            break;
        }

        case UIAnimationStates.OpeningPanel:
        {
            foreach (MovingUIObject O in new List <MovingUIObject>(MovingObjects))
            {
                O.Update();
                if (O.Completed)
                {
                    MovingObjects.Remove(O);
                }
            }

            foreach (FadingUIObject O in new List <FadingUIObject>(FadingObjects))
            {
                O.Update();
                if (O.Completed)
                {
                    O.Dispose();
                    FadingObjects.Remove(O);
                }
            }

            if (MovingObjects.Count == 0 && FadingObjects.Count == 0)
            {
                State = UIAnimationStates.Default;
            }

            break;
        }
        }
    }