def __init__(self): super(FinalJeopardyBox, self).__init__(clutter.BoxLayout()) self.set_color(config.background_color) layout = self.get_layout_manager() layout.set_vertical(True) text = clutter.Text(config.admin_font_header, "FINAL JEOPARDY") self.add(text) self.players = game.get_players() for player in self.players: text = clutter.Text( config.admin_font, 'Player %s ($%d) wager:' % (player.name, player.score)) text.set_color('white') self.add(text) wager = clutter.Text(config.admin_font, "0") wager.set_color('white') wager.player = player wager.value = 0 wager.set_activatable(True) wager.set_reactive(True) wager.set_editable(True) wager.connect('activate', lambda actor: self.set_wager(actor)) self.add(wager) layout.set_fill(wager, True, False) correct = clutter.Text(config.admin_font, "CORRECT") correct.set_color('green') correct.player = player correct.wager = wager correct.set_reactive(True) correct.connect('button-release-event', lambda actor, event: self.correct(actor)) self.add(correct) layout.set_fill(correct, True, False) wrong = clutter.Text(config.admin_font, "WRONG") wrong.set_color('red') wrong.player = player wrong.wager = wager wrong.set_reactive(True) wrong.connect('button-release-event', lambda actor, event: self.wrong(actor)) self.add(wrong) layout.set_fill(wrong, True, False)
def __init__(self): super(FinalJeopardyBox, self).__init__(clutter.BoxLayout()) self.set_color(config.background_color) layout = self.get_layout_manager() layout.set_vertical(True) text = clutter.Text(config.admin_font_header, "FINAL JEOPARDY") self.add(text) self.players = game.get_players() for player in self.players: text = clutter.Text(config.admin_font, 'Player %s ($%d) wager:' % (player.name, player.score)) text.set_color('white') self.add(text) wager = clutter.Text(config.admin_font, "0") wager.set_color('white') wager.player = player wager.value = 0 wager.set_activatable(True) wager.set_reactive(True) wager.set_editable(True) wager.connect('activate', lambda actor: self.set_wager(actor)) self.add(wager) layout.set_fill(wager, True, False) correct = clutter.Text(config.admin_font, "CORRECT") correct.set_color('green') correct.player = player correct.wager = wager correct.set_reactive(True) correct.connect('button-release-event', lambda actor, event: self.correct(actor)) self.add(correct) layout.set_fill(correct, True, False) wrong = clutter.Text(config.admin_font, "WRONG") wrong.set_color('red') wrong.player = player wrong.wager = wager wrong.set_reactive(True) wrong.connect('button-release-event', lambda actor, event: self.wrong(actor)) self.add(wrong) layout.set_fill(wrong, True, False)
def __init__(self): super(PlayerScoreBox, self).__init__(clutter.BoxLayout()) self.set_color(config.background_color) layout = self.get_layout_manager() layout.set_vertical(True) self.players = game.get_players() self.scores = [] for player in self.players: text = clutter.Text(config.admin_font, 'Player %s score:' % player.name) text.set_color('white') self.add(text) score = clutter.Text(config.admin_font, "%d" % player.score) score.set_color('white') score.player = player self.scores.append(score) score.set_activatable(True) score.set_reactive(True) score.set_editable(True) score.connect('activate', lambda actor: self.set_score(actor)) self.add(score) layout.set_fill(score, True, False) text = clutter.Text(config.admin_font_header, "DRINKS") self.add(text) for player in self.players: drink = clutter.Text(config.admin_font, 'Player %s Drink' % player.name) drink.player = player drink.set_color('white') drink.set_reactive(True) drink.connect('button-release-event', lambda actor, event: self.drink(actor.player)) self.add(drink)
def __init__(self): super(ClueBox, self).__init__(clutter.FlowLayout(clutter.FLOW_VERTICAL)) layout = self.get_layout_manager() layout.set_column_spacing(10) layout.set_row_spacing(10) self.set_color(config.background_color) # Add clue answer and question. clue_box = clutter.Box(clutter.BoxLayout()) self.add(clue_box) clue_layout = clue_box.get_layout_manager() clue_layout.set_vertical(True) clue = game.get_selected_clue() text = clutter.Text(config.admin_font_header, "CLUE") text.set_color('white') clue_layout.pack(text, False, False, False, clutter.BOX_ALIGNMENT_START, clutter.BOX_ALIGNMENT_CENTER) text = clutter.Text(config.admin_font, "Answer\n%s" % clue.answer) text.set_color('green') clue_layout.pack(text, False, False, False, clutter.BOX_ALIGNMENT_START, clutter.BOX_ALIGNMENT_CENTER) text = clutter.Text(config.admin_font, "Question\n%s" % clue.question) text.set_color('red') clue_layout.pack(text, False, False, False, clutter.BOX_ALIGNMENT_START, clutter.BOX_ALIGNMENT_CENTER) # Add player buzz in information. buzz_box = clutter.Box(clutter.BoxLayout()) self.add(buzz_box) buzz_layout = buzz_box.get_layout_manager() buzz_layout.set_vertical(True) text = clutter.Text(config.admin_font_header, 'PLAYER BUZZES') buzz_layout.pack(text, False, False, False, clutter.BOX_ALIGNMENT_START, clutter.BOX_ALIGNMENT_CENTER) self.players = [] for player in game.get_players(): text = clutter.Text(config.admin_font, "Player %s" % player.name) text.set_color('white') text.player = player self.players.append(text) buzz_layout.pack(text, False, False, False, clutter.BOX_ALIGNMENT_START, clutter.BOX_ALIGNMENT_CENTER) if game.selected_clue.is_daily_double(): dd_box = clutter.Box(clutter.BoxLayout()) self.add(dd_box) dd_layout = dd_box.get_layout_manager() dd_layout.set_vertical(True) for player in game.get_players(): text = clutter.Text(config.admin_font, "Player %s" % player.name) text.set_color('white') text.player = player text.set_reactive(True) text.connect('button-release-event', lambda actor, event: self.choose_team(actor)) dd_box.add(text) text = clutter.Text(config.admin_font, 'Daily Double Wager:') text.set_color('white') dd_box.add(text) self.wager = clutter.Text(config.admin_font, '0') self.wager.set_color('white') self.wager.set_reactive(True) self.wager.set_editable(True) self.wager.connect( 'text-changed', lambda actor: game.set_daily_double_wager(self.get_wager())) dd_box.add(self.wager) dd_layout.set_fill(self.wager, True, False)
def __init__(self): super(ClueBox, self).__init__(clutter.FlowLayout(clutter.FLOW_VERTICAL)) layout = self.get_layout_manager() layout.set_column_spacing(10) layout.set_row_spacing(10) self.set_color(config.background_color) # Add clue answer and question. clue_box = clutter.Box(clutter.BoxLayout()) self.add(clue_box) clue_layout = clue_box.get_layout_manager() clue_layout.set_vertical(True) clue = game.get_selected_clue() text = clutter.Text(config.admin_font_header, "CLUE") text.set_color('white') clue_layout.pack(text, False, False, False, clutter.BOX_ALIGNMENT_START, clutter.BOX_ALIGNMENT_CENTER) text = clutter.Text(config.admin_font, "Answer\n%s" % clue.answer) text.set_color('green') clue_layout.pack(text, False, False, False, clutter.BOX_ALIGNMENT_START, clutter.BOX_ALIGNMENT_CENTER) text = clutter.Text(config.admin_font, "Question\n%s" % clue.question) text.set_color('red') clue_layout.pack(text, False, False, False, clutter.BOX_ALIGNMENT_START, clutter.BOX_ALIGNMENT_CENTER) # Add player buzz in information. buzz_box = clutter.Box(clutter.BoxLayout()) self.add(buzz_box) buzz_layout = buzz_box.get_layout_manager() buzz_layout.set_vertical(True) text = clutter.Text(config.admin_font_header, 'PLAYER BUZZES') buzz_layout.pack(text, False, False, False, clutter.BOX_ALIGNMENT_START, clutter.BOX_ALIGNMENT_CENTER) self.players = [] for player in game.get_players(): text = clutter.Text(config.admin_font, "Player %s" % player.name) text.set_color('white') text.player = player self.players.append(text) buzz_layout.pack(text, False, False, False, clutter.BOX_ALIGNMENT_START, clutter.BOX_ALIGNMENT_CENTER) if game.selected_clue.is_daily_double(): dd_box = clutter.Box(clutter.BoxLayout()) self.add(dd_box) dd_layout = dd_box.get_layout_manager() dd_layout.set_vertical(True) for player in game.get_players(): text = clutter.Text(config.admin_font, "Player %s" % player.name) text.set_color('white') text.player = player text.set_reactive(True) text.connect('button-release-event', lambda actor, event: self.choose_team(actor)) dd_box.add(text) text = clutter.Text(config.admin_font, 'Daily Double Wager:') text.set_color('white') dd_box.add(text) self.wager = clutter.Text(config.admin_font, '0') self.wager.set_color('white') self.wager.set_reactive(True) self.wager.set_editable(True) self.wager.connect('text-changed', lambda actor: game.set_daily_double_wager(self.get_wager())) dd_box.add(self.wager) dd_layout.set_fill(self.wager, True, False)
def __init__(self): super(GUI, self).__init__() logging.info('Initializing game gui.') self.admin = Admin() self.gui_state = self.SHOW_GAME_BOARD # Set the stage background to grey. self.set_color(config.stage_background_color) # Connect callback listeners logging.info('Setting up game stage signals.') self.connect('destroy', clutter.main_quit) self.connect('key-press-event', self.on_press) self.connect('button-release-event', self.on_click) self.connect('allocation-changed', self.on_allocation_changed) self.board_box = clutter.Box(clutter.BoxLayout()) board_box_layout = self.board_box.get_layout_manager() # Instantiate the game board which is the collection of squares to show # on screen. self.game_board = GameBoard() board_box_layout.pack(self.game_board, True, True, True, clutter.BOX_ALIGNMENT_CENTER, clutter.BOX_ALIGNMENT_CENTER) # Determine whether or not to display player scores. self.player_score_box = None if config.display_player_scores: self.player_score_box = PlayerScoreBox(game.get_players()) self.player_score_box.set_width(0.1 * self.get_width()) if config.player_scores_position == 'east': layout = self.player_score_box.get_layout_manager() layout.set_vertical(True) board_box_layout.pack(self.player_score_box, True, True, True, clutter.BOX_ALIGNMENT_CENTER, clutter.BOX_ALIGNMENT_CENTER) if config.player_scores_position == 'south': layout = self.player_score_box.get_layout_manager() layout.set_vertical(False) board_box_layout.pack(self.player_score_box, True, True, True, clutter.BOX_ALIGNMENT_CENTER, clutter.BOX_ALIGNMENT_CENTER) else: self.board_box.add(self.player_score_box) # Add the box with the board in it to the screen. self.add(self.board_box) # Overlay box for displaying clue information and answers self.clue_overlay = ClueOverlay() self.clue_overlay.set_size(self.get_width(), self.get_height()) self.add(self.clue_overlay) self.clue_overlay.set_opacity(0) # Overlay box for display category information. self.category_overlay = CategoryOverlay() self.category_overlay.set_size(self.get_width(), self.get_height()) # Overlay box for displaying which player buzzed in. self.player_buzz_overlay = PlayerBuzzOverlay() self.player_buzz_overlay.set_size(self.get_width(), self.get_height()) self.player_buzz_overlay.set_opacity(0) self.add(self.player_buzz_overlay) # Overlay box for displaying player score. self.player_score_overlay = PlayerScoreOverlay() self.player_score_overlay.set_size(self.get_width(), self.get_height()) self.player_score_overlay.set_opacity(0) self.add(self.player_score_overlay) # Overlay box for daily double. self.daily_double_overlay = DailyDoubleOverlay() self.daily_double_overlay.set_size(self.get_width(), self.get_height()) self.daily_double_overlay.set_opacity(0) self.add(self.daily_double_overlay) # Overlay box for final round. self.final_round_overlay = FinalRoundOverlay() self.final_round_overlay.set_size(self.get_width(), self.get_height()) self.final_round_overlay.set_opacity(0) self.add(self.final_round_overlay) # Overlay box for displaying all player scores. self.all_player_scores_overlay = AllPlayerScoresOverlay() self.all_player_scores_overlay.set_size(self.get_width(), self.get_height()) self.all_player_scores_overlay.set_opacity(0) self.add(self.all_player_scores_overlay) self.flashing_scores = False # Set a default stage size. self.set_fullscreen(False) self.set_size(800, 600) self.set_user_resizable(True) self.show()