コード例 #1
0
ファイル: Program.cs プロジェクト: jorgy343/Pix
        public static void NetworkReadingThread()
        {
            var networkStream = _tcpClient.GetStream();
            var messageReader = new MessageReader(_tcpClient);

            while (true)
            {
                var requestChunkMessage      = new RequestChunkMessage();
                var requestChunkMessageBytes = requestChunkMessage.ToBytes();

                lock (_tcpClient)
                {
                    networkStream.Write(requestChunkMessageBytes, 0, requestChunkMessageBytes.Length);
                }

                var message = messageReader.GetMessage().Result;

                switch (message)
                {
                case ChunkToProcessMessage chunkToProcess:
                    _chunksToProcess.Add(chunkToProcess);
                    break;
                }
            }
        }
コード例 #2
0
        private static void handleRequestChunkMessage(NetIncomingMessage _Im)
        {
            var message = new RequestChunkMessage(_Im);

            var timeDelay = (float)(NetTime.Now - _Im.SenderConnection.GetLocalTime(message.MessageTime));

            Client var_Client = Configuration.networkManager.getClient(_Im.SenderEndPoint);

            GameLibrary.Map.Chunk.Chunk var_Chunk = GameLibrary.Map.World.World.world.getDimensionById(message.DimensionId).getChunkAtPosition(message.Position);

            //GameLibrary.Logger.Logger.LogDeb("Client Requested Chunk at X: " + message.Position.X + " Y: " + message.Position.Y);

            if (var_Chunk != null)
            {
                //Configuration.networkManager.SendMessageToClient(new UpdateRegionMessage((GameLibrary.Model.Map.Region.Region)var_Chunk.Parent), var_Client);
                Configuration.networkManager.SendMessageToClient(new UpdateChunkMessage(var_Chunk), var_Client);

                /*foreach (AnimatedObject var_AnimatedObject in var_Chunk.getAllObjectsInChunk())
                 * {
                 *  Configuration.networkManager.SendMessageToClient(new UpdateObjectMessage(var_AnimatedObject), var_Client);
                 * }*/
            }
            else
            {
                GameLibrary.Logger.Logger.LogErr("ServerIGameMessageManager->handleRequestChunkMessage(...): Chunk an Position X: " + message.Position.X + " Y: " + message.Position.Y + " existiert nicht!");
            }
        }
コード例 #3
0
    public void OnChunkRequested(RequestChunkMessage message)
    {
        bool valid = world.validChunkRequest(message.client.transform.position, message.position, wl);

        if (valid)
        {
            message.client.connectionToClient.Send(new ChunkMessage(world.getChunk(message.position), message.position, valid));
        }
    }
コード例 #4
0
        protected virtual Message BuildMessage(int messageType, byte[] messageData)
        {
            switch (messageType)
            {
            case RequestChunkMessage.Id:

                return(RequestChunkMessage.Parse(messageData));

            case ChunkToProcessMessage.Id:

                return(ChunkToProcessMessage.Parse(messageData));

            case ChunkCompletedMessage.Id:

                return(ChunkCompletedMessage.Parse(messageData));

            default:

                return(null);
            }
        }