circlemud_squared_0.5.153/cnf/
circlemud_squared_0.5.153/etc/
circlemud_squared_0.5.153/etc/etc/
circlemud_squared_0.5.153/etc/house/
circlemud_squared_0.5.153/etc/misc/
circlemud_squared_0.5.153/etc/plralias/A-E/
circlemud_squared_0.5.153/etc/plralias/F-J/
circlemud_squared_0.5.153/etc/plralias/K-O/
circlemud_squared_0.5.153/etc/plralias/P-T/
circlemud_squared_0.5.153/etc/plralias/U-Z/
circlemud_squared_0.5.153/etc/plralias/ZZZ/
circlemud_squared_0.5.153/etc/plrobjs/
circlemud_squared_0.5.153/etc/plrobjs/A-E/
circlemud_squared_0.5.153/etc/plrobjs/F-J/
circlemud_squared_0.5.153/etc/plrobjs/K-O/
circlemud_squared_0.5.153/etc/plrobjs/P-T/
circlemud_squared_0.5.153/etc/plrobjs/U-Z/
circlemud_squared_0.5.153/etc/plrobjs/ZZZ/
circlemud_squared_0.5.153/etc/text/
circlemud_squared_0.5.153/etc/text/help/
circlemud_squared_0.5.153/src/util/
circlemud_squared_0.5.153/src/util/worldconv/
/**
 * @file room.h
 * @ingroup zone
 *
 * Room based code
 *
 * @author Geoff Davis <geoff@circlemudsquared.org>
 * @author Greg Buxton <greg@circlemudsquared.org>
 *
 * @par Copyright:
 *   Copyright (C) 2006 Geoff Davis <geoff@circlemudsquared.org><br>
 *                      Greg Buxton <greg@circlemudsquared.org>
 *
 * @par
 *   Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University<br>
 *   CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991.
 *
 * @par
 *   All rights reserved.  See license.doc for complete information.
 *
 * @package cs
 * @version 1.0
 */

#ifndef __ROOM_H__
#define __ROOM_H__

#include "base.h"
#include "dao.h"

/* ************************************************************************ */
/*  Structure Definitions                                                   */
/* ************************************************************************ */

/**
 * @ingroup room
 *
 * @brief Memory structure for room exits
 *
 * @defgroup newRoomExitStruct
 * @{
 */
struct _roomExitData_t {
  char          *generalDescription;    /**< When look DIR.                 */
  char          *keyword;               /**< for open/close                 */
  bitvector_t    exitInfo;              /**< Exit flag info                 */
  char          *keyString;             /**< "godSimplex:4321" vnum for key */
  itemData_t *key;                   /**< Key for exit, or NULL          */
  char          *toRoomString;          /**< "Midgard:1234", vnum for target*/
  roomData_t *toRoom;                /**< Room exit leads to             */
};
/**
 * @}
 */

/**
 * @ingroup room
 *
 * @brief Memory structure for rooms
 *
 * @defgroup newRoomStruct
 * @{
 */
struct _roomData_t {
  roomVnum_t          number;           /**< Room's number (VNum)           */
  char               *name;             /**< Room's Name                    */
  char               *description;      /**< Room's Description             */
  zoneData_t      *zone;             /**< Zone room is in                */
  int                 sectorType;       /**< Sector type                    */
  extraDescData_t    *exDescription;    /**< Descs for Examine/Look         */
  bitvector_t         roomFlags;        /**< DEATH, DARK, etc               */
  byte                light;            /**< Number of lightsources in room */
  itemData_t         *contents;         /**< List of items in room          */
  charData_t         *people;           /**< list of PCs/NPCs in room       */
  SPECIAL(*func);                       /**< Pointer to spec_proc if any    */
  roomExitData_t  *dir[NUM_OF_DIRS]; /**< Directions                  */
};
/**
 * @}
 */

/* ************************************************************************ */
/*  Public functions                                                        */
/* ************************************************************************ */

void roomExitData_toDao(daoData_t *parentDao, int dir, struct _roomExitData_t *exit);
void roomData_toDao(daoData_t *dao, struct _roomData_t *room);

void roomData_setName(roomData_t *room, char *name);
void roomData_setDescription(roomData_t *room, char *description);
void roomData_free(void *r);
void roomData_loadRoomsInZone(zoneData_t *zone, daoData_t *roomListDao);
void rooms_listInZone(int type, char *buf, zoneData_t *zone);

roomData_t *roomData_new(zoneData_t *zone, roomVnum_t rVnum);
roomData_t *roomData_findInZone(zoneData_t *zone, int roomNumber);
roomData_t *roomData_find(char *strVnum);
roomData_t *roomData_findForChar(charData_t *ch, char *strVnum);

#endif /* __ROOM_H__ */