@@ -42,17 +42,11 @@ def parse_selection_event(self, buffer, frames, type, code, pid):
4242
4343 def parse_hotkey_event (self , buffer , frames , type , code , pid ):
4444 hotkey = code >> 4
45- action , mode = buffer .shift (2 ), buffer .shift (2 )
45+ action , read = buffer .shift (2 ), buffer .shift (1 )
4646
47- if mode == 1 : # deselect overlay mask
48- mask = buffer .read_bitmask ( )
47+ if read :
48+ mask = buffer .read ( bits = buffer . read_byte () )
4949 overlay = lambda a : Selection .mask (a , mask )
50- elif mode == 2 : # deselect mask
51- indexes = [buffer .read_byte () for i in range (buffer .read_byte ())]
52- overlay = lambda a : Selection .deselect (a , indexes )
53- elif mode == 3 : # replace mask
54- indexes = [buffer .read_byte () for i in range (buffer .read_byte ())]
55- overlay = lambda a : Selection .replace (a , indexes )
5650 else :
5751 overlay = None
5852
@@ -189,6 +183,29 @@ def parse_selection_event(self, buffer, frames, type, code, pid):
189183
190184 return SelectionEvent (frames , pid , type , code , bank , objects , deselect )
191185
186+ def parse_hotkey_event (self , buffer , frames , type , code , pid ):
187+ hotkey = code >> 4
188+ action , mode = buffer .shift (2 ), buffer .shift (2 )
189+
190+ if mode == 1 : # deselect overlay mask
191+ mask = buffer .read_bitmask ()
192+ overlay = lambda a : Selection .mask (a , mask )
193+ elif mode == 2 : # deselect mask
194+ indexes = [buffer .read_byte () for i in range (buffer .read_byte ())]
195+ overlay = lambda a : Selection .deselect (a , indexes )
196+ elif mode == 3 : # replace mask
197+ indexes = [buffer .read_byte () for i in range (buffer .read_byte ())]
198+ overlay = lambda a : Selection .replace (a , indexes )
199+ else :
200+ overlay = None
201+
202+ if action == 0 :
203+ return SetToHotkeyEvent (frames , pid , type , code , hotkey , overlay )
204+ elif action == 1 :
205+ return AddToHotkeyEvent (frames , pid , type , code , hotkey , overlay )
206+ elif action == 2 :
207+ return GetHotkeyEvent (frames , pid , type , code , hotkey , overlay )
208+
192209class ActionParser_18574 (ActionParser_16561 ):
193210 def parse_ability_event (self , buffer , frames , type , code , pid ):
194211 flag = buffer .read_byte ()
@@ -283,7 +300,11 @@ def parse_camera87_event(self, buffer, frames, type, code, pid):
283300 return CameraMovementEvent (frames , pid , type , code )
284301
285302 def parse_camera08_event (self , buffer , frames , type , code , pid ):
286- buffer .skip ( (buffer .read_short (BIG_ENDIAN ) & 0x0F ) << 3 )
303+ short = buffer .read_short (BIG_ENDIAN )
304+ count = short & 0x0F
305+ #print "Short %X, Count %X, Skipped %X" % (short,count,count << 3)
306+
307+ buffer .skip ( count << 3 )
287308 return CameraMovementEvent (frames , pid , type , code )
288309
289310 def parse_camera18_event (self , buffer , frames , type , code , pid ):
0 commit comments