📄 inventoryexdialog.cpp
字号:
if( msg.FromPos == msg.ToPos )
return FALSE;
ITEMMGR->SetDisableDialog(TRUE, eItemTable_Inventory);
ITEMMGR->SetDisableDialog(TRUE, eItemTable_Pyoguk);
ITEMMGR->SetDisableDialog(TRUE, eItemTable_MunpaWarehouse);
NETWORK->Send( &msg, sizeof(msg) );
return TRUE;
}
BOOL CInventoryExDialog::FakeItemDivide( POSTYPE ToPos, CItem * pFromItem, CItem * pToItem )
{
if( !CanBeMoved( pFromItem, ToPos ) )
return FALSE;
if( pFromItem->GetPosition() == ToPos )
return FALSE;
BYTE FromIdx = ITEMMGR->GetTableIdxForAbsPos( pFromItem->GetPosition() );
if(FromIdx >= eItemTable_Max) return FALSE;
BYTE ToIdx = ITEMMGR->GetTableIdxForAbsPos( ToPos );
if(ToIdx >= eItemTable_Max) return FALSE;
if(pFromItem->GetDurability() == 1)
{
return FakeGeneralItemMove(ToPos, pFromItem, pToItem);
}
m_divideMsg.Category = MP_ITEM;
m_divideMsg.Protocol = MP_ITEM_DIVIDE_SYN;
m_divideMsg.dwObjectID = HEROID;
m_divideMsg.wItemIdx = pFromItem->GetItemIdx();
m_divideMsg.FromPos = pFromItem->GetPosition();
m_divideMsg.FromDur = pFromItem->GetDurability();
m_divideMsg.ToPos = ToPos;
m_divideMsg.ToDur = 0;
ITEMMGR->SetDisableDialog(TRUE, eItemTable_Inventory);
ITEMMGR->SetDisableDialog(TRUE, eItemTable_Pyoguk);
ITEMMGR->SetDisableDialog(TRUE, eItemTable_MunpaWarehouse);
cDivideBox * pDivideBox = WINDOWMGR->DivideBox( DBOX_DIVIDE_INV, pFromItem->GetAbsX(), pFromItem->GetAbsY(), OnFakeItemDivideOk, OnFakeItemDivideCancel, this, pFromItem, CHATMGR->GetChatMsg(185) );
pDivideBox->SetMaxValue( 5 );
pDivideBox->SetValue( 1 ); //唱穿绰单 钙胶摹甫 持扁档 0阑持扁档 捞惑... 1捞 俩 公抄窍促.
//pDivideBox->SetValue( m_divideMsg.FromDur );
return FALSE;
}
void CInventoryExDialog::OnFakeItemDivideCancel( LONG iId, void* p, DWORD param1, void * vData1, void * vData2 )
{
ITEMMGR->SetDisableDialog(FALSE, eItemTable_Inventory);
ITEMMGR->SetDisableDialog(FALSE, eItemTable_Pyoguk);
ITEMMGR->SetDisableDialog(FALSE, eItemTable_MunpaWarehouse);
}
void CInventoryExDialog::OnFakeItemDivideOk( LONG iId, void* p, DWORD param1, void * vData1, void * vData2 )
{
CInventoryExDialog * tDlg = ( CInventoryExDialog * )vData1;
if( param1 == 0 )
{
OnFakeItemDivideCancel(0,NULL,0,NULL,NULL);
return;
}
WORD TargetTableIdx = ITEMMGR->GetTableIdxForAbsPos(tDlg->m_divideMsg.FromPos);
CItem * pTargetItem = ITEMMGR->GetItemofTable(TargetTableIdx, tDlg->m_divideMsg.FromPos);
if(!pTargetItem)
{
OnFakeItemDivideCancel(0,NULL,0,NULL,NULL);
return ;
}
if(tDlg->m_divideMsg.wItemIdx != pTargetItem->GetItemIdx())
{
OnFakeItemDivideCancel(0,NULL,0,NULL,NULL);
return ;
}
if(tDlg->m_divideMsg.FromDur != pTargetItem->GetDurability())
{
OnFakeItemDivideCancel(0,NULL,0,NULL,NULL);
return ;
}
CItem * pToItem = ITEMMGR->GetItemofTable(ITEMMGR->GetTableIdxForAbsPos(tDlg->m_divideMsg.ToPos), tDlg->m_divideMsg.ToPos);
if(pToItem)
{
OnFakeItemDivideCancel(0,NULL,0,NULL,NULL);
return ;
}
if( tDlg->m_divideMsg.FromDur > param1 )
{
tDlg->m_divideMsg.ToDur = param1;
tDlg->m_divideMsg.FromDur = tDlg->m_divideMsg.FromDur - param1;
NETWORK->Send( &tDlg->m_divideMsg, sizeof(tDlg->m_divideMsg) );
}
else
{
//酒捞袍 捞悼
tDlg->FakeGeneralItemMove(tDlg->m_divideMsg.ToPos, (CItem *)vData2, NULL);
ITEMMGR->SetDisableDialog(FALSE, eItemTable_Inventory);
ITEMMGR->SetDisableDialog(FALSE, eItemTable_Pyoguk);
ITEMMGR->SetDisableDialog(FALSE, eItemTable_MunpaWarehouse);
}
}
BOOL CInventoryExDialog::FakeItemCombine( POSTYPE ToPos, CItem * pFromItem, CItem * pToItem )
{
if( pFromItem->GetPosition() == pToItem->GetPosition() )
return FALSE;
if( pFromItem->GetItemIdx() != pToItem->GetItemIdx() )
return FALSE;
if( CanBeMoved( pFromItem, ToPos ) == FALSE )
return FALSE;
if( pToItem && CanBeMoved( pToItem, pFromItem->GetPosition() ) == FALSE )
return FALSE;
BYTE FromIdx = ITEMMGR->GetTableIdxForAbsPos( pFromItem->GetPosition() );
if(FromIdx >= eItemTable_Max) return FALSE;
BYTE ToIdx = ITEMMGR->GetTableIdxForAbsPos( ToPos );
if(ToIdx >= eItemTable_Max) return FALSE;
MSG_ITEM_COMBINE_SYN msg;
msg.Category = MP_ITEM;
msg.Protocol = MP_ITEM_COMBINE_SYN;
msg.dwObjectID = HEROID;
msg.FromPos = pFromItem->GetPosition();
msg.ToPos = pToItem->GetPosition();
msg.wItemIdx = pFromItem->GetItemIdx();
msg.FromDur = pFromItem->GetDurability();
msg.ToDur = pToItem->GetDurability();
ITEMMGR->SetDisableDialog(TRUE, eItemTable_Inventory);
ITEMMGR->SetDisableDialog(TRUE, eItemTable_Pyoguk);
ITEMMGR->SetDisableDialog(TRUE, eItemTable_MunpaWarehouse);
NETWORK->Send( &msg, sizeof(msg) );
return TRUE;
}
void CInventoryExDialog::FakeDeleteItem(CItem* pItem)
{
m_pTempDeleteItem = pItem;
}
void CInventoryExDialog::SendDeleteItem()
{
if( m_pTempDeleteItem == NULL ) return;
MSG_ITEM_DISCARD_SYN msg;
msg.Category = MP_ITEM;
msg.Protocol = MP_ITEM_DISCARD_SYN;
msg.dwObjectID = HEROID;
msg.TargetPos =m_pTempDeleteItem->GetPosition();
msg.wItemIdx = m_pTempDeleteItem->GetItemIdx();
msg.ItemNum = m_pTempDeleteItem->GetDurability();
NETWORK->Send(&msg,sizeof(msg));
m_pTempDeleteItem = NULL;
}
/*
void CInventoryExDialog::FakeDeleteItem(WORD absPos)
{
MSG_ITEM_REM_SYN msg;
msg.Category = MP_ITEM;
msg.Protocol = MP_ITEM_REM_SYN;
msg.dwObjectID = HEROID;
msg.AbsPosition = absPos;
if(INVENTORY_STARTPOSITION <= absPos && absPos < INVENTORY_ENDPOSITION)
{
msg.wTableIdx = eItemTable_Inventory;
}
else if(WEAR_STARTPOSITION <= absPos && absPos < WEAR_ENDPOSITION)
{
msg.wTableIdx = eItemTable_Weared;
}
else
return ;
NETWORK->Send(&msg,sizeof(msg));
}
*/
void CInventoryExDialog::Linking()
{
if(!m_fSpread)
{
m_pWearedDlg = (CWearedExDialog *)GetWindowForID(IN_WEAREDDLG);
m_pMoneyEdit = (cStatic *)GetWindowForID(IN_MONEYEDIT);
m_fSpread = TRUE;
}
}
CItem * CInventoryExDialog::GetItemLike(WORD wItemIdx)
{
DURTYPE DurSum = 0;
BYTE TabNum = GetTabNum();
for( BYTE i = 0 ; i < TabNum ; ++i )
{
cIconGridDialog* gridDlg = (cIconGridDialog*)GetTabSheet(i);
for( WORD j = 0 ; j < gridDlg->GetCellNum() ; ++j )
{
if(!gridDlg->IsAddable(j) )
{
CItem * pItem = (CItem *)gridDlg->GetIconForIdx(TP_INVENTORY_START+j/*+TABCELL_INVENTORY_NUM*i*/);
if(pItem->GetItemIdx() == wItemIdx)
return pItem;
}
}
}
return NULL;
}
DURTYPE CInventoryExDialog::GetTotalItemDurability(WORD wItemIdx)
{
DURTYPE DurSum = 0;
BYTE TabNum = GetTabNum();
for( BYTE i = 0 ; i < TabNum ; ++i )
{
cIconGridDialog* gridDlg = (cIconGridDialog*)GetTabSheet(i);
for( WORD j = 0 ; j < gridDlg->GetCellNum() ; ++j )
{
if(!gridDlg->IsAddable(j) )
{
CItem * pItem = (CItem *)gridDlg->GetIconForIdx(TP_INVENTORY_START+j/*+TABCELL_INVENTORY_NUM*i*/);
if(pItem->GetItemIdx() == wItemIdx)
DurSum += pItem->GetDurability();
}
}
}
return DurSum;
}
// 0(all),1(inv),2
BOOL CInventoryExDialog::GetPositionForXYRef(BYTE param, LONG x, LONG y, WORD& pos)
{
WORD position=0; // 惑措 困摹
if(param != 2)
{
cIconGridDialog * gridDlg = (cIconGridDialog *)GetTabSheet(GetCurTabNum());
if(gridDlg->GetPositionForXYRef(x, y, position))
{
// pos = position+INVENTORY_STARTPOSITION+CELLNUMPERPAGE*GetCurTabNum(); // -> 例措 困摹肺 官厕
pos = position+TP_INVENTORY_START+TABCELL_INVENTORY_NUM*GetCurTabNum(); // -> 例措 困摹肺 官厕
return TRUE;
}
}
if(param != 1)
if(m_pWearedDlg->GetPositionForXYRef(x, y, position))
{
// pos = position+WEAR_STARTPOSITION; // -> 例措 困摹肺 官厕
pos = position+TP_WEAR_START; // -> 例措 困摹肺 官厕
return TRUE;
}
return FALSE;
}
BOOL CInventoryExDialog::CheckItemLockForItemIdx(WORD wItemIdx)
{
BYTE TabNum = GetTabNum();
for( BYTE i = 0 ; i < TabNum ; ++i )
{
cIconGridDialog* gridDlg = (cIconGridDialog*)GetTabSheet(i);
for( WORD j = 0 ; j < gridDlg->GetCellNum() ; ++j )
{
if(!gridDlg->IsAddable(j) )
{
CItem * pItem = (CItem *)gridDlg->GetIconForIdx(TP_INVENTORY_START+j);
if( pItem->GetItemIdx() == wItemIdx && pItem->IsLocked() )
return FALSE;
}
}
}
return TRUE;
}
void CInventoryExDialog::SetMoney(DWORD Money)
{
m_pMoneyEdit->SetStaticText(AddComma(Money));
}
BOOL CInventoryExDialog::IsExist(POSTYPE abs_pos)
{
BOOL bExist = FALSE;
if(TP_INVENTORY_START <= abs_pos && abs_pos < TP_INVENTORY_END)
{
int tabIndex = GetTabIndex( abs_pos );
cIconGridDialog * dlg = (cIconGridDialog *)GetTabSheet(tabIndex);
if(dlg->GetIconForIdx(abs_pos-TABCELL_INVENTORY_NUM*tabIndex-TP_INVENTORY_START))
bExist = TRUE;
}
else if(TP_WEAR_START <= abs_pos && abs_pos < TP_WEAR_END)
{
if( m_pWearedDlg->GetIconForIdx(abs_pos - TP_WEAR_START) )
bExist = TRUE;
}
return bExist;
}
BOOL CInventoryExDialog::CanBeMoved(CItem* pItem,POSTYPE pos)
{
ASSERT(pItem);
if(pItem)
{
POSTYPE fromPos = pItem->GetPosition();
POSTYPE toPos = pos;
if( (TP_WEAR_START <= fromPos && fromPos < TP_WEAR_END) ||
(TP_WEAR_START <= toPos && toPos < TP_WEAR_END) )
{
if( OBJECTSTATEMGR->CheckAvailableState(HERO,eCAS_EQUIPITEM) == FALSE )
{
CAction act;
act.InitAction(eActionKind_EquipItem,(void*)pItem->GetDBIdx(),0,NULL);
HERO->SetNextAction(&act);
return FALSE;
}
}
}
// if(INVENTORY_STARTPOSITION <= pos && pos < INVENTORY_ENDPOSITION)
if(TP_INVENTORY_START<= pos && pos < TP_INVENTORY_END)
{
// 牢亥配府
// 公炼扒 TRUE
return TRUE;
}
// else if(WEAR_STARTPOSITION <= pos && pos < WEAR_ENDPOSITION)
else if(TP_WEAR_START <= pos && pos < TP_WEAR_END)
{
// 厘馒芒
// 酒捞牌捞 乐栏搁 FALSE
/*
POSTYPE aa = WEAR_STARTPOSITION;
POSTYPE idx = pos - aa;
if(m_pWearedDlg->GetIconForIdx(idx))
return FALSE;
*/
// 厘馒窍绰 酒捞牌捞 酒聪搁 FALSE
if( !( pItem->GetItemKind() & eEQUIP_ITEM ) )
{
if( pItem->GetItemKind() == eQUEST_ITEM_EQUIP )
{
}
else
return FALSE;
}
// 甸绢啊具 且磊府啊 酒聪搁 FALSE
ITEM_INFO * pInfo = ITEMMGR->GetItemInfo(pItem->GetItemIdx());
if(!pInfo) return FALSE;
if(pInfo->EquipKind == eWearedItem_Ring1)
{
// if(pos-WEAR_STARTPOSITION != eWearedItem_Ring1 || pos-WEAR_STARTPOSITION != eWearedItem_Ring2)
if(pos-TP_WEAR_START != eWearedItem_Ring1 && pos-TP_WEAR_START != eWearedItem_Ring2)
return FALSE;
}
else
{
// if(pos-WEAR_STARTPOSITION != pInfo->EquipKind)
if(pos-TP_WEAR_START != pInfo->EquipKind)
return FALSE;
}
return ITEMMGR->CanEquip(pItem->GetItemIdx());
}
// else if(MUNPAITEM_STARTPOSITION <= pos && pos < MUNPAITEM_ENDPOSITION)
else if(TP_MUNPAWAREHOUSE_START <= pos && pos < TP_MUNPAWAREHOUSE_END)
{
return TRUE;
}
// else if(PYOGUKITEM_STARTPOSITION <= pos && pos < PYOGUKITEM_ENDPOSITION)
else if(TP_PYOGUK_START <= pos && pos < TP_PYOGUK_END)
{
return TRUE;
}
else
{
return FALSE;
}
}
void CInventoryExDialog::ItemUseForQuestStart()
{
if( m_pTempQuestItem )
{
// quest 酒捞袍狼 荤侩
MSG_ITEM_USE_SYN msg;
msg.Category = MP_ITEM;
msg.Protocol = MP_ITEM_USE_FOR_QUESTSTART_SYN;
msg.dwObjectID = HEROID;
msg.TargetPos = m_pTempQuestItem->GetPosition();
msg.wItemIdx = m_pTempQuestItem->GetItemIdx();
NETWORK->Send(&msg,sizeof(msg));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -