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

📄 userinfomanager.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// UserInfoManager.cpp: implementation of the CUserInfoManager class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "UserInfoManager.h"

#include "WindowIDEnum.h"
#include "./Interface/cWindowManager.h"
#include "MainBarDialog.h"

#include "QuickDialog.h"
#include "ChatDialog.h"
#include "InventoryExDialog.h"
#include "MugongSuryunDialog.h"
#include "SuryunDialog.h"
#include "OptionDialog.h"
#include "ObjectManager.h"
#include "GameIn.h"
#include "MHCamera.h"
#include "QuestTotalDialog.h"
#include "MinimapDlg.h"

GLOBALTON(CUserInfoManager)


#define USERINFO_INTERFACE_VER 0x0004092202
#define USERINFO_USERSTATE_VER 0x0004092202

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CUserInfoManager::CUserInfoManager()
{
	m_strUserID[0] = 0;
	m_bMapChange = FALSE;
}

CUserInfoManager::~CUserInfoManager()
{
	
}

void CUserInfoManager::LoadUserInfo( DWORD dwFlag )
{
	char strFilePath[MAX_PATH];

	if( dwFlag & eUIK_INTERFACE )
	{
		wsprintf( strFilePath, "%s\\User\\%s\\%s.UII", DIRECTORYMGR->GetFullDirectoryName(eLM_Root), m_strUserID, m_strUserID );
		LoadInterfaceInfo( strFilePath  );
	}

	if( dwFlag & eUIK_USERSTATE )
	{
		wsprintf( strFilePath, "%s\\User\\%s\\%s.UIS", DIRECTORYMGR->GetFullDirectoryName(eLM_Root), m_strUserID, m_strUserID );
		LoadUserState( strFilePath );
	}
}

void CUserInfoManager::SaveUserInfo( DWORD dwFlag )
{
	if( dwFlag == eUIK_NONE ) return;

	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), m_strUserID );
	CreateDirectory( strFilePath, NULL );

	if( dwFlag & eUIK_INTERFACE )
	{
		wsprintf( strFilePath, "%s\\User\\%s\\%s.UII", DIRECTORYMGR->GetFullDirectoryName(eLM_Root), m_strUserID, m_strUserID );
		SaveInterfaceInfo( strFilePath );
	}

	if( dwFlag & eUIK_USERSTATE )
	{
		wsprintf( strFilePath, "%s\\User\\%s\\%s.UIS", DIRECTORYMGR->GetFullDirectoryName(eLM_Root), m_strUserID, m_strUserID );
		SaveUserState( strFilePath );
	}
}

void CUserInfoManager::LoadInterfaceInfo( char* strFilePath )
{
	HANDLE hFile = CreateFile( strFilePath, GENERIC_READ, 0, NULL, 
								OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );

	if( hFile == INVALID_HANDLE_VALUE ) return;

	DWORD dwSize;
	DWORD dwVersion;
	if( !ReadFile( hFile, &dwVersion, sizeof(DWORD), &dwSize, NULL ) )
	{
		CloseHandle( hFile );
		return;
	}
	if( dwVersion != USERINFO_INTERFACE_VER )
	{
		CloseHandle( hFile );
		return;
	}

	cDialog* pDlg;
	sUSERINFO_INTERFACE UII;
	if( !ReadFile( hFile, &UII, sizeof(UII), &dwSize, NULL ) )
	{
		CloseHandle( hFile );
		return;
	}

	CloseHandle( hFile );

	pDlg = WINDOWMGR->GetWindowForID( CG_GUAGEDLG );
	if( m_bMapChange )
	{	
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_HeroGuage].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_HeroGuage].dwFlag & eUIF_ACTIVE );
	}
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_HeroGuage].lPosX, UII.DIALOG_INFO[eSD_HeroGuage].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_HeroGuage].lPosX, UII.DIALOG_INFO[eSD_HeroGuage].lPosY );

	pDlg = WINDOWMGR->GetWindowForID( CG_MONSTERGUAGEDLG );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_MonsterGuage].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_MonsterGuage].dwFlag & eUIF_ACTIVE );
	}
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_MonsterGuage].lPosX, UII.DIALOG_INFO[eSD_MonsterGuage].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_MonsterGuage].lPosX, UII.DIALOG_INFO[eSD_MonsterGuage].lPosY );
	
	pDlg = WINDOWMGR->GetWindowForID( MNM_DIALOG );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_MiniMap].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_MiniMap].dwFlag & eUIF_ACTIVE );

		if( UII.DIALOG_INFO[eSD_MiniMap].dwFlag & eUIF_SECONDFORM )
			((CMiniMapDlg*)pDlg)->ToggleMinimapMode();
	}
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_MiniMap].lPosX, UII.DIALOG_INFO[eSD_MiniMap].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_MiniMap].lPosX, UII.DIALOG_INFO[eSD_MiniMap].lPosY );

	pDlg = WINDOWMGR->GetWindowForID( QI_QUICKDLG );
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_Quick].lPosX, UII.DIALOG_INFO[eSD_Quick].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_Quick].lPosX, UII.DIALOG_INFO[eSD_Quick].lPosY );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_Quick].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_Quick].dwFlag & eUIF_ACTIVE );
		if( UII.DIALOG_INFO[eSD_Quick].dwFlag & eUIF_TABNUM2 )
			((CQuickDialog*)pDlg)->SelectPageDirect(1);
		else if( UII.DIALOG_INFO[eSD_Quick].dwFlag & eUIF_TABNUM3 )
			((CQuickDialog*)pDlg)->SelectPageDirect(2);
		else if( UII.DIALOG_INFO[eSD_Quick].dwFlag & eUIF_TABNUM4 )
			((CQuickDialog*)pDlg)->SelectPageDirect(3);
	}

	pDlg = WINDOWMGR->GetWindowForID( MI_MAINDLG );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_MainBar].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_MainBar].dwFlag & eUIF_ACTIVE );
	}
	((CMainBarDialog*)pDlg)->Fold( UII.DIALOG_INFO[eSD_MainBar].dwFlag & eUIF_SECONDFORM );	////	
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_MainBar].lPosX, UII.DIALOG_INFO[eSD_MainBar].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_MainBar].lPosX, UII.DIALOG_INFO[eSD_MainBar].lPosY );

	pDlg = WINDOWMGR->GetWindowForID( CTI_DLG );
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_Chat].lPosX, UII.DIALOG_INFO[eSD_Chat].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_Chat].lPosX, UII.DIALOG_INFO[eSD_Chat].lPosY );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_Chat].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_Chat].dwFlag & eUIF_ACTIVE );
		if( UII.DIALOG_INFO[eSD_Chat].dwFlag & eUIF_TABNUM2 )
			((CChatDialog*)pDlg)->SelectMenu( 1 );
		else if( UII.DIALOG_INFO[eSD_Chat].dwFlag & eUIF_TABNUM3 )
			((CChatDialog*)pDlg)->SelectMenu( 2 );
		
		int nLineNum = UII.DIALOG_INFO[eSD_Chat].dwParam;
		int nCurNum = ((CChatDialog*)pDlg)->GetLineNum();

		while( nLineNum != nCurNum )
		{
			if( nLineNum > nCurNum )
			{
				((CChatDialog*)pDlg)->OnActionEvent( CTI_BTN_TALLER, NULL, WE_BTNCLICK );
				++nCurNum;
			}
			else
			{
				((CChatDialog*)pDlg)->OnActionEvent( CTI_BTN_SMALLER, NULL, WE_BTNCLICK );
				--nCurNum;
			}
		}
	}

	pDlg = WINDOWMGR->GetWindowForID( IN_INVENTORYDLG );
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_Inventory].lPosX, UII.DIALOG_INFO[eSD_Inventory].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_Inventory].lPosX, UII.DIALOG_INFO[eSD_Inventory].lPosY );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_Inventory].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_Inventory].dwFlag & eUIF_ACTIVE );
		if( UII.DIALOG_INFO[eSD_Inventory].dwFlag & eUIF_TABNUM2 )
			((CInventoryExDialog*)pDlg)->SelectTab( 1 );
		else if( UII.DIALOG_INFO[eSD_Inventory].dwFlag & eUIF_TABNUM3 )
			((CInventoryExDialog*)pDlg)->SelectTab( 2 );
		else if( UII.DIALOG_INFO[eSD_Inventory].dwFlag & eUIF_TABNUM4 )
			((CInventoryExDialog*)pDlg)->SelectTab( 3 );
	}

	pDlg = WINDOWMGR->GetWindowForID( CI_CHARDLG );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_Character].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_Character].dwFlag & eUIF_ACTIVE );
	}
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_Character].lPosX, UII.DIALOG_INFO[eSD_Character].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_Character].lPosX, UII.DIALOG_INFO[eSD_Character].lPosY );

	pDlg = WINDOWMGR->GetWindowForID( MGI_MUGONGSURYUNDLG );
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_Skill].lPosX, UII.DIALOG_INFO[eSD_Skill].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_Skill].lPosX, UII.DIALOG_INFO[eSD_Skill].lPosY );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_Skill].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_Skill].dwFlag & eUIF_ACTIVE );
		if( UII.DIALOG_INFO[eSD_Skill].dwFlag & eUIF_TABNUM2 )
		{
			((CMugongSuryunDialog*)pDlg)->SelectTab( 1 );
			if( UII.DIALOG_INFO[eSD_Skill].dwFlag & eUIF_SUBTABNUM2 )
				GAMEIN->GetSuryunDialog()->SelectTab( 1 );
			else if( UII.DIALOG_INFO[eSD_Skill].dwFlag & eUIF_SUBTABNUM3 )
				GAMEIN->GetSuryunDialog()->SelectTab( 2 );
			else if( UII.DIALOG_INFO[eSD_Skill].dwFlag & eUIF_SUBTABNUM4 )
				GAMEIN->GetSuryunDialog()->SelectTab( 3 );
		}
	}
/*
	pDlg = WINDOWMGR->GetWindowForID( NOTE_NOTEDLG );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_Note].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_Note].dwFlag & eUIF_ACTIVE );
	}
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_Note].lPosX, UII.DIALOG_INFO[eSD_Note].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_Note].lPosX, UII.DIALOG_INFO[eSD_Note].lPosY );

	pDlg = WINDOWMGR->GetWindowForID( FRI_FRIENDDLG );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_Friend].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_Friend].dwFlag & eUIF_ACTIVE );
	}
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_Friend].lPosX, UII.DIALOG_INFO[eSD_Friend].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_Friend].lPosX, UII.DIALOG_INFO[eSD_Friend].lPosY );
*/
	pDlg = WINDOWMGR->GetWindowForID( OTI_TABDLG );
	if( IsValidInterfacePos( pDlg->GetCaptionRect(), UII.DIALOG_INFO[eSD_Option].lPosX, UII.DIALOG_INFO[eSD_Option].lPosY ) )
		pDlg->SetAbsXY( UII.DIALOG_INFO[eSD_Option].lPosX, UII.DIALOG_INFO[eSD_Option].lPosY );
	if( m_bMapChange )
	{
		if( pDlg->IsActive() != UII.DIALOG_INFO[eSD_Option].dwFlag & eUIF_ACTIVE )
			pDlg->SetActive( UII.DIALOG_INFO[eSD_Option].dwFlag & eUIF_ACTIVE );
		if( UII.DIALOG_INFO[eSD_Option].dwFlag & eUIF_TABNUM2 )
			((COptionDialog*)pDlg)->SelectTab( 1 );
		else if( UII.DIALOG_INFO[eSD_Option].dwFlag & eUIF_TABNUM3 )
			((COptionDialog*)pDlg)->SelectTab( 2 );
		else if( UII.DIALOG_INFO[eSD_Option].dwFlag & eUIF_TABNUM4 )
			((COptionDialog*)pDlg)->SelectTab( 3 );	
	}

	pDlg = WINDOWMGR->GetWindowForID( QUE_TOTALDLG );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -