rathena/src/map/instance.h
Cydh Ramdh fb01b02283 Instance (core) cleanup
* Changed instance_db array to DBMap
* Removed MAX_INSTANCE_DB
* Valid Instance ID is 1 ~ 65535
* Removed MAX_MAP_PER_INSTANCE from instance_db struct (in the map arrays)
* Change mapnames for instance_db to StringBuf

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-18 19:57:37 +07:00

52 lines
1.6 KiB
C

// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
#ifndef _INSTANCE_H_
#define _INSTANCE_H_
#define MAX_INSTANCE_DATA 300 // Essentially how many instances we can create, but instance creation is primarily decided by MAX_MAP_PER_SERVER
#define MAX_MAP_PER_INSTANCE 10 // Max number of maps per instance
#define INSTANCE_NAME_LENGTH (60+1)
typedef enum instance_state { INSTANCE_FREE, INSTANCE_IDLE, INSTANCE_BUSY } instance_state;
struct instance_data {
unsigned short type, ///< Instance DB ID
cnt_map;
int state;
int party_id;
unsigned int keep_limit;
int keep_timer;
unsigned int idle_limit;
int idle_timer;
struct DBMap* vars; // Instance Variable for scripts
struct {
int m;
int src_m;
} map[MAX_MAP_PER_INSTANCE];
};
extern int instance_start;
extern struct instance_data instance_data[MAX_INSTANCE_DATA];
int instance_create(int party_id, const char *name);
int instance_destroy(short instance_id);
int instance_enter(struct map_session_data *sd, const char *name);
int instance_enter_position(struct map_session_data *sd, const char *name, short x, short y);
int instance_reqinfo(struct map_session_data *sd, short instance_id);
int instance_addusers(short instance_id);
int instance_delusers(short instance_id);
int instance_mapname2mapid(const char *name, short instance_id);
int instance_addmap(short instance_id);
void instance_addnpc(struct instance_data *im);
void instance_readdb(void);
void instance_reload(void);
void do_reload_instance(void);
void do_init_instance(void);
void do_final_instance(void);
#endif