public void Update() { var statePushDto = new StatePushDto(); switch (_pushDataState) { case PushDataState.None: return; case PushDataState.First: statePushDto.AddedBlobs = Mapper.Map <BlobDto[]>(_game.Blobs); statePushDto.RemovedBlobs = new BlobDto[] { }; statePushDto.UpdatedBlobs = new BlobDto[] { }; _pushDataState = PushDataState.Continue; break; case PushDataState.Continue: statePushDto.AddedBlobs = Mapper.Map <BlobDto[]>(_stateTracker.AddedBlobs); statePushDto.RemovedBlobs = Mapper.Map <BlobDto[]>(_stateTracker.RemovedBlobs); statePushDto.UpdatedBlobs = Mapper.Map <BlobDto[]>(_stateTracker.UpdatedBlobs); break; } statePushDto.WorldSize = _game.Size; statePushDto.TurnEndTime = _game.TurnEndInstant.ToDateTimeUtc(); statePushDto.GameModeType = GameModeType.Classic; statePushDto.CustomGameModeData = _game.GameMode.GetCustomData().ToJson(); Send(statePushDto); }
public void Update() { var statePushDto = new StatePushDto(); switch (_pushDataState) { case PushDataState.None: return; case PushDataState.First: statePushDto.AddedBlobs = Mapper.Map<BlobDto[]>(_game.Blobs); statePushDto.RemovedBlobs = new BlobDto[] { }; statePushDto.UpdatedBlobs = new BlobDto[] { }; _pushDataState = PushDataState.Continue; break; case PushDataState.Continue: statePushDto.AddedBlobs = Mapper.Map<BlobDto[]>(_stateTracker.AddedBlobs); statePushDto.RemovedBlobs = Mapper.Map<BlobDto[]>(_stateTracker.RemovedBlobs); statePushDto.UpdatedBlobs = Mapper.Map<BlobDto[]>(_stateTracker.UpdatedBlobs); break; } statePushDto.WorldSize = _game.Size; statePushDto.TurnEndTime = _game.TurnEndInstant.ToDateTimeUtc(); statePushDto.GameModeType = GameModeType.Classic; statePushDto.CustomGameModeData = _game.GameMode.GetCustomData().ToJson(); Send(statePushDto); }
public VisualizationConnection(IAdminCommandFactory adminCommandFactory, IStateTracker stateTracker, IGame game) { _adminCommandFactory = adminCommandFactory; _stateTracker = stateTracker; _game = game; _dataToSend = new BufferBlock <string>(); _pushDataState = PushDataState.None; }
public AdminConnection(IAdminCommandFactory adminCommandFactory, IStateTracker stateTracker, IGame game) { _adminCommandFactory = adminCommandFactory; _stateTracker = stateTracker; _game = game; _dataToSend = new BufferBlock<string>(); _pushDataState = PushDataState.None; }
private async Task HandleIncomingDataAsync(StreamReader reader, CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { try { var command = await _adminCommandFactory.CreateAsync(reader, cancellationToken).ConfigureAwait(false); if (command == null) { if (reader.EndOfStream) { return; } continue; } if (!(command is StartPushingStateAdminCommand)) { continue; } command.Validate(_game); var commandResponseDto = command.Execute(_game); Send(commandResponseDto); _pushDataState = PushDataState.First; } catch (CommandException exception) { var commandResponseDto = new CommandResponseDto { ErrorCode = (int)exception.ErrorCode, Message = exception.Message }; Send(commandResponseDto); } } }
private async Task HandleIncomingDataAsync(StreamReader reader, CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { try { var command = await _adminCommandFactory.CreateAsync(reader, cancellationToken).ConfigureAwait(false); if (command == null) { if (reader.EndOfStream) { return; } continue; } command.Validate(_game); var commandResponseDto = command.Execute(_game); Send(commandResponseDto); if (command is StartPushingStateAdminCommand) { _pushDataState = PushDataState.First; } } catch (CommandException exception) { var commandResponseDto = new CommandResponseDto { ErrorCode = (int)exception.ErrorCode, Message = exception.Message }; Send(commandResponseDto); } } }