Add a 'How To Play' screen
[naja.git] / naja / constants.py
1 import pygame.locals as pgl
2
3 from naja.attrdict import AttrDict
4
5
6 SCREEN = (800, 600)
7 FPS = 40
8 FONT = '8x13.pcf'
9 FONT_SIZE = 16
10 EIGHT_BIT_SCALE = 2
11
12 DEFAULTS = dict(
13     debug=False,
14     sound=True,
15     music=True,
16     # Debug flags:
17     initial_bits=None,
18 )
19
20 # Sound constants
21 FREQ = 44100   # same as audio CD
22 BITSIZE = -16  # unsigned 16 bit
23 CHANNELS = 2   # 1 == mono, 2 == stereo
24 BUFFER = 1024  # audio buffer size in no. of samples
25 DEFAULT_SOUND_VOLUME = 1.0  # sound volume
26 DEFAULT_MUSIC_VOLUME = 0.3  # music volume
27
28 # Player bits
29 DIRECTION_BITS = AttrDict({
30     'NORTH': 0,
31     'SOUTH': 1,
32     'EAST': 2,
33     'WEST': 3,
34 })
35 CONDITION_BITS = AttrDict({
36     'BLUE': 4,
37     'GREEN': 5,
38     'RED': 6,
39     'MSB': 7,
40 })
41 BITS = AttrDict()
42 BITS.update(DIRECTION_BITS)
43 BITS.update(CONDITION_BITS)
44
45 # PLAYER MOVES
46 MOVES = AttrDict({
47     # Default move
48     'ADJACENT': 0,
49     # Chess moves
50     'KNIGHT': 1,
51     'BISHOP': 2,
52     'CASTLE': 3,
53 })
54 CHESS_PIECES = AttrDict((k, v) for k, v in MOVES.items() if v > 0)
55
56 ROTATION = AttrDict({
57     'CLOCKWISE': 0,
58     'ANTICLOCKWISE': 1,
59 })
60
61 # Player defaults
62 PLAYER_DEFAULTS = AttrDict({
63     'INITIAL_BITS': 0x0f,
64     'INITIAL_POS': (2, 2),
65     'MAX_HEALTH': 4,
66     'WINS_REQUIRED': 4,
67 })
68
69 # Game size constants
70 TILE_SIZE = (96, 96)
71 LOCK_HEIGHT = 32
72 SMALL_LOCK_HEIGHT = 24
73 BOARD_SIZE = (5 * TILE_SIZE[0], 5 * TILE_SIZE[1])
74 BIT_SIZE = (5 * TILE_SIZE[0], (SCREEN[1] - 5 * TILE_SIZE[1]) // 2)
75 INFO_SIZE = (SCREEN[0] - 5 * TILE_SIZE[0], SCREEN[1])
76 INFO_LEFT_PADDING = 18
77 PLAYER_SIZE = (64, 96)
78 ACTION_TEXT_OFFSET = 20
79
80 # Player States
81 ACT = 1
82 EXAMINE = 2
83
84 KEYS = AttrDict({
85     'UP': (pgl.K_UP, pgl.K_w, pgl.K_COMMA),
86     'DOWN': (pgl.K_DOWN, pgl.K_s, pgl.K_o),
87     'LEFT': (pgl.K_LEFT, pgl.K_a),
88     'RIGHT': (pgl.K_RIGHT, pgl.K_d, pgl.K_e),
89     'NOMOVE': (pgl.K_SPACE,),
90
91     'SELECT': (pgl.K_RETURN, pgl.K_KP_ENTER),
92     'QUIT': (pgl.K_ESCAPE, pgl.K_q),
93     'SWITCH': (pgl.K_TAB,),
94 })
95
96 # PALETTE
97
98 PALETTE = AttrDict({
99     'BLACK': (0, 0, 0),
100     'DARK_RED': (108, 41, 64),
101     'DARK_VIOLET': (64, 53, 120),
102     'MAGENTA': (217, 60, 240),
103     'DARK_GREEN': (19, 87, 64),
104     'GREY': (128, 128, 128),
105     'BLUE': (38, 151, 240),
106     'LIGHT_VIOLET': (191, 180, 248),
107     'DARK_OLIVE': (64, 75, 7),
108     'ORANGE': (217, 104, 15),
109     'PINK': (236, 168, 191),
110     'GREEN': (38, 195, 15),
111     'LIGHT_OLIVE': (191, 202, 135),
112     'LIGHT_TURQUOISE': (147, 214, 191),
113     'WHITE': (255, 255, 255),
114 })
115
116
117 ACTION_GLYPHS = AttrDict({
118     'CLEAR_BITS': 'glyphs/bits_clear.png',
119     'TOGGLE_BITS': 'glyphs/bits_toggle.png',
120     'SET_BITS': 'glyphs/bits_set.png',
121     'CHANGE_BOARD': 'glyphs/board.png',
122     'DAMAGE': 'glyphs/damage.png',
123     'HEAL': 'glyphs/health.png',
124     'MOVEMENT': 'glyphs/move.png',
125     'WINTOKEN': 'glyphs/win.png',
126     'MSB': 'glyphs/msb.png',
127     'NOTHING': 'glyphs/do_nothing.png',
128 })