def onleavegame(self, peer, packet): player = self.players[peer.data] if player.game is None: self.error(peer, "You are not inside a game") return self.call_callbacks("leavegame", player.game, player) self.send(peer, packets.cmd_ok())
def onchangecolor(self, player, packet): # NOTE: that event _only_ happens inside a lobby if player.game is None: # just ignore if not inside a game self.send(player.peer, packets.cmd_ok()) return # ignore change to same color if player.color == packet.playercolor: return game = player.game # don't send packets to already started games if not game.is_open(): return # make sure player colors are unique for _player in game.players: if _player.color == packet.playercolor: self.error( player, __("There's already a player with your color inside this game.") + " " + __("Unable to change your color."), ) return # ACK the change logging.debug( "[CHANGECOLOR] [%s] Player:%s %s -> %s" % (game.uuid, player.name, player.color, packet.playercolor) ) player.color = packet.playercolor for _player in game.players: self.send(_player.peer, packets.server.data_gamestate(game))
def on_changecolor(self, player: Player, packet: packets.client.cmd_changecolor): """ Player wants to change its color. NOTE: that event _only_ happens inside a lobby """ if player.game is None: # just ignore if not inside a game self.send(player.peer, packets.cmd_ok()) return # ignore change to same color if player.color == packet.playercolor: return game = player.game # don't send packets to already started games if not game.is_open(): return # make sure player colors are unique if packet.playercolor in [p.color for p in game.players]: self.error(player, T("There's already a player with your color inside this game.") + " " + T("Unable to change your color.")) return # ACK the change logging.debug("[CHANGECOLOR] [{}] Player:{} {} -> {}". format(game.uuid, player.name, player.color, packet.playercolor)) player.color = packet.playercolor self.send_to_game(game, packets.server.data_gamestate(game))
def onchangename(self, peer, packet): # NOTE: that event _only_ happens inside a lobby if not len(packet.playername): self.error(peer, "You must have a non empty name") return player = self.players[peer.data] if player.game is None: # just ignore if not inside a game self.send(peer, packets.cmd_ok()) return game = player.game # don't send packets to already started games if game.state is not Game.State.Open: return # ignore change to existing name if player.name == packet.playername: return # make sure player names are unique unique = True for _player in game.players: if _player.name == packet.playername: unique = False break if not unique: self.error(peer, "There's already a player with your name inside this game. Unable to change your name") return logging.debug("[CHANGENAME] [%s] %s -> %s" % (game.uuid, player.name, packet.playername)) player.name = packet.playername if game.creator_sid == player.sid: game.creator = player.name for _player in game.players: self.send(_player.peer, packets.server.data_gamestate(game))
def onchangecolor(self, peer, packet): # NOTE: that event _only_ happens inside a lobby if packet.playercolor is None: self.error(peer, "You must have a color") return player = self.players[peer.data] if player.game is None: # just ignore if not inside a game self.send(peer, packets.cmd_ok()) return game = player.game # don't send packets to already started games if game.state is not Game.State.Open: return # ignore change to same color if player.color == packet.playercolor: return # make sure player colors are unique unique = True for _player in game.players: if _player.color == packet.playercolor: unique = False break if not unique: self.error(peer, "There's already a player with your color inside this game. Unable to change your color") return logging.debug("[CHANGECOLOR] [%s] Player:%s %s -> %s" % (game.uuid, player.name, player.color, packet.playercolor)) player.color = packet.playercolor for _player in game.players: self.send(_player.peer, packets.server.data_gamestate(game))
def onchangename(self, player, packet): # NOTE: that event _only_ happens inside a lobby if player.game is None: # just ignore if not inside a game self.send(player.peer, packets.cmd_ok()) return # ignore change to existing name if player.name == packet.playername: return game = player.game # don't send packets to already started games if not game.is_open(): return # make sure player names are unique for _player in game.players: if _player.name == packet.playername: self.error(player, __("There's already a player with your name inside this game. Unable to change your name")) return # ACK the change logging.debug("[CHANGENAME] [%s] %s -> %s" % (game.uuid, player.name, packet.playername)) player.name = packet.playername for _player in game.players: self.send(_player.peer, packets.server.data_gamestate(game))
def onchangename(self, player, packet): # NOTE: that event _only_ happens inside a lobby if player.game is None: # just ignore if not inside a game self.send(player.peer, packets.cmd_ok()) return # ignore change to existing name if player.name == packet.playername: return game = player.game # don't send packets to already started games if not game.is_open(): return # make sure player names are unique for _player in game.players: if _player.name == packet.playername: self.error( player, __("There's already a player with your name inside this game." ) + " " + __("Unable to change your name.")) return # ACK the change logging.debug("[CHANGENAME] [{0!s}] {1!s} -> {2!s}".format( game.uuid, player.name, packet.playername)) player.name = packet.playername for _player in game.players: self.send(_player.peer, packets.server.data_gamestate(game))
def onchangecolor(self, player, packet): # NOTE: that event _only_ happens inside a lobby if player.game is None: # just ignore if not inside a game self.send(player.peer, packets.cmd_ok()) return # ignore change to same color if player.color == packet.playercolor: return game = player.game # don't send packets to already started games if not game.is_open(): return # make sure player colors are unique for _player in game.players: if _player.color == packet.playercolor: self.error(player, __("There's already a player with your color inside this game.") + " " + __("Unable to change your color.")) return # ACK the change logging.debug("[CHANGECOLOR] [%s] Player:%s %s -> %s" % (game.uuid, player.name, player.color, packet.playercolor)) player.color = packet.playercolor for _player in game.players: self.send(_player.peer, packets.server.data_gamestate(game))
def on_leavegame(self, player: Player, packet: packets.client.cmd_leavegame): """ Player wants to leave the current game. """ if player.game is None: self.error(player, T("You are not inside a game")) return self.events.broadcast("leavegame", player) self.send(player.peer, packets.cmd_ok())
def on_sessionprops(self, player: Player, packet: packets.client.cmd_sessionprops): """ Client sends us specific settings / preferences for this session, for example the language. """ logging.debug("[PROPS] {}".format(player)) if hasattr(packet, 'lang'): if packet.lang in self.i18n: player.gettext = self.i18n[packet.lang].gettext self.send(player.peer, packets.cmd_ok())
def onchat(self, player, packet): if player.game is None: # just ignore if not inside a game self.send(player.peer, packets.cmd_ok()) return game = player.game # don't send packets to already started games if not game.is_open(): return logging.debug("[CHAT] [%s] %s: %s" % (game.uuid, player, packet.chatmsg)) for _player in game.players: self.send(_player.peer, packets.server.cmd_chatmsg(player.name, packet.chatmsg))
def onpktleavegame(self, peer, packet): game = player = None for _game in self.games: for _player in _game.players: if _player.address == peer.address: game = _game player = _player break if game is None or player is None: self.send(peer, packets.cmd_error("You are an unknown player")) return self.call_callbacks("leavegame", game, player) self.send(peer, packets.cmd_ok())
def on_chat(self, player: Player, packet: packets.client.cmd_chatmsg): """ Player send a chat message. """ if player.game is None: # just ignore if not inside a game self.send(player.peer, packets.cmd_ok()) return game = player.game # don't send packets to already started games if not game.is_open(): return logging.debug("[CHAT] [{}] {}: {}".format(game.uuid, player, packet.chatmsg)) self.send_to_game(game, packets.server.cmd_chatmsg(player.name, packet.chatmsg))
def onleavegame(self, player, packet): if player.game is None: self.error(player, __("You are not inside a game")) return self.call_callbacks("leavegame", player) self.send(player.peer, packets.cmd_ok())
def onsessionprops(self, player, packet): logging.debug("[PROPS] %s" % (player)) if hasattr(packet, "lang"): if packet.lang in self.i18n: player.gettext = self.i18n[packet.lang] self.send(player.peer, packets.cmd_ok())
def onsessionprops(self, player, packet): logging.debug("[PROPS] %s" % (player)) if hasattr(packet, 'lang'): if packet.lang in self.i18n: player.gettext = self.i18n[packet.lang] self.send(player.peer, packets.cmd_ok())
def onsessionprops(self, player, packet): logging.debug("[PROPS] {0!s}".format(player)) if hasattr(packet, 'lang'): if packet.lang in self.i18n: player.gettext = self.i18n[packet.lang] self.send(player.peer, packets.cmd_ok())