Exemplo n.º 1
0
    private void OnDestroy()
    {
        onPlayerConnected.RemoveAllListeners();
        onPlayerConnected = null;

        onPlayerDisconected.RemoveAllListeners();
        onPlayerDisconected = null;

        onPlayerOnlineChanged.RemoveAllListeners();
        onPlayerOnlineChanged = null;
    }
Exemplo n.º 2
0
        public JsonResult AdminGetPlayers(string key)
        {
            var model = new PlayersOnline <PlayerOnlineAdmin>();

            if (!isValidKey(key, true))
            {
                logger.LogWarning("Illegal access attempt with key: " + key, ", ip: " + HttpContext.Request.Host);
                model.Error = Ressources.ApiResource.UnauthorizedAccess;
                return(Json(model));
            }

            model.Timestamp = CacheManager.Instance.LastUpdate.ToString("yyyy-MM-ddTHH:mm:ss");
            model.Players   = new List <PlayerOnlineAdmin>();
            var players = context.ServerSessions.Include(c => c.ServerSessionsDataConn).Where(c => !c.SessionEnd.HasValue).ToList();
            var systems = context.Systems.ToList();
            var regions = context.Regions.ToList();

            foreach (var item in players)
            {
                var player = new PlayerOnlineAdmin();
                player.Name = item.PlayerName;

                //Last location data
                var last_system = item.ServerSessionsDataConn.LastOrDefault();
                if (last_system != null)
                {
                    var system = systems.SingleOrDefault(c => c.Nickname == last_system.Location.ToUpper()) ?? null;

                    //This is the always expected scenario
                    player.System = system != null ? system.Name : "Unknown";
                    player.Region = system != null?regions.SingleOrDefault(c => c.Id == system.RegionId)?.Name ?? "Unknown" : "Unknown";

                    player.Ping = last_system.Ping;
                }
                else
                {
                    //But better be safe than sorry
                    player.Ping   = 0;
                    player.System = "ERROR";
                    player.Region = "ERROR";
                }

                player.ID   = item.PlayerId;
                player.Ship = item.PlayerLastShip;
                player.IP   = item.SessionIp;

                model.Players.Add(player);
            }

            return(Json(JsonConvert.SerializeObject(model)));
        }
Exemplo n.º 3
0
 public StructPlayersOnline(PlayersOnline playersOnline)
 {
     TypeName = playersOnline.TypeName;
 }
Exemplo n.º 4
0
        public JsonResult GetPlayers(string key)
        {
            var model = new PlayersOnline <PlayerOnlineSingle>();

            if (!isValidKey(key))
            {
                logger.LogWarning("Illegal access attempt with key: " + key, ", ip: " + HttpContext.Request.Host);
                model.Error = Ressources.ApiResource.UnauthorizedAccess;
                return(Json(model));
            }

            CacheManager cm = CacheManager.Instance;

            //Check if we have to renew the cache
            var now = DateTime.UtcNow;

            if (cm.LastPlayerOnlineCache.AddSeconds(cm.LastPlayerOnlineCacheDuration) < now)
            {
                model.Timestamp = cm.LastUpdate.ToString("yyyy-MM-ddTHH:mm:ss");
                model.Players   = new List <PlayerOnlineSingle>();
                var players = context.ServerSessions.Include(c => c.ServerSessionsDataConn).Where(c => !c.SessionEnd.HasValue).ToList();
                var systems = context.Systems.ToList();
                var regions = context.Regions.ToList();
                //We can add the factions later

                foreach (var item in players)
                {
                    var player = new PlayerOnlineSingle();
                    player.Name = item.PlayerName;

                    TimeSpan span = now.Subtract(item.SessionStart);
                    if (span.Hours > 0)
                    {
                        player.Time = span.Hours.ToString() + "h" + (span.Minutes < 10 ? "0" : "") + span.Minutes.ToString();
                    }
                    else
                    {
                        player.Time = span.Minutes.ToString() + "m";
                    }

                    //Last location data
                    var last_system = item.ServerSessionsDataConn.OrderByDescending(c => c.Stamp).FirstOrDefault();
                    if (last_system != null)
                    {
                        var system = systems.SingleOrDefault(c => c.Nickname == last_system.Location.ToUpper()) ?? null;

                        //This is the always expected scenario
                        player.System = system != null ? system.Name : "Unknown";
                        player.Region = system != null?regions.SingleOrDefault(c => c.Id == system.RegionId)?.Name ?? "Unknown" : "Unknown";

                        player.Ping = last_system.Ping;
                    }
                    else
                    {
                        //But better be safe than sorry
                        player.Ping   = 0;
                        player.System = "ERROR";
                        player.Region = "ERROR";
                    }

                    model.Players.Add(player);
                }

                cm.PlayerOnlineCache     = JsonConvert.SerializeObject(model);
                cm.LastPlayerOnlineCache = DateTime.UtcNow;
            }

            return(Json(cm.PlayerOnlineCache));
        }