Skip to content

Commit 5ab9f1e

Browse files
committed
Avoid creating new unit selection objects.
This means always copy by reference when creating new frames. The SelectionTracker can manually manage copies when it is changing a buffer.
1 parent 3d71f31 commit 5ab9f1e

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

sc2reader/plugins/replay.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ def SelectionTracker(replay):
111111
selection = player_selection[event.frame]
112112

113113
if isinstance(event, SelectionEvent):
114+
selection[event.bank] = selection[event.bank].copy()
114115
error = not selection[event.bank].deselect(*event.deselect)
115116
selection[event.bank].select(event.objects)
116117
if debug: logger.info("[{0}] {1} selected {2} units: {3}".format(Length(seconds=event.second),person.name,len(selection[0x0A].objects),selection[0x0A]))
@@ -127,6 +128,7 @@ def SelectionTracker(replay):
127128
if debug: logger.info("[{0}] {1} set hotkey {2} to current selection".format(Length(seconds=event.second),person.name,event.hotkey))
128129

129130
elif isinstance(event, AddToHotkeyEvent):
131+
selection[event.hotkey] = selection[event.hotkey].copy()
130132
error = not selection[event.hotkey].deselect(*event.deselect)
131133
selection[event.hotkey].select(selection[0x0A].objects)
132134
if debug: logger.info("[{0}] {1} added current selection to hotkey {2}".format(Length(seconds=event.second),person.name,event.hotkey))

sc2reader/plugins/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,5 +119,5 @@ def __init__(self):
119119
def copy(self):
120120
new = PlayerSelection()
121121
for bank, selection in self.iteritems():
122-
new[bank] = UnitSelection(selection.objects[:])
122+
new[bank] = selection #UnitSelection(selection.objects[:])
123123
return new

0 commit comments

Comments
 (0)