// 点击关卡项目 private void OnStageItemClicked(GameObject target) { StageListItemUI item = null; List <StageListItemUI> items = mModule.GetStageUIList(); foreach (StageListItemUI sli in items) { if (sli == null) { continue; } if (GameObject.ReferenceEquals(target, sli.gameObject)) { item = sli; break; } } if (item == null) { return; } OnStageUIClicked(item); UpdateSelectedItem(); }
// 清空 public void ClearStageListItem() { mSelectedUI = null; mSelectedLevel = 0; mSelectedStageItem = null; mStageItemList = new List <StageListItemUI>(); }
// 添加 public void AddStageListItem(StageListItemUI ui) { if (mStageItemList == null) { mStageItemList = new List <StageListItemUI>(); } mStageItemList.Add(ui); }
// 点击关卡项目 private void OnStageUIClicked(StageListItemUI ui) { if (ui == null) { return; } foreach (StageListItemUI uiitem in mModule.GetStageUIList()) { uiitem.SetSelected(false); } ui.SetSelected(true); mModule.SelectedUI = ui; }
// 更新关卡列表 private void UpdateItemList() { SortedList <int, Scene_StageListTableItem> sortedlist = new SortedList <int, Scene_StageListTableItem>(); IDictionaryEnumerator itr = DataManager.Scene_StageListTable.GetEnumerator(); while (itr.MoveNext()) { Scene_StageListTableItem list = itr.Value as Scene_StageListTableItem; sortedlist.Add(list.mId, list); } // foreach(Scene_StageListTableItem list in DataManager.Scene_StageListTable.Values) // { // sortedlist.Add(list.mId, list); // } PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>(); if (module == null) { return; } int itemidx = 0; foreach (Scene_StageListTableItem list in sortedlist.Values) { if (list.mZoneId != mModule.ZoneId) { continue; } GameObject obj = WindowManager.Instance.CloneGameObject(stagelistItemPrefab); if (obj == null) { continue; } obj.SetActive(true); obj.name = "StageListItemUI" + list.mId.ToString(); obj.transform.parent = mGrid.transform; obj.transform.localScale = Vector3.one; StageListItemUI itemui = new StageListItemUI(obj); if (itemui == null) { continue; } itemui.Idx = itemidx++; itemui.AddListener(); mModule.AddStageListItem(itemui); itemui.SetData(list); UIEventListener.Get(obj).onClick = OnStageItemClicked; StageData data = module.GetStageData(list.mNromalStageId); itemui.SetEnterTimes((int)module.GetStageDailyTimes(list.mNromalStageId)); //if (mModule.GetStageListCount() > 1 && data == null) //{ // itemui.SetLocked(true); // itemui.UpdateUI(); // break; //} ///活动本儿只显示一个可进入的关卡; if (mModule.IsActiveStage()) { if (data == null) { itemui.SetLocked(true); itemui.UpdateUI(); break; } if (mModule.GetStageListCount() > 1) { mModule.RemoveStageListFirstItem(); } itemui.SetLocked(false); itemui.UpdateUI(); } else { if (mModule.GetStageListCount() > 1 && data == null) { itemui.SetLocked(true); itemui.UpdateUI(); break; } itemui.SetLocked(false); itemui.UpdateUI(); } } mGrid.repositionNow = true; }
// 更新选中的关卡 private void UpdateSelectedItem() { if (mModule.SelectedUI == null) { StageListItemUI ui = null; int selectedLevel = 0; if (mModule.SelectedStageRes != null) { List <StageListItemUI> list = mModule.GetStageUIList(); if (list == null) { return; } foreach (StageListItemUI item in list) { Scene_StageListTableItem listres = item.GetData(); if (!item.GetLocked()) { if (listres.mNromalStageId == mModule.SelectedStageRes.resID && mPlayerModule.IsStageUnlock(listres.mNromalStageId)) { ui = item; selectedLevel = 0; break; } else if (listres.mHardStageId == mModule.SelectedStageRes.resID && mPlayerModule.IsStageUnlock(listres.mHardStageId)) { ui = item; selectedLevel = 1; break; } else if (listres.mSeriousStageId == mModule.SelectedStageRes.resID && mPlayerModule.IsStageUnlock(listres.mSeriousStageId)) { ui = item; selectedLevel = 2; break; } } } } if (ui == null) { ui = mModule.GetHeadStageUI(); mStagePanel.transform.localPosition = new Vector3(mStagePanel.transform.localPosition.x, 92.0f, mStagePanel.transform.localPosition.z); mStagePanel.clipOffset = new Vector2(mStagePanel.clipOffset.x, 19.0f); } else { int curline = ui.Idx / 3; mStagePanel.transform.localPosition = new Vector3(mStagePanel.transform.localPosition.x, 92.0f + (curline * 182.0f), mStagePanel.transform.localPosition.z); mStagePanel.clipOffset = new Vector2(mStagePanel.clipOffset.x, 19.0f - (curline * 182.0f)); } OnStageUIClicked(ui); mModule.SelectedLevel = selectedLevel; } Dirty = true; }