⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inventoryexdialog.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		else
		{
			if(MUGONGMGR->CheckMugongTree(pItem->GetItemInfo()->MugongNum) == FALSE)
			{
				CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(699));
				return;
			}

			// 公傍 殿废
			if(!ITEMMGR->CanConvertToMugong(pItem->GetItemIdx(),MUGONGTYPE_NORMAL))
			{
				CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(181) );
				return;
			}				
		}

		MSG_ITEM_USE_SYN msg;
		msg.Category = MP_ITEM;
		msg.Protocol = MP_ITEM_USE_SYN;
		msg.dwObjectID = HEROID;
		msg.wItemIdx = pItem->GetItemIdx();
		msg.TargetPos = pItem->GetPosition();

		NETWORK->Send(&msg,sizeof(msg));
	}
	else if(bits & eEXTRA_ITEM)
	{
		/*
		//泅犁 : 酒捞袍 殿鞭诀俊 蝶弗 厚鞭辑 荤侩
		if(m_iInventoryState == eITEMUPGRADE_STATE)
		{
//			GAMEIN->GetChatDialog()->AddChatMsg(WHOLE,RGBA_MAKE(255,0,0,255), "泅犁 厚鞭辑甫 荤侩吝涝聪促.");
			CHATMGR->AddMsg( CTC_TOWHOLE, CHATMGR->GetChatMsg(171) );
			return;
		}
		
		if(bits == eEXTRA_ITEM_UPGRADE || bits == eEXTRA_ITEM_UPGRADE+1)
		{		
			MSG_ITEM_USE_SYN msg;
			msg.Category = MP_ITEM;
			msg.Protocol = MP_ITEM_USE_SYN;
			msg.dwObjectID = HEROID;
			msg.wItemIdx = pItem->GetItemIdx();
			msg.TargetPos = pItem->GetPosition();
		
			NETWORK->Send(&msg,sizeof(msg));
		}*/
		
	}
	else if(bits & eEXTRA_ITEM_UPGRADE)
	{

	}
	else if(bits & eQUEST_ITEM)
	{
		if( bits == eQUEST_ITEM_START )			// 矫累 涅胶飘 酒捞袍.
		{
			ITEM_INFO* pInfo = ITEMMGR->GetItemInfo( pItem->GetItemIdx() );
			if( !pInfo )
				return;
			if( !QUESTMGR->IsQuestStarted( pInfo->ItemType ) )
				m_pQuestMsgBox = WINDOWMGR->MsgBox(MBI_QUEST_NONE, MBT_OK, CHATMGR->GetChatMsg(651));
			else
				m_pQuestMsgBox = WINDOWMGR->MsgBox(MBI_QUESTSTART, MBT_YESNO, CHATMGR->GetChatMsg(650));

			m_pTempQuestItem = pItem;
		}
		else if( bits == eQUEST_ITEM_EQUIP )	// 厘馒啊瓷茄 涅胶飘 酒捞袍.
		{
			if( OBJECTSTATEMGR->CheckAvailableState(HERO,eCAS_EQUIPITEM) == FALSE )
			{
				CAction act;
				act.InitAction(eActionKind_EquipItem,(void*)pItem->GetDBIdx(),0,NULL);
				HERO->SetNextAction(&act);
				return;
			}
			
			switch( GetTableIdxPosition( pItem->GetPosition() ) )
			{
			case eItemTable_Inventory:
				{
					if( ITEMMGR->CanEquip( pItem->GetItemIdx() ) )
					{
						ITEM_INFO* pInfo = ITEMMGR->GetItemInfo(pItem->GetItemIdx());
						if( !pInfo ) return;

						WORD EquipToPos = pInfo->EquipKind;
						CItem* pToItem = GetItemForIdx( EquipToPos + TP_WEAR_START );
						FakeGeneralItemMove(EquipToPos + TP_WEAR_START, pItem, pToItem);
					}
				}	
				break;
			case eItemTable_Weared:
				{
					POSTYPE emptyPos;
					if( GetBlankPositionRestrictRef( emptyPos ) )
					{
						CItem * pToItem = GetItemForIdx( emptyPos );
						FakeGeneralItemMove(emptyPos, pItem, pToItem);
					}
				}
				break;
			}
		}
	}
	else
	{
		ASSERT(0);
	}
}

void CInventoryExDialog::SetActive(BOOL val)
{
	if( !m_bDisable )
	{
		if(val == FALSE)
		{
			CDealDialog * dDlg = GAMEIN->GetDealDialog();
			if(dDlg)
				if(dDlg->IsShow())
					dDlg->SetActive(FALSE);

			CPyogukDialog* pPyogukDlg = GAMEIN->GetPyogukDialog();
			if(pPyogukDlg->IsActive())
				pPyogukDlg->SetActive(FALSE);

			if(GAMEIN->GetGuildWarehouseDlg()->IsActive())
				GAMEIN->GetGuildWarehouseDlg()->SetActive(FALSE);
//			SetAbsX( GetAbsX() - 1 );	//烙矫.. 肪力肺 河篮惑怕俊辑 盔惑怕肺 焊捞霸 窍扁 困秦
		}
		else
		{
//			SetAbsX( GetAbsX() + 1 );
		}

		cTabDialog::SetActive(val);
	}

//--- main bar icon
//	CMainBarDialog* pDlg = GAMEIN->GetMainInterfaceDialog();
//	if( pDlg )
//		pDlg->SetPushBarIcon( OPT_INVENTORYDLGICON, m_bActive );
}

void CInventoryExDialog::OnActionEvnet(LONG lId, void * p, DWORD we)
{
	if(/*we == WE_RBTNCLICK ||*/ we == WE_LBTNDBLCLICK)
	{
		// 厘馒芒牢瘤? or 牢亥配府牢瘤
		
		CItem * pItem = NULL;
		if(lId == IN_WEAREDDLG)
		{
			pItem = (CItem*)m_pWearedDlg->GetIconForIdx(m_pWearedDlg->GetCurSelCellPos());
			if( !pItem ) return;
		}
		else
		{		
			cIconGridDialog * gridDlg = (cIconGridDialog *)GetTabSheet(GetCurTabNum());
			if( !gridDlg ) return;
			pItem = (CItem*)gridDlg->GetIconForIdx(gridDlg->GetCurSelCellPos());
			if( !pItem ) return;
		}

		UseItem(pItem);

	}
	else if(we == WE_LBTNCLICK)
	{
		if(m_iInventoryState == eITEMUPGRADE_STATE)
		{
			/*
			CItem * pItemTT = GetCurSelectedItem((lId == IN_WEAREDDLG?WEAR:INV));
			if(!pItemTT) return;

			// 殿鞭诀阑 且 荐 乐绰 炼扒

			if(!ITEMMGR->CanGradeUp(pItemTT))
			{
//				GAMEIN->GetChatDialog()->AddChatMsg(WHOLE,RGBA_MAKE(255,0,0,255), "殿鞭诀阑 且 荐 绝绰 酒捞袍涝聪促");
				CHATMGR->AddMsg( CTC_TOWHOLE, CHATMGR->GetChatMsg(172) );
				return ;
			}

			BYTE TableIdx = ITEMMGR->GetTableIdxForAbsPos(pItemTT->GetPosition());
			if(TableIdx >= eItemTable_Max)
			{
				ASSERT(0);
				return;
			}
			
			MSG_ITEM_UPGRADE_SYN msg;
			msg.Category = MP_ITEM;
			msg.Protocol = MP_ITEM_UPGRADE_SYN;
			msg.dwObjectID = HEROID;
			msg.TargetPos = pItemTT->GetPosition();
			msg.wItemIdx = pItemTT->GetItemIdx();

			NETWORK->Send(&msg,sizeof(msg));
			*/
		}
		else if(m_iInventoryState == eITEMDEAL_STATE)
		{		
			if(!GAMEIN->GetDealDialog()->IsShow()) return;
			CItem * pItemTT = GetCurSelectedItem(INV);
			if(!pItemTT)
			{
				GAMEIN->GetDealDialog()->SetMoney(0, 2);
				return;
			}
			
			int itemIDX = pItemTT->GetItemIdx();
			ITEM_INFO * pItem = ITEMMGR->GetItemInfo(itemIDX);
			ASSERT(pItem);
			GAMEIN->GetDealDialog()->SetMoney(pItem->SellPrice, 0);
		}
	}
}

CItem * CInventoryExDialog::GetCurSelectedItem(BYTE type)
{
	switch(type)
	{
	case INV:
		{
			// INVENTORY
			cIconGridDialog * gridDlg = (cIconGridDialog *)GetTabSheet(GetCurTabNum());
			if(gridDlg->GetCurSelCellPos() == -1) 
				return NULL;
			return (CItem *)gridDlg->GetIconForIdx(gridDlg->GetCurSelCellPos());
		}
		break;
	case WEAR:
		{
			// WEARED
			if(m_pWearedDlg->GetCurSelCellPos() == -1) 
				return NULL;
			return (CItem *)m_pWearedDlg->GetIconForIdx(m_pWearedDlg->GetCurSelCellPos());
		}
		break;
	default:
		{
			ASSERT(0);
		}
	}
	return NULL;
}

BOOL CInventoryExDialog::GetBlankPositionRestrictRef(WORD & absPos)
{
	for(int i = 0 ; i < GetTabNum() ; ++i)
	{
		cIconGridDialog * gridDlg = (cIconGridDialog *)GetTabSheet(i);
		for(int j = 0 ; j < gridDlg->GetCellNum() ; ++j)
		{
			if(gridDlg->IsAddable(j))
			{
//				absPos = INVENTORY_STARTPOSITION+i*CELLNUMPERPAGE+j;
				absPos = TP_INVENTORY_START+i*TABCELL_INVENTORY_NUM+j;
				return TRUE;
			}
		}
		
	}
	return FALSE;
}

int CInventoryExDialog::GetBlankNum()
{
	int nBlankNum = 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) )
				++nBlankNum;
		}
	}

	return nBlankNum;
}

BOOL CInventoryExDialog::FakeMoveIcon(LONG x, LONG y, cIcon * icon)
{
	ASSERT(icon);
	if( m_bDisable )	return FALSE;

	if( PKMGR->IsPKLooted() )	return FALSE;	//磷菌阑锭 促阜阑鳖.. //KES 040801

	if( icon->GetType() == WT_STALLITEM || icon->GetType() == WT_EXCHANGEITEM ) return FALSE;
	
	if(icon->GetType() == WT_ITEM)
	{
		return FakeMoveItem(x, y, (CItem *)icon);
	}
	else if(icon->GetType() == WT_DEALITEM)
	{
		FakeBuyItem(x, y, (CDealItem *)icon);
		AUDIOMGR->Play(58, HERO);
	}
	//else /*漂荐 公傍父 函券啊瓷*/
		//FakeAddMugong(x, y, (CMugongBase *)icon);
	return FALSE;
}

void CInventoryExDialog::FakeBuyItem( LONG mouseX, LONG mouseY, CDealItem * pFromItem )
{
//	if( pFromItem )
//		GAMEIN->GetDealDialog()->FakeBuyItem( pFromItem->GetAbsX(), pFromItem->GetAbsY(), pFromItem->GetItemIdx() );
	if( pFromItem )
		GAMEIN->GetDealDialog()->FakeBuyItem( pFromItem->GetAbsX(), pFromItem->GetAbsY(), pFromItem );
}

// 窜绵芒 沥焊 捞悼
void CInventoryExDialog::MoveItem(POSTYPE FromPos, POSTYPE ToPos )
{
	CItem * FromItem = NULL;
	CItem * ToItem = NULL;

	DeleteItem(FromPos, &FromItem);
	DeleteItem(ToPos, &ToItem);

	if(FromItem)
	{
		FromItem->SetPosition(ToPos);
		if(!AddItem(FromItem))
			assert(0);
	}

	if(ToItem)
	{
		ToItem->SetPosition(FromPos);
		if(!AddItem(ToItem))
			assert(0);
	}
}

BOOL CInventoryExDialog::FakeMoveItem( LONG mouseX, LONG mouseY, CItem * pFromItem )
{
	WORD ToPos=0;
	
	if( !GetPositionForXYRef( 0, mouseX, mouseY, ToPos ) )	// 例措困摹 逞绢 咳
		return FALSE;

	CItem * pToItem = GetItemForIdx( ToPos );
	
	//sound
	if(ITEMMGR->GetTableIdxForAbsPos(ToPos)==eItemTable_Weared)
		AUDIOMGR->Play(59, HERO);
	else
		AUDIOMGR->Play(58, HERO);

//KES EXCHANGE 031002
	if( pToItem )
	if( pToItem->IsLocked() ) return FALSE;

	if( pFromItem->IsLocked() ) return FALSE;
	
	if(TP_MUNPAWAREHOUSE_START <= pFromItem->GetPosition() && pFromItem->GetPosition() < TP_MUNPAWAREHOUSE_END)
		return FakeGeneralItemMove( ToPos, pFromItem, pToItem );
	else if(TP_PYOGUK_START <= pFromItem->GetPosition() && pFromItem->GetPosition() < TP_PYOGUK_END) 
		return FakeGeneralItemMove( ToPos, pFromItem, pToItem );

	if( ITEMMGR->IsDupItem( pFromItem->GetItemIdx() ) )
	{
		if( IsDivideFunctionKey() && !( pToItem ) )
		{
			return FakeItemDivide( ToPos, pFromItem, pToItem );
		}
		else if( ( pToItem && pFromItem->GetItemIdx() == pToItem->GetItemIdx() ) )
		{
			return FakeItemCombine( ToPos, pFromItem, pToItem );
		}
	}

	return FakeGeneralItemMove( ToPos, pFromItem, pToItem );

}

BOOL CInventoryExDialog::IsDivideFunctionKey()
{
	return KEYBOARD->GetKeyPressed(KEY_MENU);
}

BOOL CInventoryExDialog::FakeGeneralItemMove( POSTYPE ToPos, CItem * pFromItem, CItem * pToItem )
{
	if( CanBeMoved( pFromItem, ToPos ) == FALSE )
		return FALSE;

	BYTE FromIdx = ITEMMGR->GetTableIdxForAbsPos( pFromItem->GetPosition() );
	if(FromIdx >= eItemTable_Max) return FALSE;
	if( pToItem && CanBeMoved( pToItem, pFromItem->GetPosition() ) == FALSE )
	{
		return FALSE;
	}
	if(pToItem && (FromIdx == eItemTable_MunpaWarehouse))
	{
		if(FromIdx == eItemTable_MunpaWarehouse)
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(53) );
		return FALSE;
	}

	BYTE ToIdx = ITEMMGR->GetTableIdxForAbsPos( ToPos );
	if(ToIdx >= eItemTable_Max) return FALSE;


	MSG_ITEM_MOVE_SYN msg;
	msg.Category			= MP_ITEM;
	msg.Protocol			= MP_ITEM_MOVE_SYN;
	msg.dwObjectID			= HEROID;

	msg.FromPos				= pFromItem->GetPosition();
	msg.wFromItemIdx		= pFromItem->GetItemIdx();
	msg.ToPos				= ToPos;
	msg.wToItemIdx			= (pToItem?pToItem->GetItemIdx():0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -