From 7139ee7446f5a4d4ac6487a19230ae7256bbf5f3 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Mon, 6 May 2024 19:52:05 +0300 Subject: [PATCH] Move light source and timer types so zero means none Breaks saves and bones. --- include/patchlevel.h | 2 +- include/timeout.h | 11 ++++++----- include/vision.h | 8 ++++++-- src/light.c | 4 ++++ src/timeout.c | 5 ++++- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/include/patchlevel.h b/include/patchlevel.h index 54cf108a1..6bbe25e57 100644 --- a/include/patchlevel.h +++ b/include/patchlevel.h @@ -17,7 +17,7 @@ * Incrementing EDITLEVEL can be used to force invalidation of old bones * and save files. */ -#define EDITLEVEL 102 +#define EDITLEVEL 103 /* * Development status possibilities. diff --git a/include/timeout.h b/include/timeout.h index ab4f963aa..0712c2e93 100644 --- a/include/timeout.h +++ b/include/timeout.h @@ -10,11 +10,12 @@ typedef void (*timeout_proc)(ANY_P *, long); /* kind of timer */ enum timer_type { - TIMER_LEVEL = 0, /* event specific to level [melting ice] */ - TIMER_GLOBAL = 1, /* event follows current play [not used] */ - TIMER_OBJECT = 2, /* event follows an object [various] */ - TIMER_MONSTER = 3, /* event follows a monster [not used] */ - NUM_TIMER_KINDS /* 4 */ + TIMER_NONE = 0, + TIMER_LEVEL = 1, /* event specific to level [melting ice] */ + TIMER_GLOBAL = 2, /* event follows current play [not used] */ + TIMER_OBJECT = 3, /* event follows an object [various] */ + TIMER_MONSTER = 4, /* event follows a monster [not used] */ + NUM_TIMER_KINDS /* 5 */ }; /* save/restore timer ranges */ diff --git a/include/vision.h b/include/vision.h index f2cd9fa6e..a9be002dc 100644 --- a/include/vision.h +++ b/include/vision.h @@ -12,8 +12,12 @@ /* * Light source sources */ -#define LS_OBJECT 0 -#define LS_MONSTER 1 +enum ls_sources { + LS_NONE = 0, + LS_OBJECT = 1, + LS_MONSTER = 2, + NUM_LS_SOURCES +}; /* * cansee() - Returns true if the hero can see the location. diff --git a/src/light.c b/src/light.c index 555995eec..c51915a77 100644 --- a/src/light.c +++ b/src/light.c @@ -103,6 +103,10 @@ del_light_source(int type, anything *id) has only been partially restored during a level change (in particular: chameleon vs prot. from shape changers) */ switch (type) { + case LS_NONE: + impossible("del_light_source:type=none"); + tmp_id.a_uint = 0; + break; case LS_OBJECT: tmp_id.a_uint = id->a_obj ? id->a_obj->o_id : 0; break; diff --git a/src/timeout.c b/src/timeout.c index fc853e795..a3ce09ea0 100644 --- a/src/timeout.c +++ b/src/timeout.c @@ -1942,6 +1942,9 @@ staticfn const char * kind_name(short kind) { switch (kind) { + case TIMER_NONE: + impossible("no timer type"); + return "none"; case TIMER_LEVEL: return "level"; case TIMER_GLOBAL: @@ -2179,7 +2182,7 @@ start_timer( { timer_element *gnu, *dup; - if (kind < 0 || kind >= NUM_TIMER_KINDS + if (kind <= TIMER_NONE || kind >= NUM_TIMER_KINDS || func_index < 0 || func_index >= NUM_TIME_FUNCS) panic("start_timer (%s: %d)", kind_name(kind), (int) func_index);