From 5986d48269ed18e4e49117b999e1c2dbb37a4294 Mon Sep 17 00:00:00 2001 From: Simon Cross Date: Sat, 17 May 2014 15:04:17 +0200 Subject: [PATCH] Borders and better spacing and game mode for info_area. --- naja/widgets/info_area.py | 62 ++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/naja/widgets/info_area.py b/naja/widgets/info_area.py index f6fde80..a25d5bf 100644 --- a/naja/widgets/info_area.py +++ b/naja/widgets/info_area.py @@ -6,7 +6,8 @@ import pygame.locals as pgl from naja.constants import ( INFO_SIZE, ACT, KEYS, EXAMINE, PALETTE, - ACTION_TEXT_OFFSET, INFO_LEFT_PADDING, BIT_SIZE) + ACTION_TEXT_OFFSET, INFO_LEFT_PADDING, + INFO_RIGHT_PADDING, BIT_SIZE) from naja.events import finish_event from naja.resources import resources from naja.resources.mutators import EIGHT_BIT, blender @@ -48,43 +49,61 @@ class InfoAreaWidget(Widget): self.set_position(self.state.player.position) self.surface = pygame.surface.Surface(INFO_SIZE) self.surface.fill((0, 0, 0)) - # Extract actions and such from the card + + box_width = INFO_SIZE[0] - INFO_LEFT_PADDING - INFO_RIGHT_PADDING + y_offset = 0 + pos = lambda: (INFO_LEFT_PADDING, y_offset) + + # Top title title = TextWidget( - (INFO_LEFT_PADDING, 0), TITLES[self.state.gameboard.player_mode], + pos(), TITLES[self.state.gameboard.player_mode], colour=PALETTE.WHITE) title.render(self.surface) - y_offset = title.surface.get_rect().height - 4 + y_offset += title.surface.get_rect().height - 4 - # TODO: Make this better. + # Bits bits_text = ''.join('1' if bit in self.card.bitwise_operand else '0' for bit in reversed(range(8))) if self.card.bitwise_operand: bits_text = '%s %s' % ( bits_text, bit_glyphs(self.card.bitwise_operand)) - card_bits = TextBoxWidget((INFO_LEFT_PADDING, y_offset), bits_text, - box_width=(INFO_SIZE[0] - INFO_LEFT_PADDING), - colour=PALETTE.LIGHT_TURQUOISE, - bg_colour=PALETTE.BLACK) + card_bits = TextBoxWidget( + pos(), bits_text, box_width=box_width, + colour=PALETTE.LIGHT_TURQUOISE, bg_colour=PALETTE.BLACK) card_bits.render(self.surface) y_offset += card_bits.surface.get_rect().height + 4 + # Actions for choice, action in enumerate(self.card.actions): - y_offset = self.prepare_action(choice, action, y_offset) - # We cheat horribly for layout reasons + y_offset = self.prepare_action(choice, action, y_offset, box_width) + + # Hint text hint_text = HINTS[self.state.gameboard.player_mode] if self.state.gameboard.player_mode == EXAMINE: if self.card_position in self.state.player.legal_moves(): hint_text += HINT_LEGAL_MOVE - hint = TextBoxWidget((0, 0), hint_text, padding=4, - box_width=(INFO_SIZE[0] - INFO_LEFT_PADDING - 8)) + hint = TextBoxWidget( + (0, 0), hint_text, padding=4, + box_width=box_width, + border=2, border_colour=PALETTE.GREY) hint.prepare() - y_offset = ( - INFO_SIZE[1] - hint.surface.get_rect().height - BIT_SIZE[1] - - 2) - self.surface.blit(hint.surface, (INFO_LEFT_PADDING, y_offset)) - - def prepare_action(self, choice, action, y_offset): + y_offset = (INFO_SIZE[1] - hint.surface.get_rect().height + - BIT_SIZE[1] - 2) + self.surface.blit(hint.surface, pos()) + + # Game mode (puzzle, easy, standard, hard, etc ...) + game_mode = TextBoxWidget( + (0, 0), "UNKNOWN", padding=4, centre=True, + colour=PALETTE.WHITE, border=2, + bg_colour=PALETTE.BLACK, border_colour=PALETTE.BLUE, + box_width=box_width) + game_mode.prepare() + + y_offset = (INFO_SIZE[1] - BIT_SIZE[1] + 12) + self.surface.blit(game_mode.surface, pos()) + + def prepare_action(self, choice, action, y_offset, box_width): x_offset = INFO_LEFT_PADDING glyphs_x_offset = 0 glyphs_y_offset = y_offset @@ -94,8 +113,9 @@ class InfoAreaWidget(Widget): text = TextBoxWidget( (x_offset, y_offset), action.get_text(self.card), - box_width=(INFO_SIZE[0] - INFO_LEFT_PADDING - 8), - fontsize=28, colour=text_colour) + box_width=box_width, + fontsize=28, colour=text_colour, + border=2, border_colour=PALETTE.GREY) text.render(self.surface) border_colour = None -- 2.34.1