private void OnDestroy() { onPlayerConnected.RemoveAllListeners(); onPlayerConnected = null; onPlayerDisconected.RemoveAllListeners(); onPlayerDisconected = null; onPlayerOnlineChanged.RemoveAllListeners(); onPlayerOnlineChanged = null; }
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))); }
public StructPlayersOnline(PlayersOnline playersOnline) { TypeName = playersOnline.TypeName; }
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)); }