X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Finfo_area.py;h=ef3f017fbc4b661efaa1d42ed89909909b11961c;hb=d1c5ae73b379be0929e0260853875baee7261b9a;hp=0022b7351868c37efe0d0701c193ecc3a4c75502;hpb=3a29cd975cba07c2b0683e2d5449de37de9842f3;p=naja.git diff --git a/naja/widgets/info_area.py b/naja/widgets/info_area.py index 0022b73..ef3f017 100644 --- a/naja/widgets/info_area.py +++ b/naja/widgets/info_area.py @@ -4,11 +4,12 @@ Widget for the game board information area. import pygame import pygame.locals as pgl -from naja.constants import (INFO_SIZE, EIGHT_BIT_SCALE, ACT, KEYS, - EXAMINE, PALETTE) +from naja.constants import ( + INFO_SIZE, ACT, KEYS, EXAMINE, PALETTE, + ACTION_TEXT_OFFSET, INFO_LEFT_PADDING) from naja.events import finish_event from naja.resources import resources -from naja.resources.mutators import EIGHT_BIT +from naja.resources.mutators import EIGHT_BIT, blender from naja.sound import sound from naja.utils import bit_glyphs @@ -48,8 +49,9 @@ class InfoAreaWidget(Widget): self.surface = pygame.surface.Surface(INFO_SIZE) self.surface.fill((0, 0, 0)) # Extract actions and such from the card - title = TextWidget((0, 0), TITLES[self.state.gameboard.player_mode], - colour=PALETTE.WHITE) + title = TextWidget( + (INFO_LEFT_PADDING, 0), TITLES[self.state.gameboard.player_mode], + colour=PALETTE.WHITE) title.render(self.surface) y_offset = title.surface.get_rect().height + 8 @@ -59,7 +61,7 @@ class InfoAreaWidget(Widget): 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, + card_bits = TextBoxWidget((INFO_LEFT_PADDING, y_offset), bits_text, box_width=INFO_SIZE[0], colour=PALETTE.LIGHT_TURQUOISE, bg_colour=PALETTE.BLACK) @@ -75,20 +77,24 @@ class InfoAreaWidget(Widget): hint_text += HINT_LEGAL_MOVE hint = TextBoxWidget((4, 0), hint_text, padding=2, - box_width=(INFO_SIZE[0] - 4) // EIGHT_BIT_SCALE) + box_width=(INFO_SIZE[0] - 4)) hint.prepare() - y_offset = INFO_SIZE[1] - hint.surface.get_rect().height - self.surface.blit(hint.surface, (4, y_offset)) + y_offset = ( + INFO_SIZE[1] - hint.surface.get_rect().height - INFO_LEFT_PADDING + - 2) + self.surface.blit(hint.surface, (INFO_LEFT_PADDING, y_offset)) def prepare_action(self, choice, action, y_offset): - x_offset = 18 + x_offset = INFO_LEFT_PADDING + glyphs_x_offset = 0 + glyphs_y_offset = y_offset + y_offset += ACTION_TEXT_OFFSET action_viable = action.check_available(self.state.player) text_colour = PALETTE.BLACK if action_viable else PALETTE.GREY text = TextBoxWidget( - (x_offset, y_offset), action.get_text(), - box_width=(INFO_SIZE[0] - 16) // EIGHT_BIT_SCALE, - fontsize=28, colour=text_colour) + (x_offset, y_offset), action.get_text(self.card), + box_width=(INFO_SIZE[0] - 16), fontsize=28, colour=text_colour) text.render(self.surface) border_colour = None @@ -100,12 +106,28 @@ class InfoAreaWidget(Widget): 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') img = resources.get_image(img_name, transforms=(EIGHT_BIT,)) - self.surface.blit(img, (0, y_offset)) + self.surface.blit(img, (glyphs_x_offset, glyphs_y_offset)) + glyphs_x_offset += img.get_width() + 4 + else: + glyphs_x_offset = INFO_LEFT_PADDING + + for glyph in action.GLYPHS: + img = resources.get_image( + glyph, transforms=(EIGHT_BIT, blender(PALETTE.GREY))) + self.surface.blit(img, (glyphs_x_offset, glyphs_y_offset - 4)) + glyphs_x_offset += img.get_width() + if action.MSB_GLYPH is not None: + img = resources.get_image( + action.MSB_GLYPH, + transforms=(EIGHT_BIT, blender(PALETTE.LIGHT_VIOLET))) + self.surface.blit(img, (glyphs_x_offset, glyphs_y_offset - 4)) + return y_offset + text.surface.get_rect().height + 16 def set_position(self, position): @@ -145,7 +167,7 @@ class InfoAreaWidget(Widget): 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.card_used(player.position) self.state.gameboard.change_mode(EXAMINE) self.set_position(player.position)