Unify getting terrain under drawbridge

This commit is contained in:
Pasi Kallinen
2015-04-27 22:15:23 +03:00
parent 0903df974f
commit 86dc5cf588
5 changed files with 19 additions and 21 deletions

View File

@@ -222,6 +222,7 @@ E boolean FDECL(is_lava, (int,int));
E boolean FDECL(is_pool_or_lava, (int,int));
E boolean FDECL(is_ice, (int,int));
E boolean FDECL(is_moat, (int,int));
E schar FDECL(db_under_typ, (int));
E int FDECL(is_drawbridge_wall, (int,int));
E boolean FDECL(is_db_wall, (int,int));
E boolean FDECL(find_drawbridge, (int *,int*));

View File

@@ -103,6 +103,18 @@ int x, y;
return FALSE;
}
schar
db_under_typ(mask)
int mask;
{
switch (mask & DB_UNDER) {
case DB_ICE: return ICE; break;
case DB_LAVA: return LAVAPOOL; break;
case DB_MOAT: return MOAT; break;
default: return STONE; break;
}
}
/*
* We want to know whether a wall (or a door) is the portcullis (passageway)
* of an eventual drawbridge.

View File

@@ -2207,12 +2207,7 @@ recalc_mapseen()
if (cansee(x, y) || (x == u.ux && y == u.uy && !Levitation)) {
ltyp = levl[x][y].typ;
if (ltyp == DRAWBRIDGE_UP)
switch (levl[x][y].drawbridgemask & DB_UNDER) {
case DB_ICE: ltyp = ICE; break;
case DB_LAVA: ltyp = LAVAPOOL; break;
case DB_MOAT: ltyp = MOAT; break;
default: ltyp = STONE; break;
}
ltyp = db_under_typ(levl[x][y].drawbridgemask);
if ((mtmp = m_at(x, y)) != 0 &&
mtmp->m_ap_type == M_AP_FURNITURE && canseemon(mtmp))
ltyp = cmap_to_type(mtmp->mappearance);

View File

@@ -1157,12 +1157,7 @@ xchar x,y;
lev = &levl[x][y];
ltyp = lev->typ;
if (ltyp == DRAWBRIDGE_UP)
switch (lev->drawbridgemask & DB_UNDER) {
case DB_ICE: ltyp = ICE; break;
case DB_LAVA: ltyp = LAVAPOOL; break;
case DB_MOAT: ltyp = MOAT; break;
default: ltyp = STONE; break;
}
ltyp = db_under_typ(lev->drawbridgemask);
if (ltyp == LAVAPOOL)
return "lava";

View File

@@ -1305,15 +1305,10 @@ register int x, y;
{
int levtyp = levl[x][y].typ;
if (levtyp == DRAWBRIDGE_UP) {
/* use underlying terrain in front of closed drawbridge */
switch (levl[x][y].drawbridgemask & DB_UNDER) {
case DB_MOAT: levtyp = MOAT; break;
case DB_LAVA: levtyp = LAVAPOOL; break;
case DB_ICE: levtyp = ICE; break;
case DB_FLOOR: levtyp = ROOM; break;
}
}
/* use underlying terrain in front of closed drawbridge */
if (levtyp == DRAWBRIDGE_UP)
levtyp = db_under_typ(levl[x][y].drawbridgemask);
return (boolean)(ACCESSIBLE(levtyp) && !closed_door(x, y));
}