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

📄 pyogukdialog.cpp

📁 墨香最新私服
💻 CPP
字号:
// PyogukDialog.cpp: implementation of the CPyogukDialog class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "PyogukDialog.h"
#include "PrivateWarehouseDialog.h"

#include "WindowIDEnum.h"
#include "./Interface/cPushupButton.h"
#include "./Interface/cListCtrl.h"
#include "./Interface/cStatic.h"
#include "cDivideBox.h"
#include "cMsgBox.h"

#include "ObjectManager.h"
#include "ItemManager.h"
#include "ObjectStateManager.h"
#include "./Interface/cWindowManager.h"
#include "MHFile.h"



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

CPyogukDialog::CPyogukDialog()
{
	m_type = WT_PYOGUKDLG;
	m_CurPyogukMode = -1;
	for(int i=0; i<TAB_PYOGUK_NUM; ++i)
		m_PyogukItemDlg[i] = NULL;
	m_PyogukNum = 0;
	memset(&m_PyogukListInfo, 0, sizeof(PYOGUK_LISTINFO));
	m_bItemInit = FALSE;
}

CPyogukDialog::~CPyogukDialog()
{
	for(int n=0;n<ePyogukMode_Max;++n)
	{
		m_PyogukCtlListArray[n].RemoveAll();
	}
}

void CPyogukDialog::Init(LONG x, LONG y, WORD wid, WORD hei, cImage * basicImage, LONG ID)
{
	cDialog::Init(x,y,wid,hei,basicImage,ID);
	m_type = WT_PYOGUKDLG;
	LoadPyogukListInfo();
}

void CPyogukDialog::LoadPyogukListInfo()
{
	CMHFile file;
#ifdef _FILE_BIN_
	file.Init("Resource/PyogukListInfo.bin","rb");
#else
	file.Init("Resource/PyogukListInfo.txt","rt");
#endif
	if(file.IsInited() == FALSE)
	{
		ASSERTMSG(0, "Fail To Load a File : PyogukListInfo.");
		return;
	}
	
	for(int n=0;n<MAX_PYOGUKLIST_NUM;++n)
	{
		m_PyogukListInfo.Pyoguk[n].MaxCellNum = 30*(n+1);
		m_PyogukListInfo.Pyoguk[n].MaxMoney = file.GetDword();
		m_PyogukListInfo.Pyoguk[n].BuyPrice = file.GetDword();
	}

	file.Release();
}

void CPyogukDialog::Linking()
{
	m_pMoney = (cStatic*)GetWindowForID(PYO_MONEY); 

	
	//////////////////////////////////////////////////////////////////////////
	//PyogukListInfo
	m_pPyogukListInfo = (cListCtrl*)GetWindowForID(PYO_PYOGUKLCTRL);
	m_PyogukCtlListArray[ePyogukMode_PyogukListInfo].AddTail(m_pPyogukListInfo);
	m_PyogukCtlListArray[ePyogukMode_PyogukListInfo].AddTail((cButton*)GetWindowForID(PYO_BUYPYOGUKBTN));
	m_PyogukCtlListArray[ePyogukMode_PyogukListInfo].AddTail((cButton*)GetWindowForID(PYO_NOBUYBTN));
	m_PyogukCtlListArray[ePyogukMode_PyogukListInfo].AddTail((cStatic*)GetWindowForID(PYO_PYOGUKINFO1));
	m_PyogukCtlListArray[ePyogukMode_PyogukListInfo].AddTail((cStatic*)GetWindowForID(PYO_PYOGUKINFO2));
	m_PyogukCtlListArray[ePyogukMode_PyogukListInfo].AddTail((cStatic*)GetWindowForID(PYO_PYOGUKINFO3));
	m_pPyogukHaveStc = (cStatic*)GetWindowForID(PYO_PYOGUKHAVESTC);
	m_PyogukCtlListArray[ePyogukMode_PyogukListInfo].AddTail(m_pPyogukHaveStc);
	m_PyogukCtlListArray[ePyogukMode_PyogukListInfo].AddTail((cStatic*)GetWindowForID(PYO_PYOGUKHAVE));
	//////////////////////////////////////////////////////////////////////////
	//noWare
	m_PyogukCtlListArray[ePyogukMode_NoWare].AddTail((cStatic*)GetWindowForID(PYO_NOWARE1));
	m_PyogukCtlListArray[ePyogukMode_NoWare].AddTail((cStatic*)GetWindowForID(PYO_NOWARE));
	m_PyogukCtlListArray[ePyogukMode_NoWare].AddTail((cButton*)GetWindowForID(PYO_PYOGUKLISTBTN));
	m_PyogukCtlListArray[ePyogukMode_NoWare].AddTail((cButton*)GetWindowForID(PYO_NOBUYPYOGUKBTN));
	
	//////////////////////////////////////////////////////////////////////////
	
	for(int i=0; i<MAX_PYOGUKLIST_NUM; ++i)
	{
		m_pPyogukBtn[i] = (cPushupButton*)GetWindowForID(PYO_PYOGUK1BTN+i);

		m_PyogukItemDlg[i] = (CPrivateWarehouseDialog*)GetWindowForID(PYO_WAREITEM1+i);
		m_PyogukCtlListArray[ePyogukMode_PyogukWare1+i].AddTail(m_PyogukItemDlg[i]);
		m_PyogukCtlListArray[ePyogukMode_PyogukWare1+i].AddTail((cButton*)GetWindowForID(PYO_PUTINMONEYBTN));
		m_PyogukCtlListArray[ePyogukMode_PyogukWare1+i].AddTail((cButton*)GetWindowForID(PYO_PUTOUTMONEYBTN));
		m_PyogukCtlListArray[ePyogukMode_PyogukWare1+i].AddTail((cStatic*)GetWindowForID(PYO_MONEYIMG)); //悼傈 弊覆
		m_PyogukCtlListArray[ePyogukMode_PyogukWare1+i].AddTail((cStatic*)GetWindowForID(PYO_MONEYBACKIMG));
		m_PyogukCtlListArray[ePyogukMode_PyogukWare1+i].AddTail(m_pMoney); //官帕 捞固瘤
		m_PyogukCtlListArray[ePyogukMode_PyogukWare1+i].AddTail((cStatic*)GetWindowForID(PYO_WAREIMAGE));
	}
	
	SetPyogukListInfo();
}

void CPyogukDialog::SetPyogukListInfo()
{
	m_pPyogukListInfo->DeleteAllItems();
	
	for(BYTE i=0; i<MAX_PYOGUKLIST_NUM; ++i)
	{
		RITEM * ritem = new RITEM(4);
		sprintf(ritem->pString[0], "%d", i+1);
		sprintf(ritem->pString[1], "%d", m_PyogukListInfo.Pyoguk[i].MaxCellNum);
		sprintf(ritem->pString[2], "%d", m_PyogukListInfo.Pyoguk[i].MaxMoney);
		sprintf(ritem->pString[3], "%d", m_PyogukListInfo.Pyoguk[i].BuyPrice);
		
//		if((HERO->GetPyogukNum() - i) > 0 )
//		{
//			for(int n =0; n<4; ++n)
//				ritem->rgb[n] = RGBA_MAKE(180, 180, 180, 255);
//		}
		m_pPyogukListInfo->InsertItem(i, ritem);
	}
}

void CPyogukDialog::SetMode(int mode)
{
	m_CurPyogukMode = mode;
}

void CPyogukDialog::ShowPyogukMode(int mode)
{
	if(m_CurPyogukMode != -1)
	{
		SetActivePyogukMode(m_CurPyogukMode,FALSE);
	}
	
	m_CurPyogukMode = mode;
	SetActivePyogukMode(mode,TRUE);
		
	RefreshDlg();
}

void CPyogukDialog::AddPyogukMode(int mode)
{
	switch(mode)
	{
	case ePyogukMode_PyogukListInfo:
		{
			m_pPyogukHaveStc->SetStaticValue(HERO->GetPyogukNum());
		}
		break;
	case ePyogukMode_PyogukWare1: case ePyogukMode_PyogukWare2: case ePyogukMode_PyogukWare3:
	case ePyogukMode_PyogukWare4: case ePyogukMode_PyogukWare5:
		{
			SelectedBtnPushDown(mode - ePyogukMode_PyogukWare1);
			SetSelectedPyoguk(mode-ePyogukMode_PyogukWare1);
		}
		break;
	}
}

void CPyogukDialog::SetActivePyogukMode(int mode,BOOL bActive)
{
	PTRLISTSEARCHSTART(m_PyogukCtlListArray[mode],cWindow*,pWin)
		pWin->SetActive(bActive);
	PTRLISTSEARCHEND
}

void CPyogukDialog::RefreshDlg()
{
	if(m_CurPyogukMode != ePyogukMode_PyogukListInfo)
	{
		for(int i=0; i<HERO->GetPyogukNum(); ++i)
			m_pPyogukBtn[i]->SetActive(TRUE);
	}
	else
	{
		for(int i=0; i<MAX_PYOGUKLIST_NUM; ++i)
			m_pPyogukBtn[i]->SetActive(FALSE);
	}

}

void CPyogukDialog::MoveItem(MSG_ITEM_MOVE_SYN* pInfo)
{
}

void CPyogukDialog::SelectedBtnPushDown(int i)
{
	for(int n=0; n<MAX_PYOGUKLIST_NUM; ++n)
	{
		if(n == i)
			m_pPyogukBtn[n]->SetPush(TRUE);
		else
			m_pPyogukBtn[n]->SetPush(FALSE);
	}		
}

BOOL CPyogukDialog::FakeMoveIcon(LONG x, LONG y, cIcon * icon)
{
	if(m_CurPyogukMode >= ePyogukMode_NoWare)
	{
		char buf[128];
		sprintf(buf, "CurPyogukMode : %d", m_CurPyogukMode);
		ASSERTMSG(0,buf);
		return FALSE;
	}
	return m_PyogukItemDlg[m_CurPyogukMode-1]->FakeMoveIcon(x,y,icon);
}


BOOL CPyogukDialog::AddItem(ITEMBASE* pItemInfo)
{
	int Num = GetPyogukNum(pItemInfo->Position);
	return m_PyogukItemDlg[Num]->AddItem(pItemInfo);
}

BOOL CPyogukDialog::AddItem(CItem* pItem)
{	
	int Num = GetPyogukNum(pItem->GetPosition());
	return m_PyogukItemDlg[Num]->AddItem(pItem);
}

BOOL CPyogukDialog::DeleteItem(POSTYPE Pos,CItem** ppItem)
{
	int Num = GetPyogukNum(Pos);
	return m_PyogukItemDlg[Num]->DeleteItem(Pos, ppItem);
}

void CPyogukDialog::DeleteAllPyogukItem()
{
	for(POSTYPE i=0; i<TABCELL_PYOGUK_NUM; ++ i)
	{
		for(int j=0; j<MAX_PYOGUKLIST_NUM; ++j)
			m_PyogukItemDlg[j]->DeleteItem(TP_PYOGUK_START+i+j*TABCELL_PYOGUK_NUM, NULL);
	}
}

int CPyogukDialog::GetPyogukNum(POSTYPE absPos)
{
	return ( absPos - TP_PYOGUK_START ) / TABCELL_PYOGUK_NUM;
}

/*
void CPyogukDialog::SetPyogukItem(SEND_PYOGUK_ITEM_INFO* pInfo)
{
	// taiyo 救静烙
	return;

	for(int i=0;i<pInfo->wCount;++i)
	{
		if( pInfo->PyogukItem[i].dwDBIdx != 0 )
		{
			int Num = (pInfo->PyogukItem[i].Position-TP_PYOGUK_START)/TABCELL_PYOGUK_NUM;
			m_PyogukItemDlg[Num]->AddItem(&pInfo->PyogukItem[i]);
		}
	}
	char temp[50] = {0,};
	sprintf(temp,"%14u", pInfo->money);
	m_pMoney->SetStaticText(temp);

}
*/


void CPyogukDialog::SetPyogukMoney(DWORD Money)
{
	m_pMoney->SetStaticText( AddComma( Money ) );
}

CItem * CPyogukDialog::GetItemForIdx(POSTYPE absPos)
{
	if(TP_PYOGUK_START <= absPos && absPos < TP_PYOGUK_END)
	{
		int num = GetPyogukNum(absPos);
		return (CItem *)m_PyogukItemDlg[num]->GetIconForIdx(absPos-TP_PYOGUK_START-TABCELL_PYOGUK_NUM*num);
	}
	else
		return NULL;
}

void CPyogukDialog::SetActive( BOOL val )
{
	if( m_bDisable ) return;

	if(val == FALSE && m_PyogukItemDlg[0] != NULL)
	{
		for(int i=0; i<TAB_PYOGUK_NUM; ++i)
			m_PyogukItemDlg[i]->SetActive(val);
	}
	if( val == FALSE)
	{
		if( HERO->GetState() == eObjectState_Deal)
			OBJECTSTATEMGR->EndObjectState(HERO, eObjectState_Deal);

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

		PyoGukMsgBoxClr();
	}
	cDialog::SetActive(val);
}

void CPyogukDialog::SetDividMsg( CItem* pFromItem, POSTYPE ToPos )
{
	BYTE FromIdx = ITEMMGR->GetTableIdxForAbsPos( pFromItem->GetPosition() );
	if(FromIdx >= eItemTable_Max) return;

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

	m_divideMsg.Category			= MP_ITEM;
	m_divideMsg.Protocol			= MP_ITEM_DIVIDE_SYN;
	m_divideMsg.dwObjectID			= HEROID;
	m_divideMsg.FromPos				= pFromItem->GetPosition();
	m_divideMsg.FromDur				= pFromItem->GetDurability();
	m_divideMsg.ToPos				= ToPos;
	m_divideMsg.ToDur				= 0;
	m_divideMsg.wItemIdx			= pFromItem->GetItemIdx();
}

void CPyogukDialog::SetSelectedPyoguk(BYTE PyogukNum)
{	
	m_PyogukNum = PyogukNum;
	SelectedBtnPushDown(PyogukNum);
}

void CPyogukDialog::FakeGeneralItemMove( POSTYPE ToPos, CItem * pFromItem, CItem * pToItem)
{
	int Num = GetPyogukNum(ToPos);
	m_PyogukItemDlg[Num]->FakeGeneralItemMove(ToPos, pFromItem, pToItem);
}

BOOL CPyogukDialog::CanBuyPyoguk()
{
	BYTE pyoguknum = HERO->GetPyogukNum();
	if(pyoguknum >= TAB_PYOGUK_NUM)
	{
		ASSERT(0);
		return FALSE;
	}
	
	if(HERO->GetMoney() < m_PyogukListInfo.Pyoguk[HERO->GetPyogukNum()].BuyPrice)
		return FALSE;
	return TRUE;
}

void CPyogukDialog::PyoGukMsgBoxClr()
{
	cMsgBox * pMsgBox = (cMsgBox*)WINDOWMGR->GetWindowForID(MBI_PYOGUKBUY);
	if(pMsgBox)
		WINDOWMGR->AddListDestroyWindow(pMsgBox);
}

⌨️ 快捷键说明

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