Esempio n. 1
0
        public CurrentLobbyStats GetCurrentStats()
        {
            var ret = new CurrentLobbyStats();

            foreach (var u in client.ExistingUsers.Values)
            {
                if (!u.IsBot && !u.IsInGame && !u.IsInBattleRoom)
                {
                    ret.UsersIdle++;
                }
            }

            foreach (var b in client.ExistingBattles.Values)
            {
                if (!GlobalConst.IsZkMod(b.ModName))
                {
                    continue;
                }
                foreach (var u in b.Users.Select(x => x.LobbyUser))
                {
                    if (u.IsBot)
                    {
                        continue;
                    }
                    if (u.IsInGame)
                    {
                        ret.UsersFighting++;
                    }
                    else if (u.IsInBattleRoom)
                    {
                        ret.UsersWaiting++;
                    }
                }
                if (b.IsInGame)
                {
                    ret.BattlesRunning++;
                }
                else
                {
                    ret.BattlesWaiting++;
                }
            }
            return(ret);
        }
        static CurrentLobbyStats GetCurrentLobbyStats()
        {
            var ret = new CurrentLobbyStats();

            if (Global.Server != null)
            {
                ret.UsersOnline = Global.Server.ConnectedUsers.Count;

                foreach (var b in Global.Server.Battles.Values)
                {
                    if (b.IsInGame)
                    {
                        ret.BattlesRunning++;
                        ret.UsersFighting += b.NonSpectatorCount + b.SpectatorCount;
                    }
                }

                ret.UsersDiscord = Global.Server.GetDiscordUserCount();
            }

            return(ret);
        }
        static CurrentLobbyStats GetCurrentLobbyStats()
        {
            var ret = new CurrentLobbyStats();

            ret.UsersIdle = Global.Server.ConnectedUsers.Values.Count(x => !x.User.IsBot && !x.User.IsInGame && !x.User.IsInBattleRoom);

            foreach (var b in Global.Server.Battles.Values)
            {
                foreach (var u in b.Users.Values.Select(x => x.LobbyUser))
                {
                    if (u.IsBot)
                    {
                        continue;
                    }
                    if (u.IsInGame)
                    {
                        ret.UsersFighting++;
                    }
                    else if (u.IsInBattleRoom)
                    {
                        ret.UsersWaiting++;
                    }
                }
                if (b.IsInGame)
                {
                    ret.BattlesRunning++;
                }
                else
                {
                    ret.BattlesWaiting++;
                }
            }

            var lastMonth = DateTime.Now.AddDays(-31);

            ret.UsersLastMonth = new ZkDataContext().SpringBattlePlayers.Where(x => x.SpringBattle.StartTime > lastMonth).GroupBy(x => x.AccountID).Count();
            return(ret);
        }