+import pygame.locals as pgl
+
from naja.attrdict import AttrDict
SCREEN = (800, 600)
FPS = 40
-FONT = 'DejaVuSans.ttf'
+FONT = '8x13.pcf'
FONT_SIZE = 16
+EIGHT_BIT_SCALE = 2
DEFAULTS = dict(
debug=False,
DEFAULT_MUSIC_VOLUME = 0.3 # music volume
# Player bits
-BITS = AttrDict({
- # Direction bits
+DIRECTION_BITS = AttrDict({
'NORTH': 0,
'SOUTH': 1,
'EAST': 2,
'WEST': 3,
- # Condition bits
- 'CYAN': 4,
- 'MAGENTA': 5,
- 'YELLOW': 6,
+})
+CONDITION_BITS = AttrDict({
+ 'BLUE': 4,
+ 'GREEN': 5,
+ 'RED': 6,
'MSB': 7,
})
-DIRECTION_BITS = AttrDict((k, v) for k, v in BITS.items() if v < 4)
-CONDITION_BITS = AttrDict((k, v) for k, v in BITS.items() if v >= 4)
+BITS = AttrDict()
+BITS.update(DIRECTION_BITS)
+BITS.update(CONDITION_BITS)
+
+# PLAYER MOVES
+MOVES = AttrDict({
+ # Default move
+ 'ADJACENT': 0,
+ # Chess moves
+ 'KNIGHT': 1,
+ 'BISHOP': 2,
+ 'CASTLE': 3,
+})
+CHESS_PIECES = AttrDict((k, v) for k, v in MOVES.items() if v > 0)
+
+ROTATION = AttrDict({
+ 'CLOCKWISE': 0,
+ 'ANTICLOCKWISE': 1,
+})
+
+# Player defaults
+PLAYER_DEFAULTS = AttrDict({
+ 'INITIAL_BITS': 0x0f,
+ 'INITIAL_POS': (2, 2),
+ 'MAX_HEALTH': 4,
+ 'WINS_REQUIRED': 4,
+})
+
+# Game size constants
+TILE_SIZE = (96, 96)
+LOCK_HEIGHT = 32
+SMALL_LOCK_HEIGHT = 24
+BOARD_SIZE = (5 * TILE_SIZE[0], 5 * TILE_SIZE[1])
+BIT_SIZE = (5 * TILE_SIZE[0], (SCREEN[1] - 5 * TILE_SIZE[1]) // 2)
+INFO_SIZE = (SCREEN[0] - 5 * TILE_SIZE[0], SCREEN[1])
+INFO_LEFT_PADDING = 18
+PLAYER_SIZE = (64, 96)
+ACTION_TEXT_OFFSET = 20
+
+# Player States
+ACT = 1
+EXAMINE = 2
+
+KEYS = AttrDict({
+ 'UP': (pgl.K_UP, pgl.K_w, pgl.K_COMMA),
+ 'DOWN': (pgl.K_DOWN, pgl.K_s, pgl.K_o),
+ 'LEFT': (pgl.K_LEFT, pgl.K_a),
+ 'RIGHT': (pgl.K_RIGHT, pgl.K_d, pgl.K_e),
+ 'NOMOVE': (pgl.K_SPACE,),
+
+ 'SELECT': (pgl.K_RETURN, pgl.K_KP_ENTER),
+ 'QUIT': (pgl.K_ESCAPE, pgl.K_q),
+ 'SWITCH': (pgl.K_TAB,),
+})
+
+# PALETTE
+
+PALETTE = AttrDict({
+ 'BLACK': (0, 0, 0),
+ 'DARK_RED': (108, 41, 64),
+ 'DARK_VIOLET': (64, 53, 120),
+ 'MAGENTA': (217, 60, 240),
+ 'DARK_GREEN': (19, 87, 64),
+ 'GREY': (128, 128, 128),
+ 'BLUE': (38, 151, 240),
+ 'LIGHT_VIOLET': (191, 180, 248),
+ 'DARK_OLIVE': (64, 75, 7),
+ 'ORANGE': (217, 104, 15),
+ 'PINK': (236, 168, 191),
+ 'GREEN': (38, 195, 15),
+ 'LIGHT_OLIVE': (191, 202, 135),
+ 'LIGHT_TURQUOISE': (147, 214, 191),
+ 'WHITE': (255, 255, 255),
+})
+
+
+ACTION_GLYPHS = AttrDict({
+ 'CLEAR_BITS': 'glyphs/bits_clear.png',
+ 'TOGGLE_BITS': 'glyphs/bits_toggle.png',
+ 'SET_BITS': 'glyphs/bits_set.png',
+ 'CHANGE_BOARD': 'glyphs/board.png',
+ 'DAMAGE': 'glyphs/damage.png',
+ 'HEAL': 'glyphs/health.png',
+ 'MOVEMENT': 'glyphs/move.png',
+ 'WINTOKEN': 'glyphs/win.png',
+ 'MSB': 'glyphs/msb.png',
+ 'NOTHING': 'glyphs/do_nothing.png',
+})