Skip to content

Commit b9e4628

Browse files
committed
Replaced ability generation script with full build data generation script
1 parent ef9496b commit b9e4628

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed
Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
import xml.etree.ElementTree
77

88

9-
def generate_abilities(balance_data_path):
9+
def generate_build_data(balance_data_path):
1010
abilities = {}
11+
units = {}
1112

1213
for xml_file_path in glob.glob(os.path.join(balance_data_path, "*.xml")):
1314
tree = xml.etree.ElementTree.parse(xml_file_path)
@@ -19,8 +20,13 @@ def generate_abilities(balance_data_path):
1920

2021
unit_name = root.get("id")
2122

23+
meta_element = root.find("./meta")
24+
25+
if unit_name and meta_element is not None and meta_element.get("index"):
26+
units[meta_element.get("index")] = unit_name
27+
2228
build_unit_element = root.find("./builds/unit")
23-
if build_unit_element:
29+
if build_unit_element is not None:
2430
build_ability_index = build_unit_element.get("ability")
2531

2632
if unit_name == "SCV":
@@ -54,29 +60,38 @@ def generate_abilities(balance_data_path):
5460
abilities[train_ability_index] = "{}Train{}".format(unit_name, trained_unit_name)
5561

5662
research_upgrade_element = root.find("./researches/upgrade")
57-
if research_upgrade_element:
63+
if research_upgrade_element is not None:
5864
research_ability_index = research_upgrade_element.get("ability")
5965
research_ability_name = "{}Research".format(unit_name)
6066

6167
abilities[research_ability_index] = research_ability_name
6268

63-
return collections.OrderedDict(sorted(abilities.items(), key=lambda x: int(x[0])))
69+
sorted_abilities = collections.OrderedDict(sorted(abilities.items(), key=lambda x: int(x[0])))
70+
sorted_units = collections.OrderedDict(sorted(units.items(), key=lambda x: int(x[0])))
71+
72+
return sorted_units, sorted_abilities
6473

6574

6675
def main():
67-
parser = argparse.ArgumentParser(description='Generate a [BUILD]_abilities.csv file from exported balance data.')
76+
parser = argparse.ArgumentParser(description='Generate [BUILD_VERSION]_abilities.csv and [BUILD_VERSION]_units.csv'
77+
' files from exported balance data.')
6878
parser.add_argument('build_version', metavar='BUILD_VERSION', type=int,
6979
help='the build version of the balance data export')
7080
parser.add_argument('balance_data_path', metavar='BALANCE_DATA_PATH', type=str,
7181
help='the path to the balance data export')
7282

7383
args = parser.parse_args()
7484

75-
abilities = generate_abilities(args.balance_data_path)
85+
units, abilities = generate_build_data(args.balance_data_path)
7686

77-
if not abilities:
87+
if not units or not abilities:
7888
raise ValueError("No balance data found at provided balance data path.")
7989

90+
with open('{}_units.csv'.format(args.build_version), 'w', newline='') as csvfile:
91+
csv_writer = csv.writer(csvfile, delimiter=',')
92+
for unit_index, unit_name in units.items():
93+
csv_writer.writerow([unit_index, unit_name])
94+
8095
with open('{}_abilities.csv'.format(args.build_version), 'w', newline='') as csvfile:
8196
csv_writer = csv.writer(csvfile, delimiter=',')
8297
for ability_index, ability_name in abilities.items():

0 commit comments

Comments
 (0)