/** * @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__ */