⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 optionmanager.cpp

📁 墨香最新私服
💻 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 + -