Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public VisualizationConnection(IAdminCommandFactory adminCommandFactory, IStateTracker stateTracker, IGame game)
        {
            _adminCommandFactory = adminCommandFactory;
            _stateTracker        = stateTracker;
            _game = game;

            _dataToSend = new BufferBlock <string>();

            _pushDataState = PushDataState.None;
        }
Ejemplo n.º 4
0
        public AdminConnection(IAdminCommandFactory adminCommandFactory, IStateTracker stateTracker, IGame game)
        {
            _adminCommandFactory = adminCommandFactory;
            _stateTracker = stateTracker;
            _game = game;

            _dataToSend = new BufferBlock<string>();

            _pushDataState = PushDataState.None;
        }
Ejemplo n.º 5
0
        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);
                }
            }
        }
Ejemplo n.º 6
0
        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);
                }
            }
        }