diondokter

Server LobbyClass

May 26th, 2014
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.41 KB | None | 0 0
  1.         public void Loop() //this runs on a separate thread and starts when the class is made.
  2.         {
  3.             Stopwatch Watch = new Stopwatch();
  4.             while (!IsOncePopulated || Players.Count > 0)
  5.             {
  6.                 Watch.Restart();
  7.  
  8.                 foreach (PlayerClass Player in Players)
  9.                 {
  10.                     Player.Receive();
  11.                     SignalClass Signal = Player.GetOldestSignal();
  12.                     if (Signal.ToServer)
  13.                     {
  14.                         if (Signal.Destination < 0)
  15.                         {
  16.                             MainForm.ServerCommands.NewMessage(Signal);
  17.                         }
  18.                         else if (Signal.Destination == Number)
  19.                         {
  20.                             NewMessage(Signal);
  21.                         }
  22.                     }
  23.                 }
  24.                 Thread.Sleep((int)(1000f / MainForm.TickRate - Watch.ElapsedMilliseconds));
  25.             }
  26.             MainForm.Lobbies.Remove(this);
  27.         }
  28.  
  29.         public void NewMessage(SignalClass Signal)
  30.         {
  31.             switch (Signal.ServerAction)
  32.             {
  33.                 case ToServerAction.Join:
  34.                     new Thread(() => Join((string)Signal.Parameters[0], Signal.Sender)).Start();
  35.                     break;
  36.                 case ToServerAction.Leave:
  37.                     new Thread(() => Leave((ushort)Signal.Parameters[0])).Start();
  38.                     break;
  39.                 case ToServerAction.SetMap:
  40.                     new Thread(() => SetMap((int)Signal.Parameters[0])).Start();
  41.                     break;
  42.                 case ToServerAction.GiveMap:
  43.                     new Thread(() => GiveMap(Signal.Sender)).Start();
  44.                     break;
  45.                 case ToServerAction.Chat:
  46.                     new Thread(() => Chat((string)Signal.Parameters[0])).Start();
  47.                     break;
  48.                 case ToServerAction.GivePlayers:
  49.                     new Thread(() => GivePlayers(Signal.Sender)).Start();
  50.                     break;
  51.                 case ToServerAction.GiveChat:
  52.                     new Thread(() => GiveChat((int)Signal.Parameters[0], Signal.Sender)).Start();
  53.                     break;
  54.                 case ToServerAction.SetPlayerStat:
  55.                     new Thread(() => SetPlayerStat((ushort)Signal.Parameters[0], (string)Signal.Parameters[1], (string)Signal.Parameters[2])).Start();
  56.                     break;
  57.                 case ToServerAction.SpawnPlayer:
  58.                     new Thread(() => SpawnPlayer((ushort)Signal.Parameters[0], (int)Signal.Parameters[1])).Start();
  59.                     break;
  60.                 case ToServerAction.DeSpawnEntity:
  61.                     new Thread(() => DeSpawnEntity((ushort)Signal.Parameters[0])).Start();
  62.                     break;
  63.                 case ToServerAction.AssignEntityNumbers:
  64.                     new Thread(() => AssignEntityNumbers((int)Signal.Parameters[0])).Start();
  65.                     break;
  66.                 default:
  67.                     Signal.Sender.Send(new SignalClass(ToClientAction.Log, -1, "ToServerAction:" + Signal.ToServer.ToString() + " is not a valid key. This may be caused by an old version of the server or client"));
  68.                     break;
  69.             }
  70.         }
Advertisement
Add Comment
Please, Sign In to add comment