Ejemplo n.º 1
0
        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);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }