Skip to content

Commit 86c5762

Browse files
committed
integrated ResourceTradeEvent and added test
1 parent abe2b2b commit 86c5762

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

sc2reader/engine/plugins/context.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def handleSelectionEvent(self, event, replay):
151151

152152
def handleResourceTradeEvent(self, event, replay):
153153
event.sender = event.player
154-
event.recipient = replay.players[event.recipient_id]
154+
event.recipient = replay.players[event.recipient_id-1]
155155

156156
def handleHijackReplayGameEvent(self, event, replay):
157157
replay.resume_from_replay = True

sc2reader/events/game.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -650,14 +650,14 @@ def __init__(self, frame, pid, data):
650650
self.vespene = self.resources[1] if len(self.resources) >= 2 else None
651651

652652
#: Amount terrazine sent
653-
self.terrazon = self.resources[2] if len(self.resources) >= 3 else None
653+
self.terrazine = self.resources[2] if len(self.resources) >= 3 else None
654654

655655
#: Amount custom resource sent
656656
self.custom_resource = self.resources[3] if len(self.resources) >= 4 else None
657657

658658
def __str__(self):
659659
return self._str_prefix() + " transfer {0} minerals, {1} gas, {2} terrazine, and {3} custom to {4}".format(
660-
self.minerals, self.vespene, self.terrazine, self.custom, self.recipient
660+
self.minerals, self.vespene, self.terrazine, self.custom_resource, self.recipient
661661
)
662662

663663

@@ -685,11 +685,8 @@ def __init__(self, frame, pid, data):
685685
self.custom_resource = self.resources[3] if len(self.resources) >= 4 else None
686686

687687
def __str__(self):
688-
return (
689-
self._str_prefix()
690-
+ " requests {0} minerals, {1} gas, {2} terrazine, and {3} custom".format(
691-
self.minerals, self.vespene, self.terrazine, self.custom
692-
)
688+
return self._str_prefix() + " requests {0} minerals, {1} gas, {2} terrazine, and {3} custom".format(
689+
self.minerals, self.vespene, self.terrazine, self.custom
693690
)
694691

695692

sc2reader/readers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ def __init__(self):
421421
28: (SelectionEvent, self.selection_delta_event),
422422
29: (create_control_group_event, self.control_group_update_event),
423423
30: (None, self.selection_sync_check_event),
424-
31: (None, self.resource_trade_event),
424+
31: (ResourceTradeEvent, self.resource_trade_event),
425425
32: (None, self.trigger_chat_message_event),
426426
33: (None, self.ai_communicate_event),
427427
34: (None, self.set_absolute_game_speed_event),
@@ -737,12 +737,13 @@ def selection_sync_check_event(self, data):
737737
)
738738

739739
def resource_trade_event(self, data):
740-
return dict(
740+
d = dict(
741741
recipient_id=data.read_bits(4),
742742
resources=[
743743
data.read_uint32() - 2147483648 for i in range(data.read_bits(3))
744744
],
745745
)
746+
return d
746747

747748
def trigger_chat_message_event(self, data):
748749
return dict(message=data.read_aligned_string(data.read_bits(10)))

test_replays/test_replays.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,17 @@ def test_send_resources(self):
305305
replay = sc2reader.load_replay(
306306
"test_replays/2.0.4.24944/Backwater Complex (15).SC2Replay"
307307
)
308+
trade_events = [
309+
event
310+
for event in replay.events
311+
if event.name == "ResourceTradeEvent"
312+
]
313+
self.assertEqual(len(trade_events), 5)
314+
self.assertEqual(trade_events[0].sender.name, "Guardian")
315+
self.assertEqual(trade_events[0].recipient.name, "Sturmkind")
316+
self.assertEqual(trade_events[0].recipient_id, 2)
317+
self.assertEqual(trade_events[0].minerals, 0)
318+
self.assertEqual(trade_events[0].vespene, 750)
308319

309320
def test_cn_replays(self):
310321
replay = sc2reader.load_replay("test_replays/2.0.5.25092/cn1.SC2Replay")

0 commit comments

Comments
 (0)