Ejemplo n.º 1
0
    /// <summary>
    /// Get menu that is bind to certain architecture gameboject.
    /// It will automatically create new one if it can not found.
    /// </summary>
    /// <returns>The menu.</returns>
    /// <param name="transform">Transform.</param>
    /// <param name="menuType">Menu type.</param>
    /// <param name="hideOther">If set to <c>true</c> hide other.</param>
    public UIArchitectureMenu GetMenu(Transform transform, ArchitectureMenuType menuType, bool hideOther = true)
    {
        //if other menu need to hide
        if (hideOther)
        {
            HideMenuExcept(transform, menuType);
        }

        //if it has object id
        if (_idToMenu.ContainsKey(transform.GetInstanceID()))
        {
            //if it contain certain menu type...return that menu
            if (_idToMenu[transform.GetInstanceID()].ContainsKey(menuType))
            {
                UIArchitectureMenu retMenu = _idToMenu[transform.GetInstanceID()][menuType];

                //set menu active
                retMenu.gameObject.SetActive(true);

                return(retMenu);
            }
            else            //it does not contatin certain menu type...create new menu
            {
                return(CreateMenu(transform, menuType));
            }
        }
        else        //it does not have object id
        {
            //add object id
            _idToMenu.Add(transform.GetInstanceID(), null);

            return(CreateMenu(transform, menuType));
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Delete all menu that are bind to certain architecture gameboject except certain menu type.
    /// </summary>
    /// <param name="transform">Transform.</param>
    /// <param name="menuType">Menu type.</param>
    public void DeleteMenu(Transform transform, ArchitectureMenuType menuType)
    {
        foreach (ArchitectureMenuType type in _idToMenu[transform.GetInstanceID()].Keys)
        {
            if (type == menuType)
            {
                continue;
            }

            NGUITools.Destroy(_idToMenu[transform.GetInstanceID()][type].gameObject);
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Hide all menu that are bind to certain architecture gameboject except certain menu type.
    /// </summary>
    /// <param name="transform">Transform.</param>
    /// <param name="menuType">Menu type.</param>
    public void HideMenu(Transform transform, ArchitectureMenuType menuType)
    {
        foreach (ArchitectureMenuType type in _idToMenu[transform.GetInstanceID()].Keys)
        {
            if (type == menuType)
            {
                _idToMenu[transform.GetInstanceID()][type].gameObject.SetActive(true);
                continue;
            }

            _idToMenu[transform.GetInstanceID()][type].gameObject.SetActive(false);
        }
    }
Ejemplo n.º 4
0
    /// <summary>
    /// Hides the menu except.
    /// </summary>
    /// <param name="transform">Transform.</param>
    /// <param name="menuType">Menu type.</param>
    void HideMenuExcept(Transform transform, ArchitectureMenuType menuType)
    {
        foreach (int id in _idToMenu.Keys)
        {
            foreach (ArchitectureMenuType type in _idToMenu[id].Keys)
            {
                if ((id == transform.GetInstanceID()) && (type == menuType))
                {
                    continue;
                }

                _idToMenu[id][type].gameObject.SetActive(false);
            }
        }
    }
Ejemplo n.º 5
0
    GameObject GetPrefab(ArchitectureMenuType menuType)
    {
        //find index
        int index = menuTypes.IndexOf(menuType);

        if (index >= 0)
        {
            return(menuPrefabs[index]);
        }
        else
        {
            Debug.LogError(gameObject.name + " cannot find prefab of menu type of " + menuType.ToString());
        }

        return(null);
    }
Ejemplo n.º 6
0
    /// <summary>
    /// Creates the menu.
    /// </summary>
    /// <returns>The menu.</returns>
    /// <param name="transform">Transform.</param>
    /// <param name="menuType">Menu type.</param>
    UIArchitectureMenu CreateMenu(Transform transform, ArchitectureMenuType menuType)
    {
        GameObject         go      = NGUITools.AddChild(gameObject, GetPrefab(menuType));
        UIArchitectureMenu newMenu = go.GetComponent <UIArchitectureMenu> ();

        //if dictionary of menu type is exist
        if (_idToMenu[transform.GetInstanceID()] != null)
        {
            _idToMenu[transform.GetInstanceID()].Add(menuType, newMenu);
        }
        else        //dictionary of menu type is not exist
        {
            Dictionary <ArchitectureMenuType, UIArchitectureMenu> newDic = new Dictionary <ArchitectureMenuType, UIArchitectureMenu>();

            newDic.Add(menuType, newMenu);

            _idToMenu[transform.GetInstanceID()] = newDic;
        }

        newMenu.SetTargetToFollow(transform);

        return(newMenu);
    }