Mercurial > hg > early-roguelike
annotate arogue5/daemon.c @ 290:2b452dbf0138
UltraRogue: fix options menu.
When displaying options, get_restr() did not position the cursor
correctly, resulting in values being duplicated.
| author | John "Elwin" Edwards | 
|---|---|
| date | Sun, 26 Nov 2017 11:34:45 -0500 | 
| parents | b67b99f6c92b | 
| children | 0250220d8cdd | 
| rev | line source | 
|---|---|
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 1 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 2 * Contains functions for dealing with things that happen in the future. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 3 * | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 4 * Advanced Rogue | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 5 * Copyright (C) 1984, 1985 Michael Morgan, Ken Dalka and AT&T | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 6 * All rights reserved. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 7 * | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 8 * Based on "Rogue: Exploring the Dungeons of Doom" | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 9 * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 10 * All rights reserved. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 11 * | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 12 * See the file LICENSE.TXT for full copyright and licensing information. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 13 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 14 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 15 #include "curses.h" | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 16 #include "rogue.h" | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 17 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 18 #define EMPTY 0 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 19 #define DAEMON -1 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 20 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 21 #define _X_ { EMPTY } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 22 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 23 struct delayed_action d_list[MAXDAEMONS] = { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 24 _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 25 }; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 26 struct delayed_action f_list[MAXFUSES] = { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 27 _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 28 _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 29 }; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 30 int demoncnt = 0; /* number of active daemons */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 31 int fusecnt = 0; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 32 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 33 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 34 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 35 * d_slot: | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 36 * Find an empty slot in the daemon list | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 37 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 38 struct delayed_action * | 
| 218 
56e748983fa8
Advanced Rogue 5: convert to ANSI function declarations.
 John "Elwin" Edwards parents: 
114diff
changeset | 39 d_slot(void) | 
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 40 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 41 reg int i; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 42 reg struct delayed_action *dev; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 43 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 44 for (i = 0, dev = d_list; i < MAXDAEMONS; i++, dev++) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 45 if (dev->d_type == EMPTY) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 46 return dev; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 47 return NULL; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 48 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 49 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 50 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 51 * f_slot: | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 52 * Find an empty slot in the fuses list | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 53 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 54 struct delayed_action * | 
| 218 
56e748983fa8
Advanced Rogue 5: convert to ANSI function declarations.
 John "Elwin" Edwards parents: 
114diff
changeset | 55 f_slot(void) | 
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 56 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 57 reg int i; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 58 reg struct delayed_action *dev; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 59 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 60 for (i = 0, dev = f_list; i < MAXFUSES; i++, dev++) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 61 if (dev->d_type == EMPTY) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 62 return dev; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 63 return NULL; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 64 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 65 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 66 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 67 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 68 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 69 * find_slot: | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 70 * Find a particular slot in the table | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 71 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 72 struct delayed_action * | 
| 228 | 73 find_slot(void (*func)()) | 
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 74 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 75 reg int i; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 76 reg struct delayed_action *dev; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 77 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 78 for (i = 0, dev = f_list; i < MAXFUSES; i++, dev++) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 79 if (dev->d_type != EMPTY && func == dev->d_func) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 80 return dev; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 81 return NULL; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 82 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 83 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 84 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 85 /* | 
| 107 | 86 * start_daemon: | 
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 87 * Start a daemon, takes a function. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 88 */ | 
| 218 
56e748983fa8
Advanced Rogue 5: convert to ANSI function declarations.
 John "Elwin" Edwards parents: 
114diff
changeset | 89 void | 
| 228 | 90 start_daemon(void (*func)(), void *arg, int type) | 
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 91 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 92 reg struct delayed_action *dev; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 93 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 94 dev = d_slot(); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 95 if (dev != NULL) { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 96 dev->d_type = type; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 97 dev->d_func = func; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 98 dev->d_arg = arg; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 99 dev->d_time = DAEMON; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 100 demoncnt += 1; /* update count */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 101 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 102 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 103 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490) | 
