📄 characterinfo.cpp
字号:
}
else
sprintf(buff, "");
CMRButton* btn = (CMRButton*) GetDlgItem(nControlIdx);
btn->SetWindowText(buff);
btn->SetData(pAMugong->wIconIdx);
btn->SetColorText(COLOR_BUTTON_CHANGED);
////////////////////////////////////////////////////////////
}
void CCharacterInfo::OnCharacterBtnAddpyoguk()
{
// TODO: Add your control notification handler code here
WORD wCount = m_cbPyoguk.GetCount();
PHYOKUK_TOTALINFO* pyoguk = &m_pDocument->m_sPyoguk;
char buff[256] = {0,};
ITEM_INFO* pInfo;
if( wCount < TAB_PYOGUK_NUM )
{
if( !m_cbPyoguk.IsWindowEnabled() )
{
EnablePyogukInfoControl();
m_StatusEdit[eCharTemp_PYOGUKMONEY].SetWindowTextEx("0", 1);
}
sprintf(buff,"Tab%d", wCount+1);
m_cbPyoguk.InsertString(wCount, buff);
m_cbPyoguk.SetCurSel(wCount);
int tab = wCount*TABCELL_PYOGUK_NUM;
for(int i=0;i<TABCELL_PYOGUK_NUM;++i)
{
if( pyoguk->Pyokuk[tab+i].wIconIdx != 0)
{
pInfo = GAMERESRCMNGR->GetItemInfo(pyoguk->Pyokuk[tab+i].wIconIdx);
if( pInfo )
sprintf(buff, pInfo->ItemName);
else
sprintf(buff, "%d", pyoguk->Pyokuk[tab+i].wIconIdx);
}
else
sprintf(buff, "");
m_PyoGukItem[i].SetWindowText(buff);
m_PyoGukItem[i].SetData(pyoguk->Pyokuk[tab+i].wIconIdx);
}
if( (wCount+1) == TAB_PYOGUK_NUM )
m_btnPyogukAdd.EnableWindow(FALSE);
m_pDocument->SetSaveFlag(eCF_PyogukInfo);
}
else
return;
pyoguk->PyokukCount = wCount;
m_StatusEdit[eCharTemp_PYOGUKMONEY].SetMaxValue(1000000 + wCount*1000000);
}
void CCharacterInfo::OnCharacterBtnSave()
{
if( m_wPower != eOperPower_Master )
return;
m_pDocument->ProcessChangeManager();
}
HBRUSH CCharacterInfo::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr;
switch (nCtlColor)
{
case CTLCOLOR_EDIT:
{
UINT nId = pWnd->GetDlgCtrlID();
if( nId >= IDC_CHAR_NAME && nId < IDC_CHAR_ABILITYPOINT+1 )
{
if( ((CMREdit*)pWnd)->HasSaveData() )
pDC->SetTextColor( ((CMREdit*)pWnd)->GetEditTextColor() );
}
else
hbr = CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
}
break;
default:
hbr = CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
break;
}
return hbr;
}
void CCharacterInfo::MakeToolTip(BYTE type, POSTYPE pos, WORD idx, char* str)
{
CString buff;
BOOL bOption = FALSE;
WORD OptionIdx = 0;
if( idx == 0 ) return;
switch(type)
{
case 0: // inven item
{
ITEM_INFO* pInfo = GAMERESRCMNGR->GetItemInfo(idx);
if( !pInfo ) break;
buff.Format("\n");
strcat(str, buff.GetBuffer(0));
buff.Format("Item : %s(%d)", pInfo->ItemName, pInfo->ItemIdx);
strcat(str, buff.GetBuffer(0));
if( GAMERESRCMNGR->IsOptionItem(pInfo->ItemIdx, m_pDocument->m_sInven.Inventory[pos+m_nCurInvenTab].Durability) )
{
bOption = TRUE;
OptionIdx = m_pDocument->m_sInven.Inventory[pos+m_nCurInvenTab].Durability;
buff.Format("\nOption Num : %d", m_pDocument->m_sInven.Inventory[pos+m_nCurInvenTab].Durability);
strcat(str, buff.GetBuffer(0));
}
else
{
if( GAMERESRCMNGR->IsDupItem(pInfo->ItemIdx) )
{
buff.Format("\nCount : %d", m_pDocument->m_sInven.Inventory[pos+m_nCurInvenTab].Durability);
strcat(str, buff.GetBuffer(0));
}
}
}
break;
case 1: // wear item
{
ITEM_INFO* pInfo = GAMERESRCMNGR->GetItemInfo(idx);
if( !pInfo ) break;
buff.Format("\n");
strcat(str, buff.GetBuffer(0));
buff.Format("Item : %s(%d)", pInfo->ItemName, pInfo->ItemIdx);
strcat(str, buff.GetBuffer(0));
if( GAMERESRCMNGR->IsOptionItem(pInfo->ItemIdx, m_pDocument->m_sInven.WearedItem[pos].Durability) )
{
bOption = TRUE;
OptionIdx = m_pDocument->m_sInven.WearedItem[pos].Durability;
buff.Format("\nOption Num : %d", m_pDocument->m_sInven.WearedItem[pos].Durability);
strcat(str, buff.GetBuffer(0));
}
else
{
if( GAMERESRCMNGR->IsDupItem(pInfo->ItemIdx) )
{
buff.Format("\nCount : %d", m_pDocument->m_sInven.WearedItem[pos].Durability);
strcat(str, buff.GetBuffer(0));
}
}
}
break;
case 2: // pyoguk item
{
ITEM_INFO* pInfo = GAMERESRCMNGR->GetItemInfo(idx);
if( !pInfo ) break;
buff.Format("\n");
strcat(str, buff.GetBuffer(0));
buff.Format("Item : %s(%d)", pInfo->ItemName, pInfo->ItemIdx);
strcat(str, buff.GetBuffer(0));
if( GAMERESRCMNGR->IsOptionItem(pInfo->ItemIdx, m_pDocument->m_sPyoguk.Pyokuk[pos].Durability) )
{
bOption = TRUE;
OptionIdx = m_pDocument->m_sPyoguk.Pyokuk[pos].Durability;
buff.Format("\nOption Num : %d", m_pDocument->m_sPyoguk.Pyokuk[pos].Durability);
strcat(str, buff.GetBuffer(0));
}
else
{
if( GAMERESRCMNGR->IsDupItem(pInfo->ItemIdx) )
{
buff.Format("\nCount : %d", m_pDocument->m_sPyoguk.Pyokuk[pos].Durability);
strcat(str, buff.GetBuffer(0));
}
}
}
break;
case 3: // 公傍
case 4: // 柳过
{
SKILLINFO* pSkill = GAMERESRCMNGR->GetSkillInfo(idx);
if(!pSkill) break;
buff.Format("\n");
strcat(str, buff.GetBuffer(0));
buff.Format("Skill : %s(%d)", pSkill->SkillName , pSkill->SkillIdx);
strcat(str, buff.GetBuffer(0));
buff.Format("\n Skill Level : %d", m_pDocument->m_sMugong.mugong[pos].Sung);
strcat(str, buff.GetBuffer(0));
buff.Format("\nSkill Exp : %d", m_pDocument->m_sMugong.mugong[pos].ExpPoint);
strcat(str, buff.GetBuffer(0));
}
break;
case 5: // ability
{
CAbilityInfo* pAbility = GAMERESRCMNGR->GetAbilityInfo(idx);
if(!pAbility) break;
buff.Format("\n");
strcat(str, buff.GetBuffer(0));
buff.Format("Ability : %s(%d)", pAbility->GetInfo()->Ability_name , pAbility->GetInfo()->Ability_index);
strcat(str, buff.GetBuffer(0));
// buff.Format("\nAbility Level : %d", m_pDocument->GetCharacterAbillityLevel(pAbility->GetKind(), pAbility->GetInfo()->Ability_index));
// strcat(str, buff.GetBuffer(0));
}
break;
default:
return;
}
if( bOption )
{
ITEM_OPTION_INFO* pOptionInfo = m_pDocument->GetItemOptionInfo(OptionIdx);
if(pOptionInfo)
{
char OptionBuff[40] = {0,};
if( pOptionInfo->GenGol != 0 )
{
sprintf(OptionBuff, "\n%s : +%d", "Physique", pOptionInfo->GenGol);
strcat(str, OptionBuff);
}
if( pOptionInfo->MinChub != 0 )
{
sprintf(OptionBuff, "\n%s : +%d", "Agility", pOptionInfo->MinChub);
strcat(str, OptionBuff);
}
if( pOptionInfo->CheRyuk != 0 )
{
sprintf(OptionBuff, "\n%s : +%d", "Strength", pOptionInfo->CheRyuk);
strcat(str, OptionBuff);
}
if( pOptionInfo->SimMek != 0 )
{
sprintf(OptionBuff, "\n%s : +%d", "Heart", pOptionInfo->SimMek);
strcat(str, OptionBuff);
}
if( pOptionInfo->Life != 0 )
{
sprintf(OptionBuff, "\n%s : +%d", "Life", pOptionInfo->Life);
strcat(str, OptionBuff);
}
if( pOptionInfo->NaeRyuk != 0 )
{
sprintf(OptionBuff, "\n%s : +%d", "Mana", pOptionInfo->NaeRyuk);
strcat(str, OptionBuff);
}
if( pOptionInfo->Shield != 0 )
{
sprintf(OptionBuff, "\n%s : +%d", "Shield", pOptionInfo->Shield);
strcat(str, OptionBuff);
}
if( pOptionInfo->PhyAttack != 0 )
{
sprintf(OptionBuff, "\n%s : +%d", "Attack", pOptionInfo->PhyAttack);
strcat(str, OptionBuff);
}
if( pOptionInfo->CriticalPercent != 0 )
{
sprintf(OptionBuff, "\n%s : +%d", "Critical", pOptionInfo->CriticalPercent);
strcat(str, OptionBuff);
}
if( pOptionInfo->PhyDefense != 0 )
{
sprintf(OptionBuff, "\n%s : +%d", "Defense", pOptionInfo->PhyDefense);
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_FIRE) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "Fire Resist", pOptionInfo->AttrRegist.GetElement_Val(ATTR_FIRE));
// sprintf(OptionBuff, "\n%s : %d%%", "Fire Resist", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_FIRE)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_WATER) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "Water Resist", pOptionInfo->AttrRegist.GetElement_Val(ATTR_WATER));
// sprintf(OptionBuff, "\n%s : %d%%", "Water Resist", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_WATER)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_TREE) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "Tree Resist", pOptionInfo->AttrRegist.GetElement_Val(ATTR_TREE));
// sprintf(OptionBuff, "\n%s : %d%%", "Tree Resist", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_TREE)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_IRON) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "Iron Resist", pOptionInfo->AttrRegist.GetElement_Val(ATTR_IRON));
// sprintf(OptionBuff, "\n%s : %d%%", "Iron Resist", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_IRON)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_EARTH) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "Earth Resist", pOptionInfo->AttrRegist.GetElement_Val(ATTR_EARTH));
// sprintf(OptionBuff, "\n%s : %d%%", "Earth Resist", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_EARTH)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_NOATTR) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "None", pOptionInfo->AttrRegist.GetElement_Val(ATTR_NOATTR));
// sprintf(OptionBuff, "\n%s : %d%%", "None", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_NOATTR)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_FIRE) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "Fire Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_FIRE));
// sprintf(OptionBuff, "\n%s : %d%%", "Fire Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_FIRE)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_WATER) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "Water Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_WATER));
// sprintf(OptionBuff, "\n%s : %d%%", "Water Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_WATER)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_TREE) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "Tree Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_TREE));
// sprintf(OptionBuff, "\n%s : %d%%", "Tree Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_TREE)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_IRON) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "Iron Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_IRON));
// sprintf(OptionBuff, "\n%s : %d%%", "Iron Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_IRON)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_EARTH) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "Earth Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_EARTH));
// sprintf(OptionBuff, "\n%s : %d%%", "Earth Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_EARTH)*100));
strcat(str, OptionBuff);
}
if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_NOATTR) != 0.00f )
{
sprintf(OptionBuff, "\n%s : %.2f%%", "None Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_NOATTR));
// sprintf(OptionBuff, "\n%s : %d%%", "None Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_NOATTR)*100));
strcat(str, OptionBuff);
}
}
}
buff.Format("\n");
strcat(str, buff.GetBuffer(0));
}
void CCharacterInfo::ResetTooltip()
{
m_TTctrl.Activate(FALSE);
}
//
void CCharacterInfo::OnQuestinfo()
{
m_QuestInfoDlg.SetInitData( m_pDocument->GetDocumentIdx(), m_pDocument->m_sBaseInfo.dwObjectID, m_pDocument->m_sBaseInfo.ObjectName );
m_QuestInfoDlg.DoModal();
}
void CCharacterInfo::UpdateMainQuestData( TMSG_MAINQUESTINFO* pMsg )
{
if( m_QuestInfoDlg.m_bInit )
m_QuestInfoDlg.UpdateQuestListCtrl( pMsg );
}
void CCharacterInfo::UpdateSubQuestData( TMSG_SUBQUESTINFO* pMsg )
{
if( m_QuestInfoDlg.m_bInit )
m_QuestInfoDlg.UpdateSubQuestData( pMsg );
}
void CCharacterInfo::OnButtonChangeLoginpoint()
{
int index = m_cbLoginPoint.GetCurSel();
if( index > -1 )
{
if( MessageBox( "Are You Really Change User LoginPoint?", "Confirm", MB_OKCANCEL ) == IDOK )
{
char mapname[128] = {0,};
m_cbLoginPoint.GetLBText( index, mapname );
DWORD mapnum = GAMERESRCMNGR->GetMapNum( mapname );
if( mapnum > 0 )
m_pDocument->ChangeLoginPoint( mapnum );
}
}
}
void CCharacterInfo::ChangeLoginPoint( DWORD dwMapNum )
{
if( dwMapNum > 0 )
{
CString str;
str.Format( "%s", GAMERESRCMNGR->GetMapName( dwMapNum ) );
m_StatusEdit[eCharTemp_LoginPoint].SetWindowTextEx( (char*)(LPCTSTR)str, 0 );
}
}
BOOL CCharacterInfo::CheckItemPosition( DWORD dwKind, DWORD Pos )
{
switch( dwKind )
{
case 0: // inven
{
if( m_InvenItem[Pos].GetData() != 0 )
return FALSE;
else
return TRUE;
}
break;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -