Example #1
0
        public async Task <IActionResult> PlayCard(Guid gameId, PlayCardRequest request)
        {
            if (!IsInGame(gameId))
            {
                return(Unauthorized());
            }

            var response = await _mediator.Send(new PlayCard
                                                { GameId = gameId, PlayerId = this.PlayerId, Type = request.CardType, Value = request.Value });

            if (!response.IsSuccess)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, response.ErrorMessage));
            }

            await _gameHub.Clients.Group(gameId.ToString()).CardPlayed(new PlayedCardMessage
            {
                Action    = PlayedCardMessage.CardAction.Play,
                CardType  = request.CardType,
                CardValue = request.Value,
                PlayerId  = this.PlayerId
            });

            return(Ok());
        }
Example #2
0
        public HttpResponseMessage Play([ModelBinder(typeof(JsonNetModelBinder))] PlayCardRequest request)
        {
            var response = new PlayCardResponse()
            {
                Result = true
            };

            return(new JsonNetResponseMessage(response));
        }
        public IHttpActionResult PlayCard3([FromBody] PlayCardRequest request)
        {
            string username    = (string)HttpContext.Current.Session["username"];
            Game   currentGame = db.Games.FirstOrDefault(x => x.Id == request.GameId);

            // ako sam prvi igrac
            if (currentGame.Player1 == username)
            {
                if (request.CardNumber == 2)
                {
                    currentGame.Player2Game3Points += 10;
                }
                currentGame.Player1Game3Played = true;
                db.SaveChanges();
                if (currentGame.Player2Game3Played)
                {
                    var context = GlobalHost.ConnectionManager.GetHubContext <Tasks>();
                    context.Clients.All.opponentPlayed3(currentGame.Player2, currentGame.Player1Game3Points, currentGame.Player2Game3Points);
                    PlayCardResponse response = new PlayCardResponse
                    {
                        OpponentPoints = currentGame.Player2Game3Points,
                        MyPoints       = currentGame.Player1Game3Points
                    };
                    return(Ok(response));
                }
                else
                {
                    return(Content(HttpStatusCode.BadRequest, "Cekanje na drugog igraca da odigra..."));
                }
            }
            else
            // ako sam drugi igrac
            {
                if (request.CardNumber == 2)
                {
                    currentGame.Player1Game3Points += 10;
                }
                currentGame.Player2Game3Played = true;
                db.SaveChanges();
                if (currentGame.Player1Game3Played)
                {
                    var context = GlobalHost.ConnectionManager.GetHubContext <Tasks>();
                    context.Clients.All.opponentPlayed3(currentGame.Player1, currentGame.Player2Game3Points, currentGame.Player1Game3Points);
                    PlayCardResponse response = new PlayCardResponse
                    {
                        OpponentPoints = currentGame.Player1Game3Points,
                        MyPoints       = currentGame.Player2Game3Points
                    };
                    return(Ok(response));
                }
                else
                {
                    return(Content(HttpStatusCode.BadRequest, "Cekanje na drugog igraca da odigra..."));
                }
            }
        }
Example #4
0
        public async Task PlayCardAsync(PlayCardRequest playCardRequest)
        {
            var gamePlay = _gamePlays.FirstOrDefault(ga => ga.HubConnectionId == Context.ConnectionId);

            if (gamePlay == null)
            {
                return;
            }

            gamePlay.CardPlayed = playCardRequest.CardPlayed;

            await UpdateGame(gamePlay.Game.Id);
        }
Example #5
0
        public IRemoteObject Handle(AsyncUserToken token, IRemoteObject request)
        {
            PlayCardRequest  playCardRequest = request as PlayCardRequest;
            PlayCardResponse response        = new PlayCardResponse
            {
                Successfulness = true,
                Message        = null
            };

            try
            {
                GAME_MANAGER.PlayCard(token, playCardRequest.CardInGameId);
            }
            catch (LogicExecutionException e)
            {
                response.Successfulness = false;
                response.Message        = e.Message;
            }
            return(response);
        }
Example #6
0
        public async Task <ActionResult <GameResponse> > PlayCard(PlayCardRequest playCardRequest)
        {
            var currentPlayer = await GetCurrentPlayer();

            if (currentPlayer == null || playCardRequest == null)
            {
                return(BadRequest());
            }

            var gameResponse = await _gameService.PlayCard(currentPlayer, playCardRequest.GameCardId);

            if (gameResponse == null)
            {
                return(BadRequest());
            }

            await SendGameUpdateToClients(gameResponse.GameId, currentPlayer.Id);

            return(gameResponse);
        }
        public IHttpActionResult PlayCard1([FromBody] PlayCardRequest request)
        {
            string username    = (string)HttpContext.Current.Session["username"];
            Game   currentGame = db.Games.FirstOrDefault(x => x.Id == request.GameId);

            // ako sam prvi igrac
            if (currentGame.Player1 == username)
            {
                if (request.CardNumber == 1)
                {
                    currentGame.Player1Game1Points += 5;
                }
                else
                {
                    currentGame.Player2Game1Points += 10;
                }
                currentGame.Player1Game1Played = true;
                db.SaveChanges();
                if (currentGame.Player2Game1Played)
                {
                    var context          = GlobalHost.ConnectionManager.GetHubContext <Tasks>();
                    var myUser           = db.Users.FirstOrDefault(x => x.Username == currentGame.Player1);
                    var myFullName       = myUser.FirstName + " " + myUser.LastName;
                    var opponentUser     = db.Users.FirstOrDefault(x => x.Username == currentGame.Player2);
                    var opponentFullName = opponentUser.FirstName + " " + opponentUser.LastName;
                    context.Clients.All.opponentPlayed1(currentGame.Player2, myFullName, currentGame.Player1Game1Points, currentGame.Player2Game1Points);
                    PlayCardResponse response = new PlayCardResponse
                    {
                        OpponentName   = opponentFullName,
                        OpponentPoints = currentGame.Player2Game1Points,
                        MyPoints       = currentGame.Player1Game1Points
                    };
                    return(Ok(response));
                }
                else
                {
                    return(Content(HttpStatusCode.BadRequest, "Cekanje na drugog igraca da odigra..."));
                }

                // ispod je slozenija verzija igre, koja nije ispravna ali bleji za svaki slucaj
                //if (currentGame.Player2Game1Points == null)
                //{
                //    // upisujemo u bazu odigranu kartu
                //    currentGame.Player1Game1Points = request.CardNumber;
                //    db.SaveChanges();
                //    return Content(HttpStatusCode.BadRequest, "Cekanje na drugog igraca da odigra...");

                //}
                //else
                //{
                //    if (currentGame.Player2Game1Points > request.CardNumber)
                //    {
                //        currentGame.Player2Game1Points = 10;
                //        currentGame.Player1Game1Points = 0;
                //        db.SaveChanges();
                //    } else if (currentGame.Player2Game1Points == request.CardNumber)
                //    {
                //        currentGame.Player2Game1Points = 5;
                //        currentGame.Player1Game1Points = 5;
                //        db.SaveChanges();
                //    } else
                //    {
                //        currentGame.Player2Game1Points = 0;
                //        currentGame.Player1Game1Points = 10;
                //        db.SaveChanges();
                //    }
                //    var context = GlobalHost.ConnectionManager.GetHubContext<Tasks>();
                //    context.Clients.All.opponentPlayed1(currentGame.Player2, currentGame.Player2Game1Points);
                //    return Ok(true);
                //}
            }
            else
            // ako sam drugi igrac
            {
                if (request.CardNumber == 1)
                {
                    currentGame.Player2Game1Points += 5;
                }
                else
                {
                    currentGame.Player1Game1Points += 10;
                }
                currentGame.Player2Game1Played = true;
                db.SaveChanges();
                if (currentGame.Player1Game1Played)
                {
                    var context          = GlobalHost.ConnectionManager.GetHubContext <Tasks>();
                    var myUser           = db.Users.FirstOrDefault(x => x.Username == currentGame.Player2);
                    var myFullName       = myUser.FirstName + " " + myUser.LastName;
                    var opponentUser     = db.Users.FirstOrDefault(x => x.Username == currentGame.Player1);
                    var opponentFullName = opponentUser.FirstName + " " + opponentUser.LastName;

                    context.Clients.All.opponentPlayed1(currentGame.Player1, myFullName, currentGame.Player2Game1Points, currentGame.Player1Game1Points);
                    PlayCardResponse response = new PlayCardResponse
                    {
                        OpponentName   = opponentFullName,
                        OpponentPoints = currentGame.Player1Game1Points,
                        MyPoints       = currentGame.Player2Game1Points
                    };
                    return(Ok(response));
                }
                else
                {
                    return(Content(HttpStatusCode.BadRequest, "Cekanje na drugog igraca da odigra..."));
                }
            }
        }