diff arogue7/daemons.c @ 238:e1cd27c5464f

arogue7, xrogue: improve the handling of the arguments to fuses. fuse() now expects a pointer as the argument to a fuse function. If this is one of the functions that takes int, fuse() follows the pointer and stores that value in the f_list slot, in the integer field of the argument union. When the fuse goes off, do_fuses() recognizes the function and passes it the integer field instead of the pointer. This has the disadvantage of hard-coding the functions that require int in daemon.c, but since the int is copied into f_list, it no longer has to be in static or global memory, which simplifies several files.
author John "Elwin" Edwards
date Fri, 11 Mar 2016 17:40:00 -0500
parents f9ef86cf22b2
children
line wrap: on
line diff
--- a/arogue7/daemons.c	Tue Mar 08 20:47:57 2016 -0500
+++ b/arogue7/daemons.c	Fri Mar 11 17:40:00 2016 -0500
@@ -111,7 +111,7 @@
 void
 swander(void)
 {
-    start_daemon(rollwand, 0, BEFORE);
+    start_daemon(rollwand, NULL, BEFORE);
 }
 
 /*
@@ -134,7 +134,7 @@
 	    if (levtype != POSTLEV)
 	        wanderer();
 	    kill_daemon(rollwand);
-	    fuse(swander, 0, WANDERTIME, BEFORE);
+	    fuse(swander, NULL, WANDERTIME, BEFORE);
 	}
 	between = 0;
     }
@@ -663,7 +663,7 @@
     time = SPELLTIME - max(17-pstats.s_intel, 0);
     time = max(time, 5);
     if (spell_power > 0) spell_power--;
-    fuse(spell_recovery, 0, time, AFTER);
+    fuse(spell_recovery, NULL, time, AFTER);
 }
 /*
  * give the hero back some prayer points
@@ -676,7 +676,7 @@
     time = SPELLTIME - max(17-pstats.s_wisdom, 0);
     time = max(time, 5);
     if (pray_time > 0) pray_time--;
-    fuse(prayer_recovery, 0, time, AFTER);
+    fuse(prayer_recovery, NULL, time, AFTER);
 }
 /*
  * give the hero back some chant points
@@ -689,5 +689,5 @@
     time = SPELLTIME - max(17-pstats.s_wisdom, 0);
     time = max(time, 5);
     if (chant_time > 0) chant_time--;
-    fuse(chant_recovery, 0, time, AFTER);
+    fuse(chant_recovery, NULL, time, AFTER);
 }