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))
Beispiel #5
0
	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))
Beispiel #6
0
	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))
Beispiel #7
0
    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))
Beispiel #9
0
	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))
Beispiel #10
0
	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_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())
Beispiel #12
0
	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 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())
Beispiel #14
0
	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 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))
Beispiel #16
0
	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))
Beispiel #18
0
	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())
Beispiel #21
0
	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())
Beispiel #22
0
	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())
Beispiel #23
0
	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())