-
Notifications
You must be signed in to change notification settings - Fork 2
/
build_hd.py
87 lines (69 loc) · 4.95 KB
/
build_hd.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env python3
from zipfile import ZipFile
import zipfile
import os
from os.path import basename
import pathlib
def correct_line_ending(file_in, file_out):
with open(file_in, "r+b") as f:
text = f.read()
text = text.decode(encoding='cp1252')
string_new = ""
inside_quote = False
for c in text:
if c == "\"":
inside_quote = not inside_quote
string_new += c
elif c == "\r":
if not inside_quote: string_new += c
else:
string_new += c
char_last = c
with open(file_out, 'w+b') as the_file:
the_file.write(str.encode(string_new, encoding='cp1252'))
zipObj = ZipFile('_out/HoMM3DE_HD.zip', 'w', zipfile.ZIP_STORED)
zipObj.write(os.path.join("additional_files/hd", "#de.ini"), arcname=os.path.join("Lang", "#de.ini"))
zipObj.write(os.path.join("additional_files/hd", "Pack.ini"), arcname=os.path.join("Packs/German", "Pack.ini"))
zipObj.write(os.path.join("additional_files/hd", "H3.NoToLower.dll"), arcname=os.path.join("Packs/German", "H3.NoToLower.dll"))
zipObj.write(os.path.join("_tmp/fnt/", "MedFont.fnt"), arcname=os.path.join("Common", "cham.fnt"))
zipObj.write(os.path.join("additional_files/hd/def/", "icm011qe.def"), arcname=os.path.join("Common", "icm011qe.def"))
zipObj.write(os.path.join("additional_files/hd/def/", "icm012qe.def"), arcname=os.path.join("Common", "icm012qe.def"))
if os.environ["DEEPL_TRANSLATION"] == "1":
for filename in os.listdir("additional_files/translation/deepl/maps/out"):
if not filename.startswith("[") and filename not in os.listdir("homm3_files/RoE_de/Maindisk/Maps") and filename not in os.listdir("homm3_files/SoD_de/Installation/Maps"): zipObj.write(os.path.join("additional_files/translation/deepl/maps/out", filename), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("homm3_files/RoE_de/Maindisk/Maps"):
zipObj.write(os.path.join("homm3_files/RoE_de/Maindisk/Maps", filename), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("homm3_files/SoD_de/Installation/Maps"):
if filename not in os.listdir("homm3_files/RoE_de/Maindisk/Maps"): zipObj.write(os.path.join("homm3_files/SoD_de/Installation/Maps", filename), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("additional_files/translation/campaign/extra"):
zipObj.write(os.path.join("additional_files/translation/campaign/extra", filename), arcname=os.path.join("_Custom_Campaign", filename))
for filename in os.listdir("additional_files/translation/campaign/chronicles"):
zipObj.write(os.path.join("additional_files/translation/campaign/chronicles", filename), arcname=os.path.join("_Custom_Campaign", filename))
for filename in os.listdir("_tmp/fnt"):
zipObj.write(os.path.join("_tmp/fnt", filename), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("additional_files/hd/bmp/"):
zipObj.write(os.path.join("additional_files/hd/bmp/", filename), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("_tmp/bmp"):
zipObj.write(os.path.join("_tmp/bmp", filename), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("additional_files/translation/bmp"):
if filename not in os.listdir("additional_files/hd/bmp/"):
zipObj.write(os.path.join("additional_files/translation/bmp", filename), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("_tmp/def"):
zipObj.write(os.path.join("_tmp/def", filename), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("additional_files/translation/def"):
zipObj.write(os.path.join("additional_files/translation/def", filename), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("additional_files/translation/txt"):
correct_line_ending(os.path.join("additional_files/translation/txt", filename), os.path.join("_tmp", "file.tmp"))
zipObj.write(os.path.join("_tmp", "file.tmp"), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("additional_files/translation/campaign"):
if "extra" not in filename and "chronicles" not in filename and filename not in os.listdir("_tmp/camp"):
zipObj.write(os.path.join("additional_files/translation/campaign", filename), arcname=os.path.join("Packs/German", filename))
for filename in os.listdir("_tmp/camp"):
zipObj.write(os.path.join("_tmp/camp", filename), arcname=os.path.join("Packs/German", filename))
if os.environ["APPEND_SOUND"] == "1":
for filename in os.listdir("_tmp/snd"):
zipObj.write(os.path.join("_tmp/snd", filename), arcname=os.path.join("Packs/German", filename[:-4]))
if os.environ["APPEND_VIDEO"] == "1":
for filename in os.listdir("_tmp/vid"):
zipObj.write(os.path.join("_tmp/vid", filename), arcname=os.path.join("Packs/German", filename))
zipObj.close()