/// <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); } } } }
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); } } } }
//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); }
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; }
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); }
/// <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); }
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); }
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)); } } }
/// <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); }
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; } } }
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); }
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); }
/// <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); }
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; }
/// <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); }
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(); } }