示例#1
0
 public Leaderboard(LeaderboardQuery flag, LeaderboardSort sort, bool allowEmptyValues = false, int pageSize = 10)
 {
     Flag             = flag;
     Sort             = sort;
     AllowEmptyValues = allowEmptyValues;
     PageSize         = pageSize;
 }
示例#2
0
        public async Task GetLeaderboardAsync(string statId, LeaderboardSort sort = LeaderboardSort.Most, int page = 1)
        {
            var    board  = new Leaderboard(statId, sort);
            string result = board.Write(Context.Account, Context.Data.Users.Values.Values, --page);

            await Context.Channel.SendMessageAsync(result);
        }
示例#3
0
 public Leaderboard(string statId, LeaderboardSort sort, bool allowEmptyValues = false, int pageSize = 10)
 {
     Flag             = LeaderboardQuery.Custom;
     StatId           = statId;
     Sort             = sort;
     AllowEmptyValues = allowEmptyValues;
     PageSize         = pageSize;
 }
        /// <summary>
        /// Gets a leaderboard by name, it will create it if it's not yet created.
        /// Leaderboards created with this function will not automatically show up in the Steam Community.
        /// You must manually set the Community Name field in the App Admin panel of the Steamworks website.
        /// As such it's generally recommended to prefer creating the leaderboards in the App Admin panel on
        /// the Steamworks website and using FindLeaderboard unless you're expected to have a large amount of
        /// dynamically created leaderboards.
        /// </summary>
        public static async Task <Leaderboard?> FindOrCreateLeaderboard(string name, LeaderboardSort sort, LeaderboardDisplay display)
        {
            var result = await Internal.FindOrCreateLeaderboard(name, sort, display);

            if (!result.HasValue || result.Value.LeaderboardFound == 0)
            {
                return(null);
            }

            return(new Leaderboard {
                Id = result.Value.SteamLeaderboard
            });
        }
        internal CallResult <LeaderboardFindResult_t> FindOrCreateLeaderboard([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8StringToNative))] string pchLeaderboardName, LeaderboardSort eLeaderboardSortMethod, LeaderboardDisplay eLeaderboardDisplayType)
        {
            var returnValue = _FindOrCreateLeaderboard(Self, pchLeaderboardName, eLeaderboardSortMethod, eLeaderboardDisplayType);

            return(new CallResult <LeaderboardFindResult_t>(returnValue));
        }
 private static extern SteamAPICall_t _FindOrCreateLeaderboard(IntPtr self, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8StringToNative))] string pchLeaderboardName, LeaderboardSort eLeaderboardSortMethod, LeaderboardDisplay eLeaderboardDisplayType);
示例#7
0
        public async Task GetLeaderboardAsync(LeaderboardQuery flag = LeaderboardQuery.Default, LeaderboardSort sort = LeaderboardSort.Most, int page = 1)
        {
            if (flag == LeaderboardQuery.Custom)
            {
                flag = LeaderboardQuery.Default;
            }

            var    board  = new Leaderboard(flag, sort);
            string result = board.Write(Context.Account, Context.Data.Users.Values.Values, --page);

            await Context.Channel.SendMessageAsync(result);
        }
 internal async Task <LeaderboardFindResult_t?> FindOrCreateLeaderboard([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8StringToNative))] string pchLeaderboardName, LeaderboardSort eLeaderboardSortMethod, LeaderboardDisplay eLeaderboardDisplayType)
 {
     return(await LeaderboardFindResult_t.GetResultAsync(_FindOrCreateLeaderboard( Self, pchLeaderboardName, eLeaderboardSortMethod, eLeaderboardDisplayType )));
 }
示例#9
0
        internal Leaderboard(IDictionary <string, object> dict)
        {
            foreach (string key in dict.Keys)
            {
                object value;
                dict.TryGetValue(key, out value);
                if (value == null)
                {
                    continue;
                }
                string valueString = value.ToString();

                switch (key)
                {
                case "leaderboard_id":
                    LeaderboardId = valueString;
                    break;

                case "name":
                    Name = valueString;
                    break;

                case "public_id":
                    PublicId = valueString;
                    break;

                case "next_offset_key":
                    OffsetKey = valueString;
                    break;

                case "sort":
                    switch (valueString)
                    {
                    case "asc":
                        Sort = LeaderboardSort.ASC;
                        break;

                    case "desc":
                        Sort = LeaderboardSort.DESC;
                        break;
                    }
                    break;

                case "type":
                    Type = LeaderboardType.RANK;
                    break;

                case "display_hint":
                    DisplayHint = valueString;
                    break;

                case "tags":
                    List <string> tagList  = new List <string> ();
                    JsonArray     tagArray = (JsonArray)value;
                    foreach (string entryObject in tagArray)
                    {
                        tagList.Add(entryObject);
                    }
                    Tags = tagList.ToArray();
                    break;

                case "score_limit":
                    ScoreLimit = (long)value;
                    break;

                case "created_at":
                    CreatedAt = (long)value;
                    break;

                case "leaderboard_reset":
                    LeaderboardReset = new Reset((IDictionary <string, object>)value);
                    break;

                case "limit":
                    Limit = (long)value;
                    break;

                case "offset":
                    Offset = (long)value;
                    break;

                case "total":
                    Total = (long)value;
                    break;

                case "entries":
                    List <Leaderboard.Entry> resultList = new List <Leaderboard.Entry> ();
                    JsonArray jsonArray = (JsonArray)value;
                    foreach (object entryObject in jsonArray)
                    {
                        Leaderboard.Entry entry = new Leaderboard.Entry((IDictionary <string, object>)entryObject);
                        resultList.Add(entry);
                    }
                    Entries = resultList.ToArray();
                    break;
                }
            }
        }
 internal async Task <LeaderboardFindResult_t?> FindOrCreateLeaderboard(string pchLeaderboardName, LeaderboardSort eLeaderboardSortMethod, LeaderboardDisplay eLeaderboardDisplayType)
 {
     return(await LeaderboardFindResult_t.GetResultAsync(_FindOrCreateLeaderboard( Self, pchLeaderboardName, eLeaderboardSortMethod, eLeaderboardDisplayType )));
 }
        public static async Task <Leaderboard?> FindOrCreateLeaderboardAsync(string name, LeaderboardSort sort, LeaderboardDisplay display)
        {
            Leaderboard?            nullable;
            bool                    flag;
            LeaderboardFindResult_t?nullable1 = await SteamUserStats.Internal.FindOrCreateLeaderboard(name, sort, display);

            LeaderboardFindResult_t?nullable2 = nullable1;

            nullable1 = null;
            flag      = (!nullable2.HasValue ? true : nullable2.Value.LeaderboardFound == 0);
            if (!flag)
            {
                nullable = new Leaderboard?(new Leaderboard()
                {
                    Id = nullable2.Value.SteamLeaderboard
                });
            }
            else
            {
                nullable = null;
            }
            return(nullable);
        }