X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=newdungeon.py;h=5888f83f64c8e100e63eec5df0c07a288b2a5e92;hp=a4b046e9ed5b124f454f28011f13afd00de032e7;hb=18a9be501ff8f0c57c5d540d0f5cd080c0438cd0;hpb=1322a347ae5cb97e3c07f3cae60e79919beb2741 diff --git a/newdungeon.py b/newdungeon.py index a4b046e..5888f83 100755 --- a/newdungeon.py +++ b/newdungeon.py @@ -28,7 +28,7 @@ def write_regular_messages(name, h, c): h += " {},\n".format(key) h += "};\n\n" - c += "char* {}[] = {{\n".format(name) + c += "const char* {}[] = {{\n".format(name) index = 0 for key, text in dungeon[name]: if text == None: @@ -47,27 +47,33 @@ with open(yaml_name, "r") as f: h = """#include typedef struct { - char* inventory; - char** longs; + const char* inventory; + const char** longs; } object_description_t; typedef struct { - char* small; - char* big; + const char* small; + const char* big; } descriptions_t; typedef struct { descriptions_t description; } location_t; +typedef struct { + const char* query; + const char* yes_response; +} obituary_t; + extern location_t locations[]; extern object_description_t object_descriptions[]; -extern char* arbitrary_messages[]; -extern char* class_messages[]; -extern char* turn_threshold_messages[]; +extern const char* arbitrary_messages[]; +extern const char* class_messages[]; +extern const char* turn_threshold_messages[]; +extern obituary_t obituaries[]; extern size_t CLSSES; - +extern int maximum_deaths; """ c = """#include "{}" @@ -118,7 +124,7 @@ for key, data in dungeon["object_descriptions"]: c += " .inventory = {},\n".format(data["inventory"]) try: data["longs"][0] - c += " .longs = (char* []) {\n" + c += " .longs = (const char* []) {\n" for l in data["longs"]: l = c_escape(l) c += " \"{}\",\n".format(l) @@ -126,13 +132,32 @@ for key, data in dungeon["object_descriptions"]: except (TypeError, IndexError): c += " .longs = NULL,\n" c += " },\n" -h += "};" -c += "};" +h += "};\n\n" +c += "};\n\n" + +c += "obituary_t obituaries[] = {\n" +for obit in dungeon["obituaries"]: + + query = quotewrap(c_escape(obit["query"])) + yes_response = quotewrap(c_escape(obit["yes_response"])) + + c += """ {{ + .query = {}, + .yes_response = {}, + }}, +""".format(query, yes_response) + +c += "};\n" c += """ size_t CLSSES = {}; """.format(len(dungeon["class_messages"])) +c += """ +int maximum_deaths = {}; +""".format(len(dungeon["obituaries"])) + + # finally, write out the files d = { h_name: h,