Skip to content

Commit b686f4e

Browse files
committed
Organize events into primary groups.
I wound up writing the same filters over and over again in my code. I'm pretty confident that these groupings will be useful for most plugins.
1 parent 3975fe7 commit b686f4e

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

sc2reader/objects.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ def __init__(self, pid, name):
140140
self.is_observer = bool()
141141
self.messages = list()
142142
self.events = list()
143+
self.camera_events = list()
144+
self.ability_events = list()
145+
self.selection_events = list()
143146
self.is_human = bool()
144147
self.region = str()
145148
self.recorder = False # Actual recorder will be determined using the replay.message.events file

sc2reader/resources.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from sc2reader import log_utils
1717
from sc2reader import readers
1818
from sc2reader.data import builds as datapacks
19+
from sc2reader.events import AbilityEvent, CameraEvent, HotkeyEvent, SelectionEvent
1920
from sc2reader.objects import Player, Observer, Team, PlayerSummary, Graph, DepotFile
2021
from sc2reader.constants import REGIONS, LOCALIZED_RACES, GAME_SPEED_FACTOR, LOBBY_PROPERTIES
2122

@@ -473,12 +474,32 @@ def load_events(self):
473474
self.events += self.raw_data['replay.game.events']
474475

475476
self.events = sorted(self.events, key=lambda e: e.frame)
476-
477+
self.camera_events = list()
478+
self.selection_events = list()
479+
self.ability_events = list()
477480
for event in self.events:
481+
is_camera = isinstance(event, CameraEvent)
482+
is_selection = isinstance(event, SelectionEvent) or isinstance(event,HotkeyEvent)
483+
is_ability = isinstance(event, AbilityEvent)
484+
485+
if is_camera:
486+
self.camera_events.append(event)
487+
elif is_selection:
488+
self.selection_events.append(event)
489+
elif is_ability:
490+
self.ability_events.append(event)
491+
478492
event.load_context(self)
479493
# TODO: Should this be documented or removed? I don't like it.
480494
if event.pid != 16:
481-
self.person[event.pid].events.append(event)
495+
player = self.person[event.pid]
496+
player.events.append(event)
497+
if is_camera:
498+
player.camera_events.append(event)
499+
elif is_selection:
500+
player.selection_events.append(event)
501+
elif is_ability:
502+
player.ability_events.append(event)
482503

483504
def register_reader(self, data_file, reader, filterfunc=lambda r: True):
484505
"""

0 commit comments

Comments
 (0)