Ejemplo n.º 1
0
        public IResponse <GameInstance> Play(PlayGameInstanceDto dto)
        {
            var gameInstance = Get(dto.Id);
            var gameStrategy = GameStrategyProvider.Provide(gameInstance.GameId);

            var newGameStateAsJsonStringResponse = gameStrategy != null?gameStrategy.LoadAndPlayAndReturnGameStateAsString(gameInstance, RequestContext.UserId, dto.UserInput) : new Response <string>
            {
                Data = ""
            };
            var response = ResponseMapper.MapMetadata <GameInstance>(newGameStateAsJsonStringResponse);

            if (!response.IsValid || response.Messages.Any(x => x.Contains("wins!")))
            {
                return(response);
            }

            var newGameState = CreateGameStateObject(newGameStateAsJsonStringResponse.Data);

            response.Data = Save(gameInstance, newGameState);

            if (gameStrategy != null)
            {
                SaveGameStateHistory(response.Data.Id, gameInstance.State, $"User Input: {dto.UserInput}");
            }

            return(response);
        }
Ejemplo n.º 2
0
        public ActionResult <IResponse <object> > New(CreateGameInstanceDto dto)
        {
            var validationResponse = GameInstanceValidator.Validate(dto);

            if (!validationResponse.IsValid)
            {
                return(BadRequest(validationResponse));
            }

            var gameInstanceResponse = GameInstanceLogic.New(dto);

            var response = ResponseMapper.MapMetadata <GameInstanceDto>(gameInstanceResponse);

            response.Data = GameInstanceMapper.Map(gameInstanceResponse.Data);
            return(Ok(response));
        }
Ejemplo n.º 3
0
        public void MapMetadata_WithNonNullData_ShouldMapErrorsAndMessages()
        {
            //arrange
            Arrange();

            //act
            var result = ResponseMapper.MapMetadata <string>(_sourceResponse);

            //assert
            Assert.AreEqual(3, result.Errors.Count);
            Assert.AreEqual("this is an error", result.Errors.ElementAt(0));
            Assert.AreEqual("this is another error", result.Errors.ElementAt(1));
            Assert.AreEqual("this is a third error", result.Errors.ElementAt(2));
            Assert.AreEqual(2, result.Messages.Count);
            Assert.AreEqual("this is a message", result.Messages.ElementAt(0));
            Assert.AreEqual("this is another message", result.Messages.ElementAt(1));
        }
Ejemplo n.º 4
0
        public async Task <ActionResult <IResponse <object> > > PlayAsync(PlayGameInstanceDto dto)
        {
            var validationResponse = GameInstanceValidator.Validate(dto);

            if (!validationResponse.IsValid)
            {
                return(BadRequest(validationResponse));
            }

            var gameInstanceResponse = GameInstanceLogic.Play(dto);

            var response = ResponseMapper.MapMetadata <GameInstanceDto>(gameInstanceResponse);

            response.Data = GameInstanceMapper.Map(GameInstanceLogic.Get(dto.Id));
            if (response.IsValid)
            {
                await GameHubContext.Clients.Group(dto.Id.ToString()).SendAsync("Refresh");
            }
            return(Ok(response));
        }