X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=make_dungeon.py;h=03b5b04229fc60023a378208cc8525fb8873bb97;hp=70fab09a75a15ea0efb886abb569af75c956676a;hb=e8a627f964a8337caf0c71dd87b1d7533f489f57;hpb=3a7ce1b73a90e8b379f07487f764172210ebbeb8 diff --git a/make_dungeon.py b/make_dungeon.py index 70fab09..03b5b04 100755 --- a/make_dungeon.py +++ b/make_dungeon.py @@ -1,4 +1,4 @@ -#!/usr/bin/python3 +#!/usr/bin/env python # This is the open-adventure dungeon generator. It consumes a YAML description of # the dungeon and outputs a dungeon.h and dungeon.c pair of C code files. @@ -105,13 +105,9 @@ typedef struct {{ typedef struct {{ const string_group_t words; const char* message; + const bool noaction; }} action_t; -typedef struct {{ - const string_group_t words; - const char* message; -}} special_t; - enum condtype_t {{cond_goto, cond_pct, cond_carry, cond_with, cond_not}}; enum desttype_t {{dest_goto, dest_special, dest_speak}}; @@ -143,7 +139,6 @@ extern const hint_t hints[]; extern long conditions[]; extern const motion_t motions[]; extern const action_t actions[]; -extern const special_t specials[]; extern const travelop_t travel[]; extern const long tkey[]; extern const char *ignore; @@ -154,9 +149,8 @@ extern const char *ignore; #define NCLASSES {} #define NDEATHS {} #define NTHRESHOLDS {} -#define NMOTIONS {} +#define NMOTIONS {} #define NACTIONS {} -#define NSPECIALS {} #define NTRAVEL {} #define NKEYS {} @@ -182,10 +176,6 @@ enum action_refs {{ {} }}; -enum special_refs {{ -{} -}}; - /* State definitions */ {} @@ -236,10 +226,6 @@ const action_t actions[] = {{ {} }}; -const special_t specials[] = {{ -{} -}}; - const long tkey[] = {{{}}}; const travelop_t travel[] = {{ @@ -384,8 +370,8 @@ def get_objects(obj): if labels: global statedefines statedefines += "/* States for %s */\n" % item[0] - for (i, label) in enumerate(labels): - statedefines += "#define %s\t%d\n" % (label, i) + for (j, label) in enumerate(labels): + statedefines += "#define %s\t%d\n" % (label, j) statedefines += "\n" sounds_str = "" if attr.get("sounds") == None: @@ -501,40 +487,12 @@ def get_actions(actions): template = """ {{ .words = {}, .message = {}, + .noaction = {}, }}, """ act_str = "" for action in actions: contents = action[1] - - if contents["words"] == None: - words_str = get_string_group([]) - else: - words_str = get_string_group(contents["words"]) - - if contents["message"] == None: - message = "NO_MESSAGE" - else: - message = contents["message"] - - act_str += template.format(words_str, message) - global ignore - if contents.get("oldstyle", True) == False: - for word in contents["words"]: - if len(word) == 1: - ignore += word.upper() - act_str = act_str[:-1] # trim trailing newline - return act_str - -def get_specials(specials): - template = """ {{ - .words = {}, - .message = {}, - }}, -""" - spc_str = "" - for special in specials: - contents = special[1] if contents["words"] == None: words_str = get_string_group([]) @@ -546,14 +504,19 @@ def get_specials(specials): else: message = make_c_string(contents["message"]) - spc_str += template.format(words_str, message) + if contents.get("noaction") == None: + noaction = "false" + else: + noaction = "true" + + act_str += template.format(words_str, message, noaction) global ignore if contents.get("oldstyle", True) == False: for word in contents["words"]: if len(word) == 1: ignore += word.upper() - spc_str = spc_str[:-1] # trim trailing newline - return spc_str + act_str = act_str[:-1] # trim trailing newline + return act_str def bigdump(arr): out = "" @@ -797,8 +760,7 @@ if __name__ == "__main__": get_hints(db["hints"], db["arbitrary_messages"]), get_condbits(db["locations"]), get_motions(db["motions"]), - get_specials(db["actions"]), - get_specials(db["specials"]), + get_actions(db["actions"]), bigdump(tkey), get_travel(travel), ignore, @@ -817,7 +779,6 @@ if __name__ == "__main__": len(db["turn_thresholds"]), len(db["motions"]), len(db["actions"]), - len(db["specials"]), len(travel), len(tkey), deathbird, @@ -826,7 +787,6 @@ if __name__ == "__main__": get_refs(db["objects"]), get_refs(db["motions"]), get_refs(db["actions"]), - get_refs(db["specials"]), statedefines, )