Beispiel #1
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else
     {
         Destroy(this.gameObject);
     }
     DontDestroyOnLoad(this.gameObject);
 }
Beispiel #2
0
        public async Task <GlobalLeaderboard> GetGlobalLeaderboard()
        {
            try
            {
                using (var soraContext = new SoraContext())
                {
                    var users  = soraContext.Users.ToList();
                    var sorted = users.OrderByDescending(x => x.Exp).ToList();
                    var resp   = new GlobalLeaderboard()
                    {
                        ShardId = _client.ShardId
                    };
                    for (int i = 0; i < (sorted.Count > 150 ? 150 : sorted.Count); i++)
                    {
                        var   guser = sorted[i];
                        IUser user  = _client.GetUser(guser.UserId) ?? await _restClient.GetUserAsync(guser.UserId) as IUser;

                        if (user == null)
                        {
                            continue;
                        }
                        resp.Ranks.Add(new GuildRank()
                        {
                            Rank      = i + 1,
                            AvatarUrl = user.GetAvatarUrl() ?? "https://i.imgur.com/PvYs6dc.png",
                            Discrim   = user.Discriminator,
                            Exp       = (int)guser.Exp,
                            Name      = user.Username,
                            NextExp   = ExpService.CalculateNeededExp(ExpService.CalculateLevel(guser.Exp) + 1),
                            UserId    = user.Id + ""
                        });
                        if (resp.Ranks.Count >= 100)
                        {
                            break;
                        }
                    }
                    return(resp);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            return(null);
        }
        public async Task <ActionResult <GlobalLeaderboard> > GetGlobalLeaderboard()
        {
            var topUsers = await _profileRepo.GetTop150Users().ConfigureAwait(false);

            if (!topUsers)
            {
                return(NotFound("Could not fetch Leaderboard"));
            }

            var leaderboard = new GlobalLeaderboard()
            {
                ShardId = GlobalConstants.ShardId
            };
            var users = topUsers.Some();

            for (var i = 0; i < users.Count; i++)
            {
                var dbUser = users[i];
                var user   = _userService.Get(dbUser.Id);
                if (!user)
                {
                    continue;
                }
                int rank = i + 1;
                leaderboard.Ranks.Add(user.MatchSome((u) => new GuildRank()
                {
                    Rank      = rank,
                    AvatarUrl = u.GetAvatarUrl() ?? u.GetDefaultAvatarUrl(),
                    Discrim   = u.Discriminator,
                    Exp       = dbUser.Exp,
                    Name      = u.Username,
                    UserId    = u.Id.ToString(),
                }));
                if (leaderboard.Ranks.Count >= 100)
                {
                    break;
                }
            }

            return(Ok(leaderboard));
        }
 private void Start()
 {
     GlobalLeaderboard = GetComponent <GlobalLeaderboard>();
     LoadPersonalBest();
     LoginToPlayFab();
 }