X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Finfo_area.py;h=0022b7351868c37efe0d0701c193ecc3a4c75502;hb=3a29cd975cba07c2b0683e2d5449de37de9842f3;hp=6b4e78917e5d01e91f13cf45d89a0d055b1cb5e4;hpb=908c70765d278ba33e377687aa2292135d94d818;p=naja.git diff --git a/naja/widgets/info_area.py b/naja/widgets/info_area.py index 6b4e789..0022b73 100644 --- a/naja/widgets/info_area.py +++ b/naja/widgets/info_area.py @@ -10,6 +10,7 @@ from naja.events import finish_event from naja.resources import resources from naja.resources.mutators import EIGHT_BIT from naja.sound import sound +from naja.utils import bit_glyphs from naja.widgets.base import Widget from naja.widgets.tile import BIT_MAP @@ -48,14 +49,20 @@ class InfoAreaWidget(Widget): self.surface.fill((0, 0, 0)) # Extract actions and such from the card title = TextWidget((0, 0), TITLES[self.state.gameboard.player_mode], - colour=(255, 255, 255)) + colour=PALETTE.WHITE) title.render(self.surface) y_offset = title.surface.get_rect().height + 8 # TODO: Make this better. bits_text = ''.join('1' if bit in self.card.bitwise_operand else '0' for bit in reversed(range(8))) - card_bits = TextWidget((0, y_offset), bits_text, colour=(255, 255, 0)) + if self.card.bitwise_operand: + bits_text = '%s %s' % ( + bits_text, bit_glyphs(self.card.bitwise_operand)) + card_bits = TextBoxWidget((0, y_offset), bits_text, + box_width=INFO_SIZE[0], + colour=PALETTE.LIGHT_TURQUOISE, + bg_colour=PALETTE.BLACK) card_bits.render(self.surface) y_offset += card_bits.surface.get_rect().height + 8 @@ -113,7 +120,7 @@ class InfoAreaWidget(Widget): def draw(self, surface): surface.blit(self.surface, self.pos) - def next_viable_action(self, step=1): + def next_action(self, viable_only=False, step=1): num_actions = len(self.card.actions) if num_actions == 0: return @@ -123,12 +130,12 @@ class InfoAreaWidget(Widget): # loop through each action at most once. chosen = (chosen + step) % num_actions action = self.card.actions[chosen] - if action.check_available(player): - sound.play_sound('change_action.ogg', volume=0.05) + if not viable_only or action.check_available(player): + sound.play_sound('zoop.ogg', volume=0.05) self.chosen = chosen - def prev_viable_action(self): - return self.next_viable_action(step=-1) + def prev_action(self, viable_only=False): + return self.next_action(viable_only=viable_only, step=-1) def try_perform_action(self): player = self.state.player @@ -136,6 +143,7 @@ class InfoAreaWidget(Widget): if not action.check_available(player): sound.play_sound('error.ogg') else: + sound.play_sound('chirp.ogg', volume=0.5) action.perform_action(self.state.gameboard, self.card) self.state.gameboard.replace_card(player.position) self.state.gameboard.change_mode(EXAMINE) @@ -149,12 +157,12 @@ class InfoAreaWidget(Widget): self.try_perform_action() return finish_event() if ev.key in KEYS.UP: - self.next_viable_action() + self.next_action() return finish_event() if ev.key in KEYS.DOWN: - self.prev_viable_action() + self.prev_action() return finish_event() if ev.key in KEYS.SWITCH: - self.next_viable_action() + self.next_action(viable_only=True) return finish_event() return super(InfoAreaWidget, self).handle_event(ev)