📄 characterinfo.cpp
字号:
m_StatusEdit[eCharTemp_PYOGUKMONEY].SetMaxValue(1000000 + pyoguk->PyokukCount*1000000);
m_StatusEdit[eCharTemp_PYOGUKMONEY].SetWindowTextEx( buff, 1 );
}
}
void CCharacterInfo::SetPyogukInfoError( PHYOKUK_TOTALINFO* pinfo )
{
char buff[256] = {0,};
int i = 0;
ITEM_INFO* pInfo = NULL;
for( i = 0; i < pinfo->PyokukCount; ++i )
{
if( pinfo->Pyokuk[i].wIconIdx != 0 )
{
pInfo = GAMERESRCMNGR->GetItemInfo( pinfo->Pyokuk[i].wIconIdx );
if( pInfo )
sprintf( buff, pInfo->ItemName );
else
sprintf( buff, "%d", pinfo->Pyokuk[i].wIconIdx );
}
else
sprintf( buff, "" );
m_WareItemError[i].SetWindowText( buff );
m_WareItemError[i].SetData( pinfo->Pyokuk[i].wIconIdx );
m_WareItemError[i].ShowWindow( TRUE );
}
}
void CCharacterInfo::EnablePyogukInfoControl( BOOL bEnable )
{
m_cbPyoguk.EnableWindow( bEnable );
m_StatusEdit[eCharTemp_PYOGUKMONEY].EnableWindow( bEnable );
for( int i = 0; i < TABCELL_PYOGUK_NUM; ++i )
m_PyoGukItem[i].EnableWindow( bEnable );
}
void CCharacterInfo::SetMugongInfo( MUGONG_TOTALINFO* mugong )
{
char buff[256]={0,};
int i,temp;
SKILLINFO* pInfo = NULL;
MUGONGBASE* sMugong = mugong->mugong;
// 公傍 持扁
for( i = 0, temp = 0; i < SLOT_MUGONG_NUM; ++i )
{
if( sMugong[i].wIconIdx != 0 )
{
pInfo = GAMERESRCMNGR->GetSkillInfo( sMugong[i].wIconIdx );
if( pInfo )
sprintf( buff, pInfo->SkillName );
else
sprintf( buff, "%d", sMugong[i].wIconIdx );
}
else
sprintf( buff, "" );
m_SkillMuGong[i].SetWindowText( buff );
m_SkillMuGong[i].SetData( sMugong[i].wIconIdx );
}
temp = i;
// 柳过 持扁
for( i = 0; i < SLOT_JINBUB_NUM; ++i )
{
if( sMugong[temp+i].wIconIdx != 0 )
{
pInfo = GAMERESRCMNGR->GetSkillInfo( sMugong[temp+i].wIconIdx );
if( pInfo )
sprintf( buff, pInfo->SkillName );
else
sprintf( buff, "%d", sMugong[temp+i].wIconIdx );
}
else
sprintf( buff, "" );
m_SkillJinBub[i].SetWindowText( buff );
m_SkillJinBub[i].SetData( sMugong[temp+i].wIconIdx );
}
}
void CCharacterInfo::SetMugongInfoError( TMSG_CHARACTER_MUGONGINFO2* pinfo )
{
char buff[256]={0,};
SKILLINFO* pInfo = NULL;
for( int i = 0; i < pinfo->m_dwCount; ++i )
{
if( pinfo->m_MugongBase[i].wIconIdx != 0 )
{
pInfo = GAMERESRCMNGR->GetSkillInfo( pinfo->m_MugongBase[i].wIconIdx );
if( pInfo )
sprintf( buff, pInfo->SkillName );
else
sprintf( buff, "%d", pinfo->m_MugongBase[i].wIconIdx );
}
else
sprintf( buff, "" );
m_MugongError[i].SetWindowText( buff );
m_MugongError[i].SetData( pinfo->m_MugongBase[i].wIconIdx );
m_MugongError[i].ShowWindow( TRUE );
}
}
void CCharacterInfo::SetAbilityInfo()
{
char buff[256] = {0,};
int i = 0;
// Combo Init
m_cbAbility.ResetContent();
for( i = 0; i < eAGK_Max; ++i )
{
sprintf( buff, "Tab%d", i+1 );
m_cbAbility.AddString( buff );
}
m_cbAbility.SetCurSel(0);
// Ability 檬扁拳
for( i = 0; i < MAX_ABILITY_NUM_PER_GROUP; ++i )
{
m_Ability[i].SetWindowText( "" );
m_Ability[i].SetData( 0 );
}
CYHHashTable<CAbilityInfo>* pAbility = GAMERESRCMNGR->GetAbilityInfo();
CAbilityInfo* pAInfo = NULL;
pAbility->SetPositionHead();
while( pAInfo = pAbility->GetData() )
{
if( pAInfo->GetKind() == 0 )
{
if( pAInfo->GetInfo()->Ability_AcquireKind == eAAK_CharacterLevel &&
pAInfo->GetInfo()->Ability_AcquireParam1 <= m_pDocument->m_sTotalInfo.Level )
m_Ability[pAInfo->GetPosition()].SetWindowText( pAInfo->GetInfo()->Ability_name );
m_Ability[pAInfo->GetPosition()].SetData( pAInfo->GetInfo()->Ability_index );
}
}
}
//---------------------------------------------------------------------------------------
// combo box
//---------------------------------------------------------------------------------------
void CCharacterInfo::OnSelchangeInvenCombo()
{
int nCurSel = m_cbInven.GetCurSel();
int tab = nCurSel*TABCELL_INVENTORY_NUM;
m_nCurInvenTab = nCurSel*TABCELL_INVENTORY_NUM;
char buff[256]={0,};
int i = 0;
ITEM_INFO* pInfo = NULL;
ITEMBASE* sInven = m_pDocument->m_sInven.Inventory;
ITEMBASE* oInven = m_pDocument->m_sInven_org.Inventory;
for( i = 0; i < TABCELL_INVENTORY_NUM; ++i )
{
if( sInven[tab+i].Durability != oInven[tab+i].Durability ||
sInven[tab+i].dwDBIdx != oInven[tab+i].dwDBIdx ||
sInven[tab+i].wIconIdx != oInven[tab+i].wIconIdx )
// if( sInven[i].dwDBIdx == 0 )
m_InvenItem[i].SetColorText( COLOR_BUTTON_CHANGED );
else
m_InvenItem[i].SetColorText( COLOR_BUTTON_DEFAULT );
if( sInven[tab+i].wIconIdx != 0 )
{
pInfo = GAMERESRCMNGR->GetItemInfo( sInven[tab+i].wIconIdx );
if( pInfo )
sprintf( buff, pInfo->ItemName );
else
sprintf( buff, "%d", sInven[tab+i].wIconIdx );
}
else
sprintf( buff, "" );
m_InvenItem[i].SetWindowText( buff );
m_InvenItem[i].SetData( sInven[tab+i].wIconIdx );
}
ResetTooltip();
}
void CCharacterInfo::OnSelchangePyogukCombo()
{
int nCurSel = m_cbPyoguk.GetCurSel();
int tab = nCurSel*TABCELL_PYOGUK_NUM;
char buff[256]={0,};
int i = 0;
ITEM_INFO* pInfo = NULL;
ITEMBASE* pItem = m_pDocument->m_sPyoguk.Pyokuk;
for( i = 0; i < TABCELL_PYOGUK_NUM; ++i )
{
if( pItem[tab+i].wIconIdx != 0 )
{
pInfo = GAMERESRCMNGR->GetItemInfo( pItem[tab+i].wIconIdx );
if( pInfo )
sprintf( buff, pInfo->ItemName );
else
sprintf( buff, "%d", pItem[tab+i].wIconIdx );
}
else
sprintf( buff, "" );
m_PyoGukItem[i].SetWindowText( buff );
m_PyoGukItem[i].SetData( pItem[tab+i].wIconIdx );
}
ResetTooltip();
}
void CCharacterInfo::OnSelchangeAbilityCombo()
{
int nCurSel = m_cbAbility.GetCurSel();
if( nCurSel == -1 ) return;
// Ability 檬扁拳
for( int i = 0; i < MAX_ABILITY_NUM_PER_GROUP; ++i )
{
m_Ability[i].SetWindowText( "" );
m_Ability[i].SetData( 0 );
}
CYHHashTable<CAbilityInfo>* pAbility = GAMERESRCMNGR->GetAbilityInfo();
CAbilityInfo* pAInfo = NULL;
pAbility->SetPositionHead();
while( pAInfo = pAbility->GetData() )
{
if( pAInfo->GetKind() == nCurSel )
{
if( pAInfo->GetInfo()->Ability_AcquireKind == eAAK_CharacterLevel &&
pAInfo->GetInfo()->Ability_AcquireParam1 <= m_pDocument->m_sTotalInfo.Level )
{
m_Ability[pAInfo->GetPosition()].SetWindowText( pAInfo->GetInfo()->Ability_name );
m_Ability[pAInfo->GetPosition()].SetData( pAInfo->GetInfo()->Ability_index );
}
else
{
m_Ability[pAInfo->GetPosition()].SetWindowText( "" );
m_Ability[pAInfo->GetPosition()].SetData( 0 );
}
}
}
ResetTooltip();
}
void CCharacterInfo::GetChangeBaseInfo(TMSG_CHARACTER_UPDATEBASEINFO* msg)
{
CString str;
m_StatusEdit[eCharTemp_NAME].GetStringData(str.GetBuffer(0));
strcpy(msg->ObjectName, str);
m_StatusEdit[eCharTemp_NICK].GetStringData(str.GetBuffer(0));
strcpy(msg->NickName, str);
m_StatusEdit[eCharTemp_MUNPA].GetStringData(str.GetBuffer(0));
strcpy(msg->MunpaName, str);
msg->PositionInMunpa = (BYTE)m_StatusEdit[eCharTemp_MUNPAPOS].GetData();
msg->Fame = (FAMETYPE)m_StatusEdit[eCharTemp_FAME].GetData();
// msg->PartyID = m_StatusEdit[eCharTemp_PARTY].GetData();
msg->Stage = (BYTE)m_StatusEdit[eCharTemp_STEP].GetData();
msg->Level = (LEVELTYPE)m_StatusEdit[eCharTemp_LEVEL].GetData();
msg->ExpPoint = m_StatusEdit[eCharTemp_EXP].GetData();
msg->wGenGol = (WORD)m_StatusEdit[eCharTemp_GENGOL].GetData();
msg->wMinChub = (WORD)m_StatusEdit[eCharTemp_MINCHUB].GetData();
msg->wCheRyuk = (WORD)m_StatusEdit[eCharTemp_CHERYUK].GetData();
msg->wSimMek = (WORD)m_StatusEdit[eCharTemp_SIMMAK].GetData();
msg->LevelUpPoint = (LEVELTYPE)m_StatusEdit[eCharTemp_POINT].GetData();
msg->Money = m_StatusEdit[eCharTemp_INVENMONEY].GetData();
msg->AbilityExp = m_StatusEdit[eCharTemp_ABILITYPOINT].GetData();
}
void CCharacterInfo::GetChangePyogukInfo(TMSG_CHARACTER_PYOGUKINFO* msg)
{
msg->m_wPyogukNum = m_cbPyoguk.GetCount();
msg->m_dwMoney = m_StatusEdit[eCharTemp_PYOGUKMONEY].GetData();
}
BOOL CCharacterInfo::PreTranslateMessage(MSG* pMsg)
{
BYTE type; // 0:inven, 1:wear, 2:pyoguk, 3:mugong, 4:jinbub, 5:ability
POSTYPE pos;
if( CMRButton* wnd = CheckButtonEvent(pMsg->hwnd, pos, type) )
{
char buff[1024] = {0,};
MakeToolTip(type, pos, (WORD)wnd->GetData(), buff);
if( strlen(buff) )
{
m_TTctrl.Activate(TRUE);
m_TTctrl.UpdateTipText( buff , wnd );
m_TTctrl.RelayEvent(pMsg);
}
}
return CLDPropPage::PreTranslateMessage(pMsg);
}
BOOL CCharacterInfo::OnInitDialog()
{
CLDPropPage::OnInitDialog();
CDS_RMToolApp* pApp = (CDS_RMToolApp*)AfxGetApp();
m_wPower = pApp->GetCurOperatorPower();
m_btnChangeLoginPoint.EnableWindow( FALSE );
m_btnSave.EnableWindow( FALSE );
// TODO: Add extra initialization here
m_TTctrl.Create(this);
m_TTctrl.SetMaxTipWidth(200);
int i;
for(i=0;i<TABCELL_INVENTORY_NUM;++i)
m_TTctrl.AddTool(&m_InvenItem[i]);
for(i=0;i<eWearedItem_Max;++i)
m_TTctrl.AddTool(&m_WearItem[i]);
for(i=0;i<SLOT_MUGONG_NUM;++i)
m_TTctrl.AddTool(&m_SkillMuGong[i]);
for(i=0;i<SLOT_JINBUB_NUM;++i)
m_TTctrl.AddTool(&m_SkillJinBub[i]);
for(i=0;i<TABCELL_PYOGUK_NUM;++i)
m_TTctrl.AddTool(&m_PyoGukItem[i]);
for(i=0;i<MAX_ABILITY_NUM_PER_GROUP;++i)
m_TTctrl.AddTool(&m_Ability[i]);
EnableToolTips(TRUE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CCharacterInfo::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
// if( m_pDocument && !m_pDocument->IsReadOnly() )
if( m_pDocument )
if( m_pDocument->IsReadOnly() )
{
m_btnChangeLoginPoint.EnableWindow( FALSE );
m_btnSave.EnableWindow( FALSE );
}
else
{
if( m_wPower == eOperPower_Master )
{
m_btnChangeLoginPoint.EnableWindow( TRUE );
m_btnSave.EnableWindow( TRUE );
}
else
{
m_btnChangeLoginPoint.EnableWindow( FALSE );
m_btnSave.EnableWindow( FALSE );
}
}
switch( nCode )
{
case BN_CLICKED:
{
ButtonControlCommand(nID);
}
break;
case EN_KILLFOCUS:
{
EditControlCommand(nID);
}
break;
case EN_CHANGE:
{
if( (nID >= IDC_CHAR_NAME && nID < IDC_CHAR_ABILITYPOINT+1) )
{
CMREdit* pEdit = (CMREdit*)GetDlgItem(nID);
if( pEdit ) pEdit->SetChanged(TRUE);
}
}
break;
}
return CLDPropPage::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
CMRButton* CCharacterInfo::CheckButtonEvent(HWND hWnd, POSTYPE& pos, BYTE& type)
{
int i;
for(i=0;i<TABCELL_INVENTORY_NUM;++i)
{
if(m_InvenItem[i].m_hWnd == hWnd)
{
type = 0;
pos = i;
return &m_InvenItem[i];
}
}
for(i=0;i<eWearedItem_Max;++i)
{
if(m_WearItem[i].m_hWnd == hWnd)
{
type = 1;
pos = i;
return &m_WearItem[i];
}
}
for(i=0;i<SLOT_MUGONG_NUM;++i)
{
if(m_SkillMuGong[i].m_hWnd == hWnd)
{
type = 3;
pos = i;
return &m_SkillMuGong[i];
}
}
for(i=0;i<SLOT_JINBUB_NUM;++i)
{
if(m_SkillJinBub[i].m_hWnd == hWnd)
{
type = 4;
pos = i;
return &m_SkillJinBub[i];
}
}
for(i=0;i<TABCELL_PYOGUK_NUM;++i)
{
if(m_PyoGukItem[i].m_hWnd == hWnd)
{
type = 2;
pos = i;
return &m_PyoGukItem[i];
}
}
for(i=0;i<MAX_ABILITY_NUM_PER_GROUP;++i)
{
if(m_Ability[i].m_hWnd == hWnd)
{
type = 5;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -