/* ==================================================================== * ÆÄ ÀÏ : GameResourceManager.h * ¸ñ Àû : °ÔÀÓ ¸®¼Ò½º(½ºÅ©¸³Æ® ÆÄÀϵî)ÆÄÀÏ °ü¸® * ÀÛ ¼º ÀÚ : À̹ý¼® * ÀÛ ¼º ÀÏ : 2006.06 * * Ãß°¡³»¿ë : * Ãß°¡³¯Â¥ ÀÛ¾÷ÀÚ Ãß°¡³»¿ë * 2006.06 À̹ý¼® »ý¼º * * ÁÖÀÇ»çÇ× : * =================================================================== */ #pragma once #include "Player_Common.h" class cUIText; class cUIFuncText; class cParser; class cStatusCalc_Client; class cStatusScript; class cMonsterScript; class cNPCScript; class cLevelScript; class cSkillScript; class cCommunityScript; class cStageScript; class cTotemScript; class cPvPScript; class cGatheringScript; class cVehicleScript; class cMakeSkillScript; class cBaseObject; class cTwitterScript; struct sTextItem; struct sMapInfo { unsigned long mapNum; unsigned char mapMode; unsigned long folderIdx; bool useTile; cString textureName; cString bgmName; unsigned long bgmWaitTime; unsigned char minLevel; unsigned char maxLevel; unsigned char maxPlayerCnt; unsigned long requireItem; }; struct sFaceEmoteInfo { unsigned long index; /// list index unsigned char type; /// 0:base, 1:wink, 2:emote cString textureName[eRACE_MAX*eGENDER_MAX]; }; struct sJobInfo { unsigned long jobNameIndex; unsigned long jobTargetIconIndex; }; enum { eData_Start = 0, eData_End, eData_Error, }; class cGameResourceManager { public: static cGameResourceManager* mpGameResourceManager; cGameResourceManager(); ~cGameResourceManager(); /// ÃʱâÈ­ bool Init(); /// Ãʱ⠷εùÁö¿¬À¸·Î ½ºÅ×ÀÌÁöº° ºÐ¸® bool LoadInitData1(); bool LoadInitData2(); bool LoadInitData3(); void LoadEnd(); inline unsigned int CheckInitData() { return mDataLoadFlag; } bool InitLogin(); bool InitServer(); /// Á¾·áºÎ void Exit(); /// ÇöÀç »ç¿ëÇÒ µ¥ÀÌÅÍÀÇ ·Îµù void DataLoading(); /// Item Á¤º¸ ÂüÁ¶ //const char* GetItemFileName( unsigned long itemFileIdx, char race, char gender ); const char* GetModelFileName( unsigned long modelIndex ); /// º¹ÀåÀÇ ±âº» ÆÄÀϸíÀ» Á¦°øÇÑ´Ù. const char* GetDefaultHairFileName( unsigned int hairIdx, char race, char gender ); const char* GetHairColorTextureFileName( unsigned int hairIdx, unsigned int colorIdx, char race, char gender ); const char* GetDefaultWearFileName( unsigned int part, char race, char gender ); const char* GetDefaultFaceFileName( char race, char gender ); const char* GetFaceTextureFileName( unsigned long idx, char race, char gender ); inline unsigned int GetDefaultFaceCount() { return mBaseFaceCount; } inline unsigned int GetDefaultHairCount() { return mDefaultHairFileNameMap.GetSize(); } inline unsigned int GetHairColorCount() { return mHairColorMax; } /// Á÷¾÷ Á¤º¸ ȹµæ.. LPCTSTR GetJobName( unsigned long jobIdx ); sJobInfo* GetJobInfo( unsigned long jobIdx ); void GetDefaultJob( unsigned char race, tArray* out ); tArray* GetParentJob( unsigned long currentJob ); unsigned int GetJobStep( unsigned long jobIdx ); tPointerHashMap* GetMapInfo(){ return &mMapInfoMap; } /// Á¾Á· Á¤º¸ ȹµæ LPCTSTR GetRaceName( unsigned char race ); LPCTSTR GetGameText( unsigned int textIdx ); LPCTSTR GetCategoryName( unsigned int textIdx ); LPCTSTR GetItemToolTipText( unsigned int textIdx ); LPCTSTR GetTarotText( unsigned int textIdx ); LPCTSTR GetCardBookText( unsigned int textIdx ); LPCTSTR GetSkillNameText( unsigned int textIdx ); LPCTSTR GetSkillToolTipText( unsigned int textIdx ); LPCTSTR GetNpcName( unsigned int nameIdx ); LPCTSTR GetMonsterName( unsigned int nameIdx ); LPCTSTR GetGatheringName( unsigned int nameIdx ); LPCTSTR GetQuestTitle( unsigned int nameIdx ); LPCTSTR GetHeroTitle( unsigned int titleIdx ); LPCTSTR GetTipText( unsigned int textIdx ); LPCTSTR GetMapName( unsigned int nameIdx ); LPCTSTR GetMapLoadTexture( unsigned int mapIdx, unsigned char mapMode ); cString GetMapSoundName( unsigned int mapIdx, unsigned char mapMode ); unsigned long GetMapSoundWaitTime( unsigned int mapIdx, unsigned char mapMode ); unsigned char GetMapMinLevel( unsigned int mapIdx, unsigned char mapMode ); unsigned char GetMapMaxLevel( unsigned int mapIdx, unsigned char mapMode ); unsigned char GetMapMaxPlayerCount( unsigned int mapIdx, unsigned char mapMode ); unsigned long GetMapRequireItem( unsigned int mapIdx, unsigned char mapMode ); LPCTSTR GetNpcTarotText( unsigned int textIdx ); bool IsMapUseTile( unsigned int mapIdx, unsigned char mapMode ); unsigned long GetMapFolderIdx( unsigned long mapIdx, unsigned char mapMode ); void GetMapMode( unsigned long mapIdx, tArray* modeArr ); unsigned long* GetTarotPattern(); sTextItem* GetMonsterTalk( unsigned long talkIdx, cBaseObject* mon, cBaseObject* target ); /// ÇöÀç Á÷¾÷¿¡ »ó°ü°ü°è°¡ ÀÖ´Â Á÷¾÷ÀÎÁö üũÇÑ´Ù. bool IsCorrelateJob( unsigned long currentJob, unsigned long checkJob ); /// bool IsCorrelateMageJob( unsigned long currentJob ); /// ÇØ´ç ¸Ê À妽º°¡ mapdata.txt ¿¡ µé¾î°¡ ÀÖ´ÂÁö üũ bool IsValidMap( unsigned long mapIdx ); tPointerHashMap* GetJobInfoMap() { return &mJobInfoMap; } tPointerHashMap* GetJobTree() { return &mJobTree; } protected: /// Game¿¡ »ç¿ëµÇ´Â °íÁ¤ ÅØ½ºÆ®¸¦ ·ÎµùÇÑ´Ù. bool LoadGameText(); bool LoadPlayerJob(); bool LoadPlayerJobInfo( cParser& parser ); bool LoadPlayerJobTree( cParser& parser, unsigned int depth ); /// Skill °ü·Ã.. /// ¿¬Ãâ ÆÄÀϵµ °°ÀÌ ·ÎµåµÈ´Ù. bool LoadSkillInfo(); /// ¸ðµ¨Á¤º¸ ¹× ij¸¯ÅÍ ±âº» ÆÄÀÏ Á¤º¸.. /// player, npc, monsterÀÇ ¸ðµ¨ÆÄÀÏÁ¤º¸ kfmÆÄÀÏ bool LoadModelFileInfo(); /// ij¸¯ÅÍÀÇ ±âº» ¿ÜÇüÁ¤º¸ nifÆÄÀÏ.. bool LoadCharacterBaseFileInfo(); /// ij¸¯ÅÍÀÇ Çì¾î Á¤º¸ (¸ðµ¨ÆÄÀÏ / ÅØ½ºÃÄÆÄÀÏ) bool LoadCharacterBaseHairFileInfo(); bool LoadHair( cParser& parser ); bool LoadHairColor( cParser& parser ); bool LoadMapInfo(); bool LoadFaceEmotionInfo(); bool LoadTarotDramaPattern(); void AddRaceTree( unsigned char race, unsigned long jobIdx ); /// ÂüÁ¶ µ¥ÀÌÅ͸¦ Àç·Îµù ÇÒ°æ¿ì¿¡ »ç¿ëÇÏ·Á°í ¸¸µé¾î º»´Ù. void RemovePlayerJobInfo(); void RemoveAllModelFileName(); void RemoveAllCharacterBaseFileInfo(); protected: static unsigned int _stdcall LoadIntroStageInit( void* ptr ); static unsigned int _stdcall LoadLoginStageInit( void* ptr ); static unsigned int _stdcall LoadServerStageInit( void* ptr ); DWORD IntroLoadThread(); DWORD LoginLoadThread(); DWORD ServerLoadThread(); protected: HANDLE mDataLoadThread; unsigned int mDataLoadFlag; ////////////////////////////////////////////////////////////////////////// // text ¹®¼­ cUIText* mpGameText; cUIText* mpCategoryName; cUIText* mpItemToolTipText; cUIText* mpTarotCardText; cUIText* mpCardBookText; cUIText* mpSkillNameText; cUIText* mpSkillToolTipText; cUIText* mpNpcNameText; cUIText* mpMonsterNameText; cUIText* mpGatheringNameText; cUIText* mpQuestTitleText; cUIText* mpMapNameText; cUIText* mpEmotionFilterText; /// ȣΰü·Ã ÅØ½ºÆ® cUIText* mpTitleText; /// ÆÁ °ü·Ã ÅØ½ºÆ® cUIText* mpTipText; /// npc Ÿ·Ô °ü·Ã ÅØ½ºÆ® cUIText* mpNpcTarotText; /// cUIFuncText* mpMonsterNote; sTextItem* mTextItem; ////////////////////////////////////////////////////////////////////////// // °¢Á¾ °ÔÀÓ Á¤º¸¸¦ À§ÇÑ ÀڷᱸÁ¶µé.. typedef tPointerHashMap cArrayHashMap; typedef tArray cFileNameArray; typedef tArray cJobIndexArray; /// Á÷¾÷ Á¤º¸ cArrayHashMap mJobInfoMap; /// Á÷¾÷À» key·Î ÇÏ´Â ÀüÁ÷ Á÷¾÷µéÀÇ ¸®½ºÆ®¸¦ ÁØ´Ù. cArrayHashMap mJobTree; /// Á¾Á·À» key·Î ÇÏ´Â ¸ðµç Á÷¾÷µéÀÇ ¸®½ºÆ®¸¦ ÁØ´Ù. cArrayHashMap mRaceTree; /// Item¿¡ ¿¬°áµÈ 3Dµ¥ÀÌÅÍÆÄÀϸí.. //cArrayHashMap mItemFileMap; /// kfmÆÄÀÏ ( NiString »ç¿ë ) cArrayHashMap mModelFileNameMap; /// ¸Ó¸® Á¾·ùµé cArrayHashMap mDefaultHairFileNameMap; /// ¸Ó¸® »ö±ò( ÅØ½ºÃÄ ÆÄÀÏ ) cArrayHashMap mHairColorTextureMap; unsigned int mHairColorMax; /// ¾ó±¼ Á¾·ùµé cArrayHashMap mDefaultFaceFileNameMap; /// À妽º -> »óÀÇ ÇÏÀÇ ¼Õ ¹ß °¢°¢ 1°³ÀÇ Á¤º¸¸¦ °®´Â´Ù. cArrayHashMap mDefaultWearFileNameMap; cArrayHashMap mMapInfoMap; cArrayHashMap mTarotDramaPattern; cArrayHashMap mFaceEmotionMap; unsigned int mBaseFaceCount; /// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// /// Loading ÇÁ·Î¼¼½º¸¦ À§ÇÑ ÀڷᱸÁ¶µé..(·ÎµùÇØ¾ßÇҰ͵é..) /// ¸Ê¿ë ÅØ½ºÃÄ ÆÄÀϵé NiTPrimitiveQueue* mpMapTextureFileQueue; /// °´Ã¼ ÆÄÀϵé NiTPrimitiveQueue* mpObjectFileQueue; /// ¸ðµ¨ ÆÄÀϵé NiTPrimitiveQueue* mpModelFileQueue; /// »ç¿îµå ÆÄÀϵé NiTPrimitiveQueue* mpSoundFileQueue; /// ////////////////////////////////////////////////////////////////////////// /// 070115 PKH µ¥¹ÌÁö °è»ê±â cStatusCalc_Client* mpStatusCalc; cStatusScript* mpStatusScript; /// 070130 PKH ¸ó½ºÅÍ cMonsterScript* mpMonsterScript; /// NPC cNPCScript* mpNpcScript; /// 070515 PKH ·¹º§ Å×À̺í cLevelScript* mpLevelScript; /// 070615 PKH cSkillScript* mpSkillScript; cMakeSkillScript* mpMakeSkillScript; /// cCommunityScript* mpCommunityScript; /// cStageScript* mpStageScript; /// cTotemScript* mpTotemScript; /// cPvPScript* mpPVPScript; /// äÁý ½ºÅ©¸³Æ® cGatheringScript* mpGatheringScript; /// cVehicleScript* mpVehicleScript; /// Æ®À§ÅÍ À̺¥Æ® cTwitterScript* mpTwitterScript; }; #define GAMERESOURCEMAN cGameResourceManager::mpGameResourceManager