#pragma once

#include "ObjectDataFile/ObjectDataBaseFile.h"
#include "../RoleData/RoleDataEx.h"



class ObjectDataClass
{
public:
    //初始化
    static bool    Init( const char* InitPath );
    static bool    Release( );

protected:
	//物件資料
    ObjectDataFileClass<GameObjDbStructEx>	_ObjectDB;     

	//附加屬性表
	// _EqAttribute[ 類型 ][ 等級 ]
	// 類形: AddonPosENUM 
	// 主要是用在物品掉落時 附加的能力上
	vector< GameObjDbStructEx* >			_EqAttribute[ 16 ][ 150 ];

	//字串Map 
	// 主要是用 KeyStr 取得字串，改版時只要換字串表
	map< string , string >					_StringMap;


	//設定聯結
    void SetImageObjLink( );
    void SetMagicLink();
	void SetEqAttributeLink( );
	void SetQuestLink();
	void SetStringLink();
	void SetRecipeLink();

public:
    ObjectDataClass( const char* InitPath );
    ~ObjectDataClass( );
 
	
    GameObjDbStructEx*                      GetObj( int ObjID );
    ObjectDataFileClass<GameObjDbStructEx>*	ObjectDB();     


	//設定天賦資料
	//依照 附加屬性表 取得某等級的附加的屬性
	//主要用於物品掉落
	int		GetItemAttribute( int LV , AddonPosENUM AddonPos );


	//用 KeyStr 取得字串
	const char*		GetString( const char* Key );
};


extern ObjectDataClass*    g_ObjectData;