@@ -72,24 +72,34 @@ def read_resource(buffer):
7272 return ResourceTransferEvent (frames , pid , type , code , target , minerals , vespene )
7373
7474class ActionParser_16561 (ActionParser ):
75-
76- def parse_selection_event (self , buffer , frames , type , code , pid ):
77- bank = code >> 4
78- first = buffer .read_byte () # TODO ?
7975
80- deselect_flag = buffer . shift ( 2 )
81- if deselect_flag == 0x01 : # deselect deselect mask
76+ def parse_overlay ( self , buffer , mode ):
77+ if mode == 0x01 : # deselect overlay mask
8278 mask = buffer .read_bitmask ()
83- deselect = lambda a : Selection .mask (a , mask )
84- elif deselect_flag == 0x02 : # deselect mask
79+ def deselect_overlay_mask (a ):
80+ return Selection .mask (a , mask )
81+ overlay = deselect_overlay_mask
82+ elif mode == 0x02 : # deselect mask
8583 indexes = [buffer .read_byte () for i in range (buffer .read_byte ())]
86- deselect = lambda a : Selection .deselect (a , indexes )
87- elif deselect_flag == 0x03 : # replace mask
84+ def deselect_mask (a ):
85+ return Selection .deselect (a , indexes )
86+ overlay = deselect_mask
87+ elif mode == 0x03 : # replace mask
8888 indexes = [buffer .read_byte () for i in range (buffer .read_byte ())]
89- deselect = lambda a : Selection .replace (a , indexes )
89+ def replace_mask (a ):
90+ return Selection .replace (a ,indexes )
91+ overlay = replace_mask
9092 else :
91- deselect = None
92-
93+ overlay = None
94+
95+ return overlay
96+
97+ def parse_selection_event (self , buffer , frames , type , code , pid ):
98+ bank = code >> 4
99+ first = buffer .read_byte () # TODO ?
100+
101+ deselect = self .parse_overlay (buffer , buffer .shift (2 ))
102+
93103 # <count> (<type_id>, <count>,)*
94104 object_types = [ (buffer .read_object_type (read_modifier = True ), buffer .read_byte (), ) for i in range (buffer .read_byte ()) ]
95105 # <count> (<object_id>,)*
@@ -103,19 +113,9 @@ def parse_selection_event(self, buffer, frames, type, code, pid):
103113
104114 def parse_hotkey_event (self , buffer , frames , type , code , pid ):
105115 hotkey = code >> 4
106- action , mode = buffer . shift ( 2 ), buffer .shift (2 )
116+ action = buffer .shift (2 )
107117
108- if mode == 1 : # deselect overlay mask
109- mask = buffer .read_bitmask ()
110- overlay = lambda a : Selection .mask (a , mask )
111- elif mode == 2 : # deselect mask
112- indexes = [buffer .read_byte () for i in range (buffer .read_byte ())]
113- overlay = lambda a : Selection .deselect (a , indexes )
114- elif mode == 3 : # replace mask
115- indexes = [buffer .read_byte () for i in range (buffer .read_byte ())]
116- overlay = lambda a : Selection .replace (a , indexes )
117- else :
118- overlay = None
118+ overlay = self .parse_overlay (buffer , buffer .shift (2 ))
119119
120120 if action == 0 :
121121 return SetToHotkeyEvent (frames , pid , type , code , hotkey , overlay )
0 commit comments