📄 optionmanager.cpp
字号:
// OptionManager.cpp: implementation of the COptionManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "OptionManager.h"
#include "MacroManager.h"
#include ".\interface\cWindowManager.h"
#include "MouseCursor.h"
#include "MousePointer.h"
#include "./Input/UserInput.h"
#include "ChatManager.h"
#include "ObjectManager.h"
#include "MHAudioManager.h"
#include "MHCamera.h"
#include "GameIn.h"
#include "MainBarDialog.h"
//#include "UserInfoManager.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GLOBALTON(COptionManager);
COptionManager::COptionManager()
{
}
COptionManager::~COptionManager()
{
}
void COptionManager::Init()
{
if( !LoadGameOption() )
SetDefaultOption();
m_bBGMSoundChanged = FALSE;
m_wSendOption = 0;
AUDIOMGR->SetBGMSoundOn( m_GameOption.bSoundBGM );
}
void COptionManager::SendOptionMsg()
{
WORD wOption = MakeOptionFlag();
// if( m_wSendOption == wOption )
// return;
m_wSendOption = wOption;
MSG_WORD msgOption;
msgOption.Category = MP_OPTION;
msgOption.Protocol = MP_OPTION_SET_SYN;
msgOption.dwObjectID = HEROID;
msgOption.wData = wOption;
NETWORK->Send( &msgOption, sizeof( MSG_WORD ) );
}
WORD COptionManager::MakeOptionFlag()
{
WORD wOption = 0;
if( m_GameOption.bNoDeal ) wOption |= eOPT_NODEAL;
if( m_GameOption.bNoParty ) wOption |= eOPT_NOPARTY;
if( m_GameOption.bNoFriend ) wOption |= eOPT_NOFRIEND;
if( m_GameOption.bNoVimu ) wOption |= eOPT_NOVIMU;
if( m_GameOption.bNoWhisper ) wOption |= eOPT_NOWHISPER;
return wOption;
}
void COptionManager::SetGameOption( sGAMEOPTION* pOption )
{
if( m_GameOption.bSoundBGM != pOption->bSoundBGM )
m_bBGMSoundChanged = TRUE;
m_GameOption = *pOption;
SaveGameOption();
}
BOOL COptionManager::LoadGameOption()
{
// char strFilePath[MAX_PATH];
// wsprintf( strFilePath, "%s\\User\\%s\\%s.OPT", DIRECTORYMGR->GetFullDirectoryName(eLM_Root), USERINFOMGR->GetUserID(), USERINFOMGR->GetUserID() );
HANDLE hFile;
// hFile = CreateFile( strFilePath, GENERIC_READ, 0, NULL,
hFile = CreateFile( "./ini/GameOption.opt", GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if( hFile == INVALID_HANDLE_VALUE )
return FALSE;
DWORD dwRead = 0;
DWORD dwVersion;
if( !ReadFile( hFile, &dwVersion, sizeof(DWORD), &dwRead, NULL ) )
{
CloseHandle( hFile );
return FALSE;
}
if( dwVersion != 0x00040518 )
{
CloseHandle( hFile );
return FALSE;
}
if( !ReadFile( hFile, &m_GameOption, sizeof(m_GameOption), &dwRead, NULL ) )
{
CloseHandle( hFile );
return FALSE;
}
if( sizeof( m_GameOption ) != dwRead )
{
CloseHandle( hFile );
return FALSE;
}
//荤款靛唱 皑付, 矫具芭府殿狼 荐摹啊 蜡瓤裹困牢瘤甫 眉农窍绰 巴阑 眠啊秦具茄促.
//蜡瓤裹困啊 酒聪搁 葛滴 檬扁拳! //CONFIRM
CloseHandle( hFile );
return TRUE;
}
void COptionManager::SaveGameOption()
{
// char strFilePath[MAX_PATH];
//make directory
// wsprintf( strFilePath, "%s\\User", DIRECTORYMGR->GetFullDirectoryName(eLM_Root) );
// CreateDirectory( strFilePath, NULL );
// wsprintf( strFilePath, "%s\\User\\%s", DIRECTORYMGR->GetFullDirectoryName(eLM_Root), USERINFOMGR->GetUserID() );
// CreateDirectory( strFilePath, NULL );
// wsprintf( strFilePath, "%s\\User\\%s\\%s.UII", DIRECTORYMGR->GetFullDirectoryName(eLM_Root), USERINFOMGR->GetUserID(), USERINFOMGR->GetUserID() );
HANDLE hFile;
// hFile=CreateFile( strFilePath, GENERIC_WRITE, 0, NULL,
hFile=CreateFile( "./ini/GameOption.opt", GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
if( hFile == INVALID_HANDLE_VALUE )
return;
DWORD dwWritten;
DWORD dwVersion = 0x00040518;
WriteFile( hFile, &dwVersion, sizeof(DWORD), &dwWritten, NULL );
WriteFile( hFile, &m_GameOption, sizeof(m_GameOption), &dwWritten, NULL );
CloseHandle( hFile );
}
void COptionManager::ApplySettings()
{
////////
//荤款靛
if( m_bBGMSoundChanged )
{
AUDIOMGR->SetBGMSoundOn( m_GameOption.bSoundBGM );
if( m_GameOption.bSoundBGM )
AUDIOMGR->PlayLastBGM();
else
AUDIOMGR->StopBGM();
m_bBGMSoundChanged = FALSE;
}
if( m_GameOption.bSoundBGM ) //bgm捞 play吝捞 酒匆锭 杭俘炼例窍搁 欢抄促.
AUDIOMGR->SetBGMVolume( (float)m_GameOption.nVolumnBGM / 100.0f );
AUDIOMGR->SetEffectSoundOn( m_GameOption.bSoundEnvironment );
if( m_GameOption.bSoundEnvironment )
AUDIOMGR->SetSoundVolume( (float)m_GameOption.nVolumnEnvironment / 100.0f );
else
AUDIOMGR->StopAll();
////////
//弊贰侨
//-霸烙 皑付
//-捞抚钎矫 可记
//-弊贰侨目辑
CURSOR->SetActive( !m_GameOption.bGraphicCursor );
// MOUSE->SetGraphicCursor( m_GameOption.bGraphicCursor );
// CURSOR->SetActive( TRUE );//MouseTest侩
//taiyo test
//WINDOWMGR->GetMouseWindow()->SetActive( m_GameOption.bGraphicCursor );
//矫具芭府
CAMERA->SetSightDistanceRate( (float)m_GameOption.nSightDistance );
//弊覆磊 免仿咯何
DWORD dwShadowOption = eOO_SHADOW_NONE;
if( m_GameOption.bShadowHero ) dwShadowOption |= eOO_SHADOW_ONLYHERO;
if( m_GameOption.bShadowMonster ) dwShadowOption |= eOO_SHADOW_MONSTER;
if( m_GameOption.bShadowOthers ) dwShadowOption |= eOO_SHADOW_OTHERCHARACTER;
OBJECTMGR->SetShadowOption( dwShadowOption );
//捞抚
DWORD dwOverInfoOption = eOO_NAME_CLICKEDONLY; //---default
if( m_GameOption.bNameOthers ) dwOverInfoOption |= eOO_NAME_WHOLE;
if( m_GameOption.bNameParty ) dwOverInfoOption |= eOO_NAME_PARTY;
if( m_GameOption.bNameMunpa ) dwOverInfoOption |= eOO_NAME_MUNPA;
if( m_GameOption.bNoBalloon ) dwOverInfoOption |= eOO_CHAT_NOBALLOON;
OBJECTMGR->SetOverInfoOption( dwOverInfoOption );
//////
//盲泼
sChatOption ChatOption;
ChatOption.bOption[CTO_AUTOHIDECHAT] = m_GameOption.bAutoHide;
ChatOption.bOption[CTO_NOSYSMSG] = m_GameOption.bNoSystemMsg;
ChatOption.bOption[CTO_NOITEMMSG] = m_GameOption.bNoItemMsg;
ChatOption.bOption[CTO_NOEXPMSG] = m_GameOption.bNoExpMsg;
ChatOption.bOption[CTO_NOCHATMSG] = m_GameOption.bNoChatting;
CHATMGR->SetOption( &ChatOption );
MACROMGR->SetMacroMode( m_GameOption.nMacroMode );
//////////////////
//窜绵虐 砒屏 函版
if( GAMEIN->GetMainInterfaceDialog() )
GAMEIN->GetMainInterfaceDialog()->Refresh();
//////
//
//皋矫瘤焊郴扁
// if( bMsg )
// SendOptionMsg();
}
void COptionManager::CancelSettings()
{
//流立 康氢 林菌带 巴甸 力措肺 倒妨初扁
}
void COptionManager::SetDefaultOption()
{
m_GameOption.bNoDeal = FALSE;
m_GameOption.bNoParty = FALSE;
m_GameOption.bNoFriend = FALSE;
m_GameOption.bNoVimu = FALSE;
m_GameOption.bNameMunpa = TRUE;
m_GameOption.bNameParty = TRUE;
m_GameOption.bNameOthers = FALSE;
m_GameOption.nMacroMode = 1; //MM_MACRO
m_GameOption.bNoWhisper = FALSE;
m_GameOption.bNoChatting = FALSE;
m_GameOption.bNoBalloon = FALSE;
m_GameOption.bAutoHide = FALSE;
m_GameOption.bNoSystemMsg = FALSE;
m_GameOption.bNoExpMsg = FALSE;
m_GameOption.bNoItemMsg = FALSE;
m_GameOption.nGamma = 50; //%?
m_GameOption.nSightDistance = 75; //50~100%?
m_GameOption.bGraphicCursor = FALSE;
m_GameOption.bShadowHero = TRUE;
m_GameOption.bShadowMonster = TRUE;
m_GameOption.bShadowOthers = TRUE;
m_GameOption.bSoundBGM = TRUE;
m_GameOption.bSoundEnvironment = TRUE;
m_GameOption.nVolumnBGM = 100; //1-100
m_GameOption.nVolumnEnvironment = 100; //1-100
// m_GameOption.wKyungGongIdx = 0;
// m_GameOption.bIsKyungGongMode = FALSE;
}
void COptionManager::NetworkMsgParse( BYTE Protocol, void* pMsg )
{
switch(Protocol)
{
case MP_OPTION_SET_ACK:
{
}
break;
case MP_OPTION_SET_NACK:
{
}
break;
}
}
/*
void COptionManager::SetKyungGongIdx(WORD KyungGondIdx)
{
m_GameOption.wKyungGongIdx = KyungGondIdx;
SaveGameOption();
}
BOOL COptionManager::GetKyungGongMode()
{
return m_GameOption.bIsKyungGongMode;
}
void COptionManager::SetKyungGongMode(BOOL bMode)
{
m_GameOption.bIsKyungGongMode = bMode;
SaveGameOption();
}
void COptionManager::ClrKyungGong()
{
m_GameOption.wKyungGongIdx = 0;
m_GameOption.bIsKyungGongMode = FALSE;
SaveGameOption();
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -