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

📄 wantnpcdialog.cpp

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

#include "stdafx.h"
#include "WantNpcDialog.h"
#include "WindowIDEnum.h"
#include "./Interface/cButton.h"
#include "./Interface/cComboBox.h"
#include "./Interface/cStatic.h"
#include "./Interface/cListCtrl.h"
#include "./Interface/cPushupButton.h"
#include "cRitemEx.h"
#include "ChatManager.h"
#include "ObjectStateManager.h"
#include "ObjectManager.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CWantNpcDialog::CWantNpcDialog()
{
	m_type = WT_WANTNPCDIALOG;
	m_WantedOrderType = eWan_Date;
	m_CurPage = 0;
	m_PastPage = 0;
	m_Mode = -1;
	memset(&m_WantedIDX, 0, sizeof(WANTEDTYPE)*WANTUNIT_PER_PAGE);
}

CWantNpcDialog::~CWantNpcDialog()
{

}

void CWantNpcDialog::Linking()
{
	//Çö»ó¼ö¹è¹ü ¸ñ·Ï
	m_pMyWantNpcBtn = (cButton*)GetWindowForID(WANTNPC_MYWANTBTN);
	m_WantNpcCtlListArray[eWantNpcMode_Npc].AddTail(m_pMyWantNpcBtn);
	for(int i=0; i<WANTUNIT_PER_PAGE; ++i)
	{
		m_BuyBtn[i] = (cButton*)GetWindowForID(WANTNPC_BUY1BTN+i);
		m_WantNpcCtlListArray[eWantNpcMode_Npc].AddTail(m_BuyBtn[i]);
	}
	for(i=0; i<MAX_WANTNPC_PAGEBTN; ++i)
	{
		m_WantPageBtn[i] = (cPushupButton*)GetWindowForID(WANTNPC_FRONTLISTBTN+i);
		m_WantNpcCtlListArray[eWantNpcMode_Npc].AddTail(m_WantPageBtn[i]);
	}
	m_pOrderWantNpcCombo = (cComboBox *)GetWindowForID(WANTNPC_LISTORDERCOMBOBOX);
	m_WantNpcCtlListArray[eWantNpcMode_Npc].AddTail(m_pOrderWantNpcCombo);
	m_WantNpcCtlListArray[eWantNpcMode_Npc].AddTail((cStatic *)GetWindowForID(WANTNPC_BUYPRICE));
	
	//³ªÀÇ Çö»ó ¼ö¹è¹ü ¸ñ·Ï
	m_pWantBtn = (cButton*)GetWindowForID(WANTNPC_WANTBTN);
	m_WantNpcCtlListArray[eWantNpcMode_My].AddTail(m_pWantBtn);	
	for(i=0; i<WANTUNIT_PER_PAGE; ++i)
	{
		m_GiveUpBtn[i] = (cButton*)GetWindowForID(WANTNPC_GIVEUP1BTN+i);
		m_WantNpcCtlListArray[eWantNpcMode_My].AddTail(m_GiveUpBtn[i]);
	}
	for(i=0; i<MAX_WANTNPC_PAGEBTN; ++i)
	{
		m_MyWantPageBtn[i] = (cPushupButton*)GetWindowForID(WANTNPC_MYFRONTLISTBTN+i);
		m_WantNpcCtlListArray[eWantNpcMode_My].AddTail(m_MyWantPageBtn[i]);
	}

	//°øÅë
	for(i=0; i<WANTUNIT_PER_PAGE; ++i)
	{
		m_WantChrName[i] = (cStatic*)GetWindowForID(WANTNPC_WANTCHRNAMESTC1+i);
		m_Prize[i] = (cStatic*)GetWindowForID(WANTNPC_PRIZESTC1+i);
		m_VolunteerNum[i] = (cStatic*)GetWindowForID(WANTNPC_VOLUNTEERNUMSTC1+i);
	}
}

BYTE CWantNpcDialog::GetOrderType()
{
	return m_WantedOrderType;
}

void CWantNpcDialog::SetOrderType(BYTE OrderType)
{
	if(OrderType < eWan_Date && OrderType >= eWan_OrderTypeMax)
	{
		ASSERTMSG(0, "Çö»ó¹ü Á¤·Ä ŸÀÔÀÌ ¾ø½À´Ï´Ù. No Sort Type in Wanted List");
		return;
	}
	m_WantedOrderType = OrderType;
}

void CWantNpcDialog::SetWantedList(SEND_WANTNPCLIST* pInfo)
{
	cButton* pBuyGiveUp[WANTUNIT_PER_PAGE];
	memset(&m_WantedIDX, 0, sizeof(WANTEDTYPE)*WANTUNIT_PER_PAGE);
	if(GetMode() == eWantNpcMode_Npc)
	{
		ShowWantPageBtn(pInfo->TotalPage, m_WantPageBtn);
		memcpy(pBuyGiveUp, m_BuyBtn, sizeof(cButton*)*WANTUNIT_PER_PAGE);
	}
	else
	{
		ShowWantPageBtn(pInfo->TotalPage, m_MyWantPageBtn);
		memcpy(pBuyGiveUp, m_GiveUpBtn, sizeof(cButton*)*WANTUNIT_PER_PAGE);
	}
	char Name[64] = {0,};
	char Prize[64] = {0,};
	char VolunNum[64] = {0,};
	char temp1[64] = {0,};
	char temp2[64] = {0,};
	
	for(int i=0; i<WANTUNIT_PER_PAGE; ++i)
	{
		m_WantChrName[i]->SetActive(FALSE);
		m_Prize[i]->SetActive(FALSE);
		m_VolunteerNum[i]->SetActive(FALSE);
		pBuyGiveUp[i]->SetActive(FALSE);
	}

	for(i=0; i<WANTUNIT_PER_PAGE; ++i)
	{		
		if(pInfo->WantNpcList[i].WantedIDX == 0)
			break;
		sprintf(Name, CHATMGR->GetChatMsg(547), pInfo->WantNpcList[i].WantedName);
		m_WantChrName[i]->SetStaticText(Name);
		m_WantChrName[i]->SetActive(TRUE);
		
		sprintf(Prize, CHATMGR->GetChatMsg(548), AddComma(pInfo->WantNpcList[i].Prize));
		m_Prize[i]->SetStaticText(Prize);
		m_Prize[i]->SetActive(TRUE);

		if(pInfo->WantNpcList[i].VolunteerNum > MAX_WANTED_VOLUNTEER)
			pInfo->WantNpcList[i].VolunteerNum = 100;
		sprintf(VolunNum, CHATMGR->GetChatMsg(549), pInfo->WantNpcList[i].VolunteerNum);
		m_VolunteerNum[i]->SetStaticText(VolunNum);
		m_VolunteerNum[i]->SetActive(TRUE);

		m_WantedIDX[i] = pInfo->WantNpcList[i].WantedIDX;
		pBuyGiveUp[i]->SetActive(TRUE);
	}
}

void CWantNpcDialog::ShowWantPageBtn(WORD TotalPage, cPushupButton* pPUBtnArray[])
{
	if(TotalPage == 0)
	{
		for(DWORD i=0; i<MAX_WANTNPC_PAGEBTN; ++i)
			pPUBtnArray[i]->SetActive(FALSE);
		SetCurPage(0);
		return;
	}
		
	DWORD MaxUnit = (TotalPage-1) / MAX_WANTNPC_PAGEUNIT;
	DWORD CurUnit = (GetCurPage()-1) / MAX_WANTNPC_PAGEUNIT;

	int num = GetCurPage()%MAX_WANTNPC_PAGEUNIT;
	if(num == 0)
		num = MAX_WANTNPC_PAGEUNIT;
	SetPushUpBtn(pPUBtnArray, num);

	char buf[3] = {0,};
	DWORD page;
	pPUBtnArray[0]->SetActive(CurUnit != 0);
	for(int i=1; i<=MAX_WANTNPC_PAGEUNIT; ++i)
	{
		page = CurUnit*MAX_WANTNPC_PAGEUNIT + i;
		wsprintf(buf, "%d", page);
		pPUBtnArray[i]->SetText(buf, RGBA_MAKE(255,255,255,255));
		pPUBtnArray[i]->SetActive(page <= TotalPage);
	}
	pPUBtnArray[6]->SetActive(MaxUnit > CurUnit);
}

WANTEDTYPE CWantNpcDialog::GetSelectedWantedIDX(BYTE num)
{
	ASSERT(num >= 0 && num < WANTUNIT_PER_PAGE);
	return m_WantedIDX[num];
}


void CWantNpcDialog::ShowWantMode(int mode)
{
	if(m_Mode == mode)
		return;

	if(m_Mode != -1)
		SetActiveWantMode(m_Mode,FALSE);

	SetActiveWantMode(mode,TRUE);
	m_Mode = mode;
}

void CWantNpcDialog::SetActiveWantMode(int mode,BOOL bActive)
{
	PTRLISTSEARCHSTART(m_WantNpcCtlListArray[mode],cWindow*,pWin)
		pWin->SetActive(bActive);
	PTRLISTSEARCHEND
}

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

	if(val == FALSE)
	{
		if( HERO )
		if( HERO->GetState() == eObjectState_Deal ) 
			OBJECTSTATEMGR->EndObjectState(HERO, eObjectState_Deal);
	}
	cDialog::SetActive(val);
}

void CWantNpcDialog::SetPushUpBtn(cPushupButton* pArray[], int num)
{
	for(int i=0; i<MAX_WANTNPC_PAGEBTN; ++i)
	{
		if(i == num)
			pArray[i]->SetPush(TRUE);
		else
			pArray[i]->SetPush(FALSE);
	}
}

void CWantNpcDialog::SetCurPage(WORD page)
{
	m_CurPage = page;
}

⌨️ 快捷键说明

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