public void AddObject(NetworkObject obj, Player player = null, bool deadPlayers = true)
 {
     if (responsePrepared) throw new InvalidOperationException("Can't add objects when the object has been sent");
     if(player != null)
     {
         if (objects == null)
             objects = new Dictionary<Player, NetworkMultipleObject>();
         if (!objects.ContainsKey(player))
             objects.Add(player, obj is NetworkMultipleObject ? (obj as NetworkMultipleObject) : new NetworkMultipleObject(obj));
         else
             objects[player].AddObject(obj);
     }
     else if (deadPlayers)
     {
         if (all == null)
             all = obj is NetworkMultipleObject ? (obj  as NetworkMultipleObject) : new NetworkMultipleObject(obj);
         else
             all.AddObject(obj);
     }
     else
     {
         if (noDead == null)
             noDead = obj is NetworkMultipleObject ? (obj as NetworkMultipleObject) : new NetworkMultipleObject(obj);
         else
             all.AddObject(obj);
     }
 }
 private void PrepareResponses()
 {
     if (noDead != null) //contains everything non dead people need
         noDead.AddObject(all);
     else
         noDead = all;
     if(objects != null)
         foreach(var player in objects.Keys)
         {
             if (noDead != null && !player.Dead)
                 objects[player].AddObject(noDead);
             else if (all != null)
                 objects[player].AddObject(all);
         }
     responsePrepared = true;
 }
Exemplo n.º 3
0
 public void TestMultipleObjectSender()
 {
     var player = Player.GetPlayer("Sander");
     var player2 = Player.GetPlayer("Stefan");
     player.Hand = new PlayerHand(new CardSecretRoleFascist(1), new CardMembershipFascist());
     player2.Hand = new PlayerHand(new CardSecretRoleFascist(0), new CardMembershipFascist());
     var msg = new NetworkMultipleObject(
         new NetworkRevealRoleObject(player), 
         new NetworkRevealRoleObject(player2),
         new NetworkMessageObject("Sander", "Hallo ik ben een vis"),
         new NetworkNewPlayerObject(ServerCommands.PlayerConnected, player, 1),
         new NetworkPlayerObject(ServerCommands.AnnouncePresident, player)
     );
     var decoder = ServerCommands.Multiple.GetDecoder();
     var bytes = decoder.GenerateByteStream(msg);
     var decoded = decoder.GenerateObject(bytes, false);
     Assert.IsInstanceOfType(decoded, typeof(NetworkMultipleObject));
     var receivedMsg = decoded as NetworkMultipleObject;
     Assert.IsTrue(receivedMsg.Objects.Length == msg.Objects.Length);
     for (var i = 0; i < receivedMsg.Objects.Length; i++)
         CompareDefaultObject(receivedMsg.Objects[i], msg.Objects[i]);
     CompareDefaultObject(msg, receivedMsg);
 }