def __init__(self, game_state): self.game_state = game_state self.tick_func = self._solicit_word_tick self.process_func = None self.clue_word = None self.clue_num = None self.spymaster_manager = SpymasterManager(game_state)
class ClueInputHandler: def __init__(self, game_state): self.game_state = game_state self.tick_func = self._solicit_word_tick self.process_func = None self.clue_word = None self.clue_num = None self.spymaster_manager = SpymasterManager(game_state) def process(self, data): if self.process_func: self.process_func(data) def tick(self): if self.tick_func: self.tick_func() def _solicit_word_tick(self): spymaster = self.spymaster_manager.get_spymaster() self.process_func = self._process_word spymaster.chat.message("What is your one word clue?") self.tick_func = None def _process_word(self, data): spymaster = self.spymaster_manager.get_spymaster() if self.spymaster_manager.is_private_message(data): text = data['text'].strip() if len(text.split(" ")) > 1: spymaster.chat.message( "Invalid input! One word only! Please try again...") else: self.clue_word = text self.process_func = self._process_number spymaster.chat.message("What is your clue number? [0-999]") def _process_number(self, data): if self.spymaster_manager.is_private_message(data): text = data['text'].strip() guess_count = 0 try: guess_count = int(text) except ValueError: spymaster = self.spymaster_manager.get_spymaster() spymaster.chat.message("Invalid Input! Enter a number [0-999]") return self.clue_num = text self._display_clue(self.clue_word, self.clue_num) self.game_state.clue_input_complete(guess_count) def _display_clue(self, clue_word, clue_num): self.game_state.chat.message("*{}:* your clue is: `{} {}`".format( self.game_state.board.current_team, clue_word, clue_num)) self.game_state.chat.message( "If you feel the clue is against the rules message `{}`\nTo guess use `{} WORD`\nTo stop guessing use: `{}`\nRemember anyone on your team can guess, so consult carefully before guessing!" .format(INVALID_CLUE_COMMAND, GUESS_COMMAND, GUESS_STOP_COMMAND))
class ClueInputHandler: def __init__(self, game_state): self.game_state = game_state self.tick_func = self._solicit_word_tick self.process_func = None self.clue_word = None self.clue_num = None self.spymaster_manager = SpymasterManager(game_state) def process(self, data): if self.process_func: self.process_func(data) def tick(self): if self.tick_func: self.tick_func() def _solicit_word_tick(self): spymaster = self.spymaster_manager.get_spymaster() self.process_func = self._process_word spymaster.chat.message("What is your one word clue?") self.tick_func = None def _process_word(self, data): spymaster = self.spymaster_manager.get_spymaster() if self.spymaster_manager.is_private_message(data): text = data['text'].strip() if len(text.split(" ")) > 1: spymaster.chat.message("Invalid input! One word only! Please try again...") else: self.clue_word = text self.process_func = self._process_number spymaster.chat.message("What is your clue number? [0-999]") def _process_number(self, data): if self.spymaster_manager.is_private_message(data): text = data['text'].strip() guess_count = 0 try: guess_count = int(text) except ValueError: spymaster = self.spymaster_manager.get_spymaster() spymaster.chat.message("Invalid Input! Enter a number [0-999]") return self.clue_num = text self._display_clue(self.clue_word, self.clue_num) self.game_state.clue_input_complete(guess_count) def _display_clue(self, clue_word, clue_num): self.game_state.chat.message("*{}:* your clue is: `{} {}`".format(self.game_state.board.current_team, clue_word, clue_num)) self.game_state.chat.message("If you feel the clue is against the rules message `{}`\nTo guess use `{} WORD`\nTo stop guessing use: `{}`\nRemember anyone on your team can guess, so consult carefully before guessing!".format(INVALID_CLUE_COMMAND, GUESS_COMMAND, GUESS_STOP_COMMAND))
class ResolveInvalidHandler: def __init__(self, game_state): self.game_state = game_state self.board = game_state.board self.spymaster_manager = SpymasterManager(game_state) self.chat = game_state.chat def start(self): spymaster = self.spymaster_manager.get_spymaster() spymaster.chat.message("Pick a word to reveal:") def process(self, data): if self.spymaster_manager.is_private_message(data): word = data['text'].upper().strip() if word not in self.board.current_board or word[0] == ":": spymaster = self.spymaster_manager.get_spymaster() spymaster.chat.message("Invalid! Please try again...") else: self.board.update_board_reveal_secret(word) self.chat.message("Still {}'s turn. Getting next clue...".format(self.board.current_team)) self.game_state.resolve_invalid_handler_complete()
def __init__(self, game_state): self.game_state = game_state self.board = game_state.board self.spymaster_manager = SpymasterManager(game_state) self.chat = game_state.chat