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

📄 streetstall.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// StreetStall.cpp: implementation of the CStreetStall class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "StreetStall.h"
#include "WindowIDEnum.h"
#include "ObjectManager.h"
#include "GameIn.h"
#include "./Interface/cWindowManager.h"
#include "./Interface/cSpin.h"
#include "./Interface\cIcon.h"
#include "./Interface\cIconGridDialog.h"
#include "./Interface\cEditBox.h"
#include "./Interface\cTextArea.h"
#include "./Interface\cButton.h"

#include "StreetStallManager.h"

#include "item.h"
#include "itemmanager.h"
#include "ExchangeItem.h"
#include "StreetStallTitleTip.h"
#include "cIMEex.h"
#include "cDivideBox.h"
#include "ChatManager.h"
#include "./Input/Mouse.h"

#include "MainBarDialog.h"
#include "QuickManager.h"


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CStreetStall::CStreetStall()
{
	m_type = WT_STREETSTALLDIALOG;
	m_DlgState = eSDS_NOT_OPENED;

	memset(m_MoneyArray, 0, SLOT_STREETSTALL_NUM*sizeof(DWORD));
	m_nCurSelectedItem = -1;
	m_dwCurSelectedItemDBIdx = 0;
	m_pData = NULL;
}

CStreetStall::~CStreetStall()
{

}

void CStreetStall::Linking()
{
	// LBS 眠啊 03.09.18
	m_pStallGrid = (cIconGridDialog*)GetWindowForID(SSI_ICONGRID);

//	m_pTitleEdit = (cEditBox *)GetWindowForID(SSI_TITLEEDIT);
	m_pTitle	= (cTextArea*)GetWindowForID(SSI_TITLE);
	m_pTitle->SetEnterAllow( FALSE );
	m_pEnterBtn	= (cButton*)GetWindowForID(SSI_ENTER);
	m_pMoneyEdit = (cEditBox *)GetWindowForID(SSI_MONEYEDIT);
	m_pMoneyEdit->SetValidCheck( VCM_NUMBER );
	m_pMoneyEdit->SetAlign( TXT_RIGHT );
	m_pMoneyEdit->SetReadOnly( TRUE );
	m_pBuyBtn = (cButton *)GetWindowForID(SSI_BUYBTN);
//	m_pRegistBtn = (cButton *)GetWindowForID(SSI_REGISTBTN);
	m_pEditBtn = (cButton *)GetWindowForID(SSI_EDITBTN);

	m_pTitle->SetScriptText( DEFAULT_TITLE_TEXT );
//	strcpy( m_OldTitle, m_pTitle->GetScriptText() );
	m_pTitle->GetScriptText( m_OldTitle );

	m_pMoneyEdit->SetEditText( DEFAULT_MONEY_TEXT );
}

DWORD CStreetStall::ActionEvent(CMouse * mouseInfo)
{
	if( !m_bActive ) return WE_NULL;

	DWORD we = WE_NULL;
	we |= cWindow::ActionEvent(mouseInfo);

	if( !m_bDisable )
	{
		we |= ActionEventWindow(mouseInfo);
		we |= ActionEventComponent(mouseInfo);
	}
	return we;	
}

// LBS 03.09.24 惑痢摧扁
void CStreetStall::OnCloseStall(BOOL bDelOption)
{
	SetDisable(FALSE);
	cDialog::SetActive(FALSE);

	m_pMoneyEdit->SetReadOnly( TRUE );
	m_pMoneyEdit->SetFocusEdit( FALSE );

	// 傈眉 Icon 昏力 
	WORD num = m_pStallGrid->GetCellNum();
	DeleteItemAll(bDelOption);

	// 阿 函荐 檬扁拳
	m_pStallGrid->SetCurSelCellPos(-1);
	m_nCurSelectedItem = -1;
	m_dwCurSelectedItemDBIdx = 0;
	memset(m_MoneyArray, 0, SLOT_STREETSTALL_NUM*sizeof(DWORD));
	m_pMoneyEdit->SetEditText( DEFAULT_MONEY_TEXT );
//	m_pTitleEdit->SetEditText( DEFAULT_TITLE_TEXT );
	m_pTitle->SetScriptText( DEFAULT_TITLE_TEXT );


	m_pStallGrid->SetCurSelCellPos( -1 );
	m_pStallGrid->SetShowGrid( FALSE );
//	strcpy( m_OldTitle, m_pTitleEdit->GetEditText() );
	m_pTitle->GetScriptText( m_OldTitle );

	m_DlgState = eSDS_NOT_OPENED;
	m_dwOwnnerId = HERO->GetID();

	if(m_pData)
	{
		CItem* item = (CItem*)m_pData;
		item->SetLock( FALSE );
	}
	m_pData = NULL;

	// 唱穿扁 芒捞 殿废 登绢 乐绰版快 瘤款促.
	cDivideBox * pDivideBox = (cDivideBox *)WINDOWMGR->GetWindowForID( DBOX_DIVIDE_STREETSTALL );
	if( pDivideBox )
	{
		pDivideBox->SetDisable(TRUE);
		pDivideBox->SetActive(FALSE);
		WINDOWMGR->AddListDestroyWindow( pDivideBox );
	}

	pDivideBox = (cDivideBox *)WINDOWMGR->GetWindowForID( DBOX_INPUT_MONEY );
	if( pDivideBox )
	{
		pDivideBox->SetDisable(TRUE);
		pDivideBox->SetActive(FALSE);
		WINDOWMGR->AddListDestroyWindow( pDivideBox );
	}
}

void CStreetStall::ShowSellStall()
{
	SetActive(TRUE);

	m_DlgState = eSDS_OPENED;

	m_pBuyBtn->SetActive(FALSE);
	m_pEditBtn->SetActive(TRUE);
//	m_pRegistBtn->SetActive(TRUE);

//	m_pTitleEdit->SetReadOnly(FALSE);
	m_pTitle->SetReadOnly(FALSE);

	m_pEnterBtn->SetDisable(FALSE);

	if( m_pStallGrid->GetCurSelCellPos() == -1 ) // 急琶等 酒捞袍捞 绝阑锭
	{
		//m_pMoneyEdit->SetReadOnly( TRUE );
		//m_pMoneyEdit->SetFocusEdit( FALSE );

		m_pMoneyEdit->SetEditText( DEFAULT_MONEY_TEXT );
	}
	else
	{
		//m_pMoneyEdit->SetReadOnly( FALSE );
	}

	return;
}

void CStreetStall::ShowBuyStall()
{
	SetActive(TRUE);

	m_DlgState = eSDS_BUY;

	m_pBuyBtn->SetActive(TRUE);
	m_pEditBtn->SetActive(FALSE);
//	m_pRegistBtn->SetActive(FALSE);

//	m_pTitleEdit->SetReadOnly(TRUE);
	m_pTitle->SetFocusEdit( FALSE );
	m_pTitle->SetReadOnly(TRUE);
	m_pEnterBtn->SetDisable( TRUE );

	//m_pMoneyEdit->SetReadOnly(TRUE);
	//m_pMoneyEdit->SetFocusEdit( FALSE );

	return;
}

int CStreetStall::AddItem( cIcon* pItem )
{
	POSTYPE pos;
	for(int i=0;i<m_pStallGrid->GetCellNum();++i)
	{
		if( !m_pStallGrid->m_pIconGridCell[i].use )
			break;
	}
	pos = i;
	if( pos == m_pStallGrid->GetCellNum() ) return -1;

	m_pStallGrid->AddIcon( pos, pItem );

	return pos;
}

cIcon* CStreetStall::GetItem( DWORD dwDBIdx )
{
	CExchangeItem* pItem;
	for(int i=0;i<m_pStallGrid->GetCellNum();++i)
	{
		pItem = ( CExchangeItem* )m_pStallGrid->m_pIconGridCell[i].icon;
		if(pItem == NULL)
			return NULL; //窍瘤档 臼篮 畴痢 皋矫瘤啊 朝扼客辑 欢唱霸 登辑 眠啊 hs 
		if( pItem->GetDBId() == dwDBIdx )
			return pItem;
	}

	return NULL;
}


void CStreetStall::DeleteItem( ITEMBASE* pbase )
{
	CExchangeItem* pItem;
	POSTYPE pos;

	for(int i=0;i<m_pStallGrid->GetCellNum();++i)
	{
		pItem = (CExchangeItem*)m_pStallGrid->m_pIconGridCell[i].icon;

		if( pItem == NULL ) 
		{
//			ASSERTMSG(0, "辑滚俊 乐绰 沥焊啊 努扼捞攫飘俊绰 绝澜..");
			continue;
		}

		if( pbase->dwDBIdx == pItem->GetDBId() )
			break;
	}
	pos = i;
	if( pos == m_pStallGrid->GetCellNum() ) return;

	cIcon* pIcon = NULL;
	if( m_pStallGrid->DeleteIcon( pos, &pIcon ) )
	{
		if( m_pData && pIcon )
		{
			if( ((CItem*)m_pData)->GetItemBaseInfo()->dwDBIdx == ((CExchangeItem*)pIcon)->GetDBId() )
			{
				m_pData = NULL;
				m_dwCurSelectedItemDBIdx = 0;
			}
		}

		if( m_DlgState == eSDS_BUY )
		{
			if( pIcon ) WINDOWMGR->AddListDestroyWindow( pIcon );
		}
		else
		{
			if( pIcon ) STREETSTALLMGR->UnlinkItem( (CExchangeItem*)pIcon );
		}
		
		for( int i = pos ; i < SLOT_STREETSTALL_NUM-1 ; ++i )
		{
			m_pStallGrid->DeleteIcon( i+1, &pIcon );
			if( !pIcon ) break;

			((CExchangeItem*)pIcon)->SetPosition( i );

			if( ((CExchangeItem*)pIcon)->GetLinkItem() )	//荤绰 荤恩篮 傅农啊 绝促.
				((CExchangeItem*)pIcon)->GetLinkItem()->SetLinkPosition( i );

			m_pStallGrid->AddIcon( i, pIcon );
			
			m_MoneyArray[i] = m_MoneyArray[i+1];
		}
	}

	ResetDlgData();
}


CExchangeItem* CStreetStall::FindItem( DWORD dwDBIdx )
{
	CExchangeItem* pItem = NULL;
	CExchangeItem* pFindItem = NULL;

	for( int i = 0 ; i < m_pStallGrid->GetCellNum() ; ++i )
	{
		pItem = (CExchangeItem*)m_pStallGrid->m_pIconGridCell[i].icon;

		if( pItem == NULL )
			break;

		if( dwDBIdx == pItem->GetDBId() )
		{
			pFindItem = pItem;
			break;
		}
	}
	
	return pFindItem;	
}

void CStreetStall::ResetItemInfo( DWORD dwDBIdx, DWORD count )
{
	CExchangeItem* pItem;
	POSTYPE pos;

	for(int i=0;i<m_pStallGrid->GetCellNum();++i)
	{
		pItem = (CExchangeItem*)m_pStallGrid->m_pIconGridCell[i].icon;
		
		if( pItem == NULL ) 
		{
			ASSERTMSG(0, "辑滚俊 乐绰 沥焊啊 努扼捞攫飘俊绰 绝澜..");
			continue;
		}

		if( dwDBIdx == pItem->GetDBId() )
			break;
	}

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

	pItem->SetDurability( count );
}


void CStreetStall::DeleteItemAll(BOOL bDelOption)
{
	cIcon* pIcon;

	for( int i=0;i<SLOT_STREETSTALL_NUM;++i)
	{
		m_pStallGrid->DeleteIcon( i, &pIcon );
		
		if( bDelOption && pIcon )
		{
			if( !ITEMMGR->IsDupItem( ((CExchangeItem*)pIcon)->GetData() ) && ((CExchangeItem*)pIcon)->GetDurability() != 0 )
				ITEMMGR->RemoveItemOption( ((CExchangeItem*)pIcon)->GetDurability() );
		}

		if( m_DlgState == eSDS_BUY )
		{
			if( pIcon ) WINDOWMGR->AddListDestroyWindow( pIcon );
		}
		else
		{
			if( pIcon ) STREETSTALLMGR->UnlinkItem( (CExchangeItem*)pIcon );
		}
	}
}

/*
BOOL CStreetStall::MoneyEditCheck()
{
	char temp[256];
	strcpy( temp, m_pMoneyEdit->GetEditText() );

	if( temp[0] == 0 ) return FALSE;

	int nNum = atoi( temp );
//	itoa( nNum, temp, 256 );

	strcpy( m_pMoneyEdit->GetEditText(), AddComma( nNum ) );

	return TRUE;
}
*/

BOOL CStreetStall::FakeMoveIcon(LONG x, LONG y, cIcon * icon)
{
	if( m_bDisable == TRUE || m_pData ) return FALSE;
	if( GetDlgState() != eSDS_OPENED ) return FALSE;


	////////////////////////////////////////////////////////////////////////////////////////////
	//// 酒捞袍俊措茄 蜡瓤己 眉农
	if( icon->GetType() != WT_ITEM )
		return FALSE;
	
	
	//////////////////////////////////////////////////////////////////////////
	// YH MEDALQUEST
//	if( ((CItem*)icon)->GetItemIdx() == 50800 ||
//		((CItem*)icon)->GetItemIdx() == 50801 ||
//		((CItem*)icon)->GetItemIdx() == 50802 )
//	{
//		CHATMGR->AddMsg( CTC_SYSMSG, "皋崔 酒捞袍篮 芭贰 窍角 荐 绝嚼聪促." );
//		return FALSE;
//	}
	//////////////////////////////////////////////////////////////////////////
	

	// 牢亥配府 酒捞袍牢瘤 眉农茄促.
	if( GetTableIdxPosition( ((CItem*)icon)->GetPosition() ) != eItemTable_Inventory )
	{
		if( GetTableIdxPosition( ((CItem*)icon)->GetPosition() ) == eItemTable_Weared )
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(359) );

		return FALSE; 
	}
	
	// 狞促捞倔肺弊俊 傅农啊 乐绰瘤 眉农茄促.
	if( ((CItem*)icon)->GetItemKind() == eYOUNGYAK_ITEM )
	{
		if( QUICKMGR->CheckQPosForItemIdx(((CItem*)icon)->GetItemIdx()) == FALSE )
		{
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(348) );
			return FALSE;
		}
	}
	else
	{
		if( ((CItem*)icon)->GetQuickPosition() != 0 )
		{
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(348) );
			return FALSE;
		}
	}

	// 傅农酒捞袍牢瘤 犬牢茄促.
	if( icon->GetIconType() == eIconType_LinkedItem ) return FALSE;

	if( !m_pStallGrid->PtInWindow( x, y ) ) return FALSE;
	////////////////////////////////////////////////////////////////////////////////////////////

	CItem* item = (CItem*)icon;
	if( item->GetLinkPosition() ) return FALSE; // 酒捞袍狼 傅农惑怕 犬牢
	item->SetLock( TRUE );
	
//	if( m_pData ) // 殿废 吝牢 扁粮 酒捞袍俊 措秦辑 LOCK阑 乾促.
//	{
//		CItem* pCurItem = (CItem*)m_pData;
//		pCurItem->SetLock(FALSE);
//	}
	m_pData = item;

	if( STREETSTALLMGR->GetLinkedItemNum() >= SLOT_STREETSTALL_NUM )
	{
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(349) );
		item->SetLock( FALSE );
		m_pData = NULL;
	}
	else
	{
		// 酒捞袍阑 啊拜苞 窃膊 殿废 茄促.
		STREETSTALLMGR->RegistItemEx( item, 0 );
		m_dwCurSelectedItemDBIdx = item->GetDBIdx();
		SetDisable( TRUE );
		
//		pStall->SetData( NULL );
//		pStall->SetDisable( FALSE );
//		ShowDivideBox(eSO_INPUTMONEY, x, y);
	}

	return FALSE;
}

void CStreetStall::FakeDeleteItem( POSTYPE pos )
{
	CExchangeItem* pExItem = (CExchangeItem*)m_pStallGrid->GetIconForIdx( pos );
	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 = pos;

	NETWORK->Send( &msg, sizeof( MSG_LINKITEM ) );
}

// LBS 眠啊  03.09.22
DWORD CStreetStall::ActionEventWindow(CMouse * mouseInfo)
{
	DWORD we = WE_NULL;

	if( m_bDisable ) return we;
	we = cDialog::ActionEventWindow( mouseInfo );

	if( mouseInfo->LButtonDown() )
	if( !PtInWindow( mouseInfo->GetMouseX(), mouseInfo->GetMouseY() ) )
	{
		m_pStallGrid->SetShowGrid( FALSE );
//		m_pStallGrid->SetCurSelCellPos(-1);
//		m_nCurSelectedItem = -1;
//		m_dwCurSelectedItemDBIdx = 0;
	}

	return we;
}

⌨️ 快捷键说明

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