def create_game(self, player_id, game_name, player_name): session_id = SESSION_BROKER.create_session(game_name) session = SESSION_BROKER.get_session(session_id) session.add_player(player_id, player_name) self.emit("get-session-access", {"id" : session_id, "name" : game_name})
def join_game(self, player_id, session_id, player_name): try: session = SESSION_BROKER.get_session(session_id) except KeyError: self.emit("error", {"message" : "session not found"}) return if session.is_full(): self.emit("error", {"message" : "session is full"}) return session.add_player(player_id, player_name) game_name = session.get_description()["name"] self.emit("get-session-access", {"id" : session_id, "name" : game_name})
def register(self, player_id, session_id, player_name): self.player_id = player_id self.game_session = SESSION_BROKER.get_session(session_id) self.get_player().connect(self)
def emit_sessions(self): self.emit('get-sessions', sessions=SESSION_BROKER.get_sessions())
from os import path as op import tornado.web from tornadio2 import TornadioRouter, SocketServer, SocketConnection import tictactoe.connection import tictactoe.model import lobby from session_broker import SESSION_BROKER SESSION_BROKER.registerGame("tictactoe", tictactoe.model.TicTacToe) ROOT = op.normpath(op.dirname(__file__)) BASE = op.join(ROOT, "..") class MainConnection(SocketConnection): __endpoints__ = {"/tictactoe": tictactoe.connection.TicTacToeConnection, "/lobby": lobby.LobbyConnection} class FileServer(tornado.web.StaticFileHandler): def set_extra_headers(self, path): self.set_header("Cache-control", "no-cache") HANDLERS = [ (r"/app/(.*)", FileServer, {"path": op.join(BASE, "app"), "default_filename": "index.html"}), (r"/test/(.+)", FileServer, {"path": op.join(BASE, "test")}), ] GAME_ROUTER = TornadioRouter(MainConnection)