forked from croza/RR2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Parser.py
122 lines (105 loc) · 3.86 KB
/
Parser.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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import ConfigParser
class Parser:
def __init__(self):
self.mainConfig = ConfigParser.ConfigParser()
self.mainConfig.read("./data/config/main.cfg")
self.userConfig = ConfigParser.ConfigParser()
self.userConfig.read(self.mainConfig.get('main', 'user_config_file'))
self.wallConfig = ConfigParser.ConfigParser()
self.wallConfig.read(self.mainConfig.get('main', 'wall_config_file'))
self.unitConfig = ConfigParser.ConfigParser()
self.unitConfig.read(self.mainConfig.get('main', 'unit_config_file'))
self.objectConfig = ConfigParser.ConfigParser()
self.objectConfig.read(self.mainConfig.get('main', 'object_config_file'))
self.loadConfigs()
def loadConfigs(self):
def isNumber(number): # Run for all, test to see if it is a number, and returns a float if it is
try:
float(number)
if (float(number) == int(number)):
return int(number)
else:
return float(number)
except ValueError:
if (number.capitalize() == 'Yes'):
return True
elif (number.capitalize() == 'No'):
return False
elif (number.capitalize() == 'None'):
return None
else:
return number
self.main = {}
self.user = {}
self.wall = {}
self.unit = {}
self.object = {}
for section in self.mainConfig.sections():
data = {}
for option in self.mainConfig.options(section):
data[isNumber(option)] = isNumber(self.mainConfig.get(section, option))
self.main[section] = data
for section in self.userConfig.sections():
data = {}
for option in self.userConfig.options(section):
data[isNumber(option)] = isNumber(self.userConfig.get(section, option))
self.user[section] = data
for section in self.wallConfig.sections():
data = {}
for option in self.wallConfig.options(section):
data[isNumber(option)] = isNumber(self.wallConfig.get(section, option))
self.wall[section] = wallClasses(data)
for section in self.unitConfig.sections():
data = {}
for option in self.unitConfig.options(section):
data[isNumber(option)] = isNumber(self.unitConfig.get(section, option))
self.unit[section] = unitClasses(data)
for section in self.objectConfig.sections():
data = {}
for option in self.objectConfig.options(section):
data[isNumber(option)] = isNumber(self.objectConfig.get(section, option))
self.object[section] = objectClasses(data)
print 'END OF PARSER.PY!'
class wallClasses: # Makes a class out of a dict
def __init__(self, dictionary):#, name):
self.conductor = dictionary['conductor']
self.fullName = dictionary['fullname']
self.walkable = dictionary['walkable']
self.water = dictionary['water']
self.lava = dictionary['lava']
self.solid = dictionary['solid']
self.speed_coef = dictionary['speed_coef']
self.drillTime = dictionary['drilltime']
self.conductor = dictionary['conductor']
self.texture = dictionary['texture']
self.selectable = dictionary['select']
self.dynamite = dictionary['dynamite']
self.reinforce = dictionary['reinforce']
class unitClasses:
def __init__(self, dictionary):#, name):
self.fullName = dictionary['fullname']
self.HP = dictionary['hp']
self.info = dictionary['info']
self.moveType = dictionary['movetype']
self.model = dictionary['model']
self.radius = dictionary['radius']
self.mass = dictionary['mass']
self.startForce = dictionary['startforce']
self.maxForce = dictionary['maxforce']
self.digMulti = dictionary['digmulti']
self.reinforceMulti = dictionary['reinforcemulti']
self.shovelMulti = dictionary['shovelmulti']
class objectClasses:
def __init__(self, dictionary):
self.pickup = dictionary['pickup']
self.eValue = dictionary['evalue']
self.oValue = dictionary['ovalue']
self.stableTime = dictionary['stabletime']
self.charge = dictionary['charge']
self.decharge = dictionary['decharge']
#pickup: yes
#evalue: 0
#ovalue: 0
#stabletime: none
#charge: energy_crystal
#decharge: none