1
1
import hashlib
2
2
import json
3
+ import re
3
4
from dataclasses import dataclass
4
5
from pathlib import Path
5
6
from typing import Any , Dict , List , Optional
@@ -36,6 +37,20 @@ def load_json(self, filename: str) -> Any:
36
37
with open (json_file , 'r' ) as file :
37
38
return json .load (file )
38
39
40
+ def load_textdata (self , scriptname : str ) -> Any :
41
+ script_dir = get_script_path ()
42
+ lang_file = script_dir / 'out' / 'raw' / f'{ scriptname } .gml'
43
+ ret = {}
44
+ textdata_regex = re .compile (r"ds_map_add\(global\.text_data_[a-z]+, \"([a-zA-Z0-9_]+)\", ([\"'])(.*)\2\)" )
45
+ with open (lang_file , 'r' ) as file :
46
+ for line in file .readlines ():
47
+ if not line .startswith ("ds_map_add" ):
48
+ continue
49
+ line = line .replace ("' + \" '\" + '" , "'" ).replace ('" + \' "\' + "' , '"' )
50
+ matches = textdata_regex .match (line )
51
+ ret [matches [1 ]] = matches [3 ]
52
+ return ret
53
+
39
54
def load_enemies (self ) -> List [str ]:
40
55
return self .load_json ('enemies' )
41
56
@@ -51,6 +66,8 @@ def load_sums(self) -> Dict[str, str]:
51
66
return self .load_json ('sums' )
52
67
53
68
def load_lang (self ) -> Dict [str , str ]:
69
+ if self .game == 'undertale' :
70
+ return self .load_textdata ('gml_Script_textdata_en' )
54
71
return self .load_json ('lang_en' )
55
72
56
73
def load_config (self ) -> Config :
0 commit comments