93 lines
1.5 KiB
C++
93 lines
1.5 KiB
C++
#include "dungeon.h"
|
|
|
|
enum
|
|
{
|
|
REGEN_TYPE_MOB,
|
|
REGEN_TYPE_GROUP,
|
|
REGEN_TYPE_EXCEPTION,
|
|
REGEN_TYPE_GROUP_GROUP,
|
|
REGEN_TYPE_ANYWHERE,
|
|
REGEN_TYPE_MAX_NUM
|
|
};
|
|
|
|
typedef struct regen
|
|
{
|
|
LPREGEN prev, next;
|
|
long lMapIndex;
|
|
int type;
|
|
int sx, sy, ex, ey;
|
|
BYTE z_section;
|
|
|
|
BYTE direction;
|
|
|
|
DWORD time;
|
|
|
|
int max_count;
|
|
int count;
|
|
int vnum;
|
|
|
|
bool is_aggressive;
|
|
|
|
LPEVENT event;
|
|
|
|
size_t id; // to help dungeon regen identification
|
|
|
|
regen() :
|
|
prev(NULL), next(NULL),
|
|
lMapIndex(0),
|
|
type(0),
|
|
sx(0), sy(0), ex(0), ey(0),
|
|
z_section(0),
|
|
direction(0),
|
|
time(0),
|
|
max_count(0),
|
|
count(0),
|
|
vnum(0),
|
|
is_aggressive(0),
|
|
event(NULL),
|
|
id(0)
|
|
{}
|
|
} REGEN;
|
|
|
|
EVENTINFO(regen_event_info)
|
|
{
|
|
LPREGEN regen;
|
|
|
|
regen_event_info()
|
|
: regen( 0 )
|
|
{
|
|
}
|
|
};
|
|
|
|
typedef regen_event_info REGEN_EVENT_INFO;
|
|
|
|
typedef struct regen_exception
|
|
{
|
|
LPREGEN_EXCEPTION prev, next;
|
|
|
|
int sx, sy, ex, ey;
|
|
BYTE z_section;
|
|
} REGEN_EXCEPTION;
|
|
|
|
class CDungeon;
|
|
|
|
EVENTINFO(dungeon_regen_event_info)
|
|
{
|
|
LPREGEN regen;
|
|
CDungeon::IdType dungeon_id;
|
|
|
|
dungeon_regen_event_info()
|
|
: regen( 0 )
|
|
, dungeon_id( 0 )
|
|
{
|
|
}
|
|
};
|
|
|
|
extern bool regen_load(const char *filename, long lMapIndex, int base_x, int base_y);
|
|
extern bool regen_do(const char* filename, long lMapIndex, int base_x, int base_y, LPDUNGEON pDungeon, bool bOnce = true );
|
|
extern bool regen_load_in_file(const char* filename, long lMapIndex, int base_x, int base_y );
|
|
extern void regen_free();
|
|
|
|
extern bool is_regen_exception(long x, long y);
|
|
extern void regen_reset(int x, int y);
|