/************************************************************** * FFTacticsMUD : area.h * ************************************************************** * (c) 2002 Damien Dailidenas (Trenton). All rights reserved. * **************************************************************/ #define MAX_ROOMS 10000 #define AREA_ORBONNE_MONASTERY 1 #define ROOM_OUTSIDE 0 #define ROOM_BAR 1 #define ROOM_SHOP 2 #define ROOM_FURSHOP 3 typedef class SHOP SHOP; typedef bool BATTLE_FUN args((CH *ch, const short phase=1)); class AREA { public: AREA *next; short id; ROOM *room[4], *exits[4]; AREA() { next=NULL; id=0; for(short x = 0; x < 4; ++x) exits[x] = room[x] = NULL; } string name(); BATTLE_FUN *battle(); }; class ROOM { public: short id; AREA *area; SHOP *shop; CH *people; ROOM() { area=NULL; shop=NULL; people=NULL; id=0; } void echo(const string str, CH *ch = NULL, CH *ch2 = NULL); CH *ch(const string name, CH *ch = NULL); void print_contents(CH *ch); string name(); string description(); }; class BATTLE_AREA { public: short id; string name; BATTLE_ROOM *room[MAX_ROOMS]; unsigned int width, height; BATTLE_AREA *next; short weather; BATTLE_AREA() { weather=0; for(long x = 0; room[x]; ++x) room[x] = NULL; next = NULL; } long size(); void set_coordinates(); CH *ch(const string name); string str_weather(); }; class BATTLE_ROOM { public: BATTLE_AREA *area; CH *people; OBJ *objects; unsigned short sector, x, y, type; float height, depth; long id; BATTLE_ROOM() { area=NULL; people=NULL; objects=NULL; type=sector=x=y=0; height=depth=0; id=0; }; BATTLE_ROOM *get_adjacent_room(const short door); short distance(const BATTLE_ROOM *room); short distance(const CH *ch); string location(); OBJ *obj(const string name); OBJ *obj(const short id); void print_contents(CH *ch); void stat(CH *ch); CH *ch(const string name, CH *ch = NULL); CH *occupied(CH *ch); }; struct areas { char *name, *description; BATTLE_FUN *battle; short exits[4]; bool bar, shop, furshop; }; extern const struct areas area_table[]; extern BATTLE_AREA *battle_area_list; extern AREA *area_list; BATTLE_AREA *get_battle_area(const short id); AREA *get_area(const short id);