/
ltag.py
123 lines (96 loc) · 2.93 KB
/
ltag.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import flask
from flask_socketio import SocketIO, send, emit,join_room, leave_room
from time import sleep
import logging
from tinydb import TinyDB, Query
from PlayerManager import Players, PlayerDoesNotExistsError, PlayerExistsError
import eventlet
eventlet.monkey_patch()
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
p = Players()
APP = flask.Flask(__name__,static_url_path='',static_folder='build')
APP.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(APP, logger=True, cors_allowed_origins="*")
@APP.route('/')
def index():
"""Displays the index page"""
return flask.redirect('/index.html', code=302)
# @APP.route("/index.html")
# def getHome():
# """Home page"""
# return flask.send_file("build/index.html")
@APP.route("/images/<path:path>")
def images(path):
return flask.send_from_directory("build/images", path)
@APP.route('/scan')
def scan_gun():
#/scan?id=123&color=red
id = flask.request.args.get('id')
color = flask.request.args.get('color')
try:
player = p.playerByTag(id)
socketio.emit("scan", player)
except PlayerDoesNotExistsError:
socketio.emit("newScan", {"id":id, "color":color})
return id
@socketio.on("getPlayer")
def getPlayer(tag):
return p.playerByTag(tag)
@socketio.on('getPlayers')
def handle_getPlayers(json):
print("getPlayers")
print(p.allPlayers())
emit('updatePlayers', p.allPlayers(), broadcast=True)
@socketio.on('newPlayer')
def handle_json(json):
try:
print('received newPlayer: ', json)
player = p.newPlayer(json)
event = {
"type":"success",
"player":player,
"message":"Player Added"
}
emit("newPlayerAdded", event)
emit('updatePlayers', p.allPlayers(), broadcast=True)
except PlayerExistsError:
event = {
"type":"error",
"message":"That Player Already Exists"
}
emit("newPlayerError", event)
#TODO handle the errors
@socketio.on('removePlayer')
def removePlayer(player):
print(player)
p.removePlayer(player)
emit('updatePlayers', p.allPlayers(), broadcast=True)
#TODO handle the errors
@socketio.on("recover")
def handle_recover(json):
emit("My Response","Loading", broadcast=True)
@socketio.on_error()
def error_handler(e):
print('An error has occurred: ' + str(e))
@socketio.on('join')
def on_join(data):
#username = data['username']
room = 'laser_tag'
join_room(room)
send("Room Joined")
@socketio.on("updateGameStatus")
def gameStatusUpdate(status):
print("startGame Called")
emit("gameStatusUpdate", status, broadcast=True)
print("startGame Called")
@socketio.on("pauseGame")
def startGame(status):
print("pauseGame Called")
return "test"
@socketio.on("stopGame")
def startGame(status):
print("stopGame Called")
if __name__ == '__main__':
APP.debug=True
socketio.run(APP, host="0.0.0.0", port="5000")