playing cards per websocket now :)
This commit is contained in:
@ -33,22 +33,14 @@ def index(req, resp):
|
||||
@api.route("/control/next_hand/")
|
||||
async def start_next_hand(req, resp):
|
||||
the_game.next_hand()
|
||||
for ws in the_game.websockets:
|
||||
try:
|
||||
await ws.send_text("reload")
|
||||
except Exception as e:
|
||||
pass
|
||||
await the_game.send_page_reload()
|
||||
api.redirect(resp, '/control/', status_code=303)
|
||||
|
||||
|
||||
@api.route("/control/next_trick/")
|
||||
async def start_next_trick(req, resp):
|
||||
the_game.next_trick()
|
||||
for ws in the_game.websockets:
|
||||
try:
|
||||
await ws.send_text("reload")
|
||||
except Exception as e:
|
||||
pass
|
||||
await the_game.send_page_reload()
|
||||
api.redirect(resp, '/control/', status_code=303)
|
||||
|
||||
|
||||
@ -60,11 +52,7 @@ async def undo_last(req, resp):
|
||||
p, c = the_game.played_cards.pop()
|
||||
the_game.active_player -= 1
|
||||
p.add_card(c)
|
||||
for ws in the_game.websockets:
|
||||
try:
|
||||
await ws.send_text("reload")
|
||||
except Exception as e:
|
||||
pass
|
||||
await the_game.send_page_reload()
|
||||
else:
|
||||
if the_game.num_tricks_played > 0:
|
||||
the_game.num_tricks_played -= 1;
|
||||
@ -75,10 +63,7 @@ async def undo_last(req, resp):
|
||||
the_game.players_ordered = [p for p, _ in the_game.played_cards]
|
||||
p, c = the_game.played_cards.pop()
|
||||
p.add_card(c)
|
||||
for ws in the_game.websockets:
|
||||
try:
|
||||
await ws.send_text("reload")
|
||||
except Exception as e:
|
||||
pass
|
||||
await the_game.send_page_reload()
|
||||
|
||||
api.redirect(resp, '/control/', status_code=303)
|
||||
|
||||
|
@ -28,19 +28,15 @@ def show(req, resp, player: str):
|
||||
trump_card=tcard, trump_color=tcolor, played_cards=the_game.played_cards, last_trick=the_game.last_trick)
|
||||
|
||||
|
||||
@api.route("/player/{player}/play/{card}")
|
||||
async def play(req, resp, player: str, card: str):
|
||||
p = int(player)
|
||||
c = int(card)
|
||||
|
||||
async def play_card(player, card):
|
||||
global playing_lock
|
||||
async with playing_lock:
|
||||
try:
|
||||
isActive = the_game.players_ordered[the_game.active_player].id == p
|
||||
isActive = the_game.players_ordered[the_game.active_player].id == player
|
||||
except IndexError:
|
||||
isActive = False
|
||||
if isActive:
|
||||
the_game.play_card(p, c)
|
||||
the_game.play_card(player, card)
|
||||
if the_game.is_hand_finished():
|
||||
trick_winner, highest_card = the_game.get_trick_winner()
|
||||
trick_winner.take_trick()
|
||||
@ -48,13 +44,15 @@ async def play(req, resp, player: str, card: str):
|
||||
trick_winner, highest_card = the_game.get_trick_winner()
|
||||
trick_winner.take_trick()
|
||||
the_game.next_trick()
|
||||
await the_game.send_page_reload()
|
||||
|
||||
|
||||
@api.route("/player/{player}/play/{card}")
|
||||
async def play(req, resp, player: str, card: str):
|
||||
p = int(player)
|
||||
c = int(card)
|
||||
play_card(p, c)
|
||||
url = '/player/'+player
|
||||
for ws in the_game.websockets:
|
||||
try:
|
||||
await ws.send_text("reload")
|
||||
except Exception as e:
|
||||
pass
|
||||
api.redirect(resp, url, status_code=303)
|
||||
|
||||
@api.route("/player/{player}/set_trump/{trump}")
|
||||
@ -62,11 +60,7 @@ async def set_trump_color(req, resp, player, trump):
|
||||
p = int(player)
|
||||
the_game.set_trump_color(trump)
|
||||
url = '/player/'+player
|
||||
for ws in the_game.websockets:
|
||||
try:
|
||||
await ws.send_text("reload")
|
||||
except Exception as e:
|
||||
pass
|
||||
await the_game.send_page_reload()
|
||||
api.redirect(resp, url, status_code=303)
|
||||
|
||||
|
||||
@ -75,7 +69,11 @@ async def websocket(ws):
|
||||
await ws.accept()
|
||||
the_game.websockets.append(ws)
|
||||
try:
|
||||
foo = await ws.receive_text()
|
||||
cmd = await ws.receive_text()
|
||||
fct, args = cmd.split()
|
||||
if fct == "playcard":
|
||||
p, c = map(int, args.split(':'))
|
||||
await play_card(p, c)
|
||||
except WebSocketDisconnect:
|
||||
the_game.websockets.remove(ws)
|
||||
|
||||
|
Reference in New Issue
Block a user