def set_active_game(self, game_id): """Set active game id.""" if self.ongoing: raise ChainballGameError("game is live") if self._tournament is None: raise ChainballGameError("no tournament is currently active") # remove all players self.finished = False self.unregister_players([0, 1, 2, 3]) self._tournament_game_id = game_id
def activate_tournament(self, tournament_id): """Put in tournament mode.""" if self.ongoing: raise ChainballGameError("game is live") self.logger.info( "activating tournament with id {}".format(tournament_id) ) self._tournament = tournament_id
def pair_master(self): """Pair master remote.""" if self._remotes is False: raise ChainballGameError("remotes are disabled.") if self.m_remote.remote_id is not None: raise MasterRemoteAlreadyPairedError( "Already paired to {}".format(self.m_remote.remote_id) ) # pair self.pair_handler.start_pair("master", self.game_config.pair_timeout)
def enable_remotes(self): """Enable remotes.""" if self._remotes: return if self.ongoing: raise ChainballGameError( "cannot change scoring mode with live game" ) self._initialize_remote_subsystem() self._start_remote_subsystem() self._remotes = True
def pair_end(self, player, remote_id): """Finish pairing remote.""" if self._remotes is False: raise ChainballGameError("remotes are disabled.") if player == "master": self.m_remote.remote_id = remote_id self.logger.info( "Paired remote {} as the master remote".format(remote_id) ) return self.players[player].remote_id = remote_id self.logger.info( "Paired player {} to remote {}".format( player, self.players[player].remote_id ) )
def pair_remote(self, player): """Pair a players remote.""" if self._remotes is False: raise ChainballGameError("remotes are disabled.") if player not in self.players: raise KeyError("Invalid player") if self.players[player].registered is False: raise PlayerNotRegisteredError("Player not registered") if self.players[player].remote_id: raise PlayerAlreadyPairedError( "Already paired to {}".format(self.players[player].remote_id) ) # start pairing self.pair_handler.start_pair(player, self.game_config.pair_timeout)
def disable_remotes(self): """Disable remotes.""" if self._remotes is False: return if self.ongoing: raise ChainballGameError( "cannot change scoring mode with live game." ) # stop self.rf_handler.stop() self.rf_handler.join() # delete self.rf_handler = None self.pair_handler = None self.m_remote = None self._remotes = False
def unpair_remote(self, player): """Unpair a players remote.""" if self._remotes is False: raise ChainballGameError("remotes are disabled") if player not in self.players: raise KeyError("Invalid Player") if self.players[player].registered is False: raise PlayerNotRegisteredError("Player not registered") if self.players[player].remote_id is None: raise PlayerNotPairedError("Player not paired to a remote") self.logger.info( "Unpairing remote {} for player {}".format( self.players[player].remote_id, player ) ) self.pair_handler.stop_tracking(self.players[player].remote_id) self.players[player].remote_id = None
def unpair_master(self): """Unpair master remote.""" if self._remotes is False: raise ChainballGameError("remotes are disaled.") self.pair_handler.stop_tracking(self.m_remote.remote_id) self.m_remote.remote_id = None
def deactivate_tournament(self): """Deactivate tournament mode.""" if self.ongoing: raise ChainballGameError("game is live") self.logger.info("deactivating tournament") self._tournament = None