Untitled

 avatar
unknown
c_cpp
10 months ago
2.5 kB
19
Indexable
void KUiItem::OnClickItem(KUiDraggedObject* pItem, bool bDoImmed)
{
	if (pItem == NULL || g_pCoreShell == NULL)
		return;

	KUiObjAtContRegion	Obj;
	Obj.Obj.uGenre = pItem->uGenre;
	Obj.Obj.uId = pItem->uId;
	Obj.Region.h = pItem->DataX;
	Obj.Region.v = pItem->DataY;
	Obj.Region.Width  = pItem->DataW;
	Obj.Region.Height = pItem->DataH;
	Obj.eContainer = UOC_ITEM_TAKE_WITH;

	KUiStoreBox* pStore = KUiStoreBox::GetIfVisible();
	KUiTrade* pTrade = KUiTrade::GetIfVisible();
	KUiGiveBox* pGiveBox = KUiGiveBox::GetIfVisible();

	if (pStore || pTrade || pGiveBox)
	{
		KUiObjAtContRegion Drop = Obj;
		Drop.Region.h = -1;
		Drop.Region.v = -1;
		Drop.eContainer = pStore ? pStore->GetCurrentStoreBoxContainer() : pTrade ? UOC_TO_BE_TRADE : UOC_GIVE_BOX;

		g_pCoreShell->OperationRequest(GOI_SWITCH_OBJECT, (unsigned int)&Obj, (int)&Drop);
		return;
	}

	if (bDoImmed == false)
	{
		if(KUiMarket::GetIfVisible() != NULL)
			return;

		KUiItemBuySelInfo	Price = { 0 };
		if (g_pCoreShell->GetGameData(GDI_TRADE_ITEM_PRICE,
			(unsigned int)(&Obj), (int)(&Price)))
		{
			KUiTradeConfirm::OpenWindow(this, &Obj, &Price, TCA_SALE);
		}
	}
	else
	{
		UISYS_STATUS eStatus = g_UiBase.GetStatus();
		if (eStatus == UIS_S_TRADE_SALE || eStatus == UIS_S_TRADE_NPC)
		{
			if(KUiMarket::GetIfVisible() != NULL)
				return;

			if(eStatus == UIS_S_TRADE_NPC)
			{
				if(GetKeyState(VK_SHIFT) & 0x8000)
				{
					g_pCoreShell->OperationRequest(GOI_TRADE_NPC_SELL,
						(unsigned int)(&Obj), 0);
				}
				else
				{
					KSystemMessage	Msg;
					Msg.byConfirmType = SMCT_NONE;
					Msg.byParamSize = 0;
					Msg.byPriority = 0;
					Msg.eType = SMT_NORMAL;
					Msg.uReservedForUi = 0;
					sprintf(Msg.szMessage, SELL_MESSAGES);
					KUiSysMsgCentre::AMessageArrival(&Msg, NULL);
				}
			}
			else
			{
				g_pCoreShell->OperationRequest(GOI_TRADE_NPC_SELL,
						(unsigned int)(&Obj), 0);
			}
		}
		else if (g_UiBase.IsOperationEnable(UIS_O_USE_ITEM))
		{
			if(GetKeyState(VK_CONTROL) & 0x8000)
			{
				KUiItemBuySelInfo	Price = { 0 };
				if (g_pCoreShell->GetGameData(GDI_ITEM_BREAK_INFO,
					(unsigned int)(&Obj), (int)(&Price)))
				{
					KUiTradeConfirm::OpenWindow(this, &Obj, &Price, TCA_BREAK, 1, Price.nPrice - 1);
				}
				return;
			}
			else
			{
				if(KUiGetString::GetIfVisible() != NULL)
					return;
				if(KUiGetNumber::GetIfVisible() != NULL)
					return;
				if(KUiTongSetTax::GetIfVisible() != NULL)
					return;
				g_pCoreShell->OperationRequest(GOI_USE_ITEM,
					(unsigned int)(&Obj), UOC_ITEM_TAKE_WITH);
			}
		}
	}
}
Editor is loading...
Leave a Comment