/// <summary>
 /// Extension shorthand for sending empty unreliable messages.
 /// </summary>
 /// <param name="client">Client to which this should be sent.</param>
 /// <param name="tag"></param>
 public static void SendEmptyUdpMessage <TTag>(this IClient client, TTag tag)
     where TTag : struct, Enum, IConvertible
 {
     using (DarkRiftWriter writer = DarkRiftWriter.Create())
     {
         using (DarkRift.Message msg = DarkRift.Message.Create(Convert.ToUInt16(tag), writer))
             client.SendMessage(msg, SendMode.Unreliable);
     }
 }
コード例 #2
0
 public void SendPlayerMoveMessage(Vector3 position)
 {
     using (DarkRiftWriter writer = DarkRiftWriter.Create()) {
         writer.Write(new PlayerMoveMessage(position));
         using (Message message = Message.Create(Tags.PlayerMoveTag, writer)) {
             drClient.SendMessage(message, SendMode.Unreliable);
         }
     }
 }
コード例 #3
0
        public void OnHit()
        {
            Game.GameTick -= Tick;
            DarkRiftWriter writer = DarkRiftWriter.Create();

            writer.Write(Id);
            Owner.Owner.Client.SendMessage(Message.Create((ushort)Tags.KillObject, writer), SendMode.Reliable);
            Arealight.CreateA(new CircleCollider(Transform, 1f), Game, 4);
        }
コード例 #4
0
    public Message GenerateDespawnMessage(ushort playerID)
    {
        using (DarkRiftWriter writer = DarkRiftWriter.Create())
        {
            writer.Write(playerID);

            return(Message.Create(Tags.DespawnAI, writer));
        }
    }
コード例 #5
0
 public void SendPlayerInformationMessage(string playerName)
 {
     using (DarkRiftWriter writer = DarkRiftWriter.Create()) {
         writer.Write(new PlayerInformationMessage(drClient.ID, playerName));
         using (Message message = Message.Create(Tags.PlayerInformationTag, writer)) {
             drClient.SendMessage(message, SendMode.Reliable);
         }
     }
 }
コード例 #6
0
ファイル: NetworkManager.cs プロジェクト: Trithilon/UDRMS
 public void Login(string playerName)
 {
     using (DarkRiftWriter w = DarkRiftWriter.Create())
     {
         w.Write(playerName);
         using (Message m = Message.Create(UDRMS_Tags.LoginInfo, w))
             client.SendMessage(m, SendMode.Reliable);
     }
 }
コード例 #7
0
        public override void Dispose()
        {
            base.Dispose();
            Game.Lights.Remove(this);
            DarkRiftWriter writer = DarkRiftWriter.Create();

            writer.Write(Id);
            Game.SendMessageToAll(Message.Create((ushort)Tags.KillObject, writer));
        }
コード例 #8
0
ファイル: NetworkManager.cs プロジェクト: Trithilon/UDRMS
 internal void GetLobbyInfo(ushort page = 1)
 {
     using (DarkRiftWriter w = DarkRiftWriter.Create())
     {
         w.Write(page);
         using (Message m = Message.Create(UDRMS_Tags.getLobbyMatchs, w))
             client.SendMessage(m, SendMode.Reliable);
     }
 }
コード例 #9
0
 void SendClientID(MessageReceivedEventArgs e)
 {
     using (DarkRiftWriter writer = DarkRiftWriter.Create())
     {
         writer.Write(e.Client.ID);
         using (Message sendIDMessage = Message.Create((ushort)OpCodes.GetID, writer))
             e.Client.SendMessage(sendIDMessage, SendMode.Reliable);
     }
 }
コード例 #10
0
 public void DestroyObject(ushort objectID)
 {
     using (DarkRiftWriter writer = DarkRiftWriter.Create())
     {
         writer.Write(objectID);
         using (Message message = Message.Create(DESTROY_OBJ_TAG, writer))
             client.SendMessage(message, SendMode.Reliable);
     }
 }
コード例 #11
0
 public void SendJoinGameRequest()
 {
     waitingToJoin = true;
     using (DarkRiftWriter writer = DarkRiftWriter.Create()) {
         using (Message message = Message.Create(NetworkTags.JoinGame, writer)) {
             client.SendMessage(message, SendMode.Reliable);
         }
     }
 }
コード例 #12
0
		public void MessageSlateTaken(ushort slateIndex, ushort matchId) {
			using (DarkRiftWriter writer = DarkRiftWriter.Create()) {
				writer.Write(matchId);
				writer.Write(slateIndex);
				using (Message message = Message.Create((ushort)Tags.Tag.SLATE_TAKEN, writer)) {
					client.SendMessage(message, SendMode.Reliable);
				}
			}
		}
コード例 #13
0
 public static void SendLobbyReadyStatusToPlayer(bool readyStatus, Lobby_Player playerToSend)
 {
     using (DarkRiftWriter w = DarkRiftWriter.Create())
     {
         w.Write(readyStatus);
         using (Message mes = Message.Create(UDRMS_Tags.connectLobbyMatch, w))
             playerToSend.client.SendMessage(mes, SendMode.Reliable);
     }
 }
コード例 #14
0
ファイル: NetworkManager.cs プロジェクト: Trithilon/UDRMS
 public void Match_JoinRoom(ushort roomID)
 {
     using (DarkRiftWriter w = DarkRiftWriter.Create())
     {
         w.Write(roomID);
         using (Message m = Message.Create(UDRMS_Tags.connectLobbyMatch, w))
             client.SendMessage(m, SendMode.Reliable);
     }
 }
コード例 #15
0
 /// <summary>
 /// Sends ushort message to Server
 /// </summary>
 /// <param name="txt"></param>
 /// <param name="tag"></param>
 public static void SendToServer(ushort number, ushort tag, UnityClient client)
 {
     using (DarkRiftWriter writer = DarkRiftWriter.Create())
     {
         writer.Write(number);
         using (Message playerMessage = Message.Create(tag, writer))
             client.SendMessage(playerMessage, SendMode.Reliable);
     }
 }
コード例 #16
0
 public void SendPlayerReadyMessage(bool isReady)
 {
     using (DarkRiftWriter writer = DarkRiftWriter.Create()) {
         writer.Write(new PlayerReadyMessage(drClient.ID, isReady));
         using (Message message = Message.Create(Tags.PlayerSetReadyTag, writer)) {
             drClient.SendMessage(message, SendMode.Reliable);
         }
     }
 }
コード例 #17
0
    private void GameStart(object sender, MessageReceivedEventArgs e)
    {
        //Game should on start:

        /*
         * - Send a message to all users with their roles
         * - Send a message with the 3 middle cards and their roles
         * - Disallow anymore people joining
         * - Disallow people leaving (Stopping the session)
         * */


        //Tell all users the roles
        using (DarkRiftWriter updateBoardWriter = DarkRiftWriter.Create())
        {
            foreach (Player player in players.Values)
            {
                updateBoardWriter.Write(player.ID);
                player.role = AssignRandomRole();
                updateBoardWriter.Write(player.role);
            }

            using (Message updateBoardMessage = Message.Create(Tags.GetRoleTag, updateBoardWriter))
            {
                foreach (IClient client in serverReference.Server.ClientManager.GetAllClients())
                {
                    Debug.Log("Sending roles to user: "******"Sending middle cards to user: " + client.ID);
                    client.SendMessage(updateBoardMessage, SendMode.Reliable);
                }
            }
        }

        StartCoroutine(NightPhase());
    }
コード例 #18
0
 public void StartGame()
 {
     using (DarkRiftWriter gameStartWriter = DarkRiftWriter.Create())
     {
         using (Message gameStartMessage = Message.Create(Tags.StartGameTag, gameStartWriter))
         {
             clientReference.SendMessage(gameStartMessage, SendMode.Reliable);
         }
     }
 }
コード例 #19
0
        public void Initialize()
        {
            // GIVEN the object cache is disabled
#pragma warning disable CS0618      // We don't care about using Server/Client specific cache settings
            ObjectCache.Initialize(ObjectCacheSettings.DontUseCache);
#pragma warning restore CS0618

            // AND a DarkRiftWriter under test
            writer = DarkRiftWriter.Create();
        }
コード例 #20
0
        private void SyncSwitchStatesWithClient(IClient sender)
        {
            using (DarkRiftWriter writer = DarkRiftWriter.Create())
            {
                writer.Write(switchStates.ToArray());

                using (Message msg = Message.Create((ushort)NetworkTags.SWITCH_SYNC, writer))
                    sender.SendMessage(msg, SendMode.Reliable);
            }
        }
コード例 #21
0
 public void JoinMatch(DarkRift.Server.IClient p, bool canJoin)
 {
     using (DarkRiftWriter w = DarkRiftWriter.Create())
     {
         w.Write(canJoin);
         w.Write(this.matchID);
         using (Message mes = Message.Create(UDRMS_Tags.connectLobbyMatch, w))
             p.SendMessage(mes, SendMode.Reliable);
     }
 }
コード例 #22
0
    public void SendChatMessage(string messageText)
    {
        using (DarkRiftWriter writer = DarkRiftWriter.Create()) {
            writer.Write(messageText);

            using (Message message = Message.Create(NetworkTags.ChatMessage, writer)) {
                client.SendMessage(message, SendMode.Reliable);
            }
        }
    }
コード例 #23
0
    public Message PrepareMessage(int buildIndex)
    {
        using (DarkRiftWriter writer = DarkRiftWriter.Create())
        {
            ushort buildIndexUint = (ushort)buildIndex;
            writer.Write(buildIndexUint);

            return(Message.Create(Tags.ChangeSceneWithReply, writer));
        }
    }
コード例 #24
0
    public void SendCommand(EntityCommand command)
    {
        using (DarkRiftWriter writer = DarkRiftWriter.Create()) {
            writer.Write(command);

            using (Message message = Message.Create(NetworkTags.Command, writer)) {
                client.SendMessage(message, SendMode.Reliable);
            }
        }
    }
コード例 #25
0
 /// <summary>
 /// Sends a message with a request to receive a list of current players in the lobby along with their ready status.
 /// </summary>
 public void SendRequestLobbyUpdate()
 {
     using (DarkRiftWriter writer = DarkRiftWriter.Create())
     {
         using (Message message = Message.Create(Tags.RequestUpdateLobby, writer))
         {
             _client.SendMessage(message, SendMode.Reliable);
         }
     }
 }
コード例 #26
0
        private void SendAllTurntableStates(IClient sender)
        {
            using (DarkRiftWriter writer = DarkRiftWriter.Create())
            {
                writer.Write(turntableStates.ToArray());

                using (Message msg = Message.Create((ushort)NetworkTags.TURNTABLE_SYNC, writer))
                    sender.SendMessage(msg, SendMode.Reliable);
            }
        }
コード例 #27
0
 public void SendStartGameMessage()
 {
     using (var writer = DarkRiftWriter.Create())
     {
         using (var message = Message.Create(Tags.GameStarted, writer))
         {
             _client.SendMessage(message, SendMode.Reliable);
         }
     }
 }
コード例 #28
0
    /// <summary>
    /// Extension method for quickly sending unreliable messages to the server.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="client"></param>
    /// <param name="message">The message to be sent, needs to inherit from IDarkRiftSerializable</param>
    public static void SendMessageUnreliable <T>(this UnityClient client, T message)
        where T : IDarkRiftSerializable, IMessage
    {
        using (DarkRiftWriter writer = DarkRiftWriter.Create())
        {
            writer.Write <T>(message);

            using (Message msg = Message.Create((ushort)message.Tag, writer))
                client.SendMessage(msg, SendMode.Unreliable);
        }
    }
コード例 #29
0
        private void ClientConnected(object sender, ClientConnectedEventArgs e)
        {
            Random r = new Random();

            Player newPlayer = new Player(
                e.Client.ID,
                (float)r.NextDouble() * MAP_WIDTH - MAP_WIDTH / 2,
                (float)r.NextDouble() * MAP_WIDTH - MAP_WIDTH / 2,
                1f,
                (byte)r.Next(0, 200),
                (byte)r.Next(0, 200),
                (byte)r.Next(0, 200)
                );

            using (DarkRiftWriter newPlayerWriter = DarkRiftWriter.Create())
            {
                newPlayerWriter.Write(newPlayer.ID);
                newPlayerWriter.Write(newPlayer.X);
                newPlayerWriter.Write(newPlayer.Y);
                newPlayerWriter.Write(newPlayer.Radius);
                newPlayerWriter.Write(newPlayer.ColorR);
                newPlayerWriter.Write(newPlayer.ColorG);
                newPlayerWriter.Write(newPlayer.ColorB);

                using (Message newPlayerMessage = Message.Create(Tags.SpawnPlayerTag, newPlayerWriter))
                {
                    foreach (IClient client in ClientManager.GetAllClients().Where(x => x != e.Client))
                    {
                        client.SendMessage(newPlayerMessage, SendMode.Reliable);
                    }
                }
            }

            players.Add(e.Client, newPlayer);

            using (DarkRiftWriter playerWriter = DarkRiftWriter.Create())
            {
                foreach (Player player in players.Values)
                {
                    playerWriter.Write(player.ID);
                    playerWriter.Write(player.X);
                    playerWriter.Write(player.Y);
                    playerWriter.Write(player.Radius);
                    playerWriter.Write(player.ColorR);
                    playerWriter.Write(player.ColorG);
                    playerWriter.Write(player.ColorB);
                }

                using (Message playerMessage = Message.Create(Tags.SpawnPlayerTag, playerWriter))
                {
                    e.Client.SendMessage(playerMessage, SendMode.Reliable);
                }
            }
        }
コード例 #30
0
 private void SendDespawnMessage()
 {
     using (var writer = DarkRiftWriter.Create())
     {
         writer.Write(_netId.Id);
         using (var message = Message.Create(Tags.DespawnPickup, writer))
         {
             _info.Client.SendMessage(message, SendMode.Reliable);
         }
     }
 }