Fix script so output code can be compiled
This commit is contained in:
@@ -23,7 +23,8 @@ for tile in tiles:
|
|||||||
type = tile["type"]
|
type = tile["type"]
|
||||||
types[type].append(id)
|
types[type].append(id)
|
||||||
|
|
||||||
enum_name = os.path.basename(path).split(".")[0].capitalize()
|
enum_identifier = os.path.basename(path).split(".")[0].capitalize()
|
||||||
|
enum_name = enum_identifier.upper()
|
||||||
|
|
||||||
indent_level = 0
|
indent_level = 0
|
||||||
indent_offset = 4
|
indent_offset = 4
|
||||||
@@ -40,15 +41,22 @@ def enum_string(name):
|
|||||||
script_name = os.path.basename(__file__)
|
script_name = os.path.basename(__file__)
|
||||||
print(f"// This file was generated by: {script_name}")
|
print(f"// This file was generated by: {script_name}")
|
||||||
print()
|
print()
|
||||||
|
print("#include <breeze.h>")
|
||||||
|
print("#include <string.h>")
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
|
||||||
# ============================
|
# ============================
|
||||||
|
|
||||||
print(f"{indent()}typedef struct {enum_name} {{")
|
enum_none = enum_string("none")
|
||||||
|
enum_count = enum_string("count")
|
||||||
|
|
||||||
|
print(f"{indent()}typedef enum {enum_name} {{")
|
||||||
indent_level += indent_offset
|
indent_level += indent_offset
|
||||||
print(f"{indent()}{enum_string('name')}")
|
print(f"{indent()}{enum_none},")
|
||||||
for enum in types:
|
for enum in types:
|
||||||
print(f"{indent()}{enum_string(enum)},")
|
print(f"{indent()}{enum_string(enum)},")
|
||||||
print(f"{indent()}{enum_name}_COUNT")
|
print(f"{indent()}{enum_count}")
|
||||||
indent_level -= indent_offset
|
indent_level -= indent_offset
|
||||||
print(f"{indent()}}} {enum_name};")
|
print(f"{indent()}}} {enum_name};")
|
||||||
|
|
||||||
@@ -59,7 +67,7 @@ print()
|
|||||||
|
|
||||||
print(f"{indent()}static bool getTileBuilding(BzTile tile) {{")
|
print(f"{indent()}static bool getTileBuilding(BzTile tile) {{")
|
||||||
indent_level += indent_offset
|
indent_level += indent_offset
|
||||||
print(f"{indent()}switch (type) {{")
|
print(f"{indent()}switch (tile) {{")
|
||||||
for enum, ids in types.items():
|
for enum, ids in types.items():
|
||||||
indent_level += indent_offset
|
indent_level += indent_offset
|
||||||
for id in ids:
|
for id in ids:
|
||||||
@@ -88,8 +96,9 @@ print()
|
|||||||
print(f"{indent()}static {enum_name} getBuildingFromStr(const char *str) {{")
|
print(f"{indent()}static {enum_name} getBuildingFromStr(const char *str) {{")
|
||||||
indent_level += indent_offset
|
indent_level += indent_offset
|
||||||
|
|
||||||
|
# trie would be much better
|
||||||
for type in types:
|
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)})) return {enum_string(type)};")
|
||||||
print(f"{indent()}else return {enum_string('none')};")
|
print(f"{indent()}else return {enum_string('none')};")
|
||||||
|
|
||||||
indent_level -= indent_offset
|
indent_level -= indent_offset
|
||||||
|
|||||||
Reference in New Issue
Block a user