Exemplo n.º 1
0
        public async Task <IActionResult> ContinueGame()
        {
            string   igraId     = User.FindFirstValue("sub");
            string   email      = User.FindFirstValue("email");
            Boja     bojaIgraca = Enum.Parse <Boja>(User.FindFirstValue("Boja"));
            Korisnik korisnik   = await KorisnikProvider.GetKorisnik(db, email);

            Igra game = await GameProvider.NadjiIgruId(db, igraId);

            if (game.kreatorIgre.ID != korisnik.ID)
            {
                return(BadRequest());
            }

            if (game.status != statusIgre.cekanjeIgracaPause)
            {
                return(Forbid());
            }
            game.status = statusIgre.uToku;
            await GameProvider.AzurirajIgru(db, game);

            await GameHubHelper.nastaviIgru(_gameHub, game.groupNameGUID);

            return(Ok());
        }
Exemplo n.º 2
0
        public async Task <IActionResult> PauzirajIgru()
        {
            string   igraId     = User.FindFirstValue("sub");
            string   email      = User.FindFirstValue("email");
            Boja     bojaIgraca = Enum.Parse <Boja>(User.FindFirstValue("Boja"));
            Korisnik korisnik   = await KorisnikProvider.GetKorisnik(db, email);

            Igra game = await GameProvider.NadjiIgruId(db, igraId);

            if (game.kreatorIgre.ID != korisnik.ID)
            {
                return(BadRequest());
            }
            Potez poslednji = await GameProvider.getPoslednjiPotezIgre(db, game);

            if (game.status != statusIgre.uToku || !game.privateGame || (game.status == statusIgre.uToku && game.naPotezu == poslednji.potezOdigrao))
            {
                return(Forbid());
            }
            game.status = statusIgre.pauzirana;
            await GameProvider.AzurirajIgru(db, game);

            await GameHubHelper.pauzirajIgruNotifyAsync(_gameHub, game.groupNameGUID);

            return(Ok());
        }
Exemplo n.º 3
0
        public async Task <IActionResult> OdigrajPotez(int figuraIndex)
        {
            string igraId     = User.FindFirstValue("sub");
            Boja   bojaIgraca = Enum.Parse <Boja>(User.FindFirstValue("Boja"));
            Igra   game       = await GameProvider.NadjiIgruFigure(db, igraId);

            if (game == null)
            {
                return(NotFound());
            }

            if (game.status != statusIgre.uToku || game.naPotezu != bojaIgraca || !game.aleaIactaEst)
            {
                return(Forbid());
            }

            Potez poslednjiPotez = await GameProvider.getPoslednjiPotezIgre(db, game);

            if (poslednjiPotez.potezOdigrao != bojaIgraca)
            {
                return(NotFound());
            }
            Figura izabranaFigura = game.figure.Where(Figura => Figura.index == figuraIndex && Figura.boja == bojaIgraca).FirstOrDefault();

            poslednjiPotez.izabranaFigura = izabranaFigura;
            if (izabranaFigura == null)
            {
                return(NotFound());
            }
            List <Tuple <int, int> > potezi = game.odigrajPotez(izabranaFigura, poslednjiPotez.vrKocke, bojaIgraca);

            if (potezi == null)
            {
                return(NotFound());
            }
            game.aleaIactaEst = !game.aleaIactaEst;
            if (poslednjiPotez.vrKocke != 6)
            {
                game.naPotezu = (Igra.redosledPoteza.Find(bojaIgraca).Next ?? Igra.redosledPoteza.First).Value;
            }


            await GameProvider.AzurirajIgru(db, game);

            await GameProvider.AzurirajPotez(db, poslednjiPotez);

            await GameHubHelper.figuraPomerenaNotifyAsync(_gameHub, game.groupNameGUID, potezi, poslednjiPotez.vrKocke != 6);

            if (game.kraj() != null)
            {
                await GameHubHelper.krajIgreNotifyAsync(_gameHub, game.groupNameGUID, game.kraj());
            }

            return(Ok());
        }
Exemplo n.º 4
0
        private void WaitingForHub()
        {
            Receive <SetHub>(h =>
            {
                _hub = h.Hub;
                Become(HubAvailable);
                Stash.UnstashAll();
            });

            ReceiveAny(_ => Stash.Stash());
        }
Exemplo n.º 5
0
        public async Task <IActionResult> BaciKocku()
        {
            string igraId     = User.FindFirstValue("sub");
            Boja   bojaIgraca = Enum.Parse <Boja>(User.FindFirstValue("Boja"));
            Igra   game       = await GameProvider.NadjiIgruFigure(db, igraId);

            if (game == null)
            {
                return(NotFound());
            }

            if (game.status != statusIgre.uToku || game.naPotezu != bojaIgraca || game.aleaIactaEst)
            {
                return(Forbid());
            }
            int   vrKocke   = Igra.generisiKocku();
            Potez noviPotez = new Potez(game, vrKocke, bojaIgraca);
            await GameProvider.dodajPotez(db, noviPotez);

            game.aleaIactaEst = !game.aleaIactaEst;
            bool next = false;

            if (!game.imaLiSeStaOdigrati(bojaIgraca, vrKocke))
            {
                if (vrKocke != 6)
                {
                    next          = true;
                    game.naPotezu = (Igra.redosledPoteza.Find(bojaIgraca).Next ?? Igra.redosledPoteza.First).Value;
                }
                game.aleaIactaEst = !game.aleaIactaEst;
            }
            await GameProvider.AzurirajIgru(db, game);

            await GameHubHelper.kockaBacenaNotifyAsync(_gameHub, game.groupNameGUID, vrKocke, next);

            return(Ok());
        }
Exemplo n.º 6
0
 public SetHub(GameHubHelper hub)
 {
     Hub = hub;
 }