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

📄 characterinfo.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// CharacterInfo.cpp : implementation file
//

#include "stdafx.h"
#include "DS_RMTool.h"
#include "CharacterInfo.h"
#include "CharacterDoc.h"
#include "..\[CC]Header\CommonCalcFunc.h"

#include "ChangeValue.h"
#include "ItemDlg.h"
#include "MugongDlg.h"
#include "AbilityDlg.h"
#include "ResourceManager.h"
#include "ItemRecoverDlg.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCharacterInfo property page

IMPLEMENT_DYNCREATE(CCharacterInfo, CLDPropPage)

CCharacterInfo::CCharacterInfo() : CLDPropPage(CCharacterInfo::IDD)
{
	//{{AFX_DATA_INIT(CCharacterInfo)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT

	m_pDocument = NULL;
	m_pItemDlg = NULL;
	m_pMugongDlg = NULL;
	m_pAbility = NULL;
	m_nCurInvenTab = 0;

	m_wPower = eOperPower_Max;

	m_pItemRecoverDlg = NULL;
}

CCharacterInfo::~CCharacterInfo()
{
	SAFE_DELETE(m_pItemDlg);
	SAFE_DELETE(m_pMugongDlg);
	SAFE_DELETE(m_pAbility);
}

void CCharacterInfo::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCharacterInfo)
	DDX_Control(pDX, IDC_BUTTON_CHANGE_LOGINPOINT, m_btnChangeLoginPoint);
	DDX_Control(pDX, IDC_CHARACTER_BTN_SAVE, m_btnSave);
	DDX_Control(pDX, IDC_COMBO_LOGINPOINT, m_cbLoginPoint);
	DDX_Control(pDX, IDC_CHARACTER_BTN_ADDPYOGUK, m_btnPyogukAdd);
	DDX_Control(pDX, IDC_PYOGUK_COMBO, m_cbPyoguk);
	DDX_Control(pDX, IDC_INVEN_COMBO, m_cbInven);
	DDX_Control(pDX, IDC_ABILITY_COMBO, m_cbAbility);
	//}}AFX_DATA_MAP

	int i = 0;
	//// 沥焊芒 包访 函荐
	for(i=0;i< eCharTemp_MAX;++i)
		DDX_Control(pDX, IDC_CHAR_NAME+i, m_StatusEdit[i]);

	//// 牢亥配府 包访 函荐
	for(i = 0;i<TABCELL_INVENTORY_NUM;++i)
		DDX_Control(pDX, IDC_BTN_INVENOBJ1+i, m_InvenItem[i]);

	// 厘馒 酒捞袍
	for(i=0;i<eWearedItem_Max;++i)
		DDX_Control(pDX, IDC_BTN_WEAROBJ1+i, m_WearItem[i]);

	//// 胶懦芒 包访 函荐
	// 公傍
	for(i=0;i<SLOT_MUGONG_NUM;++i)
		DDX_Control(pDX, IDC_BTN_SKILL1+i, m_SkillMuGong[i]);

	// 柳过
	for(i=0;i<SLOT_JINBUB_NUM;++i)
		DDX_Control(pDX, IDC_BTN_JINBUB1+i, m_SkillJinBub[i]);

	//// 钎惫芒 包访 函荐
	for(i=0;i<TABCELL_PYOGUK_NUM;++i)
		DDX_Control(pDX, IDC_BTN_PYOGUK1+i, m_PyoGukItem[i]);

	//// 漂扁 包访 函荐
	for(i=0;i<MAX_ABILITY_NUM_PER_GROUP;++i)
		DDX_Control(pDX, IDC_BTN_ABLITY1+i, m_Ability[i]);

	// 牢亥 器瘤记 般摹绰 芭
	for(i=0;i<10;++i)
		DDX_Control(pDX, IDC_BTNINVEN_ERROR1+i, m_InvenItemError[i]);

	for(i=0;i<5;++i)
	{
		DDX_Control(pDX, IDC_BTN_WAREERROR1+i, m_WareItemError[i]);
		DDX_Control(pDX, IDC_BTN_SKILLERROR1+i, m_MugongError[i]);
	}

	DDX_Control(pDX, IDC_BTN_INVEN_RECOVER, m_InvenRecover);
}


BEGIN_MESSAGE_MAP(CCharacterInfo, CLDPropPage)
	//{{AFX_MSG_MAP(CCharacterInfo)
	ON_WM_CREATE()
	ON_CBN_SELCHANGE(IDC_INVEN_COMBO, OnSelchangeInvenCombo)
	ON_CBN_SELCHANGE(IDC_PYOGUK_COMBO, OnSelchangePyogukCombo)
	ON_CBN_SELCHANGE(IDC_ABILITY_COMBO, OnSelchangeAbilityCombo)
	ON_BN_CLICKED(IDC_CHARACTER_BTN_SAVE, OnCharacterBtnSave)
	ON_BN_CLICKED(IDC_CHARACTER_BTN_ADDPYOGUK, OnCharacterBtnAddpyoguk)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_QUESTINFO, OnQuestinfo)
	ON_BN_CLICKED(IDC_BUTTON_CHANGE_LOGINPOINT, OnButtonChangeLoginpoint)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCharacterInfo message handlers

int CCharacterInfo::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	lpCreateStruct->cx = 1024;
	lpCreateStruct->cy = 768;

	if (CLDPropPage::OnCreate(lpCreateStruct) == -1)
		return -1;	
	
	return 0;
}

void CCharacterInfo::InitControl(CCharacterDoc* pDoc)
{
	int i = 0;
	for(i=0;i< eCharTemp_MAX;++i)
		m_StatusEdit[i].Release();
	for(i = 0;i<TABCELL_INVENTORY_NUM;++i)
		m_InvenItem[i].Release();
	for(i=0;i<eWearedItem_Max;++i)
		m_WearItem[i].Release();
	for(i=0;i<SLOT_MUGONG_NUM;++i)
		m_SkillMuGong[i].Release();
	for(i=0;i<SLOT_JINBUB_NUM;++i)
		m_SkillJinBub[i].Release();
	for(i=0;i<TABCELL_PYOGUK_NUM;++i)
		m_PyoGukItem[i].Release();
	for(i=0;i<MAX_ABILITY_NUM_PER_GROUP;++i)
		m_Ability[i].Release();
	for(i=0;i<10;++i)
	{
		m_InvenItemError[i].Release();
		m_InvenItemError[i].ShowWindow( FALSE );
	}
	for(i=0;i<5;++i)
	{
		m_WareItemError[i].Release();
		m_WareItemError[i].ShowWindow( FALSE );
		m_MugongError[i].Release();
		m_MugongError[i].ShowWindow( FALSE );
	}

	m_InvenRecover.Release();
#ifdef _CHINA
	m_InvenRecover.ShowWindow( FALSE );
	m_InvenRecover.EnableWindow( FALSE );
#else
	m_InvenRecover.ShowWindow( TRUE );
	m_InvenRecover.EnableWindow( TRUE );
#endif

	m_pDocument = pDoc;

	SetBaseInfo( &pDoc->m_sBaseInfo, &pDoc->m_sTotalInfo, &pDoc->m_sHTotalInfo );
	SetInvenInfo( &pDoc->m_sInven );
	SetInvenInfoError( &pDoc->m_InvenInfoError );
	SetPyogukInfo( &pDoc->m_sPyoguk );
	SetPyogukInfoError( &pDoc->m_WareError );
	SetMugongInfo( &pDoc->m_sMugong );
	SetMugongInfoError( &pDoc->m_MugongError );
	SetAbilityInfo();

	// 拌魂 荐摹俊 措秦辑...
	ResetCalcInfo();

	// login point combobox
	int mapnum = 0;
	char* pName = NULL;
	CYHHashTable<char>*	pTable = GAMERESRCMNGR->GetMapNameTable();
	pTable->SetPositionHead();
	while( pName = pTable->GetData() )
	{
		if( strcmp( pName, "" ) != 0 )
			m_cbLoginPoint.AddString( pName );
	}
	m_cbLoginPoint.SetCurSel( 0 );
}

//---------------------------------------------------------------------------------------
// set fn
//---------------------------------------------------------------------------------------
void CCharacterInfo::SetBaseInfo(BASEOBJECT_INFO* objInfo, CHARACTER_TOTALINFO* totalInfo, HERO_TOTALINFO* heroInfo)
{
	CString str;

	m_StatusEdit[eCharTemp_NAME].SetWindowTextEx( objInfo->ObjectName, 0 );		// name
	m_StatusEdit[eCharTemp_NICK].SetWindowTextEx( "-", 0 );						// nickname
	str.Format( "%d", totalInfo->Level );
	m_StatusEdit[eCharTemp_LEVEL].SetMaxValue( 99 );
	m_StatusEdit[eCharTemp_LEVEL].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// level
	str.Format( "%d", totalInfo->Stage );
	m_StatusEdit[eCharTemp_STEP].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );		// stage
	str.Format( "%d", heroInfo->ExpPoint );
	m_StatusEdit[eCharTemp_EXP].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );		// exp
	m_StatusEdit[eCharTemp_MUNPA].SetWindowTextEx( heroInfo->MunpaName, 0 );	// munpa
	str.Format( "%d", totalInfo->PositionInMunpa );
	m_StatusEdit[eCharTemp_MUNPAPOS].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// munpaposition
	str.Format( "%d", heroInfo->Fame );
	m_StatusEdit[eCharTemp_FAME].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );		// fame
	str.Format( "%d", totalInfo->BadFame );
	m_StatusEdit[eCharTemp_BADFAME].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// badfame
	str.Format( "%d", heroInfo->wGenGol );
	m_StatusEdit[eCharTemp_GENGOL].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// gengol
	str.Format( "%d", heroInfo->wMinChub );
	m_StatusEdit[eCharTemp_MINCHUB].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// minchub
	str.Format( "%d", heroInfo->wCheRyuk );
	m_StatusEdit[eCharTemp_CHERYUK].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// chetyuk
	str.Format( "%d", heroInfo->wSimMek );
	m_StatusEdit[eCharTemp_SIMMAK].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// simmek
	str.Format( "%d", heroInfo->LevelUpPoint );
	m_StatusEdit[eCharTemp_POINT].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// point

	str.Format( "%d", totalInfo->Life );
	m_StatusEdit[eCharTemp_LIFE].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );		// life
	str.Format( "%d", heroInfo->wNaeRyuk );
	m_StatusEdit[eCharTemp_MANA].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );		// 郴仿
	str.Format( "%d", totalInfo->Shield );
	m_StatusEdit[eCharTemp_SHIELD].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// shield

	str.Format( "%d", heroInfo->Money );
	m_StatusEdit[eCharTemp_INVENMONEY].SetMaxValue( MAX_INVENTORY_MONEY );
	m_StatusEdit[eCharTemp_INVENMONEY].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// invenmoney
	str.Format( "%d", heroInfo->AbilityExp );
	m_StatusEdit[eCharTemp_ABILITYPOINT].SetWindowTextEx( (char*)(LPCTSTR)str, 1 );	// abilityexp

	str.Format( "%s", GAMERESRCMNGR->GetMapName( totalInfo->LoginMapNum ) );
	m_StatusEdit[eCharTemp_LoginPoint].SetWindowTextEx( (char*)(LPCTSTR)str, 0 );	// loginpoint

	for( int i = 0; i < eCharTemp_MAX; ++i )
	{
		m_StatusEdit[i].SetChanged( FALSE );
		m_StatusEdit[i].SetInSave( FALSE );
	}
}

void CCharacterInfo::ResetCalcInfo()
{
// 拌魂 荐摹 利侩篮 唱吝俊....
/*	WORD minChub = 0;
	WORD genGol = 0;;
	WORD attackMin = 0;
	WORD attackMax = 0;

	int RangeType = 0;
	WORD wWeaponIdx = (WORD)m_WearItem[eWearedItem_Weapon].GetData();

	if( wWeaponIdx )
	{
		ITEM_INFO* pWeaponInfo = GAMERESRCMNGR->GetItemInfo(wWeaponIdx);
		if( pWeaponInfo )
			RangeType = pWeaponInfo->RangeType;
	}

	WORD ItemIdx;
	for(int part=0;part<eWearedItem_Max;++part)
	{
		ItemIdx = (WORD)m_WearItem[part].GetData();
		if(ItemIdx == 0)
			continue;

		ITEM_INFO * pItemInfo = GAMERESRCMNGR->GetItemInfo(ItemIdx);
		if( !pItemInfo )
			continue;
		
		if(RangeType==0)
		{
			attackMin += pItemInfo->MeleeAttackMin;		
			attackMax += pItemInfo->MeleeAttackMax;
			genGol += pItemInfo->GenGol;
		}
		else
		{
			attackMin += pItemInfo->RangeAttackMin;
			attackMax += pItemInfo->RangeAttackMax;
			minChub += pItemInfo->MinChub;
		}
	}

	CString str;

	if(RangeType == 0)
	{
		WORD GenGol = (WORD)m_StatusEdit[eCharTemp_GENGOL].GetData() + genGol;
		str.Format("%d ~ %d", CalcMeleeAttackPower(GenGol,attackMin), CalcMeleeAttackPower(GenGol,attackMax) );
		m_StatusEdit[eCharTemp_ATTACK].SetWindowText(str.GetBuffer(0));
		m_StatusEdit[eCharTemp_LONGATTACK].SetWindowText( "-" );
	}
	else
	{
		WORD MinChub = (WORD)m_StatusEdit[eCharTemp_MINCHUB].GetData() + minChub;
		str.Format("%d ~ %d", CalcRangeAttackPower(MinChub,attackMin), CalcRangeAttackPower(MinChub,attackMax) );
		m_StatusEdit[eCharTemp_LONGATTACK].SetWindowText(str.GetBuffer(0));
		m_StatusEdit[eCharTemp_ATTACK].SetWindowText( "-" );
	}
	*/

// 烙矫肺...
	m_StatusEdit[eCharTemp_ATTACK].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_CRITICAL].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_LONGATTACK].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_RANGE].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_LIFE].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_DEFFENCE].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_MANA].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_SHIELD].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_FRESI].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_WRESI].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_TRESI].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_GRESI].SetWindowText( "-" );
	m_StatusEdit[eCharTemp_TORESI].SetWindowText( "-" );
}

void CCharacterInfo::SetInvenInfo( ITEM_TOTALINFO* inven )
{
	char buff[256] = {0,};
	int i = 0;
	ITEM_INFO* pInfo = NULL;

	// Combo Init
	m_cbInven.ResetContent();
	for( i = 0; i < TAB_INVENTORY_NUM; ++i )
	{
		sprintf( buff, "Tab%d", i+1 );
		m_cbInven.AddString( buff );
	}
	m_cbInven.SetCurSel(0);

	// weareditem
	for( i = 0; i < eWearedItem_Max; ++i )
	{
		if( inven->WearedItem[i].wIconIdx != 0 )
		{
			pInfo = GAMERESRCMNGR->GetItemInfo( inven->WearedItem[i].wIconIdx );
			if( pInfo )
				sprintf( buff, pInfo->ItemName );
			else
				sprintf( buff, "%d", inven->WearedItem[i].wIconIdx );
		}
		else
			sprintf( buff, "" );

		m_WearItem[i].SetWindowText( buff );
		m_WearItem[i].SetData( inven->WearedItem[i].wIconIdx );
	}

	// invenitem
	for( i = 0; i < TABCELL_INVENTORY_NUM; ++i )
	{
		if( inven->Inventory[i].wIconIdx != 0 )
		{
			pInfo = GAMERESRCMNGR->GetItemInfo( inven->Inventory[i].wIconIdx );
			if( pInfo )
				sprintf( buff, pInfo->ItemName );
			else
				sprintf( buff, "%d", inven->Inventory[i].wIconIdx );
		}
		else
			sprintf( buff, "" );

		m_InvenItem[i].SetWindowText( buff );
		m_InvenItem[i].SetData( inven->Inventory[i].wIconIdx );
	}
}

void CCharacterInfo::SetInvenInfoError( TMSG_CHARACTER_INVENINFO2* inven )
{
	char buff[256] = {0,};
	int i = 0;
	ITEM_INFO* pInfo = NULL;

	for( i = 0; i < inven->m_dwCount; ++i )
	{
		if( inven->m_ItemInfo[i].wIconIdx != 0 )
		{
			pInfo = GAMERESRCMNGR->GetItemInfo( inven->m_ItemInfo[i].wIconIdx );
			if( pInfo )
				sprintf( buff, pInfo->ItemName );
			else
				sprintf( buff, "%d", inven->m_ItemInfo[i].wIconIdx );
		}
		else
			sprintf( buff, "" );

		m_InvenItemError[i].SetWindowText( buff );
		m_InvenItemError[i].SetData( inven->m_ItemInfo[i].wIconIdx );	
		m_InvenItemError[i].ShowWindow( TRUE );	
	}
}

void CCharacterInfo::SetPyogukInfo( PHYOKUK_TOTALINFO* pyoguk )
{
	char buff[256] = {0,};
	int i = 0;
	ITEM_INFO* pInfo = NULL;

	m_cbPyoguk.ResetContent();
	if( pyoguk->PyokukCount == 0 )
	{
		EnablePyogukInfoControl(FALSE);
		return;
	}
	else
	{
		for( i = 0; i < pyoguk->PyokukCount; ++i )
		{
			sprintf( buff, "Tab%d", i+1 );
			m_cbPyoguk.AddString( buff );
		}
		m_cbPyoguk.SetCurSel( 0 );

		if( pyoguk->PyokukCount >= TAB_PYOGUK_NUM )
			m_btnPyogukAdd.EnableWindow( FALSE );

		for( i = 0; i < TABCELL_PYOGUK_NUM; ++i )
		{
			if( pyoguk->Pyokuk[i].wIconIdx != 0 )
			{
				pInfo = GAMERESRCMNGR->GetItemInfo( pyoguk->Pyokuk[i].wIconIdx );
				if( pInfo )
					sprintf( buff, pInfo->ItemName );
				else
					sprintf( buff, "%d", pyoguk->Pyokuk[i].wIconIdx );
			}
			else
				sprintf( buff, "" );

			m_PyoGukItem[i].SetWindowText( buff );
			m_PyoGukItem[i].SetData( pyoguk->Pyokuk[i].wIconIdx );
		}

		sprintf( buff, "%d", pyoguk->Money );

⌨️ 快捷键说明

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