Add size detection
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
# ============================
|
||||
|
||||
Reference in New Issue
Block a user