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

📄 streetstall.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// LBS 眠啊 03.09.18
void CStreetStall::OnActionEvnet(LONG lId, void * p, DWORD we)
{
	if( we == WE_LBTNCLICK || we == WE_LBTNDBLCLICK )
	{
		POSTYPE pos = m_pStallGrid->GetCurSelCellPos();
		CExchangeItem * pItem = (CExchangeItem*)m_pStallGrid->GetIconForIdx( pos );

		if( !pItem ) // 急琶等 镑俊 酒捞袍捞 绝绰版快
		{
			m_pMoneyEdit->SetEditText( DEFAULT_MONEY_TEXT );
			m_nCurSelectedItem = -1;
			m_dwCurSelectedItemDBIdx = 0;
			return;
		}
		else
		{
			m_nCurSelectedItem = pos;
			m_dwCurSelectedItemDBIdx = GetCurSelectedItemDBidx();

			m_pMoneyEdit->SetEditText( AddComma( m_MoneyArray[pos] ) ); 

			if( m_DlgState == eSDS_BUY )
			{
				if( !pItem->IsLocked() && we == WE_LBTNDBLCLICK ) // DoubleClick栏肺 拱扒 备涝
				{
					if( ITEMMGR->IsDupItem( pItem->GetData() ) )
					{
						if( pItem->GetDurability() == 1)
							STREETSTALLMGR->BuyItem();
						else
							ShowDivideBox();
					}
					else
					{
						STREETSTALLMGR->BuyItem();
					}
				}
			}

			m_pStallGrid->SetShowGrid( TRUE );
		}
	}
	else if( we & WE_BTNCLICK && lId == SSI_ENTER )
	{
		STREETSTALLMGR->EditTitle();
	}
	else if( we & WE_BTNCLICK && lId == SSI_CLOSEBTN )
	{
		SetActive( FALSE );		
	}
}

void CStreetStall::SetActive( BOOL val )
{
	if( !m_bDisable )
	if( m_bActive != val )
	{
		if(!val) STREETSTALLMGR->CloseStreetStall();

		cDialog::SetActiveRecursive( val );
	}
}

void CStreetStall::RegistMoney()
{
	m_MoneyArray[m_nCurSelectedItem] = (DWORD)atoi( RemoveComma( m_pMoneyEdit->GetEditText() ));
}

void CStreetStall::RegistMoney( POSTYPE pos, DWORD dwMoney )
{
	m_MoneyArray[pos] = dwMoney;
}

void CStreetStall::RegistTitle( char* title, BOOL bSucess )
{
	if( bSucess )
	{
		HERO->ShowStreetStallTitle( TRUE, title );
		strcpy( m_OldTitle, title );
	}
	else
	{
//		m_pTitleEdit->SetEditText( m_OldTitle );
		m_pTitle->SetScriptText( m_OldTitle );
	}
}

void CStreetStall::OnMoneyEditClick()
{
//	if( m_pMoneyEdit->IsReadOnly() ) return;

//	m_pStallGrid->SetCurSelCellPos( m_nCurSelectedItem );
//	m_pStallGrid->SetShowGrid( TRUE );
}

void CStreetStall::OnTitleEditClick()
{
//	m_pStallGrid->SetShowGrid( FALSE );
//	m_pStallGrid->SetCurSelCellPos(-1);
//	m_nCurSelectedItem = -1;
//	m_dwCurSelectedItemDBIdx = 0;
}

void CStreetStall::ChangeItemStatus( POSTYPE pos, DWORD money, BOOL bLock )
{
	CExchangeItem * pItem = (CExchangeItem*)m_pStallGrid->GetIconForIdx( pos );
	if( !pItem ) return;
	char buf[32] = {0,};

	m_MoneyArray[pos] = money;

	if( m_DlgState == eSDS_BUY )
	{
		pItem->SetLock( !bLock );
		pItem->SetMovable( FALSE );
//		m_pMoneyEdit->SetReadOnly( TRUE );
//		m_pMoneyEdit->SetFocusEdit( FALSE );
	}
	else
	{
		pItem->SetLock( bLock );
		pItem->SetMovable( !bLock );
//		m_pMoneyEdit->SetReadOnly( bLock );
	}


	if( !ITEMMGR->IsDupItem(pItem->GetData()) && pItem->GetDurability() != 0 )
		ITEMMGR->SetToolTipIcon( pItem, ITEMMGR->GetItemOption(pItem->GetDurability()));
	else
		ITEMMGR->SetToolTipIcon( pItem );

	if( bLock )
	{
		if( ITEMMGR->IsDupItem(pItem->GetData()) )
			wsprintf( buf, CHATMGR->GetChatMsg(199), AddComma( money ) );
		else
			wsprintf( buf, CHATMGR->GetChatMsg(214), AddComma( money ) );
	}
	else
	{
		wsprintf( buf, CHATMGR->GetChatMsg(114) );
	}
	
	pItem->AddToolTipLine( buf, TTTC_BUYPRICE );


//	if( bLock )
//		m_pMoneyEdit->SetFocusEdit( FALSE );

	// 啊拜钎俊 措茄 贸府 
	ResetDlgData();
}

void CStreetStall::ChangeItemStatus( ITEMBASE* pbase, DWORD money, BOOL bLock, int nDivideKind )
{
	CExchangeItem* pItem = NULL;
	POSTYPE pos;
	char buf[32] = {0,};

	for(int i=0;i<m_pStallGrid->GetCellNum();++i)
	{
		if( m_pStallGrid->m_pIconGridCell[i].use )
		{
			pItem = (CExchangeItem*)m_pStallGrid->m_pIconGridCell[i].icon;
			if( pItem->GetDBId() == pbase->dwDBIdx )
				break;
		}
	}

	pos = i;
	if( pos == m_pStallGrid->GetCellNum() ) return;

	m_nCurSelectedItem = pos;
	m_pStallGrid->SetCurSelCellPos( pos );

	m_MoneyArray[pos] = money;

	if( m_DlgState == eSDS_BUY )
	{
		pItem->SetLock( !bLock );
		pItem->SetMovable( FALSE );
//		m_pMoneyEdit->SetReadOnly( TRUE );
//		m_pMoneyEdit->SetFocusEdit( FALSE );
	}
	else
	{
		if( !bLock )
		{
			m_pData = pItem->GetLinkItem();
			if( ITEMMGR->IsDupItem( pItem->GetLinkItem()->GetItemIdx() ) )
				ShowDivideBox( eSO_INPUTMONEY_DUP, pItem->GetAbsX() + 20, pItem->GetAbsY() + 20, nDivideKind );
			else
				ShowDivideBox( eSO_INPUTMONEY, pItem->GetAbsX() + 20, pItem->GetAbsY() + 20, nDivideKind );
		
			pItem->SetLock( TRUE );
			pItem->SetMovable( FALSE );
		}
		else
		{
			pItem->SetLock( FALSE );
			pItem->SetMovable( FALSE );
			m_pData = NULL;
		}
//		pItem->SetLock( bLock );
//		pItem->SetMovable( !bLock );
//		m_pMoneyEdit->SetReadOnly( bLock );
	}

	if( !ITEMMGR->IsDupItem(pItem->GetData()) && pItem->GetDurability() != 0 )
		ITEMMGR->SetToolTipIcon( pItem, ITEMMGR->GetItemOption(pItem->GetDurability()));
	else
		ITEMMGR->SetToolTipIcon( pItem );

	if( bLock )
	{
		if( ITEMMGR->IsDupItem(pItem->GetData()) )
			wsprintf( buf, CHATMGR->GetChatMsg(199), AddComma( money ) );
		else
			wsprintf( buf, CHATMGR->GetChatMsg(214), AddComma( money ) );
	}
	else
	{
		wsprintf( buf, CHATMGR->GetChatMsg(114) );
	}
	
	pItem->AddToolTipLine( buf, TTTC_BUYPRICE );


//	if( bLock )
//		m_pMoneyEdit->SetFocusEdit( FALSE );

	// 啊拜钎俊 措茄 贸府 
	ResetDlgData();
}

// Lock惑怕客 般摹扁酒捞袍牢瘤甫 犬牢且 荐 乐促.
BOOL CStreetStall::SelectedItemCheck()
{
	m_pStallGrid->SetShowGrid( TRUE );	//?

	CExchangeItem * pLinkItem = (CExchangeItem*)m_pStallGrid->GetIconForIdx( m_nCurSelectedItem );

	return !pLinkItem->IsLocked();
}

void CStreetStall::ResetDlgData()
{
	if( m_nCurSelectedItem == -1 )
	{
		m_pStallGrid->SetShowGrid( FALSE );
		m_pMoneyEdit->SetEditText( DEFAULT_MONEY_TEXT );
	}
	else
	{
		if( m_pStallGrid->IsAddable( m_nCurSelectedItem ) )
		{
			m_pStallGrid->SetShowGrid( FALSE );
			m_pStallGrid->SetCurSelCellPos(-1);
			m_nCurSelectedItem = -1;
//			m_dwCurSelectedItemDBIdx = 0;
			m_pMoneyEdit->SetEditText( DEFAULT_MONEY_TEXT );
			return;
		}

		m_pStallGrid->SetCurSelCellPos( m_nCurSelectedItem );
		m_pStallGrid->SetShowGrid( TRUE );
		m_pMoneyEdit->SetEditText( AddComma( m_MoneyArray[m_nCurSelectedItem] ) ); 
	}
}

DWORD CStreetStall::GetCurSelectedItemDBidx()
{
	return ((CExchangeItem*)m_pStallGrid->GetIconForIdx( m_nCurSelectedItem ))->GetDBId();
}

DWORD CStreetStall::GetCurSelectedItemDur()
{
	return ((CExchangeItem*)m_pStallGrid->GetIconForIdx( m_nCurSelectedItem ))->GetDurability();
}


void CStreetStall::ShowDivideBox(DWORD dwOption, int x, int y, int nDivideKind )
{
	switch( dwOption )
	{
	case eSO_DIVE:
		{
			CExchangeItem* pExItem = (CExchangeItem*)m_pStallGrid->GetIconForIdx( m_nCurSelectedItem );

			if( pExItem == NULL ) return;

			cDivideBox * pDivideBox = WINDOWMGR->DivideBox( DBOX_DIVIDE_STREETSTALL, pExItem->GetAbsX(), pExItem->GetAbsY(), OnDivideItem, OnDivideItemCancel, this, NULL, CHATMGR->GetChatMsg(638) );
			if( !pDivideBox )
			{
				pDivideBox = (cDivideBox *)WINDOWMGR->GetWindowForID( DBOX_DIVIDE_STREETSTALL );
			}
			pDivideBox->ChangeKind( nDivideKind );

			pDivideBox->SetMaxValue( 5 );
			//pDivideBox->SetValue( pExItem->GetDurability() );
			pDivideBox->SetValue(1);	//KES
//SS_BUG
//			pDivideBox->SetPos( m_nCurSelectedItem );

			m_pData = pExItem;

			pDivideBox->m_pSpin->SetFocusEdit(TRUE);
			//SetDisable(TRUE);
		}
		break;
	case eSO_INPUTMONEY:
		{
			cDivideBox * pDivideBox = WINDOWMGR->DivideBox( DBOX_INPUT_MONEY, x, y, OnFakeRegistItem, OnRegistItemCancel, this, NULL, CHATMGR->GetChatMsg(639) );
			if( !pDivideBox )
				pDivideBox = (cDivideBox *)WINDOWMGR->GetWindowForID( DBOX_INPUT_MONEY );

			pDivideBox->ChangeKind( nDivideKind );
			//pDivideBox->SetValue(0);
			//pDivideBox->m_pSpin->SetEditText("0");
			pDivideBox->m_pSpin->SetFocusEdit( TRUE );
			pDivideBox->m_pSpin->SetEditText( AddComma( m_MoneyArray[m_nCurSelectedItem] ) );
			SetDisable( TRUE );
		}
		break;
	case eSO_INPUTMONEY_DUP:
		{
			cDivideBox * pDivideBox = WINDOWMGR->DivideBox( DBOX_INPUT_MONEY, x, y, OnFakeRegistItem, OnRegistItemCancel, this, NULL, CHATMGR->GetChatMsg(642) );
			if( !pDivideBox )
				pDivideBox = (cDivideBox *)WINDOWMGR->GetWindowForID( DBOX_INPUT_MONEY );
			pDivideBox->ChangeKind( nDivideKind );
			//pDivideBox->SetValue(0);
			//pDivideBox->m_pSpin->SetEditText("0");
			pDivideBox->m_pSpin->SetFocusEdit( TRUE );
			pDivideBox->m_pSpin->SetEditText( AddComma( m_MoneyArray[m_nCurSelectedItem] ) );
			SetDisable( TRUE );
		}
		break;
	}
}

void CStreetStall::OnDivideItem( LONG iId, void* p, DWORD param1, void * vData1, void * vData2 )
{
	CStreetStall* pStall = (CStreetStall*)vData1;

	// 函荐狼 檬扁拳
	if( param1 == 0 )
	{
		pStall->SetDisable(FALSE);
		return; // 肮荐啊 0捞搁 
	}

	cDivideBox* pDivideBox = (cDivideBox*)p;

	if( pDivideBox == NULL )
	{
		pStall->SetDisable(FALSE);
		return;
	}
// KES SS_BUG
//	if( pDivideBox->m_nPos == -1 )
//	{
//		pStall->SetDisable(FALSE);
//		return;
//	}
//	POSTYPE pos = pDivideBox->m_nPos;


	CExchangeItem* pExItem = pStall->FindItem( pStall->GetCheckDBIdx() );
	if( pExItem == NULL )
	{
		OnDivideItemCancel( iId, p, param1, vData1, vData2 );
		//皋技瘤 钎矫秦林扁
		return;		
	}

//	CExchangeItem* pExItem = (CExchangeItem*)pStall->GetData();
//	if( pExItem == NULL )
//	{
//		pStall->SetDisable(FALSE);
//		return;
//	}

	if( pExItem->GetDurability() < param1 )
	{
		OnDivideItemCancel( iId, p, param1, vData1, vData2 );
		
		//皋技瘤 钎矫
		return; // 荤妨绰 荐樊焊促 利栏搁..
	}

	POSTYPE pos = pExItem->GetPosition();

// 概聪廉俊 康距 酒捞袍 荤扁 龋免 ..
	STREETSTALLMGR->BuyItemDur( pos, param1 );

//	pStall->SetData( NULL );
//	pStall->SetDisable( FALSE );
}

void CStreetStall::OnDivideItemCancel( LONG iId, void* p, DWORD param1, void * vData1, void * vData2 )
{
	CStreetStall* pStall = (CStreetStall*)vData1;
	if( pStall == NULL ) return;

	pStall->SetData( NULL );
	pStall->SetDisable( FALSE );
}

void CStreetStall::OnFakeRegistItem( LONG iId, void* p, DWORD param1, void * vData1, void * vData2 )
{
	CStreetStall* pStall = (CStreetStall*)vData1;

	pStall->SetDisable( FALSE );
	
//	if( pStall->GetCurSelectedItemNum() == -1 ) return;
//	if( pStall->SelectedItemCheck() ) return;

	if( param1 == 0 )
	{
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(637) );
		OnRegistItemCancel( iId, p, param1, vData1, vData2 );
		return;
	}
	else
	{
		CExchangeItem* pExItem = pStall->FindItem( pStall->GetCheckDBIdx() );
		if( pExItem == NULL )
		{
			OnRegistItemCancel( iId, p, param1, vData1, vData2 );
			return;
		}

		//pStall->RegistMoney( pStall->GetCurSelectedItemNum(), param1 );//捞矾搁 部老荐档.
		pStall->RegistMoney( pExItem->GetPosition(), param1 );
		STREETSTALLMGR->ItemStatus( pExItem, TRUE );
	}
}

void CStreetStall::OnRegistItemCancel( LONG iId, void* p, DWORD param1, void * vData1, void * vData2 )
{
	CStreetStall* pStall = (CStreetStall*)vData1;
	CItem* item = (CItem*)pStall->GetData();

	item->SetLock( FALSE );
	pStall->SetData( NULL );
	pStall->SetDisable( FALSE );

//KES
//	if( item->GetLinkPosition() != 0 )
	{
		CExchangeItem* pExItem = (CExchangeItem*)pStall->GetGridDialog()->GetIconForIdx( item->GetLinkPosition() );
		if( pExItem == NULL ) return;
		if( pExItem->GetLinkItem() == NULL ) return;
		
		MSG_LINKITEM msg;
		msg.Category	= MP_STREETSTALL;
		msg.Protocol	= MP_STREETSTALL_DELETEITEM_SYN;
		msg.dwObjectID	= HERO->GetID();
		msg.ItemInfo	= *pExItem->GetLinkItem()->GetItemBaseInfo();
		msg.wAbsPosition = item->GetLinkPosition();
		
		NETWORK->Send( &msg, sizeof( MSG_LINKITEM ) );
	}
}

int CStreetStall::GetGridposForItemIdx(WORD wIdx)
{
	int num = m_pStallGrid->GetCellNum();

	for(int i=0;i<num;++i)
	{
		CExchangeItem* pItem = (CExchangeItem*)m_pStallGrid->GetIconForIdx(i);
		if( wIdx ==  pItem->GetDBId() )
			return i;
	}

	return -1;
}

void CStreetStall::GetTitle( char* pStrTitle )
{
	m_pTitle->GetScriptText( pStrTitle );
}

void CStreetStall::EditTitle( char* title )
{
	m_pTitle->SetScriptText( title );
}

cIcon* CStreetStall::GetCurSelectedItem() 
{ 
	if(m_nCurSelectedItem == -1) return NULL; 
	return m_pStallGrid->GetIconForIdx( m_nCurSelectedItem ); 
}


DWORD CStreetStall::GetCurSelectedItemIdx() 
{ 
	if(m_nCurSelectedItem == -1) return 0; 
	return m_pStallGrid->GetIconForIdx(m_nCurSelectedItem)->GetData(); 
}

cIcon* CStreetStall::GetItem( POSTYPE pos )
{
	return m_pStallGrid->GetIconForIdx( pos );
}

⌨️ 快捷键说明

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