📄 userinfomanager.cpp
字号:
// 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 + -