Example #1
0
        public async Task<AdminCommand> CreateAsync(TextReader reader, CancellationToken cancellationToken)
        {
            var json = await reader.ReadJsonAsync(cancellationToken);
            if (string.IsNullOrWhiteSpace(json))
            {
                return null;
            }

            var adminCommandDto = json.FromJson<AdminCommandDto>();
            switch (adminCommandDto.Type)
            {
                case AdminCommandType.StartGame:
                    var startGameAdminCommandDto = json.FromJson<StartGameAdminCommandDto>();
                    return new StartGameAdminCommand(startGameAdminCommandDto.Size, _physics, _stateTracker, _playerRepository);
                case AdminCommandType.StopGame:
                    return new StopGameAdminCommand();
                case AdminCommandType.GetSnapshot:
                    return new GetSnapshotAdminCommand();
                case AdminCommandType.StartPushingState:
                    return new StartPushingStateAdminCommand();
                case AdminCommandType.UpdateSettings:
                    var updateSettingsAdminCommandDto = json.FromJson<UpdateSettingsAdminCommandDto>();
                    var settings = Mapper.Map<WorldSettings>(updateSettingsAdminCommandDto.Settings);
                    return new UpdateSettingsAdminCommand(settings);
                default:
                    throw new ArgumentOutOfRangeException();
            }
        }
Example #2
0
        public async Task<PlayerCommand> CreateAsync(TextReader reader, CancellationToken cancellationToken)
        {
            var json = await reader.ReadJsonAsync(cancellationToken);
            if (string.IsNullOrWhiteSpace(json))
            {
                return null;
            }

            var playerCommandDto = json.FromJson<PlayerCommandDto>();
            switch (playerCommandDto.Type)
            {
                case PlayerCommandType.Move:
                    var movePlayerCommandDto = json.FromJson<MovePlayerCommandDto>();
                    return new MovePlayerCommand((float)movePlayerCommandDto.Dx, (float)movePlayerCommandDto.Dy);
                case PlayerCommandType.Join:
                    return new JoinPlayerCommand();
                case PlayerCommandType.GetView:
                    return new GetViewPlayerCommand(_physics);
                case PlayerCommandType.Split:
                    return new SplitPlayerCommand();
                case PlayerCommandType.EjectMass:
                    return new EjectMassPlayerCommand();
                default:
                    throw new ArgumentOutOfRangeException();
            }
        }