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()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -94,6 +94,9 @@ tile_writer.output_get_text_rect("getTextureRect", 256, 16, 16)
|
||||
tile_writer.output_base_index("getTileBase", "player")
|
||||
tile_writer.output_index_tile_offset("getTileOffset", "player", 256, 16, 16)
|
||||
|
||||
tile_writer.output_has_object("hasItemHandlePoint", "handle")
|
||||
tile_writer.output_get_object("getItemHandlePoint", "handle", "Vector2", "(Vector2) {0, 0}", lambda x: f"(Vector2) {{{x['x']}, {x['y']}}}")
|
||||
|
||||
|
||||
writer.header_guard_stop()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user