Skip to content

Commit c892713

Browse files
committed
Adds more explicit support for choosen vs actual race played and updates tests
1 parent 7ec50a2 commit c892713

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

sc2reader/objects.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ def __init__(self, data):
2828

2929
elif self.id == 0x0BB9:
3030
self.name = "Race"
31-
if self.value == "Prot": self.value = "Protoss"
32-
elif self.value == "Terr": self.value = "Terran"
33-
elif self.value == "Rand": self.value = "Random"
31+
if self.value.lower() == "prot": self.value = "Protoss"
32+
elif self.value.lower() == "terr": self.value = "Terran"
33+
elif self.value.lower() == "rand": self.value = "Random"
3434

3535
elif self.id == 0x0BBA:
3636
self.name = "Color"
@@ -139,21 +139,24 @@ def __repr__(self):
139139

140140
class Player(object):
141141

142+
url_template = "http://%s.battle.net/sc2/en/profile/%s/%s/%s/"
143+
142144
def __init__(self, pid, data, realm="us"):
143145
self.pid = pid
144146
self.realm = realm
145147
self.name = data[0].decode("hex")
146148
self.uid = data[1][4]
147149
self.uidIndex = data[1][2]
148-
self.url = "http://%s.battle.net/sc2/en/profile/%s/%s/%s/" % (self.realm, self.uid, self.uidIndex, self.name)
149-
self.race = data[2].decode("hex")
150+
self.url = self.url_template % (self.realm, self.uid, self.uidIndex, self.name)
151+
self.actual_race = data[2].decode("hex")
152+
self.choosen_race = "" # Populated from the replay.attribute.events file
150153
self.rgba = dict([
151154
['r', data[3][1]],
152155
['g', data[3][2]],
153156
['b', data[3][3]],
154157
['a', data[3][0]],
155158
])
156-
self.recorder = True
159+
self.recorder = True # Actual recorder will be determined using the replay.message.events file
157160
self.handicap = data[6]
158161
self.team = None # A number to be supplied later
159162
self.type = "" # Human or Computer

sc2reader/parsers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def load(self, replay, filecontents):
106106
player = replay.player[pid]
107107
player.color = attributes['Color']
108108
player.team = attributes['Teams'+replay.type]
109-
player.race2 = attributes['Race']
109+
player.choosen_race = attributes['Race']
110110
player.difficulty = attributes['Difficulty']
111111
#Computer players can't record games
112112
player.type = attributes['Player Type']

test_replays/test_all.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,14 @@ def test_1():
4949
assert replay.player[2].name == "Boom"
5050
emperor = find(lambda player: player.name == "Emperor", replay.players)
5151
assert emperor.team == 1
52-
assert emperor.race == "Protoss"
52+
assert emperor.choosen_race == "Protoss"
53+
assert emperor.actual_race == "Protoss"
5354
assert emperor.recorder == False
5455

5556
boom = find(lambda player: player.name == "Boom", replay.players)
5657
assert boom.team == 2
57-
assert boom.race == "Terran"
58+
assert boom.choosen_race == "Terran"
59+
assert boom.actual_race == "Terran"
5860
assert boom.recorder == True
5961

6062
for player in replay.players:

0 commit comments

Comments
 (0)