diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-08-03 06:35:35 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-08-03 06:35:35 +0000 |
| commit | 770313761870b3e68049fa894f097a8bbec80420 (patch) | |
| tree | 50d3e52ae1d46943cf998caefcb3076d840f2ff8 /scripts/compiler.py | |
| parent | 681fbaf011cd50eb78473da3daad08196d14f614 (diff) | |
| download | zcatch-770313761870b3e68049fa894f097a8bbec80420.tar.gz zcatch-770313761870b3e68049fa894f097a8bbec80420.zip | |
added pickup sounds for the weapons
Diffstat (limited to 'scripts/compiler.py')
| -rwxr-xr-x | scripts/compiler.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/scripts/compiler.py b/scripts/compiler.py index daa74e95..ccafdae4 100755 --- a/scripts/compiler.py +++ b/scripts/compiler.py @@ -150,6 +150,7 @@ class data_constructor: self.trans = 0 self.pointers = [] self.targets = {} + self.enums = {} def get_type(self, s): return self.trans.types[s] @@ -162,6 +163,14 @@ class data_constructor: def add_pointer(self, index, target): self.pointers += [pointer(index, target)] + def add_enum(self, name, value): + self.enums[name] = value + + def get_enum_value(self, name): + if not name in self.enums: + print "ERROR: couldn't find enum '%s'" % (name) + return self.enums[name] + def add_target(self, target, index): # TODO: warn about duplicates #print "add_target(target='%s' index=%d)" % (target, index) @@ -300,6 +309,16 @@ class variable_ptr(variable): target = src_data.get_single(self.expr) cons.add_pointer(index, target) +class variable_enum(variable): + def get_code(self): + return ["long *%s;" % (self.name)] + def size(self): + return option_intsize + def emit_data(self, cons, index, src_data): + target = src_data.get_single(self.expr) + data = struct.pack("l", cons.get_enum_value(target)) + cons.write(index, len(data), data) + class variable_instance(variable): def get_code(self): return ["%s %s;" % (self.subtype, self.name)] @@ -383,6 +402,8 @@ class translator: subtype = "" if type == "int": v = variable_int() + elif type == "enum": + v = variable_enum() elif type == "float": v = variable_float() elif type == "string": |