+def get_locations(loc):
+ template = """ {{
+ .description = {{
+ .small = {},
+ .big = {},
+ }},
+ .sound = {},
+ .loud = {},
+ }},
+"""
+ loc_str = ""
+ for item in loc:
+ short_d = make_c_string(item[1]["description"]["short"])
+ long_d = make_c_string(item[1]["description"]["long"])
+ sound = item[1].get("sound", "SILENT")
+ loud = "true" if item[1].get("loud") else "false"
+ loc_str += template.format(short_d, long_d, sound, loud)
+ loc_str = loc_str[:-1] # trim trailing newline
+ return loc_str
+
+def get_object_descriptions(obj):
+ template = """ {{
+ .inventory = {},
+ .longs = (const char* []) {{
+{}
+ }},
+ .sounds = (const char* []) {{
+{}
+ }},
+ .texts = (const char* []) {{
+{}
+ }},
+ }},
+"""
+ obj_str = ""
+ for item in obj:
+ i_msg = make_c_string(item[1]["inventory"])
+ longs_str = ""
+ if item[1]["longs"] == None:
+ longs_str = " " * 12 + "NULL,"
+ else:
+ labels = []
+ for l_msg in item[1]["longs"]:
+ if not isinstance(l_msg, str):
+ labels.append(l_msg)
+ l_msg = l_msg[1]
+ longs_str += " " * 12 + make_c_string(l_msg) + ",\n"
+ longs_str = longs_str[:-1] # trim trailing newline
+ if labels:
+ global statedefines
+ statedefines += "/* States for %s */\n" % item[0]
+ for (i, (label, message)) in enumerate(labels):
+ if len(message) >= 45:
+ message = message[:45] + "..."
+ statedefines += "#define %s\t%d /* %s */\n" % (label, i, message)
+ statedefines += "\n"
+ sounds_str = ""
+ if item[1].get("sounds") == None:
+ sounds_str = " " * 12 + "NULL,"
+ else:
+ for l_msg in item[1]["sounds"]:
+ sounds_str += " " * 12 + make_c_string(l_msg) + ",\n"
+ sounds_str = sounds_str[:-1] # trim trailing newline
+ texts_str = ""
+ if item[1].get("texts") == None:
+ texts_str = " " * 12 + "NULL,"
+ else:
+ for l_msg in item[1]["texts"]:
+ texts_str += " " * 12 + make_c_string(l_msg) + ",\n"
+ texts_str = texts_str[:-1] # trim trailing newline
+ obj_str += template.format(i_msg, longs_str, sounds_str, texts_str)
+ obj_str = obj_str[:-1] # trim trailing newline
+ return obj_str