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()); }
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()); }
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()); }
private void WaitingForHub() { Receive <SetHub>(h => { _hub = h.Hub; Become(HubAvailable); Stash.UnstashAll(); }); ReceiveAny(_ => Stash.Stash()); }
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()); }
public SetHub(GameHubHelper hub) { Hub = hub; }