コード例 #1
0
        /// <summary>
        /// 给排行榜添加一个元素
        /// </summary>
        /// <param name="rankName">Rank name.</param>
        /// <param name="name">Name.</param>
        /// <param name="value">Value.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public void AddRankNode(string rankName, string name, object value)
        {
            L_RankData rankData = RootData.FindChild(rankName);

            if (rankData == null)
            {
                Debug.LogWarning("排行榜[" + rankName + "]尚未创建!"); return;
            }

            if (rankData.GetValue <string>() != value.GetType().ToString())
            {
                Debug.LogWarning("排行榜[" + rankName + "]数据类型[" + rankData.Value + "],与添加的数据[" + name + "]类型[" + value.GetType() + "]不一致!");
                return;
            }

            L_RankData data = rankData.FindChild(name);

            if (data == null)
            {
                data = rankData.CreatChildData(name, value);
            }
            else
            {
                data.Value = value;
            }
        }
コード例 #2
0
        // 获得数据节点
        public IDataNode GetRankData(string rankname, bool isOrder = true)
        {
            L_RankData rankData = RootData.FindChild(rankname);

            OrderRank(rankData, isOrder); // 排序
            return((IDataNode)rankData);
        }
コード例 #3
0
        /// <summary>
        /// 存储数据
        /// </summary>
        /// <param name="rankname">排行榜名.</param>
        /// <param name="isOrder">If set to <c>true</c> 正序/逆序.</param>
        public void SaveTheRank(string rankname, bool isOrder = true)
        {
            L_RankData rankData = RootData.FindChild(rankname);

            OrderRank(rankData, isOrder); // 排序
            if (rankData != null)
            {
                XmlTool.SaveData <L_RankData>(rankData, FilePath + rankname);
            }
        }
コード例 #4
0
        /// <summary>
        /// 创建一个排行榜
        /// </summary>
        /// <param name="name">排行榜名字</param>
        /// <param name="value">排行榜的内容</param>
        /// <typeparam name="T">排行榜的类型</typeparam>
        public void CreateRank <T>(string rankname)
        {
            if (typeof(T) != typeof(int) && typeof(T) != typeof(float))
            {
                Debug.LogWarning("排行榜只支持Int 和 float 两种数据类型!"); return;
            }

            if (RootData.Exist(rankname))
            {
                Debug.LogWarning("当前排行榜已经存在!"); return;
            }
            L_RankData rankData = RootData.CreatChildData(rankname, typeof(T).ToString());
        }
コード例 #5
0
        /// <summary>
        /// 加载排行榜(覆盖当前排行榜)
        /// </summary>
        /// <param name="rankname">Rankname.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public void LoadRank(string rankname)
        {
            // 覆盖
            L_RankData rankData = RootData.FindChild(rankname);

            if (rankData == null)
            {
                rankData = RootData.CreatChildData(rankname, "none");
            }
            else
            {
                rankData.ClearChildren();
            }
            XmlTool.LoadDataWihtPath <L_RankData>(ref rankData, FilePath + rankname);
        }
コード例 #6
0
        /// <summary>
        /// 排序
        /// </summary>
        /// <param name="rootData">要排序的数据</param>
        /// <param name="isOrder">If set to <c>true</c> 正序/逆序 </param>
        void OrderRank(L_RankData rootData, bool isOrder = true)
        {
            List <L_RankData> datas = rootData.Children;

            for (int j = 0; j < datas.Count - 1; j++)
            {
                for (int i = 0; i < datas.Count - 1; i++)
                {
                    if (isOrder ?
                        datas[i].GetValue <int>() < datas[i + 1].GetValue <int>() :
                        datas[i].GetValue <int>() > datas[i + 1].GetValue <int>())
                    {
                        object v = datas[i].Value;
                        datas[i].Value     = datas[i + 1].Value;
                        datas[i + 1].Value = v;
                        string k = datas[i].Key;
                        datas[i].Key     = datas[i + 1].Key;
                        datas[i + 1].Key = k;
                    }
                }
            }
        }