symbol set reorganization
Change the way symbol sets are loaded to make them have the same order as they appear in the symbols file rather than being reversed. Revise dat/symbols so that the new ordering yields a result similar to the old ordering, more or less. I've added a few set descriptions. The only substantive change is marking DECgraphics as primary-only (not available on rogue level) and adding new set DECgraphics_2 which is commented out near the end. Define symbol handling H_MAC since one of the sets specifies 'handling: MAC'. All H_MAC is used for now is to avoid showing MACgraphics as a symset when compiled without MAC_GRAPHICS_ENV (which was used for pre-OSX Mac by the old code in sys/mac/), so it will be hidden for everyone. I left handling H_CURS even though curses doesn't implement anything for it. It could do something when rendering the map or assign a function to 'cursesgraphics_mode_callback' for special init or both but hasn't needed to. Since curses is now supporting DECgraphics, define 'decgraphics_mode_callback' for it. No value is being assigned so that doesn't do anything; curses seems to be setting up the primary character set as text and secondary one as line-drawing without the need for that hook. With the added set descriptions, 'O's symset menu looked horrible for curses due to the way curses decides to set the width of menus and the resulting line wrapping which took place because of a too-narrow menu. I've added a chunk of code to the options handling code which shouldn't really be there but makes the menu much easier to read. Lastly, do some formatting cleanup in files.c.
This commit is contained in:
37
src/files.c
37
src/files.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 files.c $NHDT-Date: 1562719337 2019/07/10 00:42:17 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.252 $ */
|
||||
/* NetHack 3.6 files.c $NHDT-Date: 1571313652 2019/10/17 12:00:52 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.253 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Derek S. Ray, 2015. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -2111,7 +2111,7 @@ const char *name; /* name of option for error message */
|
||||
break;
|
||||
|
||||
default:
|
||||
gi_error:
|
||||
gi_error:
|
||||
raw_printf("Syntax error in %s", name);
|
||||
wait_synch();
|
||||
return count;
|
||||
@@ -3063,9 +3063,10 @@ boolean FDECL((*proc), (char *));
|
||||
}
|
||||
|
||||
ep = inbuf;
|
||||
while (*ep == ' ' || *ep == '\t') ep++;
|
||||
while (*ep == ' ' || *ep == '\t')
|
||||
++ep;
|
||||
|
||||
/* lines beginning with '#' are comments. ignore empty lines. */
|
||||
/* ingore empty lines and full-line comment lines */
|
||||
if (!*ep || *ep == '#')
|
||||
ignoreline = TRUE;
|
||||
|
||||
@@ -3074,9 +3075,9 @@ boolean FDECL((*proc), (char *));
|
||||
|
||||
/* merge now read line with previous ones, if necessary */
|
||||
if (!ignoreline) {
|
||||
len = strlen(inbuf) + 1;
|
||||
len = (int) strlen(inbuf) + 1;
|
||||
if (buf)
|
||||
len += strlen(buf);
|
||||
len += (int) strlen(buf);
|
||||
tmpbuf = (char *) alloc(len);
|
||||
if (buf) {
|
||||
Sprintf(tmpbuf, "%s %s", buf, inbuf);
|
||||
@@ -3100,6 +3101,7 @@ boolean FDECL((*proc), (char *));
|
||||
if (match_varname(buf, "CHOOSE", 6)) {
|
||||
char *section;
|
||||
char *bufp = find_optparam(buf);
|
||||
|
||||
if (!bufp) {
|
||||
config_error_add(
|
||||
"Format is CHOOSE=section1,section2,...");
|
||||
@@ -3259,13 +3261,19 @@ int which_set;
|
||||
building a pick-list of possible symset
|
||||
values from the file, so only do that */
|
||||
if (symp->range == SYM_CONTROL) {
|
||||
struct symsetentry *tmpsp;
|
||||
struct symsetentry *tmpsp, *lastsp;
|
||||
|
||||
for (lastsp = symset_list; lastsp; lastsp = lastsp->next)
|
||||
if (!lastsp->next)
|
||||
break;
|
||||
switch (symp->idx) {
|
||||
case 0:
|
||||
tmpsp = (struct symsetentry *) alloc(sizeof *tmpsp);
|
||||
tmpsp->next = symset_list;
|
||||
symset_list = tmpsp;
|
||||
tmpsp->next = (struct symsetentry *) 0;
|
||||
if (!lastsp)
|
||||
symset_list = tmpsp;
|
||||
else
|
||||
lastsp->next = tmpsp;
|
||||
tmpsp->idx = symset_count++;
|
||||
tmpsp->name = dupstr(bufp);
|
||||
tmpsp->desc = (char *) 0;
|
||||
@@ -3277,21 +3285,22 @@ int which_set;
|
||||
break;
|
||||
case 2:
|
||||
/* handler type identified */
|
||||
tmpsp = symset_list; /* most recent symset */
|
||||
tmpsp = lastsp; /* most recent symset */
|
||||
for (i = 0; known_handling[i]; ++i)
|
||||
if (!strcmpi(known_handling[i], bufp)) {
|
||||
tmpsp->handling = i;
|
||||
break; /* for loop */
|
||||
}
|
||||
break;
|
||||
case 3: /* description:something */
|
||||
tmpsp = symset_list; /* most recent symset */
|
||||
case 3:
|
||||
/* description:something */
|
||||
tmpsp = lastsp; /* most recent symset */
|
||||
if (tmpsp && !tmpsp->desc)
|
||||
tmpsp->desc = dupstr(bufp);
|
||||
break;
|
||||
case 5:
|
||||
/* restrictions: xxxx*/
|
||||
tmpsp = symset_list; /* most recent symset */
|
||||
tmpsp = lastsp; /* most recent symset */
|
||||
for (i = 0; known_restrictions[i]; ++i) {
|
||||
if (!strcmpi(known_restrictions[i], bufp)) {
|
||||
switch (i) {
|
||||
@@ -4103,7 +4112,7 @@ unsigned oid; /* book identifier */
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
cleanup:
|
||||
(void) dlb_fclose(fp);
|
||||
if (nowin_buf) {
|
||||
/* one-line buffer */
|
||||
|
||||
Reference in New Issue
Block a user