Magic-number elimination.
This commit is contained in:
parent
82c3ae5e65
commit
4d4e8dce96
3 changed files with 6 additions and 24 deletions
4
advent.h
4
advent.h
|
@ -61,6 +61,7 @@
|
||||||
#define PROP_SET_FOUND(obj) (game.objects[obj].prop = STATE_FOUND)
|
#define PROP_SET_FOUND(obj) (game.objects[obj].prop = STATE_FOUND)
|
||||||
#define PROP_SET_NOT_FOUND(obj) (game.objects[obj].prop = STATE_NOTFOUND)
|
#define PROP_SET_NOT_FOUND(obj) (game.objects[obj].prop = STATE_NOTFOUND)
|
||||||
#define PROP_IS_NOTFOUND2(g, o) (g.objects[o].prop == STATE_NOTFOUND)
|
#define PROP_IS_NOTFOUND2(g, o) (g.objects[o].prop == STATE_NOTFOUND)
|
||||||
|
#define PROP_IS_INVALID(val) (val < -MAX_STATE - 1 || val > MAX_STATE)
|
||||||
#else
|
#else
|
||||||
#define PROP_STASHED(obj) (-game.objects[obj].prop)
|
#define PROP_STASHED(obj) (-game.objects[obj].prop)
|
||||||
#define PROP_IS_STASHED(obj) (game.objects[obj].prop < 0)
|
#define PROP_IS_STASHED(obj) (game.objects[obj].prop < 0)
|
||||||
|
@ -70,9 +71,8 @@
|
||||||
#define PROP_SET_FOUND(obj) do {game.objects[obj].found = true; game.objects[obj].prop = STATE_FOUND;} while(0)
|
#define PROP_SET_FOUND(obj) do {game.objects[obj].found = true; game.objects[obj].prop = STATE_FOUND;} while(0)
|
||||||
#define PROP_SET_NOT_FOUND(obj) game.objects[obj].found = false
|
#define PROP_SET_NOT_FOUND(obj) game.objects[obj].found = false
|
||||||
#define PROP_IS_NOTFOUND2(g, o) (!g.objects[o].found)
|
#define PROP_IS_NOTFOUND2(g, o) (!g.objects[o].found)
|
||||||
|
#define PROP_IS_INVALID(val) (val < -MAX_STATE || val > MAX_STATE)
|
||||||
#endif
|
#endif
|
||||||
/* Magic number -2 allows a PROP_STASHED version of state 1 */
|
|
||||||
#define PROP_IS_INVALID(val) (val < -2 || val > 1)
|
|
||||||
|
|
||||||
#define PROMPT "> "
|
#define PROMPT "> "
|
||||||
|
|
||||||
|
|
|
@ -136,6 +136,7 @@ def get_objects(obj):
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"""
|
"""
|
||||||
|
max_state = 0
|
||||||
obj_str = ""
|
obj_str = ""
|
||||||
for (i, item) in enumerate(obj):
|
for (i, item) in enumerate(obj):
|
||||||
attr = item[1]
|
attr = item[1]
|
||||||
|
@ -159,6 +160,7 @@ def get_objects(obj):
|
||||||
statedefines += "/* States for %s */\n" % item[0]
|
statedefines += "/* States for %s */\n" % item[0]
|
||||||
for (n, label) in enumerate(labels):
|
for (n, label) in enumerate(labels):
|
||||||
statedefines += "#define %s\t%d\n" % (label, n)
|
statedefines += "#define %s\t%d\n" % (label, n)
|
||||||
|
max_state = max(max_state, n)
|
||||||
statedefines += "\n"
|
statedefines += "\n"
|
||||||
sounds_str = ""
|
sounds_str = ""
|
||||||
if attr.get("sounds") is None:
|
if attr.get("sounds") is None:
|
||||||
|
@ -192,6 +194,7 @@ def get_objects(obj):
|
||||||
treasure = "true" if attr.get("treasure") else "false"
|
treasure = "true" if attr.get("treasure") else "false"
|
||||||
obj_str += template.format(i, item[0], words_str, i_msg, locs[0], locs[1], treasure, descriptions_str, sounds_str, texts_str, changes_str)
|
obj_str += template.format(i, item[0], words_str, i_msg, locs[0], locs[1], treasure, descriptions_str, sounds_str, texts_str, changes_str)
|
||||||
obj_str = obj_str[:-1] # trim trailing newline
|
obj_str = obj_str[:-1] # trim trailing newline
|
||||||
|
statedefines += "/* Maximum state value */\n#define MAX_STATE %d\n" % max_state
|
||||||
return obj_str
|
return obj_str
|
||||||
|
|
||||||
def get_obituaries(obit):
|
def get_obituaries(obit):
|
||||||
|
|
21
saveresume.c
21
saveresume.c
|
@ -230,30 +230,9 @@ bool is_valid(struct game_t valgame)
|
||||||
/* Check that properties of objects aren't beyond expected */
|
/* Check that properties of objects aren't beyond expected */
|
||||||
for (obj_t obj = 0; obj <= NOBJECTS; obj++) {
|
for (obj_t obj = 0; obj <= NOBJECTS; obj++) {
|
||||||
if (PROP_IS_INVALID(valgame.objects[obj].prop)) {
|
if (PROP_IS_INVALID(valgame.objects[obj].prop)) {
|
||||||
switch (obj) {
|
|
||||||
case RUG:
|
|
||||||
case DRAGON:
|
|
||||||
case BIRD:
|
|
||||||
case BOTTLE:
|
|
||||||
case PLANT:
|
|
||||||
case PLANT2:
|
|
||||||
case TROLL:
|
|
||||||
case URN:
|
|
||||||
case EGGS:
|
|
||||||
case VASE:
|
|
||||||
case CHAIN:
|
|
||||||
if (valgame.objects[obj].prop == 2) // There are multiple different states, but it's convenient to clump them together
|
|
||||||
continue; // LCOV_EXCL_LINE
|
|
||||||
/* FALLTHRU */
|
|
||||||
case BEAR:
|
|
||||||
if (valgame.objects[BEAR].prop == CONTENTED_BEAR || valgame.objects[BEAR].prop == BEAR_DEAD)
|
|
||||||
continue;
|
|
||||||
/* FALLTHRU */
|
|
||||||
default:
|
|
||||||
return false; // LCOV_EXCL_LINE
|
return false; // LCOV_EXCL_LINE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Check that values in linked lists for objects in locations are inside bounds */
|
/* Check that values in linked lists for objects in locations are inside bounds */
|
||||||
for (loc_t loc = LOC_NOWHERE; loc <= NLOCATIONS; loc++) {
|
for (loc_t loc = LOC_NOWHERE; loc <= NLOCATIONS; loc++) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue