Mercurial > hg > early-roguelike
comparison srogue/options.c @ 38:8a9525231fb6
Prevent changing name or savefile when SAVEDIR is used.
author | elwin |
---|---|
date | Sat, 27 Nov 2010 16:22:30 +0000 |
parents | 34d7a614855e |
children | 3aa87373c908 |
comparison
equal
deleted
inserted
replaced
37:34d7a614855e | 38:8a9525231fb6 |
---|---|
38 { "name", "Name: ", whoami }, | 38 { "name", "Name: ", whoami }, |
39 { "fruit", "Fruit: ", fruit }, | 39 { "fruit", "Fruit: ", fruit }, |
40 { "file", "Save file: ", file_name } | 40 { "file", "Save file: ", file_name } |
41 }; | 41 }; |
42 #define NUM_OPTS (sizeof optlist / sizeof (OPTION)) | 42 #define NUM_OPTS (sizeof optlist / sizeof (OPTION)) |
43 OPTION safeoptlist[] = { | |
44 { "fruit", "Fruit: ", fruit }, | |
45 }; | |
46 #define NUM_SOPTS (sizeof safeoptlist / sizeof (OPTION)) | |
43 | 47 |
44 /* | 48 /* |
45 * print and then set options from the terminal | 49 * print and then set options from the terminal |
46 */ | 50 */ |
47 option() | 51 option() |
48 { | 52 { |
49 reg OPTION *op; | 53 reg OPTION *op; |
50 reg int wh; | 54 reg int wh; |
55 OPTION *olist; | |
56 int olen; | |
57 | |
58 if (use_savedir) { | |
59 olist = safeoptlist; | |
60 olen = NUM_SOPTS; | |
61 } | |
62 else { | |
63 olist = optlist; | |
64 olen = NUM_OPTS; | |
65 } | |
51 | 66 |
52 wclear(hw); | 67 wclear(hw); |
53 touchwin(hw); | 68 touchwin(hw); |
54 /* | 69 /* |
55 * Display current values of options | 70 * Display current values of options |
56 */ | 71 */ |
57 for (op = optlist; op < &optlist[NUM_OPTS]; op++) { | 72 for (op = olist; op < &olist[olen]; op++) { |
58 wh = op - optlist; | 73 wh = op - olist; |
59 mvwaddstr(hw, wh, 0, op->o_prompt); | 74 mvwaddstr(hw, wh, 0, op->o_prompt); |
60 mvwaddstr(hw, wh, 16, op->o_opt); | 75 mvwaddstr(hw, wh, 16, op->o_opt); |
61 } | 76 } |
62 /* | 77 /* |
63 * Set values | 78 * Set values |
64 */ | 79 */ |
65 wmove(hw, 0, 0); | 80 wmove(hw, 0, 0); |
66 for (op = optlist; op < &optlist[NUM_OPTS]; op++) { | 81 for (op = olist; op < &olist[olen]; op++) { |
67 wmove(hw, op - optlist, 16); | 82 wmove(hw, op - olist, 16); |
68 if ((wh = get_str(op->o_opt, hw))) { | 83 if ((wh = get_str(op->o_opt, hw))) { |
69 if (wh == QUIT) | 84 if (wh == QUIT) |
70 break; | 85 break; |
71 else if (op > optlist) { | 86 else if (op > olist) { |
72 wmove(hw, op - optlist, 0); | 87 wmove(hw, op - olist, 0); |
73 op -= 2; | 88 op -= 2; |
74 } | 89 } |
75 else { | 90 else { |
76 putchar(7); | 91 putchar(7); |
77 wmove(hw, 0, 0); | 92 wmove(hw, 0, 0); |