예제 #1
0
 public override object GetStatsObject(Spectator spectator)
 {
     return new
     {
         Name = spectator.Name,
         LoginToken = spectator.GetStats().LoginToken,
         Connected = !spectator.IsDisconnected,
     };
 }
예제 #2
0
 private void SpectatorRemovedHandler(Spectator spectator)
 {
     if (NetworkMode != NetworkMode.Server) return;
     Stats.Send(new { RemovePlayer = spectator.GetStats().LoginToken, Name = spectator.Name });
     UpdateGameServerInfoToManagementServer();
     NetworkEngine.SendToGameClients(new SpectatorOrTeamDeletionMessage { SpectatorOrTeamID = spectator.ID });
 }
예제 #3
0
 private void SpectatorAddedHandler(Spectator spectator)
 {
     if (NetworkMode == NetworkMode.Server) UpdateGameServerInfoToManagementServer();
     spectator.ArenaStatistics.Rating = () => spectator.GetStats().Rating;
     spectator.ResetForArena();
     if (NetworkMode != NetworkMode.Server || spectator.IsLocal) return;
     var player = spectator as Player;
     if (player == null) return;
     player.IsAllowedToCreateShip = () =>
     {
         if (!player.IsRemote) return false;
         var arenaID = NetworkEngine.GetGameClientConnection(player.ConnectionID).ConnectionStatus.IsRequestingSpawnForArenaID;
         if (!arenaID.HasValue || DataEngine.Arena == null) return false;
         return arenaID.Value == DataEngine.Arena.ID;
     };
     player.Messages.NewChatMessage += mess => SendPlayerMessageToRemoteSpectator(mess, player);
     player.Messages.NewCombatLogMessage += mess => SendPlayerMessageToRemoteSpectator(mess, player);
 }
예제 #4
0
 public void ReconnectRemoteSpectatorOnServer(Spectator newSpectator, Spectator oldSpectator)
 {
     Log.Write("Reconnecting spectator {0}", oldSpectator.Name);
     oldSpectator.ReconnectOnServer(newSpectator);
     Stats.Send(new { AddPlayer = oldSpectator.GetStats().LoginToken, Name = oldSpectator.Name });
 }
예제 #5
0
 public void AddRemoteSpectator(Spectator newSpectator)
 {
     Log.Write("Adding spectator {0}", newSpectator.Name);
     DataEngine.Spectators.Add(newSpectator);
     Stats.Send(new { AddPlayer = newSpectator.GetStats().LoginToken, Name = newSpectator.Name });
 }
예제 #6
0
 private void PilotDataRequestDone(IAsyncResult result, Spectator spectator, string requestName)
 {
     RequestDone(result, requestName, responseString =>
     {
         var response = JObject.Parse(responseString);
         if (response["error"] != null) Log.Write("Error in {0} query: {1}", requestName, response["error"]);
         spectator.GetStats().Update(response);
     });
 }
예제 #7
0
 public void UpdatePilotRanking(Spectator spectator)
 {
     if (spectator.GetStats().PilotId == null) return;
     var requestPath = string.Format("pilot/id/{0}/rankings", spectator.GetStats().PilotId);
     RequestFromStats(response => PilotDataRequestDone(response, spectator, "pilot ranking"), requestPath);
 }
예제 #8
0
 public override string GetStatsString(Spectator spectator)
 {
     return spectator.GetStats().LoginToken;
 }