Ejemplo n.º 1
0
Archivo: scr.c Proyecto: anylonen/omega
void spreadroomlight(int x, int y, int roomno)
{
  if (inbounds(x,y) && !loc_statusp(x,y,LIT) &&
      Level->site[x][y].roomnumber == roomno) {
    lightspot(x,y);
    spreadroomlight(x+1,y,roomno);
    spreadroomlight(x,y+1,roomno);
    spreadroomlight(x-1,y,roomno);
    spreadroomlight(x,y-1,roomno);
  }
}
Ejemplo n.º 2
0
/* see whether room should be illuminated */
void roomcheck(void)
{
    static int oldroomno = -1;
#if defined(WIN32)
    static int oldlevel = -1;
#else
    static plv oldlevel = NULL;
#endif
    int roomno = Level->site[Player.x][Player.y].roomnumber;

    if ((roomno == RS_CAVERN) ||
            (roomno == RS_SEWER_DUCT) ||
            (roomno == RS_KITCHEN) ||
            (roomno == RS_BATHROOM) ||
            (roomno == RS_BEDROOM) ||
            (roomno == RS_DININGROOM) ||
            (roomno == RS_CLOSET) ||
            (roomno > ROOMBASE))
        if ((! loc_statusp(Player.x,Player.y,LIT)) &&
                (! Player.status[BLINDED]) &&
                (Player.status[ILLUMINATION] || (difficulty() < 6))) {
            showroom(Level->site[Player.x][Player.y].roomnumber);
            spreadroomlight(Player.x,Player.y,roomno);
            levelrefresh();
        }
    if ((oldroomno != roomno) ||
#if defined(WIN32)
            (oldlevel != Level->depth)) {
#else
            (oldlevel != Level)) {
#endif
        showroom(roomno);
        oldroomno = roomno;
#if defined(WIN32)
        oldlevel = Level->depth;
#else
        oldlevel = Level;
#endif
    }
}