1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import pygame
24 import Config
25 import Song
26 from Language import _
27
28 LEFT = 0x1
29 RIGHT = 0x2
30 UP = 0x4
31 DOWN = 0x8
32 ACTION1 = 0x10
33 ACTION2 = 0x20
34 KEY1 = 0x40
35 KEY2 = 0x80
36 KEY3 = 0x100
37 KEY4 = 0x200
38 KEY5 = 0x400
39 CANCEL = 0x800
40
41 SCORE_MULTIPLIER = [0, 10, 20, 30]
42
43
44 Config.define("player", "key_left", str, "K_LEFT", text = _("Move left"))
45 Config.define("player", "key_right", str, "K_RIGHT", text = _("Move right"))
46 Config.define("player", "key_up", str, "K_UP", text = _("Move up"))
47 Config.define("player", "key_down", str, "K_DOWN", text = _("Move down"))
48 Config.define("player", "key_action1", str, "K_RETURN", text = _("Pick"))
49 Config.define("player", "key_action2", str, "K_RSHIFT", text = _("Secondary Pick"))
50 Config.define("player", "key_1", str, "K_F1", text = _("Fret #1"))
51 Config.define("player", "key_2", str, "K_F2", text = _("Fret #2"))
52 Config.define("player", "key_3", str, "K_F3", text = _("Fret #3"))
53 Config.define("player", "key_4", str, "K_F4", text = _("Fret #4"))
54 Config.define("player", "key_5", str, "K_F5", text = _("Fret #5"))
55 Config.define("player", "key_cancel", str, "K_ESCAPE", text = _("Cancel"))
56 Config.define("player", "name", str, "")
57 Config.define("player", "difficulty", int, Song.EASY_DIFFICULTY)
58
61 def keycode(name):
62 k = Config.get("player", name)
63 try:
64 return int(k)
65 except:
66 return getattr(pygame, k)
67
68 self.flags = 0
69 self.controlMapping = {
70 keycode("key_left"): LEFT,
71 keycode("key_right"): RIGHT,
72 keycode("key_up"): UP,
73 keycode("key_down"): DOWN,
74 keycode("key_action1"): ACTION1,
75 keycode("key_action2"): ACTION2,
76 keycode("key_1"): KEY1,
77 keycode("key_2"): KEY2,
78 keycode("key_3"): KEY3,
79 keycode("key_4"): KEY4,
80 keycode("key_5"): KEY5,
81 keycode("key_cancel"): CANCEL,
82 }
83
84
85 self.heldKeys = {}
86
88 return self.controlMapping.get(key)
89
91 c = self.getMapping(key)
92 if c:
93 self.toggle(c, True)
94 if c in self.heldKeys and not key in self.heldKeys[c]:
95 self.heldKeys[c].append(key)
96 return c
97 return None
98
100 c = self.getMapping(key)
101 if c:
102 if c in self.heldKeys:
103 if key in self.heldKeys[c]:
104 self.heldKeys[c].remove(key)
105 if not self.heldKeys[c]:
106 self.toggle(c, False)
107 return c
108 return None
109 self.toggle(c, False)
110 return c
111 return None
112
113 - def toggle(self, control, state):
114 prevState = self.flags
115 if state:
116 self.flags |= control
117 return not prevState & control
118 else:
119 self.flags &= ~control
120 return prevState & control
121
123 return self.flags & control
124
127 self.owner = owner
128 self.controls = Controls()
129 self.reset()
130
132 self.score = 0
133 self._streak = 0
134 self.notesHit = 0
135 self.longestStreak = 0
136 self.cheating = False
137
140
143
144 name = property(getName, setName)
145
148
150 self._streak = value
151 self.longestStreak = max(self._streak, self.longestStreak)
152
153 streak = property(getStreak, setStreak)
154
157
160
161 difficulty = property(getDifficulty, setDifficulty)
162
165
171