#pragma once #include typedef util::_tstring ATTRNAMETYPE; #define MAX_SCREEN_SETTING 18 typedef struct _SCREEN_SETTING { St_ScreenSetting ScreenSetting; int iOriginalScreenSetting; std::string SettingText; } SCREEN_SETTING; enum eOptionDamageOutput { eODO_SHOWALL = 0, //¸ðµÎ eODO_SHOWMINE = 1, //³ª¸¸ eODO_NONE = 2, //²û eODO_MAX, }; template class AttrMap { map m_Map; public: T& GetParam(ATTRNAMETYPE& attrName) { map::iterator iter = m_Map.find(attrName); if(iter == m_Map.end()) { //Read¸¦ ¸ÕÀú ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. assert(0); } return iter->second; } friend class CGameParameter; }; class CGameParameter { protected: char m_szFullPath[MAX_PATH]; AttrMap m_IntParam; AttrMap m_FloatParam; AttrMap m_StringParam; char m_szPackFileName[MAX_PATH]; char m_szSettingFileNameForPack[MAX_PATH]; TCHAR m_szCetegoryName[MAX_PATH]; util::_tstring m_engineRoot; public: CGameParameter(void); CGameParameter(LPCSTR filename); virtual ~CGameParameter(void); int ReadInt( LPCTSTR szKeyName, int nDefaultValue, LPCTSTR szCetegoryName = NULL ); float ReadFloat( LPCTSTR szKeyName, float fDefaultValue, LPCTSTR szCetegoryName = NULL ); util::_tstring& ReadString( LPCTSTR szKeyName, LPCTSTR szDefaultValue, LPCTSTR szCetegoryName = NULL ); int GetIntParam(ATTRNAMETYPE attrName) { return m_IntParam.GetParam(attrName); } float GetFloatParam(ATTRNAMETYPE attrName) { return m_FloatParam.GetParam(attrName); } util::_tstring& GetStringParam(ATTRNAMETYPE attrName) { return m_StringParam.GetParam(attrName);} BOOL WriteInt( LPCTSTR szKeyName, int nValue, LPCTSTR szCetegoryName = NULL ); BOOL WriteFloat( LPCTSTR szKeyName, float fValue, LPCTSTR szCetegoryName = NULL ); void SetSettingFileName( LPCSTR szSettingFileName ); void SetPackFileName( LPCSTR szPackFileName ); BOOL IsSystemPackFileName( void ) { return m_szPackFileName[0]; } LPCTSTR GetEngineRoot() { return m_engineRoot.c_str();} void SetCetegoryName( LPCSTR szCategoryName ); protected : LPCTSTR SelectCetegoryName( LPCTSTR szCategoryName ); void Read( util::_tstring & szOutput, LPCTSTR szKeyName, LPCTSTR szDefaultValue, LPCTSTR szCetegoryName ); BOOL Write( LPCTSTR szKeyName, LPCTSTR szValue, LPCTSTR szCetegoryName ); }; ////////////////////////////////////////////////////////////////////////// // GameParameter µé... #define GENERALPARAM CGeneralGameParam::Instance() class CGeneralGameParam : public CGameParameter, public util::Singleton { private: // ÀÚÁÖ ÀÌ¿ëÇÏ´Â °ÍÀº º¯¼ö·Î µî·ÏÇÏ¿© »ç¿ëÇÑ´Ù. BOOL m_bNet; MAPID m_Start_MapID; FIELDID m_Start_FieldID; MAPID m_CharSelectMapID; DWORD m_dwVillageMapID; int m_iStartTileIndex; int m_iShadowType; int m_iCameraRotation; int m_iScreenShotMode; WzVector m_vCameraTo; BOOL m_bInterpolatePosition; BOOL m_bServerDebug; // µ¿¿µ»ó ÃÔ¿µ¿ë ÇÁ¸® Ä«¸Þ¶ó ¸ðµå int m_iIsFreeCameraMode; BOOL m_bFreeCameraState; float m_fFreeCameraSpeed; int m_iFreeCameraTurnSpeed; util::_tstring m_szCinematicFileName; util::_tstring m_szCharacterSceneCinematicFileName; BOOL m_bShowConsole; util::_tstring m_szConsoleSetting; util::_tstring m_szFileLogSetting; //BOOL m_iSpecialMode; eSPECIAL_MODE m_eSpecialMode; BOOL m_bUsePackFile; int m_iMultiThreadLoading; // ¸ÖƼ½º·¹µå ·Îµå BOOL m_bMoveNakProcess; // À̵¿Ã³¸®¿¡ µû¸¥ Nak ó¸® BOOL m_bStartLuaConsole; // TEST RESOURCE BOOL m_bResourceTestScene; BOOL m_bTestGraphicResource; BOOL m_bTestMap; BOOL m_bTestEffect; BOOL m_bTestInterface; BOOL m_bTestRscFailedOnly; // TEST_UI_SCENE BOOL m_bTestUIScene; int m_iTestUIScene_ExtID; #ifdef _DEV_VER_UI bool show_ui_name_;//Keyword:_DH_SHOW_UI_NAME bool show_string_id_;//Keyword:_DEBUG_STRINGIDEX_SHOW bool show_trigger_;//define: _DH_TRIGGER_LOG_MESSAGE bool show_item_id_;//define:_SCJ_SHOW_ITEM_ID bool show_npc_id_;//define:_SCJ_SHOW_NPC_ID #endif bool show_ssq_player_name_;//define:_NA_004756_120504_SHOW_SSQ_PLAYER_NAME ////////////////////////////////////////////////////////////////////////// DWORD m_dwUserID; //============================================================================================== program.ini·Î ¿Å°Ü¾ßÇÔ!!! // °ÔÀÓ °ø¿ë ÆÄ¶ó¹ÌÅÍ ----------------------------------------------- int m_iIntervalToWorldServerReconnect; BOOL m_bSpringCamera; /// spiring constant float m_springConst; /// damping constant float m_dampConst; /// spring length constatnt float m_springLen; // ±æµå ·©Å© ¸®½ºÆ® Ä«¿îµå int m_iGuildRankUpDisplayCount; BOOL m_bSoundLog; float m_fCameraDistance; float m_fMaxCameraDistance; //! ³¯°³¸¦ Æí»óÅ¿¡¼­ ¾Æ·¡·Î Á¡ÇÁ °¡´ÉÇÑ ³ôÀÌ //! ÀÏÁ¤ °Å¸® ÀÌ»óÀÌ¸é ³¶¶³¾îÁö·Î ¶³¾îÁöÁö ¾Ê°Ô ÇÑ´Ù. //! ±âº»°ªÀº 50.0f float wings_down_jump_height_; //Å©·¡½¬¸®Æ÷Æ® Àü¼Û ŸÀÔ int send_dump_type_; //ÀüÀå ´ÙÁß ¿¹¾à Çã¿ë int battle_ground_multi_reservation_; #ifdef _DEV_VER //============================================================================================== // °³¹ß¸ðµå ¿É¼ÇÀ» À§ÇÑ Å¬¶óÀÌ¾ðÆ® º¯¼ö bool m_bEnableAutoKill; /// ¸ó½ºÅ͸¦ ÀÚµ¿À¸·Î Á×ÀÌ´Â ¿É¼Ç bool m_bEnableAutoCooltimeReset; /// ½ºÅ³ »ç¿ëÈÄ ÄðŸÀÓÀ» ¸®¼Â public: void SetEnableAutoKill( bool IsEnable ) { m_bEnableAutoKill = IsEnable; } void SetEnableAutoCooltimeReset( bool IsEnable ) { m_bEnableAutoCooltimeReset = IsEnable; } bool IsEnableAutoKill() { return m_bEnableAutoKill; } bool IsEnableAutoCooltimeReset() { return m_bEnableAutoCooltimeReset; } #endif public: //------------------------------------------------------------------------------ //! ÅëÇÕ¼¥ //------------------------------------------------------------------------------ //std::wstring conveniencestore_connect_ip; //std::wstring conveniencestore_remote_path; util::_tstring conveniencestore_connect_ip; util::_tstring conveniencestore_remote_path; unsigned short conveniencestore_port_num; bool conveniencestore_always_download; //------------------------------------------------------------------------------ //============================================================================================== public: CGeneralGameParam(); inline BOOL IsNet() { return m_bNet; } inline MAPID GetStartMapID() { return m_Start_MapID; } inline FIELDID GetStartFieldID() { return m_Start_FieldID; } inline MAPID GetCharSelectMapID() { return m_CharSelectMapID; } inline DWORD GetVillageMapID() { return m_dwVillageMapID; } inline int GetStartTileIndex() { return m_iStartTileIndex; } inline int GetShadowType() { return m_iShadowType; } inline int GetGetCameraRotaion() { return m_iCameraRotation; } inline int GetScreenShotMode() { return m_iScreenShotMode; } inline void SetScreenShotMode(int iScreenShotMode) { m_iScreenShotMode = iScreenShotMode; } inline WzVector GetvCameraTo() { return m_vCameraTo; } inline BOOL IsServerDebug() { return m_bServerDebug; } inline BOOL IsInterpolatePosition() { return m_bInterpolatePosition; } inline TCHAR *GetCinematicFileName() { return (TCHAR *)m_szCinematicFileName.c_str(); } TCHAR* characterscene_cinematic_filename() { return (TCHAR*)m_szCharacterSceneCinematicFileName.c_str(); } inline BOOL IsShowConsole() { return m_bShowConsole; } inline TCHAR *GetConsoleSetting() { return (TCHAR *)m_szConsoleSetting.c_str(); } inline BOOL GetMoveNakProcess() { return m_bMoveNakProcess; } inline void SetStartLuaConsole(BOOL bStartLuaConsole) { m_bStartLuaConsole = bStartLuaConsole; } inline BOOL IsStartLuaConsole() { return m_bStartLuaConsole; } inline eSPECIAL_MODE GetSpecialMode() { return m_eSpecialMode; } inline void SetSpecialMode(eSPECIAL_MODE eMode) { m_eSpecialMode = eMode; } inline void SetUsePackFile( BOOL bIsUse ) { m_bUsePackFile = bIsUse; } inline BOOL IsUsePackFile( void ) { return m_bUsePackFile; } inline void UnsetMultiThreadLoading() { m_iMultiThreadLoading = 0; } inline void SetMultiThreadLoading() { m_iMultiThreadLoading = 1; } inline int IsMultiThreadLoading( void ) { return m_iMultiThreadLoading; } void Load( void ); // µ¿¿µ»ó ÃÔ¿µ¿ë ÇÁ¸® Ä«¸Þ¶ó ¸ðµå inline int IsFreeCameraMode() { return m_iIsFreeCameraMode; } inline void SetFreeCameraState( BOOL bFreeCamera ) { m_bFreeCameraState = bFreeCamera; } inline BOOL GetFreeCameraState() { return m_bFreeCameraState; } inline float GetFreeCameraSpeed() { return m_fFreeCameraSpeed; } inline int GetFreeCameraTurnSpeed() { return m_iFreeCameraTurnSpeed; } // TEST RESOURCE SCENE inline BOOL IsTestResourceScene() { return this->m_bResourceTestScene; } inline BOOL IsTestResourceGraphic() { return this->m_bTestGraphicResource; } inline BOOL IsTestResourceMap() { return this->m_bTestMap; } inline BOOL IsTestResourceEffect() { return this->m_bTestEffect; } inline BOOL IsTestResourceInterface() { return this->m_bTestInterface; } inline BOOL IsTestResourceFailedOnly() {return this->m_bTestRscFailedOnly; } inline void SetTestResourceScene(BOOL bFlag) { m_bResourceTestScene = bFlag; } inline void SetTestResourceGraphic(BOOL bFlag) { m_bTestGraphicResource = bFlag; } inline void SetTestResourceMap(BOOL bFlag) { m_bTestMap = bFlag; } inline void SetTestResourceEffect(BOOL bFlag) { m_bTestEffect = bFlag; } inline void SetTestResourceInterface(BOOL bFlag) { m_bTestInterface = bFlag; } inline void SetTestResourceFailedOnly(BOOL bFlag) { m_bTestRscFailedOnly = bFlag; } // TEST_UI_SCENE inline BOOL IsTestUIScene() { return this->m_bTestUIScene; } inline int GetTestUISceneID() { return this->m_iTestUIScene_ExtID; } //////////////////////////////////////////////////////////////// inline DWORD GetUserID() { return m_dwUserID; } inline void SetUserID(DWORD dwUserID) { this->m_dwUserID = dwUserID; } #ifdef _DEV_VER_UI inline bool IsShowTrigger(){ return show_trigger_; }//define:_DH_TRIGGER_LOG_MESSAGE inline void SetShowTrigger(bool show_trigger){ show_trigger_ = show_trigger; }//define:_DH_TRIGGER_LOG_MESSAGE inline bool IsShowUIName(){ return show_ui_name_; }//KeyWord:_DH_SHOW_UI_NAME inline void SetShowUIName(bool show_ui_name){ show_ui_name_ = show_ui_name; }//KeyWord:_DH_SHOW_UI_NAME inline bool IsShowStringId(){ return show_string_id_; }//KeyWord:_DEBUG_STRINGIDEX_SHOW inline void SetShowStringId(bool show_string_id){ show_string_id_ = show_string_id; }//KeyWord:_DEBUG_STRINGIDEX_SHOW inline bool IsShowItemId(){ return show_item_id_; }//define:_SCJ_SHOW_ITEM_ID inline void SetShowItemId(bool show_item_id){ show_item_id_ = show_item_id; }//define:_SCJ_SHOW_ITEM_ID inline bool IsShowNpcId(){ return show_npc_id_; }//define:_SCJ_SHOW_NPC_ID inline void SetShowNpcId(bool show_npc_id){ show_npc_id_ = show_npc_id; }//define:_SCJ_SHOW_NPC_ID #endif inline bool IsShowSSQPlayerName(){ return show_ssq_player_name_; }//define:_NA_004756_120504_SHOW_SSQ_PLAYER_NAME inline void SetShowSSQPlayerName(bool is_show){ show_ssq_player_name_ = is_show; }//define:_NA_004756_120504_SHOW_SSQ_PLAYER_NAME //============================================================================================== program.ini·Î ¿Å°Ü¾ßÇÔ!!! // °ÔÀÓ °ø¿ë ÆÄ¶ó¹ÌÅÍ ----------------------------------------------- inline int GetIntervalToWorldServerReconnect() { return this->m_iIntervalToWorldServerReconnect; } inline BOOL IsSpringCamera(){ return m_bSpringCamera; } inline void SetSpringCamera(BOOL bSpring){ m_bSpringCamera=bSpring;} // getting inline float GetSpringConst(){ return m_springConst;} inline float GetDampConst(){ return m_dampConst;} inline float GetSpringLen(){ return m_springLen;} // setting inline void SetSpringConst(float springconst){ m_springConst=springconst;} inline void SetDampConst(float dampconst){m_dampConst=dampconst;} inline void SetSpringLen(float springlen){m_springLen=springlen;} inline int GetGuildRankUpDisplayCount() { return m_iGuildRankUpDisplayCount; } inline BOOL GetSoundLogFlag() { return m_bSoundLog; } inline float GetCameraDistance() { return m_fCameraDistance; } inline float GetMaxCameraDistance() { return m_fMaxCameraDistance; } inline void SetMaxCameraDistance(float fMaxCameraDistance) { m_fMaxCameraDistance = fMaxCameraDistance; } float wings_down_jump_height() const { return wings_down_jump_height_; } // Å©·¡½¬ ¼öÁý °ü·Ã int GetSendDumpType() {return send_dump_type_;} //ÀüÀå ´ÙÁß ¿¹¾à Çã¿ë int GetBattleGRoundMultiReservation() {return battle_ground_multi_reservation_;} }; //============================================================================================= #define CLIENTINFO CClientInfoParam::Instance() class CClientInfoParam : public CGameParameter, public util::Singleton { util::_tstring m_ClientVersion; public: CClientInfoParam(); ~CClientInfoParam(); void Load( void ); inline TCHAR * GetClientVersion() { return (TCHAR *)m_ClientVersion.c_str(); } }; //============================================================================================= #define TESTPARAM CTestGameParam::Instance() class CTestGameParam : public CGameParameter, public util::Singleton { public: CTestGameParam(); }; #define GRAPHICPARAM CGraphicParam::Instance() class CGraphicParam : public CGameParameter , public util::Singleton { public: CGraphicParam(); ~CGraphicParam(); void Load(void); inline void SetBlurValue( int val) { m_iBlurValue = val;} inline int GetBlurValue() {return m_iBlurValue; } inline void SetFogValue( int val) { m_iFogValue = val;} inline int GetFogValue() {return m_iFogValue;}; inline void SetLoadingTextStartPointX( int val) { m_iLoadingText_StartPointX = val;} inline int GetLoadingTextStartPointX() { return m_iLoadingText_StartPointX;} inline void SetLoadingTextStartPointY( int val) { m_iLoadingText_StartPointY = val;} inline int GetLoadingTextStartPointY() {return m_iLoadingText_StartPointY;} inline void SetLoadingTextCardOut(int val) {m_iLoadingText_CardOut = val;} inline int GetLoadingTextCardOut() {return m_iLoadingText_CardOut;} inline void SetTerrainColorRate(float val) { m_fTerrain_Color_Rate = val;} inline float GetTerrainColorRate() {return m_fTerrain_Color_Rate;} inline float GetPkFogBegin(){ return m_fPkFogBegin;} inline float GetPkFogEnd(){ return m_fPkFogEnd;} inline float GetPkFogRate(){ return m_fPkFogRate;} float hero_gauge_velocity(DWORD max_hp, bool sit); float camera_eye_height_rider_spread() const { return camera_eye_height_rider_spread_; } float camera_eye_height_wings_spread() const { return camera_eye_height_wings_spread_; } public: int m_iLoadingText_StartPointX; int m_iLoadingText_StartPointY; int m_iLoadingText_CardOut; int m_iFogValue; int m_iBlurValue; float m_fTerrain_Color_Rate; float m_fPkFogBegin; float m_fPkFogEnd; float m_fPkFogRate; WzVector m_wvCharScenePos[MAX_CHARACTER_LIST_NUM]; WzColor m_wcCharCreateSceneFogColor; //------------------------------------------------------------------------------ //! _YMS_SMOOTH_GAUGE_ //! ¼Óµµ ¹Ð¸®¼¼ÄÁµå ´ÜÀ§ //! ù¹øÀç ÀÎÀÚ //! 0 : STAND, 1 : SIT //! µÎ¹øÂ° ÀÎÀÚ ÇÇÅë //! 0 : 1000 ÀÌÇÏ, 1 : 1000~2000, 2 : 2000~3000, 3 : 3000~4000, 4 : 4000 ÀÌ»ó const static int kGaugeStateKindCount = 2; const static int kGaugeHpKindCount = 5; float hero_gauge_velocity_[kGaugeStateKindCount][kGaugeHpKindCount]; float camera_eye_height_wings_spread_; //!< ³¯°³·Î ³¯°í ÀÖÀ»¶§ Ä«¸Þ¶ó Ä«¸Þ¶ó ´«³ôÀÌ float camera_eye_height_rider_spread_; //!< Ä®¹ö½º Å»°ÍÀ» Ÿ°í ³¯°í ÀÖÀ»¶§ Ä«¸Þ¶ó ´«³ôÀÌ }; #define PROGRAMPARAM CProgramParam::Instance() class CProgramParam : public CGameParameter , public util::Singleton { public: CProgramParam(); ~CProgramParam(); void Load(void); inline BOOL CheckBlockChatRepeat() {return m_bCheckBlockChatRepeat;} inline int GetBlockChatRepeatTime() { return m_iBlockChatRepeatTime;} inline BOOL GetEffectBatch() { return m_bEffectBatch; } inline int GetAutoEffectRate() { return m_iAutoEffectRate; } #ifdef _GS_ADD_BIGEVENT_MSG_1122 inline BOOL IsBigEvent() {return m_bBigEventTimer;} inline int GetQuestCode() { return m_wBigEventQuestCode;} inline BOOL GetStringCode(){ return m_iBigEventStringCode; } inline BOOL GetDisplayTime(){ return m_iBigEventDisplayTime; } #endif//_GS_ADD_BIGEVENT_MSG_1122 inline set& GetNewServerSet() { return m_NewServerSet; } inline int GetNewIconWidth() { return m_IconWidth; } inline int GetNewIconHeight() { return m_IconHeight; } inline int GetDominationChannel() { return m_DominationChannel; } inline int SetDominationChannel(int DominationChannel) { return m_DominationChannel = DominationChannel; } #ifdef _DEV_VER unsigned int search_frame_per_update_time() const { return search_frame_per_update_time_; } unsigned int number_of_searching_per_a_frame() const { return number_of_searching_per_a_frame_; } #endif//_NA_0_20091208_VENDOR_ITEM_SEARCH const char* GetReplaceWordForSlangWord() const { return replace_string_.c_str(); } DWORD GetReplaceType() const { return replace_type_; } inline bool IsEnablePerkSetting() const { return is_enable_perk_setting_; } bool is_sound_caching() const { return is_sound_caching_; } // ij¸¯ÅÍ »èÁ¦´ë±â ·¹º§ DWORD delete_level_for_wait() const { return delete_level_for_wait_; } //! OptionParam::m_LanguageType °ª°ú ¸ÅĪµÇ´Â °ªÀÌ´Ù LanguageType nation_type() const { return nation_type_; } bool is_block_cash_shop() const { return is_block_cash_shop_; } private: BOOL m_bCheckBlockChatRepeat; int m_iBlockChatRepeatTime; BOOL m_bEffectBatch; int m_iAutoEffectRate; // ÀÚµ¿ ÀÌÆåÆ® »ý¼º ºñÀ² Á¶Àý #ifdef _GS_ADD_BIGEVENT_MSG_1122 BOOL m_bBigEventTimer; WORD m_wBigEventQuestCode; int m_iBigEventStringCode; int m_iBigEventDisplayTime; #endif//_GS_ADD_BIGEVENT_MSG_1122 set m_NewServerSet; int m_IconWidth; int m_IconHeight; int m_DominationChannel; #ifdef _DEV_VER unsigned int search_frame_per_update_time_; unsigned int number_of_searching_per_a_frame_; #endif//_NA_0_20091208_VENDOR_ITEM_SEARCH std::string replace_string_; int replace_type_; bool is_enable_perk_setting_; bool is_sound_caching_; DWORD delete_level_for_wait_; // ij¸¯ÅÍ »èÁ¦´ë±â ·¹º§ //! OptionParam::m_LanguageType °ª°ú ¸ÅĪµÇ´Â °ªÀÌ´Ù LanguageType nation_type_; bool is_block_cash_shop_; }; #define TIMERPARAM CTimerParam::Instance() class CTimerParam : public CGameParameter, public util::Singleton { public: CTimerParam(); ~CTimerParam(); void Load(void); inline int GetShowTiredSystem() {return show_tired_system;} inline BOOL GetShowEventTimer() {return is_show_event_timer;} inline int GetMaxTiredTime() { return max_time_tired_system;} inline int GetMaxEventTime() {return max_event_time;} private: int show_tired_system; BOOL is_show_event_timer; int max_time_tired_system; int max_event_time; };