-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathttrun.py
100 lines (73 loc) · 3.01 KB
/
ttrun.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
88
89
90
91
92
93
94
95
96
97
98
99
100
import sys
sys.path.append("./modules")
import os, marshal, imp
os.environ["PATH"] += ";./resources"
codes = {}
codes["otp"] = [1, None]
codes["toontown"] = [1, None]
def generate(path, module):
print(path, module)
for file in os.listdir(path):
if os.path.isdir(os.path.join(path, file)):
generate(os.path.join(path, file), module + [file])
elif file.endswith(".py"):
if file == "__init__.py":
codes[".".join(module)] = [1, os.path.join(path, file)]
else:
codes[".".join(module + [file[:-3]])] = [0, os.path.join(path, file)]
class Importer:
@classmethod
def find_module(cls, fullname, path=None):
if fullname in codes:
return cls
@classmethod
def load_module(cls, fullname):
if fullname in sys.modules:
return sys.modules[fullname]
code = codes[fullname]
module = imp.new_module(fullname)
sys.modules[fullname] = module
#module.__builtins__ = __builtins__
module.__file__ = "<frozen>"
module.__name__ = fullname
module.__path__ = []
module.__loader__ = cls
if code[0] == 1:
module.__package__ = fullname
else:
module.__package__ = ".".join(fullname.split(".")[:-1])
if code[1]:
with open(code[1], "r") as file:
exec compile(file.read() + "\n", codes[fullname][1], "exec") in module.__dict__
return module
if __name__ == "__main__":
sys.meta_path.append(Importer)
generate("direct/src", ["direct"])
generate("toontown/src", ["toontown"])
generate("otp/src", ["otp"])
from pandac.PandaModules import VirtualFileSystem, Filename, loadPrcFileData
vfs = VirtualFileSystem.getGlobalPtr()
vfs.mount(Filename("resources"), '.', 0)
for phase in [3,3.5,4,5,5.5,6,7,8,9,10,11,12,13]:
vfs.mount(Filename("resources", "phase_" + str(phase) + ".mf"), '.', VirtualFileSystem.MFReadOnly)
import traceback
try:
if "-ai" in sys.argv:
from toontown.ai import AIStart
elif "-ud" in sys.argv:
# ihooks messes with our import system
import ihooks
ihooks.install = lambda *args: None
# ud tries to load from libdirect but it's libp3direct on public 1.7.2
import libp3direct
sys.modules["libdirect"] = sys.modules["libp3direct"]
# we need some sql config
loadPrcFileData("", "mysql-user root")
loadPrcFileData("", "mysql-passwd ")
loadPrcFileData("", "want-code-redemption-init-db 1")
from toontown.uberdog import Start
else:
from toontown.toonbase import ToontownStart
except:
traceback.print_exc()
sys.exit()