Add get item handle point

This commit is contained in:
2024-01-23 16:41:24 +01:00
parent 811f22f7bc
commit f3acb1a0a3
3 changed files with 107 additions and 0 deletions

View File

@@ -582,3 +582,58 @@ class EnumWriter:
writer.block_end()
writer.empty_line()
def output_has_object(self, func_name, name):
writer = self.writer
tiles = {}
for tile in self.all_tiles:
if 'objectgroup' not in tile:
continue
objects = tile['objectgroup']['objects']
for object in objects:
if object['name'] == name:
tiles[tile['id']] = object
break
writer.output(f"static bool {func_name}(BzTile tile) ")
writer.block_start()
writer.output("switch (tile) ")
writer.block_start()
for k, v in tiles.items():
writer.output(f"case {k}:\n")
writer.indent()
writer.output("return true;\n")
writer.unindent()
writer.output(f"default: return false;\n")
writer.block_end()
writer.block_end()
def output_get_object(self, func_name, name, ret_type, default_ret, transform):
writer = self.writer
tiles = {}
for tile in self.all_tiles:
if 'objectgroup' not in tile:
continue
objects = tile['objectgroup']['objects']
for object in objects:
if object['name'] == name:
tiles[tile['id']] = object
break
writer.output(f"static {ret_type} {func_name}(BzTile tile) ")
writer.block_start()
writer.output("switch (tile) ")
writer.block_start()
for k, v in tiles.items():
ret = transform(v)
writer.output(f"case {k}: return {ret};\n")
writer.output(f"default: return {default_ret};\n")
writer.block_end()
writer.block_end()