コード例 #1
0
    protected void onFetch(string error, JSONObject result)
    {
        if (!string.IsNullOrEmpty(error))
        {
            DebugManager.Log(error);
        }
        else
        {
            _pages       = new Dictionary <int, MagicUIPage>();
            _pagesByName = new Dictionary <string, int>();
            _pageStack   = new Stack <int>();

            JSONObject pages     = result["pages"];
            string     firstPage = result["firstPage"].str;

            for (int i = 0; i < pages.list.Count; i++)
            {
                MagicUIPage page = MagicUIPage.CreateFromMarkup(pages.keys[i], pages.list[i]);

                if (page != null)
                {
                    _pages.Add(page.ID, page);
                    _pagesByName.Add(page.name, page.ID);

                    if (page.name == firstPage)
                    {
                        _homePage      = page.ID;
                        page.IsVisible = true;
                        _pageStack.Push(_homePage);
                    }
                    else
                    {
                        page.IsVisible = false;
                    }
                }
            }

            setupBackground();
        }
    }
コード例 #2
0
    public void ShowPage(int pageID)
    {
        if (_pages == null)
        {
            return;
        }

        int dest = pageID;

        if (dest < 0)
        {
            while (dest < 0)
            {
                ++dest;
                _pageStack.Pop();
            }

            if (_pageStack.Count <= 0)
            {
                _pageStack.Push(_homePage);
            }
        }
        else if (_pages.ContainsKey(dest))
        {
            MagicUIPage page = _pages[dest];
            if (!page.IsDialog)
            {
                _pageStack.Pop();
            }
            _pageStack.Push(dest);
        }

        foreach (int key in _pages.Keys)
        {
            _pages[key].IsVisible = _pageStack.Contains(key);
        }
    }
コード例 #3
0
    public static MagicUIPage CreateFromMarkup(string pageName, JSONObject markup)
    {
        DebugManager.Log("Creating {0}...", pageName);

        GameObject go = new GameObject();

        go.name = pageName;

        go.transform.parent        = MagicUIManager.Instance.transform;
        go.transform.localPosition = Vector3.zero;
        go.transform.localScale    = Vector3.one;
        go.layer = MagicUIManager.Instance.gameObject.layer;

        UIPanel panel = go.AddComponent <UIPanel>();

        panel.depth = _nextPanelDepth;
        ++_nextPanelDepth;

        MagicUIPage page = go.AddComponent <MagicUIPage>();

        Vector2 pageSize = MagicUIManager.Instance.ScreenSize;
        float   aspect   = markup["aspect"].n;

        page.ID = Mathf.RoundToInt(markup["id"].n);

        page._expectedSize = pageSize;
        page._extraSize    = Vector2.zero;
        if (!Mathf.Approximately(MagicUIManager.Instance.Aspect, aspect))
        {
            if (MagicUIManager.Instance.Aspect > aspect)
            {
                // Screen is more rectangular than expected
                // Keep our short dimension fixed and add to the long dimension
                if (MagicUIManager.Instance.IsPortrait)
                {
                    // Long dimension is y
                    page._expectedSize.y = page._expectedSize.x * aspect;
                }
                else
                {
                    // Long dimension is x
                    page._expectedSize.x = page._expectedSize.y * aspect;
                }
            }
            else
            {
                // Screen is squarer than expected
                // Keep our long dimension fixed and add to the short dimension
                if (MagicUIManager.Instance.IsPortrait)
                {
                    // Short dimension is x
                    page._expectedSize.x = page._expectedSize.y / aspect;
                }
                else
                {
                    // Short dimension is y
                    page._expectedSize.y = page._expectedSize.x / aspect;
                }
            }
            page._extraSize = pageSize - page._expectedSize;
        }

        panel.clipping       = UIDrawCall.Clipping.SoftClip;
        panel.clipSoftness   = Vector2.one;
        panel.baseClipRegion = new Vector4(0, 0, pageSize.x, pageSize.y);

        page.Populate(markup["children"].list);

        return(page);
    }