Add get item handle point
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user