Files
st/tools/new_class.py
Yanis 0b367ecdfb Decompile ActorManager_001.cpp (#31)
* started ActorManager_001.cpp

* create, ctor, dtor

* prog

* fix build

* fix build issues

* progress

* struct comments

* match ClearInstance
2026-02-04 04:08:40 +01:00

52 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python3
import argparse
from pathlib import Path
INDENT = " " * 4
def main():
parser = argparse.ArgumentParser(description="Add new header")
parser.add_argument("--suffix", "-s", dest="suffix", help="Suffix", required=True)
parser.add_argument("--pointer", "-p", dest="pointer", help="Make the symbol a pointer", action="store_true", default=False)
parser.add_argument("--base", "-b", dest="base", help="Add a base class", action="store_true", default=False)
args = parser.parse_args()
name = f"UnkStruct_{args.suffix}"
base_class_def = (
f"class {name}_Base "
+ "{\n"
+ "public:\n"
+ f"{INDENT}{name}_Base();\n"
+ f"{INDENT}~{name}_Base();\n"
+ "};\n"
)
class_def = (
f"class {name} {f': public {name}_Base ' if args.base else ''}"
+ "{\n"
+ "public:\n"
+ f"{INDENT}/* 00 */ unk32 mUnk_00;\n\n"
+ f"{INDENT}{name}();\n"
+ f"{INDENT}~{name}();\n"
+ "};\n"
)
content = [
"#pragma once\n",
'#include "global.h"',
'#include "types.h"\n',
base_class_def if args.base else "",
class_def,
f"extern {name} {'*' if args.pointer else ''}data_{args.suffix};"
]
new_path = Path(f"include/Unknown/{name}.hpp")
new_path.write_text("\n".join(line for line in content if len(line) > 0) + "\n")
if __name__ == "__main__":
main()