#ifndef	__ROLEDATAEX_H_
#define __ROLEDATAEX_H_
#include "Roledata.h"
#include "ReaderClass/ReaderClass.h"
#include <boost/function.hpp>
#include <boost/function_equal.hpp> 
#include "CampStatute.h"

using namespace boost;


enum   RoleDataResultENUM
{
    EM_RoleData_OK      = 0   ,
    EM_RoleData_PosErr        ,
    EM_RoleData_BufferEmpty   ,
    EM_RoleData_DataInfoErr   ,
    EM_RoleData_ApartSizeErr  ,
    EM_RoleData_OrgObjIDErr   ,
    EM_RoleData_EQWearPosErr  ,
    EM_RoleData_CountErr      ,

};

enum   PKTypeENUM
{
    EM_PK_Normal            ,
    EM_PK_PKZone            ,
};


class RoleDataEx : public RoleData
{
public:
    static	int				G_ZoneID;									//區域id(靜態全域)
    static	int				G_Clock;									//時脈
    static	UInt32			G_SysTime;									//用timeGetTime() - G_SysTime_Base 取得的值
    static	UInt32			G_SysTime_Base;								//用程式開啟時 timeGetTime() 取得的值
    static	PKTypeENUM		G_PKType;

    static  StaticString< _MAX_CREATETIME_SIZE_> G_NowStr;  			//目前時間字串
	static  UInt32			G_Now;

    //種族仇恨表
    static  int				HateTable[_MAX_RACE_COUNT_][_MAX_RACE_COUNT_];
    
	static  int				RoleExp[ _MAX_LEVEL_ ][ _MAX_VOCATION_COUNT_ ];
	static	float			SkillValueExp[ _MAX_LEVEL_ ];				//每等級每一點所加的 技能數值

	static float			ArmorArg[EM_ArmorPos_MaxCount][EM_Armor_MaxCount];		//裝備能力參數
	static int				BaseMagicList[ EM_BaseMagic_MaxCount ];									   

	static vector<string>	ZoneChannel;

	static int				AddLv_byRare[ 10 ];

	static CampStatuteClass	Camp;					//陣營

	static int				RefineExpTable[_MAX_SKILL_LEVE_];			//煉製的經驗值表
	//-----------------------------------------------------------------------------------------
	//所有職業 與 種族
	//----------------------------------------------------------------------------------------
	static char*			RaceShortStr[32];
	static char*			RaceStr[32];
	static char*			VocShortStr[32];
	static char*			VocStr[32];
    
    #include "RD_NetFunction.inl"

	#include "RD_Check.inl"
	#include "RD_ItemProc.inl"
	#include "RD_Normal.inl"
	#include "RD_Save.inl"
	#include "RD_Search.inl"
	#include "RD_STFunc.inl"
	#include "RD_ValueCal.inl"
	#include "RD_Setting.inl"
	#include "RD_Event.inl"
	#include "RD_Script.inl"
	#include "RD_Utility.inl"
    
    
};

#endif