Example #1
0
        public async Task <IPlayer> JoinRoom(string roomId, Guid connectionId)
        {
            var command = new JoinRoomCommand {
                RoomId = roomId
            };
            await _context.Send(command);

            return(new PlayerProxy(_context, roomId));
        }
Example #2
0
        private static async Task TestHandler()
        {
            var config = ClientConfiguration.LocalhostSilo();

            config.AddSimpleMessageStreamProvider(StreamConstants.ProviderName);
            var host   = new OrleansClientInitializer(config);
            var client = await OrleansClient.Initialize(host);

            var container = new Container();

            container.RegisterClientHandlerFactory();
            var handlerFactory = container.GetInstance <ClientHandlerFactory>();

            using (var connection = await client.Connect(Guid.NewGuid()))
            {
                var handler = handlerFactory.Create(connection);
                handler.Events.Subscribe(Write);
                var meta          = new Metadata();
                var loginResponse = await handler.Handle(new LoginCommand(), meta);

                Write(loginResponse);
                meta = new Metadata {
                    AccessToken = loginResponse.AccessToken
                };
                var joinRoom = new JoinRoomCommand {
                    RoomId = "conreign"
                };
                await handler.Handle(joinRoom, meta);

                var updatePlayer = new UpdatePlayerOptionsCommand
                {
                    RoomId  = "conreign",
                    Options = new PlayerOptionsData
                    {
                        Nickname = "smolyakoff",
                        Color    = "#010101"
                    }
                };
                await handler.Handle(updatePlayer, meta);

                var write = new SendMessageCommand
                {
                    RoomId = "conreign",
                    Text   = "Hello!"
                };
                await handler.Handle(write, meta);

                var getState = new GetRoomStateCommand
                {
                    RoomId = "conreign"
                };
                var state = await handler.Handle(getState, meta);

                Write(state);
            }
        }
Example #3
0
        public void Execute(JoinRoomCommand command)
        {
            Room room = _repo.GetByName(command.RoomName);

            if (room == null)
            {
                throw new FunctionalException(new FunctionalError("US004.1", $"A room with the name '{command.RoomName}' does not exist"));
            }
            room.Join(command.PlayerID, command.Colour);
            _repo.Save(room);
        }
 public IActionResult Post([FromBody] JoinRoomCommand command)
 {
     try
     {
         _roomService.Execute(command);
         return(Ok());
     }
     catch (FunctionalException ex)
     {
         return(BadRequest(ex.FunctionalErrors.ToArray()));
     }
 }
Example #5
0
        public RoomsViewModel(string userName, int userId, MainWindowViewModel mainWindowViewModel)
        {
            Task.Run(() => UpdateRoomsAsync());
            this.userId             = userId;
            _mainWindowViewModel    = mainWindowViewModel;
            UserName                = userName;
            LogoutCommand           = new LogoutCommand(this);
            JoinRoomCommand         = new JoinRoomCommand(this);
            ToggleCreateRoomCommand = new ToggleCreateRoomCommand(this);

            CreateRoomViewModel = new CreateRoomViewModel(this);

            CreateRoomVisibility = Visibility.Collapsed;
        }
Example #6
0
    public static FlatBufferBuilder buildJoinRoom(string roomId, string authToken)
    {
        var builder      = new FlatBufferBuilder(1);
        var authTokenStr = builder.CreateString(authToken);
        var roomIdStr    = builder.CreateString(roomId);

        JoinRoomCommand.StartJoinRoomCommand(builder);
        JoinRoomCommand.AddToken(builder, authTokenStr);
        JoinRoomCommand.AddRoomId(builder, roomIdStr);
        var joinCmd = JoinRoomCommand.EndJoinRoomCommand(builder);

        // TODO: extract the below part out to be reusable.
        Message.StartMessage(builder);
        Message.AddDataType(builder, schema.Data.JoinRoomCommand);
        Message.AddData(builder, joinCmd.Value);
        var data = Message.EndMessage(builder);

        builder.Finish(data.Value);
        return(builder);
    }
Example #7
0
 public async Task <IActionResult> JoinRoom(JoinRoomCommand command)
 {
     return(Ok(await _mediator.Send(command)));
 }