X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Finfo_area.py;h=1ff6bbbd92168e52ec12c4a489cf6f54638f95a7;hb=d26dffb73ba125fc76931375365b10060cf5d892;hp=36b375533f0c497f68f80151b7e9357b8f64b792;hpb=3d79546358ef6a9a418fc2150daaf199365ae88f;p=naja.git diff --git a/naja/widgets/info_area.py b/naja/widgets/info_area.py index 36b3755..1ff6bbb 100644 --- a/naja/widgets/info_area.py +++ b/naja/widgets/info_area.py @@ -17,6 +17,7 @@ from naja.utils import bit_glyphs from naja.widgets.base import Widget from naja.widgets.tile import BIT_MAP from naja.widgets.text import TextBoxWidget, TextWidget +from naja import constants HINTS = { @@ -43,6 +44,8 @@ class InfoAreaWidget(Widget): self.chosen = None self.card_position = state.player.position self.set_position(state.player.position) + self.flash_count = 0 + self.flash_light = True def prepare(self): if self.state.gameboard.player_mode == ACT: @@ -54,24 +57,21 @@ class InfoAreaWidget(Widget): y_offset = 0 pos = lambda: (INFO_LEFT_PADDING, y_offset) - # Top title - title = TextWidget( - pos(), TITLES[self.state.gameboard.player_mode], - colour=PALETTE.WHITE) - title.render(self.surface) - y_offset += title.surface.get_rect().height - 4 - # Bits + y_offset += 12 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( - 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 + (0, 0), bits_text, padding=4, centre=True, + colour=PALETTE.WHITE, border=2, + bg_colour=PALETTE.BLACK, border_colour=PALETTE.BLUE, + box_width=box_width) + card_bits.prepare() + self.surface.blit(card_bits.surface, pos()) + y_offset += card_bits.surface.get_rect().height + 12 # Actions for choice, action in enumerate(self.card.actions): @@ -116,7 +116,7 @@ class InfoAreaWidget(Widget): def prepare_action(self, choice, action, y_offset, box_width): x_offset = INFO_LEFT_PADDING - glyphs_x_offset = 0 + glyphs_x_offset = 2 glyphs_y_offset = y_offset y_offset += ACTION_TEXT_OFFSET action_viable = action.check_available(self.state.player) @@ -131,7 +131,13 @@ class InfoAreaWidget(Widget): border_colour = None if choice == self.chosen: - border_colour = PALETTE.GREEN if action_viable else PALETTE.ORANGE + if self.flash_light: + border_colour = (PALETTE.GREEN if action_viable else + PALETTE.ORANGE) + else: + border_colour = (PALETTE.DARK_GREEN if action_viable else + PALETTE.DARK_RED) + if border_colour: bottom = y_offset + text.surface.get_rect().height right = text.surface.get_rect().width + x_offset @@ -182,6 +188,11 @@ class InfoAreaWidget(Widget): self.chosen = None def draw(self, surface): + self.flash_count += 1 + if self.flash_count >= (constants.FPS // 2): + self.flash_light = not self.flash_light + self.flash_count = 0 + self.prepare() surface.blit(self.surface, self.pos) def next_action(self, viable_only=False, step=1):