yangkun_branch
yk 1 year ago
parent 10a2674705
commit 7a0a885c06

@ -97,38 +97,49 @@ const uchar def_r_oc_syms[MAXOCLASSES] = {
* recognized, then MAXOCLASSES is returned. Used in detect.c, invent.c, * recognized, then MAXOCLASSES is returned. Used in detect.c, invent.c,
* objnam.c, options.c, pickup.c, sp_lev.c, lev_main.c, and tilemap.c. * objnam.c, options.c, pickup.c, sp_lev.c, lev_main.c, and tilemap.c.
*/ */
int int def_char_to_objclass(char ch)
def_char_to_objclass(char ch)
{ {
int i; int i;
for (i = 1; i < MAXOCLASSES; i++) // Iterate through the object classes
for (i = 1; i < MAXOCLASSES; i++) {
// Check if the character matches the symbol of the current object class
if (ch == def_oc_syms[i].sym) if (ch == def_oc_syms[i].sym)
break; break;
}
// Return the index representing the object class if a match is found
// If no match is found, return MAXOCLASSES
return i; return i;
} }
/* /*
* Convert a character into a monster class. This returns the _first_ * Convert a character into a monster class. This returns the _first_
* match made. If there are are no matches, return MAXMCLASSES. * match made. If there are are no matches, return MAXMCLASSES.
* Used in detect.c, options.c, read.c, sp_lev.c, and lev_main.c * Used in detect.c, options.c, read.c, sp_lev.c, and lev_main.c
*/ */
int int def_char_to_monclass(char ch)
def_char_to_monclass(char ch)
{ {
int i; int i;
for (i = 1; i < MAXMCLASSES; i++) // Iterate through the monster classes
for (i = 1; i < MAXMCLASSES; i++) {
// Check if the character matches the symbol of the current monster class
if (ch == def_monsyms[i].sym) if (ch == def_monsyms[i].sym)
break; break;
}
// Return the index representing the monster class if a match is found
// If no match is found, return MAXMCLASSES
return i; return i;
} }
/* does 'ch' represent a furniture character? returns index into defsyms[] */ /* does 'ch' represent a furniture character? returns index into defsyms[] */
int int def_char_is_furniture(char ch)
def_char_is_furniture(char ch)
{ {
/* note: these refer to defsyms[] order which is much different from /* Note: these refer to defsyms[] order which is much different from
levl[][].typ order but both keep furniture in a contiguous block */ levl[][].typ order but both keep furniture in a contiguous block */
static const char first_furniture[] = "stair", /* "staircase up" */ static const char first_furniture[] = "stair", /* "staircase up" */
last_furniture[] = "fountain"; last_furniture[] = "fountain";
@ -137,17 +148,22 @@ def_char_is_furniture(char ch)
for (i = 0; i < MAXPCHARS; ++i) { for (i = 0; i < MAXPCHARS; ++i) {
if (!furniture) { if (!furniture) {
// Check if the current explanation matches the start of furniture
if (!strncmp(defsyms[i].explanation, first_furniture, 5)) if (!strncmp(defsyms[i].explanation, first_furniture, 5))
furniture = TRUE; furniture = TRUE;
} }
if (furniture) { if (furniture) {
// If the current symbol matches the input character, return the index
if (defsyms[i].sym == (uchar) ch) if (defsyms[i].sym == (uchar) ch)
return i; return i;
// If the current explanation matches the end of furniture, break the loop
if (!strcmp(defsyms[i].explanation, last_furniture)) if (!strcmp(defsyms[i].explanation, last_furniture))
break; /* reached last furniture */ break; /* reached last furniture */
} }
} }
// If no match is found, return -1
return -1; return -1;
} }
/*drawing.c*/ /*drawing.c*/

Loading…
Cancel
Save