Add main socket communication
This commit is contained in:
+58
-7
@@ -1,13 +1,8 @@
|
||||
import json
|
||||
import socket
|
||||
import string
|
||||
from flask_socketio import SocketIO, emit, disconnect, join_room
|
||||
from flask import session, copy_current_request_context
|
||||
from api.utils import get_points_sums, sort_card_list
|
||||
from flask_socketio import SocketIO, emit, join_room
|
||||
from bridzik import Bridzik, BridzikException, Card, Card_colors, Card_values
|
||||
from flask import Flask
|
||||
from config import Config
|
||||
from flask import request
|
||||
|
||||
async_mode = None
|
||||
app = Flask(__name__)
|
||||
@@ -18,8 +13,64 @@ socket_ = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet', logger=
|
||||
|
||||
bridzikInstance = Bridzik()
|
||||
|
||||
players = ['', '', '', '']
|
||||
players = []
|
||||
|
||||
|
||||
@socket_.on('register_player')
|
||||
def register_player(name: string):
|
||||
if(len(players) < 4):
|
||||
players.append(name)
|
||||
player_id = len(players) - 1
|
||||
join_room(player_id)
|
||||
get_players_status()
|
||||
sendPlayersNames()
|
||||
emit('register_player',{ 'id_player': player_id}, room=player_id)
|
||||
|
||||
else:
|
||||
send_error('Prekroceny pocet hracov')
|
||||
|
||||
@socket_.on('reconnect_to_game')
|
||||
def reconnect_to_game():
|
||||
get_players_status()
|
||||
|
||||
|
||||
@socket_.on('game_status')
|
||||
def get_players_status():
|
||||
for player_id in range(len(players)):
|
||||
emit('game_status', {'data': 'game_status', 'playerName': players[player_id],
|
||||
'playerNumber': player_id, 'status': json.loads(json.dumps(bridzikInstance.get_status(player_id), cls=Card.JSONEncoder))}, room=player_id)
|
||||
|
||||
@socket_.on('add_quess')
|
||||
def add_quess(message):
|
||||
print(message)
|
||||
app.logger.info('Message from user', message)
|
||||
try:
|
||||
bridzikInstance.add_player_guess(int(message['playerNumber']), int(message['quess']))
|
||||
get_players_status()
|
||||
except BridzikException:
|
||||
send_error('Nie je možné zadať tip.')
|
||||
|
||||
@socket_.on('play_card')
|
||||
def play_card(message):
|
||||
color, value = message['card'].split('_')
|
||||
try:
|
||||
card = Card(Card_colors[color], Card_values[value])
|
||||
except KeyError:
|
||||
send_error('Chyba. Opakuj pokus znovu.')
|
||||
try:
|
||||
print(message['playerNumber'], card)
|
||||
bridzikInstance.play_card(message['playerNumber'], card)
|
||||
get_players_status()
|
||||
except BridzikException:
|
||||
get_players_status()
|
||||
send_error('Nie je možné zahrať kartu.')
|
||||
|
||||
@socket_.on('all_names')
|
||||
def sendPlayersNames():
|
||||
emit('all_names', {'data': 'players_names', 'players': players}, broadcast=True)
|
||||
|
||||
@socket_.on('error')
|
||||
def send_error(message: string):
|
||||
emit('error',{'error': message})
|
||||
|
||||
socket_.run(app, debug=True, host="0.0.0.0", port="5000" )
|
||||
|
||||
Reference in New Issue
Block a user