示例#1
0
 private void SendGobDeletionsOnServer()
 {
     if ((DataEngine.ArenaFrameCount % 3) != 0) return;
     if (_pendingGobDeletionMessage == null) return;
     NetworkEngine.SendToGameClients(_pendingGobDeletionMessage);
     _pendingGobDeletionMessage = null;
 }
示例#2
0
 public override void StartArena()
 {
     Stats.BasicInfoSent = false;
     WebData.Feed("2" + (int)NetworkMode);
     switch (NetworkMode)
     {
         case NetworkMode.Server:
             MessageHandlers.ActivateHandlers(MessageHandlers.GetServerGameplayHandlers());
             _pendingGobDeletionMessage = null;
             DataEngine.Arena.GobRemoved += GobRemovedFromArenaHandler;
             break;
         case NetworkMode.Client:
             _pendingClientGameStateUpdateMessage = new ClientGameStateUpdateMessage();
             break;
     }
     Logic.StartArena();
 }
示例#3
0
 private void GobRemovedFromArenaHandler(Gob gob)
 {
     if (!gob.IsRelevant) return;
     _pendingGobDeletionMessage =_pendingGobDeletionMessage ?? new GobDeletionMessage();
     _pendingGobDeletionMessage.GobIDs.Add(gob.ID);
 }
示例#4
0
 private void HandleGobDeletionMessage(GobDeletionMessage mess, int framesAgo)
 {
     Game.LogicEngine.KillGobsOnClient(mess.GobIDs);
 }