//初始化显示 public void show(MartialType type) { //更新三个按钮状态 //更新武学列表 OnShowMartialTypeButtonClick(MartialType.XINFA); CurrentShowType = MartialType.XINFA; }
/// <summary> /// 武学类型按钮点击回调 /// </summary> /// <param name="arg">Argument.</param> void OnShowMartialTypeButtonClick(object arg) { //SoundManager.Instance.PlaySoundEffect("Sound_Button_PlayerMartialArts_Change"); MartialType btnType = (MartialType)arg; if (CurrentShowType == btnType) //重复点击同一个类型按钮,不刷新 { return; } Background.GetComponent <SpriteSwith>().ChangeSprite((int)btnType); XinfaButton.spriteSwithList.ApplyAllItem(P => P.ChangeSprite(btnType == MartialType.XINFA?2:1)); NeigongButton.spriteSwithList.ApplyAllItem(P => P.ChangeSprite(btnType == MartialType.NEIGONG?2:1)); DanYaoButton.spriteSwithList.ApplyAllItem(P => P.ChangeSprite(btnType == MartialType.DANYAO?2:1)); ShowMartialList(btnType); }
/// <summary> /// 根据武学类型获取相应列表 /// </summary> /// <returns>The martial list by type.</returns> /// <param name="martialType">Martial type.</param> public List <SSendWuXueData> GetMartialListByType(MartialType martialType) { List <SSendWuXueData> tempWuXueData = new List <SSendWuXueData>(); MartialDataList.ApplyAllItem(p => { MartialIndex martialIndex = new MartialIndex() { MartialArtsID = p.dwWuXueID, MartialArtsLevel = (int)p.byWuXueLevel }; PlayerMartialArtsData martialArtsData = PlayerDataManager.Instance.GetPlayerMartialArtConfigData(martialIndex); if (martialArtsData.MartialArtsType == (byte)martialType) { tempWuXueData.Add(p); } }); return(tempWuXueData); }
/// <summary> /// 根据武学类型显示武学列表. /// </summary> /// <param name="martialType">Martial type.</param> void ShowMartialList(MartialType martialType) { //初始化列表里的每个元素 //在Grid里生成所有的武学prefab(MartialItem),并给每个prefab添加点击事件回调 CurrentShowType = martialType; //获取当前要显示的所有武学信息 MyMartialDataList = PlayerMartialDataManager.Instance.GetMartialListByType(martialType); //武学排序 MyMartialDataList.Sort((left, right) => { if (left.dwWuXueID < right.dwWuXueID) { return(-1); } else if (left.dwWuXueID == right.dwWuXueID) { return(0); } else { return(1); } }); MartialItemAreaList.ApplyAllItem(p => Destroy(p.gameObject)); MartialItemAreaList.Clear(); int lineCount = Mathf.CeilToInt(MyMartialDataList.Count / 4); //行数 lineCount = lineCount <= 1 ? 2 : lineCount; //至少两行 PrevLineCount = lineCount; for (int i = 0; i < lineCount; i++) { GameObject itemLine = NGUITools.AddChild(Grid.gameObject, MartialItemAreaPrefab); QinglongMartialItemArea itemArea = itemLine.GetComponent <QinglongMartialItemArea>(); int perLineCount; //每行显示多少个图标 int remainCount; //剩余的武学图标 if (MyMartialDataList.Count <= 4) { perLineCount = (lineCount - 1 - i) * MyMartialDataList.Count; } else { remainCount = MyMartialDataList.Count - (i * 4); if (remainCount >= 4) { perLineCount = 4; } else { perLineCount = remainCount % 4; } } MartialItemAreaList.Add(itemArea); itemArea.Init(i, perLineCount, this); itemLine.transform.localPosition = Vector3.zero; } Grid.repositionNow = true; }