#ifndef __NPC_SCHEDULEMAN_H__
#define __NPC_SCHEDULEMAN_H__

#define CHARNAME_MAX	32

// 最大 scheduleman 数量
#ifdef _FAMILY_MANORNUM_CHANGE
#define MAX_SCHEDULEMAN	20
#else
#define MAX_SCHEDULEMAN	12
#endif

// 每一个 scheduleman 控管的 schedule 数量
#define MAX_SCHEDULE	24

// schedule 列表的一页所能列出的最大数量
#define MAXSCHEDULEINONEWINDOW	4

// family 列表的一页所能列出的最大数量
#define MAXFAMILYINONEWINDOW	8

// 每一个 scheduleman 所使用的 schedule 储存位置
// 对应在 fmpks 的 ID*MAX_SCHEDULE 上 (ID=0~MAX_SCHEDULEMAN-1)
// ID 是写在 data/npc 中指定给 "id:" 的值

// dueltime = (隔天?10000:0) + (小时*100)

typedef struct tagFamilyPKSchedule {
	int	dueltime;	// 比赛时刻
	int	host_index;	// 主队家族
	char host_name[CHARNAME_MAX];	// 主队家族名称
	int	guest_index;	// 客队家族
	char guest_name[CHARNAME_MAX];	// 客队家族名称
	int	prepare_time;	// 准备时间 (1~40 分钟)
	int	max_player;	// 最大出场人数 (1~家族人数上限)
	int	flag;		// 状态
	int	win;		// 胜利条件设定
	int	challenge_timeout;	// 挑战时限
	int	setting_timeout;	// 设定状态的 timeout
	char gmsv_name[256];
} FamilyPKSchedule;

// 纪录在 FamilyPKSchedule (fmpks) 的 flag 值
#define FMPKS_FLAG_NONE		-1	// 没有任何排程
#define FMPKS_FLAG_CHALLENGE	0	// 等待客队同意中
#define FMPKS_FLAG_SETTING	1	// 主队正在设定排程 (取消时变成 NONE)
#define FMPKS_FLAG_CONFIRMING	2	// 客队正在同意中
#define FMPKS_FLAG_SCHEDULED	3	// 已经排好排程，尚未开打
#define FMPKS_FLAG_DUEL		4	// 开打中
#define FMPKS_FLAG_HOSTWIN	5	// 主队胜
#define FMPKS_FLAG_GUESTWIN	6	// 客队胜
#define FMPKS_FLAG_MANOR_BATTLEBEGIN	7	// 庄园挑战 战斗中
#define FMPKS_FLAG_MANOR_PREPARE	8	// 庄园挑战 准备中
#define FMPKS_FLAG_MANOR_PEACE	9	// 庄园挑战 休战中
#define FMPKS_FLAG_MANOR_OTHERPLANET	10	// 庄园挑战 在别的星球决战
#define FMPKS_FLAG_MANOR_BATTLEEND	11	// 庄园挑战 战斗结束
#define FMPKS_FLAG_MANOR_PEACE_SAVE	12	// 将庄园挑战存档
#define FMPKS_FLAG_MANOR_READYTOFIGHT	13	// (GM: manorpk) 全星系变成可约战状态
#define FMPKS_FLAG_MANOR_CLEANFLAG	14	// (GM: manorpk) 本星球清除状态
#ifdef _NEW_MANOR_LAW
#define FMPKS_FLAG_WAIT		15	// 进入挑战期,已记录家族气势,等待挑战排程
#endif

// 传给 client 的 flag
#define FLAG_NONE	-1
#define FLAG_MODIFY	0
#define FLAG_ACCEPT	1
#define FLAG_SETTING	2
#define FLAG_CONFIRM	3
#define FLAG_SCHEDULED	4

extern FamilyPKSchedule fmpks[MAX_SCHEDULE*MAX_SCHEDULEMAN];

BOOL NPC_SchedulemanInit(int meindex);
void NPC_SchedulemanTalked(int meindex, int talkerindex, char *msg, int color);
void NPC_SchedulemanWindowTalked(int meindex, int talkerindex,
				 int seqno, int select, char *data);
void NPC_SchedulemanLoop(int meindex);

#endif 

/*__NPC_SCHEDULEMAN_H__*/
