import pygame.locals as pgl
from naja.constants import (INFO_SIZE, EIGHT_BIT_SCALE, ACT, KEYS,
- EXAMINE)
+ EXAMINE, PALETTE)
from naja.events import finish_event
from naja.resources import resources
from naja.resources.mutators import EIGHT_BIT
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)
- # self.chosen may be None, in which case we don't draw the border.
+
+ border_colour = None
if choice == self.chosen:
- if not action.check_available(self.state.player):
- colour = (255, 0, 0, 255)
- else:
- colour = (255, 255, 0, 128)
+ 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 + 12
- pygame.draw.lines(self.surface, colour, True,
- [(18, y_offset), (right, y_offset),
- (right, bottom), (18, bottom)], 4)
+ right = text.surface.get_rect().width + x_offset
+ pygame.draw.lines(self.surface, border_colour, True,
+ [(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')
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
# 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
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)