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
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
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
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)
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)