#pragma once //#include //#include //#include "SGameMessageUI.h" namespace { const int DEFAULT_POS = -1; } namespace SGAME_OPT_DATA { enum APPLY_MODE { MODE_ENVIRONMENT = 0, MODE_PLAY, MODE_UI, }; const int c_nMaxChannel = 5; const int c_nMaxChatOption = 19; //============================================================================================================================================= /// 윈도우 위치를 디폴트로 쎄팅해야할 것들(알파처러 해야할 윈도우도 이것으로 같이 처리하자) enum { Messanger, Inventory, Creature, CreatureInfo, CreatureSkill, Quest, Motion, Char, Skill, Map, ItemCombine, Shop, Store, Storage, Party, Equipment, // 장비창. bintitle. 2010.10.07. NONE_MOVE_WIN, ///< 이 위에는 움직이지 못하게 할 윈도우들 / or / 윈도우 위치 초기화시 초기화를 해줄 윈도우들 System, SkillFund, ShopKart, StorageKart, CraetureForm, CratureDetail, CratureSkill, CreatureSkillFund, QuestInfo, QuestReward, CashStorage, DungeonStone, DungeonUnit, DungeonUnitMini, DungeonUnitInvitation, GuildList, TitleMain, TitleGainResult, ADD_ALPHA_WIN, ///< NONE_MOVE_WIN 에서 ADD_ALPHA_WIN까지는 움직이는거와 함께 알파 처리해야할 것들(스킬창은 위로 되지만 스킬투자창은 따로) SysMenu, Option, MAX ///< ADD_ALPHA_WIN 에서 MAX까지는 윈도우 위치를 Default로 쎄팅해줘야 하는 것들 }; const int c_nWindowOption[MAX][3] ={ SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COMMUNITY, 788, 217, ///< Messanger//임시주석 SIMSG_TOGGLE_UIWINDOW::UIWINDOW_INVENTORY, 626, 108, ///< Inventory SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE, 3000, 540, ///< Creature (3000같은 어이없는 숫자를 넣은것은 화면 우측 끝에 붙이기 위해서 -N4-) SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE_PAGE, 50, 192, ///< CreatureInfo SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE_SKILL, 50, 192, ///< CratureSkill SIMSG_TOGGLE_UIWINDOW::UIWINDOW_QUEST_LIST, 13, 146, ///< Quest SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MOTION, 366, 222, ///< Motion SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARINFO, 30, 140, ///< Char SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SKILL, 40, 166, ///< Skill SIMSG_TOGGLE_UIWINDOW::UIWINDOW_WORLDMAP, 222, 34, ///< Map SIMSG_TOGGLE_UIWINDOW::UIWINDOW_ITEMCOMBINE, 412, 261, ///< ItemCombine SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SHOP, 35, 135, ///< Shop SIMSG_TOGGLE_UIWINDOW::UIWINDOW_STORE_CLIENT, 35, 95, ///< Store SIMSG_TOGGLE_UIWINDOW::UIWINDOW_STORAGE, 518, 367, ///< Storage SIMSG_TOGGLE_UIWINDOW::UIWINDOW_PARTY, 0, 350, ///< Party // SIMSG_TOGGLE_UIWINDOW::UIWINDOW_EQUIPMENT, 300, 108, ///< Equipment // 장비창. bintitle. 2010.10.07. SIMSG_TOGGLE_UIWINDOW::UIWINDOW_EQUIPMENT, 280, 108, ///< Equipment // 장비창. servantes. 2010.12.10. -1, -1, -1, ///< NONE_MOVE_WIN //---------------------------------------------------------------------------------------------- 윈도우 움직이는 설정관련 ↑ SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SYSTEM, -1, -1, ///< System SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SKILLFUND, -1, -1, ///< SkillFund SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SHOPKART, -1, -1, ///< ShopKart SIMSG_TOGGLE_UIWINDOW::UIWINDOW_STORAGEKART, -1, -1, ///< StorageKart SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATUREFORM, -1, -1, ///< CraetureForm SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE_DETAIL, -1, -1, ///< CratureDetail SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE_SKILLFUND, -1, -1, ///< CreatureSkillFund SIMSG_TOGGLE_UIWINDOW::UIWINDOW_QUEST_INFO, -1, -1, ///< QuestInfo SIMSG_TOGGLE_UIWINDOW::UIWINDOW_QUEST_REWARD, -1, -1, ///< QuestReward SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CASH_STORAGE, -1, -1, ///< CashStorage SIMSG_TOGGLE_UIWINDOW::UIWINDOW_DUNGEON_STONE, -1, -1, ///< DungeonStone SIMSG_TOGGLE_UIWINDOW::UIWINDOW_DUNGEON_UNIT, -1, -1, ///< DungeonUnit SIMSG_TOGGLE_UIWINDOW::UIWINDOW_DUNGEON_UNIT_MINI, -1, -1, ///< DungeonUnitMini // 공대창 미니 2011. 10. 10 - marine SIMSG_TOGGLE_UIWINDOW::UIWINDOW_DUNGEON_UNIT_INVITATION, -1, -1, ///< DungeonUnitMini // 공대 초대창 2011. 10. 20 - marine SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_MEMBER_LIST, -1, -1, ///< GuildMemberList // 2011. 10. 26 - marine SIMSG_TOGGLE_UIWINDOW::UIWINDOW_TITLE_MAIN, -1, -1, // Title // 2012. 4. 4 - marine 호칭 SIMSG_TOGGLE_UIWINDOW::UIWINDOW_TITLE_GAIN_RESULT, -1, -1, // 타이틀 획득 알림 -1, -1, -1, ///< ADD_ALPHA_WIN //---------------------------------------------------------------------------------------------- 알파 처리 관련 ↑ 0, -1, -1, ///< SysMenu 0, -1, -1, ///< Option }; // 게임 환경 옵션 관련 =================================================== const int MaxBrightPower = 5; const int MaxBakGrondDis = 5; const int MaxCharDis = 4; const int MaxTextureQuality = 3; const int MaxBackSound = 10; const int MaxEffectSound = 10; const int MaxEnvSound = 10; // 배경 표시거리 세트 const int LandDis[5] = {1,1,2,3,4}; const int PropDis[5] = {1,2,3,4,4}; const int TreeDis[5] = {1,3,4,4,4}; const int GraseDis[5] = {0,1,2,3,3}; const int TreeQuality[5] = {1,3,3,4,4}; // 택스처 품질 세트에 따른 고급 리소스 옵션 / 셀프 쉐도우 품질 const int RscQuality[3] = {0,1,1}; const int SlfeShadowQuality[3] = {0,1,2}; //========================================================================= //게임 플레이 옵션 관련 =================================================== const int MaxTapCase = 2; const int MaxWinAlpha = 5; const int MaxWeatherQuality = 4; const float AlphaLevel[5] = {1.0f, 0.9f, 0.7f , 0.5f ,0.4f}; //========================================================================= }; struct _OPT_DATA { _OPT_DATA() { nPresetOption = nResolution_Width = nResolution_Height = nRefreshRate = nWinMode = nBright = nWinBright = -1; nBackGrondDis = nTerrainDis = nPropDis = nSpeedDis = nGrassDis = nSpeedQual = nAvatarDis = nShadowDis = -1; nMipBias = nResourceQual = nSelfShadowQual = nGlowQual = nWaterQual = nLowShadow = -1; nTreeAlpha = nEnhance = nStateEffect = nStateEffectPlayer = nStateEffectParty = nStateEffectEnemy = nShadow = -1; // nAllMute = nRepeat = nBGM_Volume = nSFX_Volume = nBGM_Mute = nSFX_Mute = nLightMap = nRenderGrass = nRenderGrass = -1; nAllMute = nBGM_Volume = nSFX_Volume = nBGM_Mute = nSFX_Mute = nLightMap = nRenderGrass = nRenderGrass = -1;// 2011.11.29 - servantes : 옵션 nui에 해당 효과 없음 / nRepeat 삭제 nEffect = nEffectPlayer = nEffectParty = nEffectEnemy = -1; nResolution_OldWidth = nResolution_OldHeight = -1; //servantes 2010.11.26 nFullWinMode = 0; // 전체 창 모드 kkr nFaceAni = 0; nWeatherQuality = 3; ///< [sonador] 2007.05.30 날씨 효과 옵션 초기화 nCameraCollision = 1; nTABKey = nEnterChat = nChipAttack = nTrade = nPVP = nWheel = nChatHide = nMobFace = nChatBalloon = nTip = nAutoTarget = -1; // 2010.05.20 - prodongi /*nHelm = */nMantle = nHPGage = nPlayerGage = nMobGage = nTargetGage = nName = nPlayerName = nCreatureName = -1; nMobName = nNPCName = ndamage = nPlayerDM = nCreatureDM = nPartyDM = nWinLock = nWinAlpha = -1; nSelfBoothType = 1; nTownLimit = 0; nCriticalCamera = 1; //nAvatarDeco = 1; nLobby_Theme = -1; nRenderOtherPlayer = 0; nTitleShow = 0; isShowSelectOutLine = 1; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 게임 환경 관련 옵션 int nPresetOption; ///< 프리셋 모드 (0 이면 유저 세팅) int nResolution_Width; ///< 해상도 가로 int nResolution_Height; ///< 해상도 세로 int nResolution_OldWidth; ///< 해상도 가로 servantes 2010.11.26 int nResolution_OldHeight; ///< 해상도 세로 int nRefreshRate; ///< 화면 재생 빈도 int nWinMode; ///< Full, Window int nFullWinMode; ///< 전체창모드 kkr int nBright; ///< 화면 밝기 int nWinBright; ///< 바탕화면 밝기 적용 int nBackGrondDis; ///< 배경 표시거리 int nTerrainDis; ///< 지면 표시거리 int nPropDis; ///< 구조물 표시거리 int nSpeedDis; ///< 나무 표시거리 int nGrassDis; ///< 풀 표시거리 int nSpeedQual; ///< 나무 품질 int nAvatarDis; ///< 캐릭터 표시거리 int nShadowDis; ///< 그림자 표시거리 int nMipBias; ///< 텍스쳐 밉바이어스 int nResourceQual; ///< 리소스 품질 int nSelfShadowQual; ///< 셀프 그림자 품질 int nGlowQual; ///< Glow 품질 int nWaterQual; ///< 물 반사 효과 int nLowShadow; ///< 저사양 그림자 int nTownLimit; ///< 마을에서 프랍거리 제한이 자동으로 설정 int nTreeAlpha; ///< 나무 알파처리(투명화) int nEnhance; ///< 강화 효과 표시 int nStateEffect; ///< 지속효과 표시 int nStateEffectPlayer; ///< 지속효과 표시(자신과 크리처) int nStateEffectParty; ///< 지속효과 표시(파티) int nStateEffectEnemy; ///< 지속효과 표시(적) int nShadow; ///< 그림자 표시 int nAllMute; ///< 전체 음소거 // int nRepeat; ///< 현재음 반복 // 2011.11.29 - servantes : 옵션 nui에 해당 효과 없음 / 주석처리 int nBGM_Volume; ///< 배경음 볼륨 int nSFX_Volume; ///< 효과음 볼륨 int nENVS_Volume; ///< 환경음 볼륨 int nMASTER_Volume; ///< 전체음 볼륨 int nBGM_Mute; ///< 배경음 소거 int nSFX_Mute; ///< 효과음 소거 int nENVS_Mute; ///< 환경음 소거 int nLightMap; ///< LightMap int nRenderTree; ///< nRenderTree int nRenderGrass; ///< nRenderGrass int nEffect; ///< 이펙트 표시 int nEffectPlayer; ///< 이펙트 표시(자신과 크리처) int nEffectParty; ///< 이펙트 표시(파티) int nEffectEnemy; ///< 이펙트 표시(적) int nFaceAni; ///< 눈 깜빡임 표시 int nRenderOtherPlayer; ///< 자신외 다른 플레이어 렌더 표시 int nWeatherQuality; ///< [sonador] 2007.05.30 날씨효과 품질 int nCameraCollision; ///< 카메라 충돌 옵션 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 게임 플레이 관련 옵션 int nTABKey; ///< TAB키 설정 int nEnterChat; ///< 앤터체팅사용 int nChipAttack; ///< 포스칩 후 자동 공격 int nTrade; ///< 거래 및 초대 거절 int nPVP; ///< 대련신청_거부 int nWheel; ///< 휠방향_반전 int nChatHide; ///< 체팅창 자동숨김 int nMobFace; ///< 몬스터 페이스컷 int nSimpleRak; ///< 라크 랜더 int nChatBalloon; ///< 말풍선 표시 int nTip; ///< 게임팁 표시 // 2010.05.20 - prodongi //int nHelm; ///< 투구 보이기 int nMantle; ///< 망토 보이기 int nHPGage; ///< 체력게이지 표시 int nPlayerGage; ///< 자신과 파티원 int nMobGage; ///< 몬스터 int nTargetGage; ///< 타겟 int nName; ///< 이름 표시 int nPlayerName; ///< 플레이어 int nCreatureName; ///< 크리처 int nMobName; ///< 몬스터 int nNPCName; ///< NPC int ndamage; ///< 데미지 표시 int nPlayerDM; ///< 자신 int nCreatureDM; ///< 크리처 int nPartyDM; ///< 파티원 int nWinLock; ///< 현재윈도우장금 int nWinAlpha; ///< 윈도우 투명도 설정 int nSelfBoothType; ///< 상점 랜더링 관련 int nCriticalCamera; ///< 크리티칼 카메라 진동 //int nAvatarDeco; ///< 꾸미기 아이템 적용 // 2010.10.11. 게임플레이옵션에서 "꾸미기보이기" 제거. int nAutoTarget; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 로비 int nLobby_Theme; int nTitleShow; int isShowSelectOutLine; }; enum BOOTH_TYPE { RENDER_NONE_BOOTH = 0, ///< 상점모드 중일 때 랜더링을 전혀 안하겠다는 것 RENDER_SIMPLE_BOOTH, ///< 간단한 리소스 상점을 랜더 RENDER_DETAIL_BOOTH, ///< 기존의 상점 리소스로 랜더 RENDER_AVATAR_BOOTH, ///< 그냥 아바타로 랜더 }; struct DISP_MODE { UINT width; UINT height; std::vector< UINT > refreshrate_list; }; class SINIManager { public: SINIManager(); ~SINIManager(); // attribute public: std::string m_strFile; std::string m_strSection; std::string m_strGlobalSection; // operators public: bool IsLoading () { return ( m_strFile.size() > 0 ); }; bool LoadOptionFile ( const char* szFileName = "\\rappelz_v1.opt"); bool LoadOptionFilePath( const char* szFilePath ); void SetSection ( const char* szName ) { m_strSection = szName; }; bool SetValueInt ( std::string strkey, int nValue, bool bGlobal = false ); int GetValueInt ( std::string strKey, bool bGlobal = false ); bool SetValueString ( std::string strKey, std::string strValue, bool bGlobal = false ); void GetValueString ( std::string strKey, char* szBuf, bool bGlobal = false ); }; class SGameOption { public: SGameOption(); ~SGameOption(); public: /// 캐릭별 저장 게임 월드에서 호출해 준다(캐릭이름) ====== void Load( const char* szName ); /// 각 모드별(그래픽/사운드/UI) 로 실시간 저장한다 ======= void Apply( int nMode ); void SetOptionData( int nMode ); /// 각 채팅 타입별 저장 void ChatOptionApply( int nTabType, std::string strValue ); void ChatOptionApply( int nTabType, bool * pCehck ); void InitChattinSet(); // attribute public: const _OPT_DATA & GetOptData() { return m_curData; } const _OPT_DATA & GetDefOptData() { return m_defData; } void GetDefPlayOptData(_OPT_DATA & data); void SettingForMinimumSystem(); void SettingForMaximumSystem(); enum { PRESET_LOWEST = 1, PRESET_LOW, PRESET_MID, PRESET_HIGH, PRESET_HIGHEST }; bool GetPresetOptData( int level, _OPT_DATA& data ); void SetOptData( _OPT_DATA & optData ) { m_curData = optData; } int GetResolution_Index( int nWidth, int nHeight ); bool CheckBoolValue( int nValue, bool bDefaultValue ); int CheckIntValue( int nValue, int bDefaultValue ); //Get------------------------------------------- int GetPresetOption() const { return m_curData.nPresetOption; }; int GetResolution_Width() const { return m_curData.nResolution_Width; } ///< 해상도 가로 int GetResolution_Height() const { return m_curData.nResolution_Height; } ///< 해상도 세로 int GetResolution_OldWidth() const { return m_curData.nResolution_OldWidth; } ///< 해상도 가로 servantes 2010.11.26 int GetResolution_OldHeight() const { return m_curData.nResolution_OldHeight; } ///< 해상도 세로 int GetRefreshRate() const { return m_curData.nRefreshRate; }; ///< 화면 재생 빈도 int GetWinMode() const { return m_curData.nWinMode; }; ///< Full, Window int GetFullWindowMode() const { return m_curData.nFullWinMode; }; ///< 전체 창 모드 kkr int GetTerrainViewDistance() const { return m_curData.nTerrainDis; }; ///< 지면 표시거리 int GetPropViewDistance() const { return m_curData.nPropDis; }; ///< 구조물 표시거리 int GetSpeedTreeViewDistance() const { return m_curData.nSpeedDis; }; ///< 나무 표시거리 int GetGrassViewDistance() const { return m_curData.nGrassDis; }; ///< 풀 표시거리 int GetAvatarViewDistance() const { return m_curData.nAvatarDis; }; ///< 캐릭터 표시거리 int GetShadowViewDistance() const { return m_curData.nShadowDis; }; ///< 그림자 표시거리 int GetSpeedTreeQuality() const { return m_curData.nSpeedQual; }; ///< 나무 품질 int GetTextureMipBias() const { return m_curData.nMipBias; }; ///< 텍스쳐 밉 바이어스 int GetSelfShadowQuality() const { return m_curData.nSelfShadowQual; }; ///< 셀프 쉐도우 품질 int GetGlowQuality() const { return m_curData.nGlowQual; }; ///< Glow 품질 int GetLowShadow() const { return m_curData.nLowShadow; }; ///< 저사양 그림자 int GetWaterQuality() const { return m_curData.nWaterQual; }; ///< 물 반사 효과 int GetResourceQuality() const { return m_curData.nResourceQual; }; ///< 리소스 품질 int GetBright() const { return m_curData.nBright; }; ///< 화면 밝기 int IsStateEffectRender() const { return m_curData.nStateEffect; }; ///< 지속효과 이펙트 랜더 int IsStatePlayerEftRend() const { return m_curData.nStateEffectPlayer; }; ///< 자신과 크리처 지속효과 이펙트 랜더 int IsStatePartyEftRend() const { return m_curData.nStateEffectParty; }; ///< 파티원 이펙트 랜더 int IsStateEnemyEftRend() const { return m_curData.nStateEffectEnemy; }; ///< 적 이펙트 랜더 int IsEnhanceRende() const { return m_curData.nEnhance; }; ///< 인첸된 아이템 강화효과 이펙트 랜더 int GetRenderTree() const { return m_curData.nRenderTree; }; ///< 나무 표시 int GetRenderGrass() const { return m_curData.nRenderGrass; }; ///< 풀 표시 int IsEffectRender() const { return m_curData.nEffect; }; ///< 이펙트 랜더 int IsPlayerEftRend() const { return m_curData.nEffectPlayer; }; ///< 자신과 크리처 이펙트 랜더 int IsPartyEftRend() const { return m_curData.nEffectParty; }; ///< 파티원 이펙트 랜더 int IsEnemyEftRend() const { return m_curData.nEffectEnemy; }; ///< 적 이펙트 랜더 int GetFaceAni() const { return m_curData.nFaceAni; }; int GetRenderOtherPlayerType() { return m_curData.nRenderOtherPlayer; } int GetWeatherQuality() const { return m_curData.nWeatherQuality; } int GetCameraCollision() const { return m_curData.nCameraCollision; } int GetTitleNameShow() const { return m_curData.nTitleShow; } bool NotifyTitle(int changeOpt); bool isShowSelectOutLine() const { return m_curData.isShowSelectOutLine == 1; } //Set------------------------------------------- void SetPresetOption( int nPresetLevel ) { m_curData.nPresetOption = nPresetLevel; }; void SetResolution_Width( int nWidth ) { m_curData.nResolution_Width = nWidth; } ///< 해상도 가로 void SetResolution_Height( int nHeight ) { m_curData.nResolution_Height = nHeight; } ///< 해상도 세로 void SetResolution_OldWidth( int nWidth ) { m_curData.nResolution_OldWidth = nWidth; } ///< 해상도 가로 servantes 2010.11.26 void SetResolution_OldHeight( int nHeight ) { m_curData.nResolution_OldHeight = nHeight; } ///< 해상도 세로 void SetRefreshRate( int nLevel ) { m_curData.nRefreshRate = nLevel; }; ///< 화면 재생 빈도 void SetWinMode( int nLevel ) { m_curData.nWinMode = nLevel; }; ///< Full, Window void SetFullWinMode( int nLevel ) { m_curData.nFullWinMode = nLevel; }; ///< 전체 창 모드 kkr void SetTerrainViewDistance( int nLevel ) { m_curData.nTerrainDis = nLevel; }; ///< 지면 표시거리 void SetPropViewDistance( int nLevel ) { m_curData.nPropDis = nLevel; }; ///< 구조물 표시거리 void SetSpeedTreeViewDistance( int nLevel ) { m_curData.nSpeedDis = nLevel; }; ///< 나무 표시거리 void SetGrassViewDistance( int nLevel ) { m_curData.nGrassDis = nLevel; }; ///< 풀 표시거리 void SetAvatarViewDistance( int nLevel ) { m_curData.nAvatarDis = nLevel; }; ///< 캐릭터 표시거리 void SetShadowViewDistance( int nLevel ) { m_curData.nShadowDis = nLevel; }; ///< 그림자 표시거리 void SetSpeedTreeQuality( int nLevel ) { m_curData.nSpeedQual = nLevel; }; ///< 나무 품질 void SetTextureMipBias( int nLevel ) { m_curData.nMipBias = nLevel; }; ///< 텍스쳐 밉 바이어스 void SetSelfShadowQuality( int nLevel ) { m_curData.nSelfShadowQual = nLevel; }; ///< 셀프 쉐도우 품질 void SetGlowQuality( int nLevel ) { m_curData.nGlowQual = nLevel; }; ///< Glow 품질 void SetLowShadow( int nLevel ) { m_curData.nLowShadow = nLevel; }; ///< 저사양 그림자 void SetShadow( int nLevel ) { m_curData.nShadow = nLevel; }; void SetWaterQuality( int nLevel ) { m_curData.nWaterQual = nLevel; }; ///< 물 반사 효과 void SetResourceQuality( int nLevel ) { m_curData.nResourceQual = nLevel; }; ///< 리소스 품질 void SetBright( int nLevel ) { m_curData.nBright = nLevel; }; ///< 화면 밝기 void SetRenderTree( int nOn ) { m_curData.nRenderTree = nOn; }; ///< 나무 표시 void SetRenderGrass( int nOn ) { m_curData.nRenderGrass = nOn; }; ///< 풀 표시 void SetLight( int nOn ) { m_curData.nLightMap = nOn; }; ///< 라이트멥 void SetFaceAni( int nLevel ) { m_curData.nFaceAni = nLevel; }; // 사운드 =================================== int GetBGM_Volume() const { return m_curData.nBGM_Volume; }; int GetSFX_Volume() const { return m_curData.nSFX_Volume; }; int GetENVS_Volume() const { return m_curData.nENVS_Volume; }; int GetMASTER_Volume() const { return m_curData.nMASTER_Volume; }; bool GetAll_Mute() const { return (m_curData.nAllMute == 1) ? true : false; }; bool GetBGM_Mute() const { return (m_curData.nBGM_Mute == 1) ? true : false; }; bool GetSFX_Mute() const { return (m_curData.nSFX_Mute == 1) ? true : false; }; bool GetENVS_Mute() const { return (m_curData.nENVS_Mute == 1) ? true : false; }; void SetBGM_Volum( int nLevel ) { m_curData.nBGM_Volume = nLevel; }; void SetSFX_Volum( int nLevel ) { m_curData.nSFX_Volume = nLevel; }; void SetAll_Mute( int nLevel ) { m_curData.nAllMute = nLevel; }; void SetBGM_Mute( int nLevel ) { m_curData.nBGM_Mute = nLevel; }; void SetSFX_Mute( int nLevel ) { m_curData.nSFX_Mute = nLevel; }; void SetRenderOtherPlayer( int nRender ){ m_curData.nRenderOtherPlayer = nRender; }; // 게임플레이 관련 =================================== bool IsWinLock() const { return (m_curData.nWinLock == 1) ? true : false; }; ///< 윈도우 장금 bool IsChatHide() const { return (m_curData.nChatHide == 1) ? true : false; }; ///< 쳇팅창 숨김 bool IsMobFace() const { return (m_curData.nMobFace == 1) ? true : false; }; ///< 쳇팅창 숨김 bool IsEnterChat() const { return (m_curData.nEnterChat == 1) ? true : false; }; ///< 엔터 체팅 int GetTapKeyType() const { return m_curData.nTABKey; }; ///< 탭키 설정 // 2010.05.20 정보를 서버에서 관리함 - prodongi //bool IsShowHelm() const { return (m_curData.nHelm == 1) ? true : false; }; ///< 투구 보이기 bool IsShowMantle() const { return (m_curData.nMantle == 1) ? true : false; }; ///< 망토 보이기 bool IsRejectTrade() const { return (m_curData.nTrade == 1) ? true : false; }; ///< 거래 및 초대 거절 bool IsRejectPVP() const { return (m_curData.nPVP == 1 ) ? true : false; }; ///< 대련신청_거부 bool IsInverseWheel() const { return (m_curData.nWheel == 1 ) ? true : false; }; ///< 휠방향_반전 bool IsDemageRender() const { return (m_curData.ndamage == 1) ? true : false; }; ///< 데미지 렌더 bool IsPlayerDmgRend() const { return (m_curData.nPlayerDM == 1) ? true : false; }; ///< 플레이어 데미미지 렌더 bool IsCratureDmgRend() const { return (m_curData.nCreatureDM == 1) ? true : false; }; ///< 크리처 데미지 렌더 bool IsPartyDmgRend() const { return (m_curData.nPartyDM == 1) ? true : false; }; ///< 파티원 데미지 렌더 bool GetWindAlpha() const { return (m_curData.nWinAlpha == 1) ? true : false; }; ///< 파티원 데미지 렌더 bool IsTreeRender() const { return (m_curData.nRenderTree == 1) ? true : false; }; ///< 나무 랜더 bool IsGrassRender() const { return (m_curData.nRenderGrass == 1) ? true : false; }; ///< 풀 랜더 bool IsLightMap() const { return (m_curData.nLightMap == 1) ? true : false; }; ///< 라이트맵 void SetLobbyTheme( int nLevel ) { m_curData.nLobby_Theme = nLevel; }; int GetLobbyTheme() const { return m_curData.nLobby_Theme; }; int IsDetailRak() const { return !m_curData.nSimpleRak; }; int GetBoothType() const { return m_curData.nSelfBoothType; }; void SetBoothRendType(int nType) { m_curData.nSelfBoothType = nType; }; int GetCriticalCamera() const { return m_curData.nCriticalCamera; }; void SetCriticalCamera(int nType) { m_curData.nCriticalCamera = nType; }; bool IsAutoTarget() const { return (m_curData.nAutoTarget == 1) ? true : false; }; ///< AutoTarget void InvertAutoTarget() { m_curData.nAutoTarget = !m_curData.nAutoTarget; }; // int GetAvatarDeco() const { return m_curData.nAvatarDeco; }; // 2010.10.11. 게임플레이옵션에서 "꾸미기보이기" 제거. // void SetAvatarDeco(int nType) { m_curData.nAvatarDeco = nType; }; // 2010.10.11. 게임플레이옵션에서 "꾸미기보이기" 제거. //Game Content int GetTownLimit() const { return m_curData.nTownLimit; }; void SetTownLimit( int nLevel ) { m_curData.nTownLimit = nLevel;}; //servantes 2010.11.02 bool GetOpenEquipWnd() const { return m_bOpenEquipWnd; }; void SetOpenEquipWnd(bool nValue); /// 2011.02.16 - prodongi bool GetUseRechargeMsgBox() const { return m_useRechargeMsgBox == 1 ? true : false; } void SetUseRechargeMsgBox(bool use); // UI ======================================= int GetMinimapAlpha() const { return m_nMinimapAlpha; }; bool IsMinimapOpen() const { return ( m_nMinimapOpen == 1 ? true : false ); }; void SetMinimapAlpha( int nLevel ) { m_nMinimapAlpha = nLevel; }; void SetMinimapOpen( bool bOpen ) { m_nMinimapOpen = ( bOpen ) ? 1 : 0; }; int GetFaceCut() const { return m_nFaceCut; }; int GetMinimap() const { return m_nMinimap; }; int GetZoom() const { return m_nZoom; }; void SetFaceCut( int nLevel ) { m_nFaceCut = nLevel; }; void SetMinimap( int nLevel ) { m_nMinimap = nLevel; }; void SetZoom( int nLevel ) { m_nZoom = nLevel; }; // 인터페이스 옵션 =========================== int GetQuickVerX() const { return m_nQuickVerX; }; int GetQuickVerY() const { return m_nQuickVerY; }; int GetQuickHozX() const { return m_nQuickHozX; }; int GetQuickHozY() const { return m_nQuickHozY; }; bool IsVerticalQuick() const { return ( m_nVerticalQuick == 1 ? true : false ); }; int GetStateVerX() const { return m_nStateVerX; }; int GetStateVerY() const { return m_nStateVerY; }; int GetStateHozX() const { return m_nStateHozX; }; int GetStateHozY() const { return m_nStateHozY; }; bool IsVerticalState() const { return ( m_nVerticalState == 1 ? true : false ); }; int GetMessangerX() const { return m_nMessangerX; }; int GetMessangerY() const { return m_nMessangerY; }; bool IsMessangerOpen() const { return ( m_nMessangerOpen == 1 ? true : false ); }; bool IsCreatureOpen() const { return ( m_nCreatureOpen == 1 ? true : false ); }; int GetSysMenuX() const { return m_nSysMenuX; }; int GetSysMenuY() const { return m_nSysMenuY; }; int GetInventoryX() const { return m_nInventoryX; }; int GetInventoryY() const { return m_nInventoryY; }; int GetChattingLine() const { return m_nChattingLine; }; int GetChattingHeight() const { return m_nChattingHeight; }; int GetEquipmentX() const { return m_nPosEquipment.x; }; int GetEquipmentY() const { return m_nPosEquipment.y; }; /////////////////////////////////////////////////////////////////////////////////////////////// //추가 2006/3/10 이동표 int GetCreatureX() const { return m_nCreatureX; }; int GetCreatureY() const { return m_nCreatureY; }; int GetCreatureInfoX() const { return m_nCreatureInfoX; }; int GetCreatureInfoY() const { return m_nCreatureInfoY; }; int GetQuestX() const { return m_nQuestX; }; int GetQuestY() const { return m_nQuestY; }; int GetMotionX() const { return m_nMotionX; }; int GetMotionY() const { return m_nMotionY; }; int GetOptionX() const { return m_nOptionX; }; int GetOptionY() const { return m_nOptionY; }; int GetCharX() const { return m_nCharX; }; int GetCharY() const { return m_nCharY; }; int GetSkillX() const { return m_nSkillX; }; int GetSkillY() const { return m_nSkillY; }; int GetSystemX() const { return m_nSystemX; }; int GetSystemY() const { return m_nSystemY; }; int GetMapX() const { return m_nMapX; }; int GetMapY() const { return m_nMapY; }; int GetItemCombineX() const { return m_nItemCombineX; }; int GetItemCombineY() const { return m_nItemCombineY; }; int GetShopX() const { return m_nShopX; }; int GetShopY() const { return m_nShopY; }; int GetStoreX() const { return m_nStoreX; }; int GetStoreY() const { return m_nStoreY; }; int GetStorageX() const { return m_nStorageX; }; int GetStorageY() const { return m_nStorageY; }; int GetPartyX() const { return m_nPartyX; }; int GetPartyY() const { return m_nPartyY; }; /////////////////////////////////////////////////////////////////////////////////////////////// int GetCreatureSkillX() const { return m_nCreatureSkillX; }; int GetCreatureSkillY() const { return m_nCreatureSkillY; }; // void SetQuickVerX( int nValue ) ; //void SetQuickVerY( int nValue ) ; void SetQuickHozX( int nValue ) ; void SetQuickHozY( int nValue ) ; void SetVerticalQuick( int nVertical ) ; //void SetStateVerX( int nValue ) ; //void SetStateVerY( int nValue ) ; void SetStateHozX( int nValue ) ; void SetStateHozY( int nValue ) ; void SetVerticalStat( int nVertical ) ; void SetMessangerX( int nValue ) ; void SetMessangerY( int nValue ) ; void SetPartyX( int nValue ) ; void SetPartyY( int nValue ) ; void SetMessangerOpep( int nOpen ) ; void SetCreatureOpen( int nOpen ) ; void SetSysMenuX( int nValue ) ; void SetSysMenuY( int nValue ) ; void SetInventoryX( int nValue ) ; void SetInventoryY( int nValue ) ; void SetChattingLine( int nValue ) ; void SetChattingHeight( int nValue ) ; void SetEquipmentWndPos( KPoint & point ); // 장비창 위치. bintitle. 2010.10.07. void SetEquipmentX(int nValue) { m_nPosEquipment.x = nValue; }; //servantes 2010.12.09 void SetEquipmentY(int nValue) { m_nPosEquipment.y = nValue; }; //servantes 2010.12.09 /////////////////////////////////////////////////////////////////////////////////////////////// //추가 2006/3/10 이동표 void SetCreatureX( int nValue ); void SetCreatureY( int nValue ); void SetCreatureInfoX( int nValue ); void SetCreatureInfoY( int nValue ); void SetQuestX( int nValue ); void SetQuestY( int nValue ); void SetMotionX( int nValue ); void SetMotionY( int nValue ); void SetOptionX( int nValue ); void SetOptionY( int nValue ); void SetCharX( int nValue ); void SetCharY( int nValue ); void SetSkillX( int nValue ); void SetSkillY( int nValue ); void SetSystemX( int nValue ); void SetSystemY( int nValue ); void SetMapX( int nValue ); void SetMapY( int nValue ); void SetItemCombineX( int nValue ); void SetItemCombineY( int nValue ); void SetShopX( int nValue ); void SetShopY( int nValue ); void SetStoreX( int nValue ); void SetStoreY( int nValue ); void SetStorageX( int nValue ); void SetStorageY( int nValue ); /////////////////////////////////////////////////////////////////////////////////////////////// void SetCreatureSkillX( int nValue ); void SetCreatureSkillY( int nValue ); bool IsChatOptionCheck( int nTabMode, int nIndex ); bool IsChattingOpen() const { return m_bChatOpen; }; void SetChattingOpen( bool bOpen ) { m_bChatOpen = bOpen; }; /// 크리처 정보창 열려있나없다 bool IsCreatureInfoOpen() const { return m_bIsCreatureInfo; }; void SetCreautreInfoOpen( bool bOpen ) { m_bIsCreatureInfo = bOpen; }; /// 채널명 bool SetChatTabName( int nIndex, const char* szTabName ); const char* GetChatTabName( int nIndex ); /// 채널 마크 bool SGameOption::SetChatTabMark( int nIndex, const char* szTabMark ); const char* SGameOption::GetChatTabMark( int nIndex ); /// 파뤼/길드 선택 : 게임 내에서 void SetMessengerType( int nType ); int GetMessengerType() { return m_nMessengerType; }; /// Local System Info void AddDispMode( UINT width, UINT height, UINT refreshrate ); const std::vector< DISP_MODE > & GetDispMode() { return m_distMode; } void SetCurrentRefreshRate( UINT refreshrate ) { m_curRefreshRate = refreshrate; } const unsigned int GetCurrentRefreshRate() { return m_curRefreshRate; } void SetPhysicalMemSize( unsigned int nMemSize ) { m_MemSize = nMemSize; } const unsigned int GetPhysicalMemSize() { return m_MemSize; } void SetUIPosDefault(); protected: void SetCheckStr( bool * pCehck, char * pStr ); void SetEnvironmenteDefault( _OPT_DATA& data ); ///< 기본값 설정(게임 환경) void SetPlayDataDefault( _OPT_DATA& data ); ///< 기본값 설정(게임 플레이) void Save(); /// 종료시에 모두 저장한다 ===================== void Destroy(); /// 캐릭별로 저장하지 않는 옵션(그래픽옵션) 은 생성자에서 로드 === void OptionDataBind(); void SetCrrOptionData(); void Init(); protected: _OPT_DATA m_defData; ///< 기본 데이타 _OPT_DATA m_curData; ///< 현재 상태 std::vector< DISP_MODE > m_distMode; unsigned int m_curRefreshRate; unsigned int m_MemSize; ///< Physical Memory Size // UI ============ int m_nMinimapAlpha; int m_nMinimapOpen; int m_nFaceCut; int m_nMinimap; int m_nZoom; int m_nMessengerType; bool m_bIsCreatureInfo; // 인터페이스 위치 ======= int m_nQuickVerX; int m_nQuickVerY; int m_nQuickHozX; int m_nQuickHozY; int m_nVerticalQuick; int m_nStateVerX; int m_nStateVerY; int m_nStateHozX; int m_nStateHozY; int m_nVerticalState; int m_nMessangerX; int m_nMessangerY; int m_nMessangerOpen; int m_nPartyX; int m_nPartyY; int m_nCreatureOpen; int m_nSysMenuX; int m_nSysMenuY; int m_nInventoryX; int m_nInventoryY; int m_nChattingLine; int m_nChattingHeight; //추가 2006/3/10 이동표 int m_nCreatureX; int m_nCreatureY; int m_nCreatureInfoX; int m_nCreatureInfoY; int m_nQuestX; int m_nQuestY; int m_nMotionX; int m_nMotionY; int m_nOptionX; int m_nOptionY; int m_nCharX; int m_nCharY; int m_nSkillX; int m_nSkillY; int m_nSystemX; int m_nSystemY; int m_nMapX; int m_nMapY; int m_nItemCombineX; int m_nItemCombineY; int m_nShopX; int m_nShopY; int m_nStoreX; int m_nStoreY; int m_nStorageX; int m_nStorageY; KPoint m_nPosEquipment; // 장비창 위치. bintitle. 2010.10.07. bool m_bChannelCheck[SGAME_OPT_DATA::c_nMaxChannel][SGAME_OPT_DATA::c_nMaxChatOption]; ///< 채팅 옵션 std::string m_strTabName[SGAME_OPT_DATA::c_nMaxChannel]; ///< 채팅 채널명 std::string m_strTabMark[SGAME_OPT_DATA::c_nMaxChannel]; bool m_bChatOpen; //추가 2009.11.27. sfreer int m_nCreatureSkillX; int m_nCreatureSkillY; bool m_bOpenEquipWnd; //servantes 2010.11.02 int m_useRechargeMsgBox; /// 2011.02.16 충전 확인창 사용 유무 - prodongi private: std::string m_strName; ///< 캐릭 이름 SINIManager m_OptionManager; ///< INI Manager }; SGameOption & GetGameOption(); class SLocaleOption { public: SLocaleOption(); ~SLocaleOption(); bool LoadOptionFile(const char *filename); // 2010.06.29 Parse data directly from the file in memory - prodongi bool parsingOptionFile(const char* filename); int GetValueInt ( std::string strKey,int bDefaultValue); const char *GetValueString ( std::string strKey, const char *defaultstr); private: SINIManager m_OptionManager; ///< INI Manager std::map m_StrMap; std::map m_IntMap; void LoadValueString(const char *key); void LoadValueInt(const char *key); // 2010.06.29 - prodongi void parsingValueString(char const* key, char const* data, char* value); void parsingValueInt(char const* key, char const* data, char* value); bool parsingValue(char const* key, char const* data, char* value); bool pickupValue(char const* data, char const* startToken, char endToken, char* value); // 2010.09.01 - prodongi void parsingBigSmallValueString(char const* bigKey, char const* smallKey, char const* data, char* value); void parsingBigSmallValueInt(char const* bigKey, char const* smallKey, char const* data, char* value); // 2010.08.26 - prodongi template bool isValue(T const& keyList, std::string const& key) { return keyList.find(key) != keyList.end(); } template void copyValue(T& keyList, KEY const& src, KEY const& dest) { if (!isValue(keyList, src)) return ; keyList[dest] = keyList[src]; } void SetExceptionalCodePage(); }; SLocaleOption &GetLocaleOption();