-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmoduleManager.py
81 lines (63 loc) · 2.43 KB
/
moduleManager.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
import os
import inspect
from importlib import import_module
from widgetManager import WidgetManager
moduleDescriptions = {}
moduleObjects = {}
widgets = WidgetManager()
def setup():
global moduleDescriptions
global moduleObjects
global widgets
moduleDescriptions = {
#Fills up upon starting
#Key: Description words
#Value: Reference to class
}
moduleObjects = {
#Fills up upon starting
#Key: Description words
#Value: Reference to object
}
# In charge of external Widgets. Holds information relevant to
# bomb widgets. Pass object onto module solution
widgets = WidgetManager()
# Fills up descriptions of moduleDescriptions
for file in os.listdir(f"gameModules"):
if file.endswith(".py") and file != '__init__.py':
moduleName = file.split(".py")[0]
module = import_module(f"gameModules.{moduleName}")
moduleClasses = inspect.getmembers(module, inspect.isclass)
moduleClasses = [x for x in moduleClasses if x[0] != 'Module']
descriptionWords = getattr(module, 'descriptionWords')
isPersistent = getattr(module, 'isPersistent')
if isPersistent == True:
persistentModule = moduleClasses[0][1](widgets)
for description in descriptionWords:
moduleObjects[description] = persistentModule
for description in descriptionWords:
moduleDescriptions[description] = moduleClasses[0][1]
setup()
def redirectInformation(input):
output = widgets.checkKeys(input)
if output[0] == -2:
for key in moduleDescriptions:
if key in input:
if key in moduleObjects:
workModule = moduleObjects[key]
print("test")
if "reset" in input:
workModule.reset(widgets)
result = [0, "Reset Successful"]
else:
result = workModule.solve(input)
else:
workModule = moduleDescriptions[key](widgets)
result = workModule.solve(input)
return result
if "bomb" in input and "reset" in input:
setup()
return [0, "Bomb Reset Successful"]
else:
return [-1, "Invalid input, please try again"]
return output