📄 characterinfo.cpp
字号:
{
int pos = GetEmptyPosition( 0 );
if( pos == -1 )
return;
pAItemBase = &m_pDocument->m_sInven.Inventory[pos];
pAItemBase->wIconIdx = dwItemIdx;
pAItemBase->Position = pos;
pAItemBase->Durability = 5;
pItem = new CChangeItem;
pItem->Init( eOp_Insert, eTK_InventoryItem, pos );
ITEM_OPTION_INFO Option;
memset( &Option, 0, sizeof(Option) );
pItem->SetData( pAItemBase, pAItemBase, &Option, &Option );
pManager->Add( pItem, pos, FALSE );
pInfo = GAMERESRCMNGR->GetItemInfo(dwItemIdx);
if( pInfo )
sprintf(buff, pInfo->ItemName);
else
sprintf(buff, "%d", dwItemIdx);
int nTab = m_cbInven.GetCurSel();
int nControlIdx = (pos / 20);
if( nTab == nControlIdx )
{
nControlIdx = IDC_BTN_INVENOBJ1 + (pos%20);
btn = (CMRButton*)GetDlgItem(nControlIdx);
btn->SetWindowText(buff);
btn->SetData(dwItemIdx);
btn->SetColorText(COLOR_BUTTON_CHANGED);
}
}
if( nR )
{
int pos = GetEmptyPosition( 0 );
if( pos == -1 )
return;
pAItemBase = &m_pDocument->m_sInven.Inventory[pos];
pAItemBase->wIconIdx = dwItemIdx;
pAItemBase->Position = pos;
pAItemBase->Durability = nR;
pItem = new CChangeItem;
pItem->Init( eOp_Insert, eTK_InventoryItem, pos );
ITEM_OPTION_INFO Option;
memset( &Option, 0, sizeof(Option) );
pItem->SetData( pAItemBase, pAItemBase, &Option, &Option );
pManager->Add( pItem, pos, FALSE );
pInfo = GAMERESRCMNGR->GetItemInfo(dwItemIdx);
if( pInfo )
sprintf(buff, pInfo->ItemName);
else
sprintf(buff, "%d", dwItemIdx);
int nTab = m_cbInven.GetCurSel();
int nControlIdx = (pos / 20);
if( nTab == nControlIdx )
{
nControlIdx = IDC_BTN_INVENOBJ1 + (pos%20);
btn = (CMRButton*)GetDlgItem(nControlIdx);
btn->SetWindowText(buff);
btn->SetData(dwItemIdx);
btn->SetColorText(COLOR_BUTTON_CHANGED);
}
}
}
int CCharacterInfo::GetEmptyPositionCount( WORD wType )
{
int count = 0;
int i = 0;
switch( wType )
{
case 0: // inven
{
for( i = 0; i < 80; ++i )
{
if( m_pDocument->m_sInven.Inventory[i].dwDBIdx == 0 &&
m_pDocument->m_sInven.Inventory[i].wIconIdx == 0 )
++count;
}
}
break;
case 1: // 芒绊
{
for( i = 0; i < TABCELL_PYOGUK_NUM*m_pDocument->m_sPyoguk.PyokukCount; ++i )
{
if( m_pDocument->m_sPyoguk.Pyokuk[i].dwDBIdx == 0 )
++count;
}
}
break;
}
return count;
}
int CCharacterInfo::GetEmptyPosition( DWORD dwType )
{
int i = 0;
switch( dwType )
{
case 0: // inven
{
for( i = 0; i < 80; ++i )
{
if( m_pDocument->m_sInven.Inventory[i].dwDBIdx == 0 &&
m_pDocument->m_sInven.Inventory[i].wIconIdx == 0 )
return i;
}
return -1;
}
break;
case 1: // 芒绊
{
for( i = 0; i < TABCELL_PYOGUK_NUM*m_pDocument->m_sPyoguk.PyokukCount; ++i )
{
if( m_pDocument->m_sPyoguk.Pyokuk[i].dwDBIdx == 0 )
return i;
}
return -1;
}
break;
case 2: // 公傍
{
for( i = 0; i < SLOT_MUGONG_NUM; ++i )
{
if( m_pDocument->m_sMugong.mugong[i].dwDBIdx == 0 )
return i;
}
return -1;
}
break;
case 3: // 柳过
{
for( i = SLOT_MUGONG_NUM; i < SLOT_MUGONGTOTAL_NUM; ++i )
{
if( m_pDocument->m_sMugong.mugong[i].dwDBIdx == 0 )
return i;
}
return -1;
}
break;
}
return -1;
}
void CCharacterInfo::ResultPositionEdit( DWORD dwType, ICONBASE* pItem )
{
if( !pItem )
return;
CChangePosition* pPosition = new CChangePosition;
switch( dwType )
{
case 0: // inven
{
ITEMBASE* pp = (ITEMBASE*)pItem;
pPosition->SetData( 0, m_pDocument->m_dwCharIdx, pItem->dwDBIdx, pItem->Position );
}
break;
case 1: // 芒绊
{
ITEMBASE* pp = (ITEMBASE*)pItem;
pPosition->SetData( 1, m_pDocument->m_dwUserIdx, pItem->dwDBIdx, pItem->Position );
}
break;
case 2: // 公傍
{
MUGONGBASE* pp = (MUGONGBASE*)pItem;
pPosition->SetData( 2, m_pDocument->m_dwCharIdx, pItem->dwDBIdx, pItem->Position );
}
break;
}
m_pDocument->GetChangeManager()->AddPositionTable( pPosition, pItem->dwDBIdx );
}
int CCharacterInfo::ItemEdit( INFOFIELD field, WORD wControlId, const ITEMBASE* base_before, ITEMBASE& base_after,
const ITEM_OPTION_INFO* before, ITEM_OPTION_INFO& after )
{
int result = 0;
m_pItemDlg = new CItemDlg;
WORD wWear = 0;
if( field == eIF_WEAR )
{
switch(wControlId)
{
case eWearedItem_Hat: wWear = eEQUIP_ITEM_HAT; break;
case eWearedItem_Weapon: wWear = eEQUIP_ITEM_WEAPON; break;
case eWearedItem_Dress: wWear = eEQUIP_ITEM_DRESS; break;
case eWearedItem_Shoes: wWear = eEQUIP_ITEM_SHOES; break;
case eWearedItem_Ring1:
case eWearedItem_Ring2: wWear = eEQUIP_ITEM_RING; break;
case eWearedItem_Cape: wWear = eEQUIP_ITEM_CAPE; break;
case eWearedItem_Necklace: wWear = eEQUIP_ITEM_NECKLACE; break;
case eWearedItem_Armlet: wWear = eEQUIP_ITEM_ARMLET; break;
case eWearedItem_Belt: wWear = eEQUIP_ITEM_BELT; break;
}
CString str;
m_StatusEdit[eCharTemp_LEVEL].GetWindowText(str);
m_pItemDlg->SetLevel( atoi(str.GetBuffer(0)) );
}
m_pItemDlg->Init(field, base_before, before, wControlId, wWear );
result = m_pItemDlg->DoModal();
memcpy(&base_after, m_pItemDlg->GetItemBase(), sizeof(ITEMBASE) );
memcpy(&after, m_pItemDlg->GetItemOption(), sizeof(ITEM_OPTION_INFO) );
SAFE_DELETE(m_pItemDlg);
return result;
}
int CCharacterInfo::MugongEdit( INFOFIELD field, WORD wControlId, MUGONGBASE* base_before, MUGONGBASE& base_after )
{
int result = 0;
CString str;
m_StatusEdit[eCharTemp_LEVEL].GetWindowText(str);
// if( atoi(str.GetBuffer(0)) < 4 )
// {
// MessageBox("公傍阑 硅匡荐 绝绰 饭骇涝聪促.");
// return eMR_Cancel;
// }
m_pMugongDlg = new CMugongDlg;
m_pMugongDlg->Init(field, base_before, wControlId, (LEVELTYPE)atoi(str.GetBuffer(0)));
result = m_pMugongDlg->DoModal();
memcpy(&base_after, m_pMugongDlg->GetMugong(), sizeof(MUGONGBASE) );
SAFE_DELETE(m_pMugongDlg);
return result;
}
int CCharacterInfo::AbilityEdit( WORD wPos, WORD wAbilityIdx, char base_before, char& base_after )
{
int result = 0;
CAbilityInfo* pAbility = GAMERESRCMNGR->GetAbilityInfo(wAbilityIdx);
if( pAbility == NULL )
return eMR_Cancel;
m_pAbility = new CAbilityDlg;
m_pAbility->Init( wPos, pAbility, m_pDocument->GetCharacterAbillityLevel(pAbility->GetKind(), wAbilityIdx) );
result = m_pAbility->DoModal();
base_after = (char)(m_pAbility->GetAbilityLevel() + ABILITYLEVEL_DB_KEY);
SAFE_DELETE(m_pAbility);
return result;
}
BOOL CCharacterInfo::ResultItemEdit( INFOFIELD field, int result, WORD wPos, int nControlIdx, ITEMBASE* Origin, ITEM_OPTION_INFO* OriginOption,
ITEMBASE* pBItem, ITEMBASE* pAItem, ITEM_OPTION_INFO* pBOption, ITEM_OPTION_INFO* pAOption )
{
// 角力 酒捞袍狼 器瘤记阑 罐绰促. wPos
CChangeManager* pManager = m_pDocument->GetChangeManager();
// 绢恫 DB Table俊 持阑巴牢瘤甫 舅酒 柯促.
TABLE_KIND kind = pManager->GetTableKind_ByField(field);
if( kind == eTK_None )
return FALSE;
BOOL bAdd = FALSE;
CChangeItem* pItem = (CChangeItem*)pManager->ExistChangeInfo(wPos, FALSE);
if( !pItem ) // 扁粮 荐沥 沥焊啊 乐绰瘤 八荤茄促. (乐绢档 公矫!)
{
pItem = new CChangeItem;
bAdd = TRUE;
}
if( result == eMR_Delete )// Delete牢 版快
{
/////////////////// Local Info狼 荐沥
if( GAMERESRCMNGR->IsOptionItem(pBItem->wIconIdx, pBItem->Durability) )
m_pDocument->DelLocalOptionInfo(pBItem->Durability);
memset(pBItem, 0, sizeof(ITEMBASE));
memset(pAItem, 0, sizeof(ITEMBASE));
///////////////////
/////////////////// DB Info狼 荐沥
pItem->Init( eOp_Delete, kind, wPos );
pItem->SetData(Origin, pAItem, OriginOption, pAOption);
///////////////////
}
else if( result == eMR_Edit )
{
/////////////////// Local Info狼 荐沥
if( GAMERESRCMNGR->IsOptionItem(pBItem->wIconIdx, pBItem->Durability) )
m_pDocument->DelLocalOptionInfo(pBItem->Durability);
if( pAItem->Durability == 9999 ) // 可记 悸泼
{
if( OriginOption && OriginOption->dwOptionIdx != 0 )
{
pAOption->dwOptionIdx = OriginOption->dwOptionIdx;
m_pDocument->AddLocalOptionInfo(pAOption, FALSE);
}
else
{
WORD wOptionIdx = m_pDocument->AddLocalOptionInfo(pAOption, TRUE);
pAOption->dwOptionIdx = wOptionIdx;
}
pAItem->Durability = (WORD)pAOption->dwOptionIdx;
}
memcpy(pBItem, pAItem, sizeof(ITEMBASE)); // 扁夯 酒捞袍 函版
///////////////////
/////////////////// DB Info狼 荐沥
if( Origin->dwDBIdx == 0 ) // Insert牢 版快
{
pItem->Init( eOp_Insert, kind, wPos );
pItem->SetData(Origin, pAItem, OriginOption, pAOption);
}
else // Update牢 版快
{
pItem->Init( eOp_Update, kind, wPos );
pItem->SetData(Origin, pAItem, OriginOption, pAOption);
}
///////////////////
}
else
{
ASSERT(0);
return FALSE;
}
if( bAdd )
pManager->Add( pItem, wPos, FALSE );
////////////////////////////////////////////////////////////
// Button Text Setting
char buff[256] = {0,};
ITEM_INFO* pInfo;
if( pAItem->wIconIdx != 0)
{
pInfo = GAMERESRCMNGR->GetItemInfo(pAItem->wIconIdx);
if( pInfo )
sprintf(buff, pInfo->ItemName);
else
sprintf(buff, "%d", pAItem->wIconIdx);
}
else
sprintf(buff, "");
CMRButton* btn = (CMRButton*)GetDlgItem(nControlIdx);
btn->SetWindowText(buff);
btn->SetData(pAItem->wIconIdx);
btn->SetColorText(COLOR_BUTTON_CHANGED);
////////////////////////////////////////////////////////////
return TRUE;
}
void CCharacterInfo::ResultMugongEdit( int result, WORD wPos, int nControlIdx, MUGONGBASE* Origin, MUGONGBASE* pBMugong, MUGONGBASE* pAMugong )
{
////////////////////////////////////////////////////////////////////////////////////////////
//// 公傍篮 吝汗捞 倾侩登瘤 臼栏骨肺 眉农茄促.
int i;
for(i=0;i<SLOT_MUGONG_NUM;++i)
{
if( i != wPos - TP_MUGONG_START && pAMugong->wIconIdx != 0 && m_SkillMuGong[i].GetData() == pAMugong->wIconIdx )
{
::AfxGetMainWnd()->MessageBox("You Have Already This Skill!!");
return;
}
}
for(i=0;i<SLOT_JINBUB_NUM;++i)
{
if( i != wPos - TP_JINBUB_START && pAMugong->wIconIdx != 0 && m_SkillJinBub[i].GetData() == pAMugong->wIconIdx )
{
::AfxGetMainWnd()->MessageBox("You Have Already This Skill!!");
return;
}
}
////////////////////////////////////////////////////////////////////////////////////////////
CChangeManager* pManager = m_pDocument->GetChangeManager();
BOOL bAdd = FALSE;
CChangeMugong* pMugong = (CChangeMugong*)pManager->ExistChangeInfo(wPos, FALSE);
if( !pMugong ) // 扁粮 荐沥 沥焊啊 乐绰瘤 八荤茄促. (乐绢档 公矫!)
{
pMugong = new CChangeMugong;
bAdd = TRUE;
}
if( result == eMR_Delete ) // Delete
{
/////////////////// Local Info狼 荐沥
memset(pBMugong, 0, sizeof(MUGONGBASE));
memset(pAMugong, 0, sizeof(MUGONGBASE));
///////////////////
/////////////////// DB Info狼 荐沥
pMugong->Init( eOp_Delete, eTK_MugongInfo, wPos );
///////////////////
}
else if( result == eMR_Edit )
{
/////////////////// Local Info狼 荐沥
memcpy(pBMugong, pAMugong, sizeof(MUGONGBASE));
///////////////////
/////////////////// DB Info狼 荐沥
if( Origin->dwDBIdx == 0 ) // Insert
pMugong->Init( eOp_Insert, eTK_MugongInfo, wPos );
else // Update
pMugong->Init( eOp_Update, eTK_MugongInfo, wPos );
///////////////////
}
else
{
ASSERT(0);
return;
}
pMugong->SetData( Origin, pAMugong );
if( bAdd )
pManager->Add( pMugong, wPos, FALSE );
////////////////////////////////////////////////////////////
// Button Text Setting
char buff[256]={0,};
SKILLINFO* pInfo;
if( pAMugong->wIconIdx != 0)
{
pInfo = GAMERESRCMNGR->GetSkillInfo(pAMugong->wIconIdx);
if( pInfo )
sprintf(buff, pInfo->SkillName);
else
sprintf(buff, "%d", pAMugong->wIconIdx);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -