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