Example #1
0
    /// <summary>
    /// 关闭二级子功能(图标);
    /// (默认通过该接口关闭的二级图标,无法通过InnerOpenChildFunction再次打开);
    /// </summary>
    /// <param name="id"></param>
    public void CloseChildFunc(int id)
    {
        MenuTableItem item = GetItem(id);

        if (item == null)
        {
            return;
        }

        // 不是子图标;
        if (item.parentid <= 0)
        {
            return;
        }

        addToIgnorList(id);

        int parentid = GetParentIdByChildId(id);

        if (mSubFunc.ContainsKey(parentid))
        {
            if (mSubFunc[parentid].Contains(id))
            {
                mSubFunc[parentid].Remove(id);
                removeMenuBtn(id);

                if (mSubFunc[parentid].Count == 0)
                {
                    //removeParentMenuBtn(parentid);
                    removeMenuBtn(parentid);
                }
            }
        }
    }
Example #2
0
    private void OnCheckFunction(EventBase evt)
    {
        PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>();

        if (module == null)
        {
            return;
        }
//         if (mLastLevel == module.GetLevel())
//             return;

        bool first = false;

        if (mLastLevel == -1)
        {
            first = true;
        }

        mLastLevel = module.GetLevel();

        IDictionaryEnumerator itr = DataManager.MenuTable.GetEnumerator();

        while (itr.MoveNext())
        {
            MenuTableItem item = itr.Value as MenuTableItem;

            if (IsFunctionUnlock(item.mId))
            {
                continue;
            }

            if (item.unlock <= 0 && item.questid <= 0)
            {
                if (IsParentOrChildType(item))
                {
                    continue;
                }

                else
                {
                    UnlockFunction(item.mId, first);
                }
            }
            else if (mLastLevel >= item.unlock && (item.questid < 0 || module.IsQuestFinish(item.questid)))
            {
                //二级按钮;
                if (item.menuOpType != (int)MenuOpType.MenuOpType_ParentUI && item.parentid > 0)
                {
                    InnerOpenChildFunc(item.mId);
                }
                else
                {
                    UnlockFunction(item.mId, first);
                }
            }
        }
    }
Example #3
0
    //void removeParentMenuBtn(int id)
    //{
    //    MenuTableItem item = GetItem(id);

    //    if (item == null)
    //        return;

    //    if (item.menuOpType != 2)
    //    {
    //        return;
    //    }

    //    removeMenuBtn(id);
    //}

    /// <summary>
    /// 判断该按钮时否是集合按钮或者是子按钮,这两类按钮必须通过代码调用才可以展示;
    /// </summary>
    /// <param name="resid"></param>
    /// <returns></returns>
    public static bool IsParentOrChildType(MenuTableItem item)
    {
        if (item == null)
        {
            return(false);
        }

        return(item.menuOpType == (uint)MenuOpType.MenuOpType_ParentUI || item.parentid > 0);
    }
Example #4
0
    private void OnStart()
    {
        if (!DataManager.MenuTable.ContainsKey(mCurFunctionID))
        {
            return;
        }
        MenuTableItem item = DataManager.MenuTable[mCurFunctionID] as MenuTableItem;

        UIAtlasHelper.SetSpriteImage(mIcon, item.icon);
        mLabel.text  = "新功能开启 : " + item.desc;
        mWaitingTime = 3000;
        mWaiting     = true;
    }
Example #5
0
    public List <int> GetChildIdsByParentId(int resid)
    {
        List <int>            res = new List <int>();
        IDictionaryEnumerator itr = DataManager.MenuTable.GetEnumerator();

        while (itr.MoveNext())
        {
            MenuTableItem item = itr.Value as MenuTableItem;

            if (item == null)
            {
                continue;
            }

            if (res.Contains(item.mId))
            {
                continue;
            }

            if (item.parentid != resid)
            {
                continue;
            }

            if (isChildUnlock(item.mId))
            {
                res.Add(item.mId);
            }
        }
//         foreach (int id in DataManager.MenuTable.Keys)
//         {
//             MenuTableItem item = DataManager.MenuTable[id] as MenuTableItem;
//
//             if (item == null)
//                 continue;
//
//             if(res.Contains(item.mId))
//                 continue;
//
//             if (item.parentid != resid)
//                 continue;
//
//             if (isChildUnlock(item.mId))
//                 res.Add(item.mId);
//         }

        return(res);
    }
Example #6
0
    /// <summary>
    /// 判断图标是否是根据等级解锁和任务解锁;
    ///
    /// </summary>
    /// <param name="resid"></param>
    /// <returns></returns>
    public static bool IsUnlockByLvOrQuest(int resid)
    {
        MenuTableItem item = GetItem(resid);

        if (item == null)
        {
            return(false);
        }

        if (item.unlock > 0 || item.questid > 0)
        {
            return(true);
        }

        return(false);
    }
Example #7
0
    public static int GetParentIdByChildId(int resid)
    {
        MenuTableItem item = GetItem(resid);

        if (item == null)
        {
            return(-1);
        }

        if (item.parentid <= 0)
        {
            Debug.LogError("不是子类型;");
            return(-1);
        }

        return(item.parentid);
    }
Example #8
0
    void AddMenu(int functionid)
    {
        //处理解锁
        if (functionid != -1 && DataManager.MenuTable.ContainsKey(functionid))
        {
            MenuTableItem item = DataManager.MenuTable[functionid] as MenuTableItem;

            if (item.type == (int)FunctionType.FunctionActivtiy)
            {
                AddBtn(item.uiName, mActiMenuRoot, mActiBtnDict, functionid, item.icon, new Quaternion(0, 180, 0, 0));
            }
            else if (item.type == (int)FunctionType.FunctionFunc)
            {
                AddBtn(item.uiName, mFuncMenuRoot, mFuncBtnDict, functionid, item.icon, new Quaternion(0, 0, 180, 0));
            }
        }
    }
Example #9
0
    /// <summary>
    /// 功能开启是否显示该功能图标;
    /// </summary>
    /// <param name="resId"></param>
    /// <returns></returns>
    public static bool IsShowOnFuncOpen(int resId)
    {
        MenuTableItem item = GetItem(resId);

        if (item == null)
        {
            Debug.LogError("不存在的menu id:" + resId);
            return(false);
        }

        // 是父图标或者子图标默认不显示;
        if (item.menuOpType == 2 || item.parentid > 0)
        {
            return(false);
        }

        return(true);
    }
Example #10
0
    public void SetShowInfo(int id)
    {
        AssisterItemTableItem item_res = DataManager.AssisterItemTable[id] as AssisterItemTableItem;

        if (item_res == null)
        {
            return;
        }

        UIAtlasHelper.SetSpriteImage(funcIcon, item_res.icon);
        funcName.text    = item_res.funcName;
        funcdesc.text    = item_res.desc;
        doBtn.CustomData = id;
        for (int i = 0; i < 5; i++)
        {
            starList[i].gameObject.SetActive(i < item_res.starNum);
        }
        gameObject.SetActive(true);

        //判断功能开启
        if (item_res.funcid != -1)
        {
            FunctionModule fmodule  = ModuleManager.Instance.FindModule <FunctionModule>();
            MenuTableItem  menu_res = DataManager.MenuTable[item_res.funcid] as MenuTableItem;
            if (menu_res == null)
            {
                return;
            }
            doBtn.isEnabled = fmodule.IsFunctionUnlock(menu_res.mId);
        }
        else
        {
            if (item_res.openui.Equals("stagelist"))
            {
                int       tempId;
                SceneType type = (SceneType)(Convert.ToInt32(item_res.openParam));
                doBtn.isEnabled = ModuleManager.Instance.FindModule <StageListModule>().FindLastStage(type, out tempId);
            }
            else
            {
                doBtn.isEnabled = true;
            }
        }
    }
Example #11
0
    void createSubMenuForm(List <int> ids, Vector3 pos)
    {
        subMenuForm.clear();

        foreach (int id in ids)
        {
            MenuTableItem item = FunctionModule.GetItem(id);

            if (item == null)
            {
                continue;
            }

            AddBtn(item.uiName, subMenuForm.grid.gameObject, subMenuForm.SubMenuDict, id, item.icon, new Quaternion());
        }

        subMenuForm.Reposition();

        subMenuForm.SetSubFormPosition(pos);
    }
Example #12
0
    public static int GetMenuIdByUIName(string uiname)
    {
        IDictionaryEnumerator itr = DataManager.MenuTable.GetEnumerator();

        while (itr.MoveNext())
        {
            MenuTableItem item = itr.Value as MenuTableItem;

            if (item == null)
            {
                continue;
            }

            if (string.Equals(item.uiName, uiname))
            {
                return(item.mId);
            }
        }

        return(-1);
    }
Example #13
0
    /// <summary>
    /// 通过逻辑控制关闭(CloseChildFunc)的字图标不会再次打开;
    /// </summary>
    /// <param name="id"></param>
    private void InnerOpenChildFunc(int id)
    {
        MenuTableItem item = GetItem(id);

        if (item == null)
        {
            return;
        }

        // 不是子图标;
        if (item.parentid <= 0)
        {
            return;
        }

        if (mIgnoreList.Contains(id))
        {
            return;
        }

        openChild(id);
    }
Example #14
0
    private void OnButtonClick()
    {
        mWaiting = false;

        if (mCurTitleID == -1)
        {
            OnEnd();
            return;
        }

        if (mFlying)
        {
            return;
        }

        //暂时去掉移动效果
        //OnButtonMoveEnd();
        MenuTableItem item = DataManager.MenuTable[0] as MenuTableItem;

        Vector3 targetPos = Vector3.zero;

        UICityForm cityUI = WindowManager.Instance.GetUI("city") as UICityForm;

        if (cityUI != null)
        {
            //targetPos = cityUI.GetNextMenuPos(item.type);
            targetPos = cityUI.GetMenuPos(0, (FunctionType)item.menuOpType);
        }

        TweenPosition tp = TweenPosition.Begin(mIcon.gameObject, 0.5f, targetPos);

        tp.worldSpace = true;
        tp.from       = mIcon.gameObject.transform.position;
        tp.to         = targetPos;
        EventDelegate.Add(tp.onFinished, OnButtonMoveEnd);
        tp.PlayForward();
        mFlying = true;
    }
Example #15
0
    /// <summary>
    /// 打开某个子功能(并显示父功能图标);
    /// 不是父子关系的图标默认功能开启就显示图标,不走这个逻辑;
    /// </summary>
    /// <param name="id"></param>
    public void OpenChildFunc(int id)
    {
        MenuTableItem item = GetItem(id);

        if (item == null)
        {
            return;
        }

        // 不是子图标;
        if (item.parentid <= 0)
        {
            return;
        }

        if (item.questid > 0 || item.unlock > 0)
        {
            Debug.LogError("这个是通过等级或者任务来开启的二级功能图标,无法通过代码调用打开,是不是策划表填错了id = " + id.ToString());
            return;
        }

        openChild(id);
    }
Example #16
0
    private void onFunctionClick(GameObject obj)
    {
        UIButton btn = obj.GetComponent <UIButton>();

        if (btn == null)
        {
            return;
        }
        int           functionid = (int)btn.CustomData;
        MenuTableItem item       = DataManager.MenuTable[functionid] as MenuTableItem;

        if (item == null)
        {
            return;
        }
        if (item.soundid != -1)
        {
            SoundManager.Instance.Play(item.soundid);
        }

        if (item.menuOpType == (uint)MenuOpType.MenuOpType_OpenUI)
        {
            closeSubMenuForm();

            if (string.IsNullOrEmpty(mLastOpenName) ||
                (!string.IsNullOrEmpty(mLastOpenName) && !WindowManager.Instance.IsOpen(mLastOpenName)))
            {
                WindowManager.Instance.OpenUI(item.param);
                mLastOpenName = item.param;
            }
        }
        else if (item.menuOpType == (uint)MenuOpType.MenuOpType_Scene)
        {
            closeSubMenuForm();

            string[] str = item.param.Split(new char[] { '|' });
            if (str.Length != 2)
            {
                return;
            }
            SceneManager.Instance.RequestEnterScene(int.Parse(str[1]));
        }
        else if (item.menuOpType == (uint)MenuOpType.MenuOpType_ParentUI)
        {
            FunctionModule fm = ModuleManager.Instance.FindModule <FunctionModule>();
            if (fm == null)
            {
                Debug.LogError("fuctionmodule not found error");
                return;
            }


            List <int> ids = fm.GetChildIdsByParentId(functionid);

            if (ids == null || ids.Count <= 0)
            {
                return;
            }

            if (functionid != mLastOpenSubId)
            {
                createSubMenuForm(ids, UICamera.currentCamera.WorldToScreenPoint(obj.transform.position));
                mLastOpenSubId = functionid;
            }

            openOrCloseSubMenuForm();
        }
    }