private void Client_MessageReceived(object sender, MessageReceivedEventArgs e) { using (Message message = e.GetMessage() as Message) { if (isConnected()) { if (message.Tag == Tags.JoinWorldMessage) { using (DarkRiftReader reader = message.GetReader()) { JoinWorldClientDTO data = reader.ReadSerializable <JoinWorldClientDTO>(); MurmurServer.MoveClientToWorldChannel(e.Client, data.WorldName); //Creates a channel for this world if it not already exists } } if (message.Tag == Tags.CreateWorldMessage) { using (DarkRiftReader reader = message.GetReader()) { CreateWorldClientDTO data = reader.ReadSerializable <CreateWorldClientDTO>(); MurmurServer.CreateChannelForWorld(data.WorldName); } } } } }
public void OnJoinWorld(object sender, MessageReceivedEventArgs e) { using (Message message = e.GetMessage() as Message) { JoinWorldClientDTO data = message.GetReader().ReadSerializable <JoinWorldClientDTO>(); foreach (WorldData world in Worlds) { if (world.WorldName == data.WorldName) { //If the player is already in a world, leave it first. if (this.clients[e.Client].World != null) { playerManager.UnregisterClient(e.Client); entityManager.UnregisterClient(e.Client); this.clients[e.Client].World = null; } //Register the player to the world this.clients[e.Client].World = world; playerManager.RegisterClient(e.Client, world); entityManager.RegisterClient(e.Client, world); using (DarkRiftWriter responseWriter = DarkRiftWriter.Create()) { JoinWorldServerDTO response = new JoinWorldServerDTO(); response.Success = true; response.Message = "Registered client to world"; Console.WriteLine(response.Message); responseWriter.Write(response); using (Message responseMessage = Message.Create(Tags.JoinWorldMessage, responseWriter)) e.Client.SendMessage(responseMessage, SendMode.Reliable); return; //terminate } } } //World not found.. using (DarkRiftWriter responseWriter = DarkRiftWriter.Create()) { JoinWorldServerDTO response = new JoinWorldServerDTO(); response.Success = false; response.Message = $"No world with name: {data.WorldName}"; Console.WriteLine(response.Message); responseWriter.Write(response); using (Message responseMessage = Message.Create(Tags.JoinWorldMessage, responseWriter)) e.Client.SendMessage(responseMessage, SendMode.Reliable); } } }