Exemplo n.º 1
0
    //如果有新武学解锁,刷新当前列表
    private void RefreshList(int unLockMartialID)
    {
        int            newMartialLevel = PlayerMartialDataManager.Instance.GetMartialLevelByID(unLockMartialID);
        SSendWuXueData newMartialData  = new SSendWuXueData()
        {
            dwWuXueID = unLockMartialID, byWuXueLevel = (byte)newMartialLevel
        };

        MyMartialDataList.Add(newMartialData);
        int lineCount = Mathf.CeilToInt(MyMartialDataList.Count / 4);           //行数

        if (MyMartialDataList.Count % 4 == 0)
        {
            lineCount -= 1;
        }

        //新添加的武学下标
        int index = (MyMartialDataList.Count) % 4 == 0 ? 3 : ((MyMartialDataList.Count) % 4 - 1);

        //如果新行数大于旧的行数,添加新的一行
        if (lineCount <= PrevLineCount)
        {
            MartialItemAreaList[lineCount].AddItem(lineCount, index, this);
        }
        else
        {
            GameObject itemLine = NGUITools.AddChild(Grid.gameObject, MartialItemAreaPrefab);
            QinglongMartialItemArea itemArea = itemLine.GetComponent <QinglongMartialItemArea>();
            itemArea.AddItem(lineCount, index, this);
            MartialItemAreaList.Add(itemArea);
            Grid.repositionNow = true;
            PrevLineCount     += 1;
        }
    }
Exemplo n.º 2
0
    /// <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;
    }