X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Finfo_area.py;h=5697b1996c7b4bf146385e4b3d40397e09d022fd;hb=a1c561e26fae79ce8a9570c9404975a8a0367d65;hp=a25d5bfdf5b5add97ae79da46c7729adf9a01e51;hpb=5986d48269ed18e4e49117b999e1c2dbb37a4294;p=naja.git diff --git a/naja/widgets/info_area.py b/naja/widgets/info_area.py index a25d5bf..5697b19 100644 --- a/naja/widgets/info_area.py +++ b/naja/widgets/info_area.py @@ -7,7 +7,7 @@ import pygame.locals as pgl from naja.constants import ( INFO_SIZE, ACT, KEYS, EXAMINE, PALETTE, ACTION_TEXT_OFFSET, INFO_LEFT_PADDING, - INFO_RIGHT_PADDING, BIT_SIZE) + INFO_RIGHT_PADDING, BIT_SIZE, BITS) from naja.events import finish_event from naja.resources import resources from naja.resources.mutators import EIGHT_BIT, blender @@ -20,16 +20,16 @@ from naja.widgets.text import TextBoxWidget, TextWidget HINTS = { - ACT: ("Choose an action using the Up/Down keys.\n" - "Press Return to execute the action."), - EXAMINE: "Select a card to examine using the arrow keys.", + ACT: "Choose an action using {NORTH,SOUTH} keys.\n" + "Press {RETURN} to execute it.", + EXAMINE: "Browse the tiles with {NORTH,SOUTH,EAST,WEST} keys.", } -HINT_LEGAL_MOVE = "\nPress Return to move to this card." +HINT_LEGAL_MOVE = "\nPress {RETURN} to move to this tile." TITLES = { ACT: "Choose an Action", - EXAMINE: "Select a Card", + EXAMINE: "Select a Tile", } @@ -94,7 +94,7 @@ class InfoAreaWidget(Widget): # Game mode (puzzle, easy, standard, hard, etc ...) game_mode = TextBoxWidget( - (0, 0), "UNKNOWN", padding=4, centre=True, + (0, 0), self.mode_hint(), padding=4, centre=True, colour=PALETTE.WHITE, border=2, bg_colour=PALETTE.BLACK, border_colour=PALETTE.BLUE, box_width=box_width) @@ -103,6 +103,16 @@ class InfoAreaWidget(Widget): y_offset = (INFO_SIZE[1] - BIT_SIZE[1] + 12) self.surface.blit(game_mode.surface, pos()) + def mode_hint(self): + gameboard = self.state.gameboard + if gameboard.puzzle: + return "PUZZLE" + return { + 0: "DEATH", 1: "LUDICROUS", + 2: "RAMBO", 3: "HARD", + 4: "STANDARD", 5: "EASY", + }.get(gameboard.max_health, "UNKNOWN") + def prepare_action(self, choice, action, y_offset, box_width): x_offset = INFO_LEFT_PADDING glyphs_x_offset = 0 @@ -128,8 +138,10 @@ class InfoAreaWidget(Widget): [(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( + required_keys = action.required_bits & frozenset([ + BITS.RED, BITS.GREEN, BITS.BLUE]) + if required_keys in BIT_MAP: + img_name = BIT_MAP[required_keys].replace( '.png', '_small.png') img = resources.get_image(img_name, transforms=(EIGHT_BIT,)) @@ -138,14 +150,22 @@ class InfoAreaWidget(Widget): else: glyphs_x_offset = INFO_LEFT_PADDING - for glyph in action.GLYPHS: + if BITS.MSB in action.required_bits: + msb = resources.get_image('board/msb_lock_decoration.png', + transforms=(EIGHT_BIT,)) + msb_rect = msb.get_rect() + self.surface.blit( + msb, (glyphs_x_offset - msb_rect.width - 4, glyphs_y_offset) + ) + + for glyph in action.get_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: + if action.get_msb_glyph() is not None: img = resources.get_image( - action.MSB_GLYPH, + action.get_msb_glyph(), transforms=(EIGHT_BIT, blender(PALETTE.LIGHT_VIOLET))) self.surface.blit(img, (glyphs_x_offset, glyphs_y_offset - 4))