X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Finfo_area.py;h=c92a0b021e4fea18c3389351fbb46a6ffb4362cb;hb=1521f5cdb98df760ed59746901bfbc212c7466a4;hp=5f19a1ed77435c84c58a897992b72b768db87dc1;hpb=d547c9cfce2e4bdeb1beacf7c124d40a29ca65e8;p=naja.git diff --git a/naja/widgets/info_area.py b/naja/widgets/info_area.py index 5f19a1e..c92a0b0 100644 --- a/naja/widgets/info_area.py +++ b/naja/widgets/info_area.py @@ -74,24 +74,25 @@ class InfoAreaWidget(Widget): self.surface.blit(hint.surface, (4, y_offset)) def prepare_action(self, choice, action, y_offset): + x_offset = 18 + action_viable = action.check_available(self.state.player) + text_colour = PALETTE.BLACK if action_viable else PALETTE.GREY + text = TextBoxWidget( - (18, y_offset), action.get_text(), + (x_offset, y_offset), action.get_text(), box_width=(INFO_SIZE[0] - 16) // EIGHT_BIT_SCALE, - fontsize=28) + fontsize=28, colour=text_colour) text.render(self.surface) + border_colour = None - if not action.check_available(self.state.player): - border_colour = PALETTE.ORANGE + (255,) - elif choice == self.chosen: - border_colour = PALETTE.PINK + (128,) - else: - border_colour = PALETTE.GREEN + (128,) + if choice == self.chosen: + border_colour = PALETTE.GREEN if action_viable else PALETTE.ORANGE if border_colour: bottom = y_offset + text.surface.get_rect().height - right = text.surface.get_rect().width + 18 + right = text.surface.get_rect().width + x_offset pygame.draw.lines(self.surface, border_colour, True, - [(18, y_offset), (right, y_offset), - (right, bottom), (18, bottom)], 4) + [(x_offset, y_offset), (right, y_offset), + (right, bottom), (x_offset, bottom)], 4) if action.required_bits: img_name = BIT_MAP[action.required_bits].replace( '.png', '_small.png') @@ -112,7 +113,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 @@ -122,12 +123,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 @@ -135,6 +136,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) @@ -148,12 +150,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)