Skip to content

Commit 5aa7b7c

Browse files
committed
Add new listeners, primarily used for debugging.
1 parent d0f7f15 commit 5aa7b7c

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

sc2reader/listeners/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@
33
from collections import defaultdict
44

55
from sc2reader.listeners.apm import APMTracker
6-
from sc2reader.listeners.selection import SelectionListener
6+
from sc2reader.listeners.selection import SelectionListener
7+
from sc2reader.listeners.location import LocationListener
8+
from sc2reader.listeners.target import TargetListener

sc2reader/listeners/location.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from __future__ import absolute_import
2+
3+
from sc2reader import utils
4+
from sc2reader.events import LocationAbilityEvent
5+
from sc2reader.listeners.utils import ListenerBase
6+
7+
8+
class LocationListener(ListenerBase):
9+
10+
def accepts(self, event):
11+
return isinstance(event, LocationAbilityEvent) and event.ability!=0x3601 # and event.ability # and event.ability != 0x3601
12+
13+
def __call__(self, event, replay):
14+
if replay.opt.debug:
15+
print event.bytes.encode('hex')
16+
17+
ability = event.ability
18+
if ability is not None and ability in replay.datapack.abilities:
19+
ability = replay.datapack.ability(event.ability)
20+
21+
print "[{0}] {1} used ability {2} at location: {3}, {4}".format(utils.Length(seconds=event.second),event.player.name, ability, event.location[0], event.location[1])

sc2reader/listeners/target.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from __future__ import absolute_import
2+
3+
from sc2reader import utils
4+
from sc2reader.events import TargetAbilityEvent
5+
from sc2reader.listeners.utils import ListenerBase
6+
7+
8+
class TargetListener(ListenerBase):
9+
10+
def accepts(self, event):
11+
return isinstance(event, TargetAbilityEvent) #and event.ability in (0x3700, 0x5700)
12+
13+
def __call__(self, event, replay):
14+
if replay.opt.debug:
15+
print event.bytes.encode('hex')
16+
17+
ability = event.ability
18+
if ability is not None and ability in replay.datapack.abilities:
19+
ability = replay.datapack.ability(event.ability)
20+
21+
print "[{0}] {1} used ability {2} on {3}".format(utils.Length(seconds=event.second),event.player.name, ability, event.target)

0 commit comments

Comments
 (0)