Add size detection

This commit is contained in:
2023-11-10 05:39:38 +01:00
parent fed67a61e6
commit 3fdd24d951

View File

@@ -98,10 +98,49 @@ indent_level += indent_offset
# trie would be much better
for type in types:
print(f"{indent()}if (strncmp(\"{type}\", str, {len(type)})) return {enum_string(type)};")
print(f"{indent()}if (strncmp(\"{type}\", str, {len(type)}) == 0) return {enum_string(type)};")
print(f"{indent()}else return {enum_string('none')};")
indent_level -= indent_offset
print(f"{indent()}}}")
# ============================
print(f"{indent()}static void getBuildingSize({enum_name} type, BzTile *outWidth, BzTile *outHeight) {{")
indent_level += indent_offset
print(f"{indent()} switch (type) {{")
indent_level += indent_offset
for enum, ids in types.items():
print(f"{indent()}case {enum_string(enum)}:")
indent_level += indent_offset
w = 1
h = 1
for curr, next in zip(ids, ids[1:]):
if next > curr + 1:
h += 1
elif h == 1:
w += 1
print(f"{indent()}if (outWidth) *outWidth = {w};")
print(f"{indent()}if (outHeight) *outHeight = {h};")
print(f"{indent()}break;")
indent_level -= indent_offset
print(f"{indent()}default:")
indent_level += indent_offset
print(f"{indent()}if (outWidth) *outWidth = 0;")
print(f"{indent()}if (outHeight) *outHeight = 0;")
print(f"{indent()}break;")
indent_level -= indent_offset
indent_level -= indent_offset
print(f"{indent()}}}")
indent_level -= indent_offset
indent_level -= indent_offset
indent_level -= indent_offset
print(f"{indent()}}}")
print()
# ============================