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

📄 kyunggongmanager.cpp

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

#include "stdafx.h"
#include "KyungGongManager.h"

#ifdef _MAPSERVER_
#include "UserTable.h"
#include "Player.h"
#include "..\[CC]Header\GameResourceStruct.h"
#else
#include "ObjectManager.h"
#include "Hero.h"
#include "Item.h"
#endif

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

CKyungGongManager::CKyungGongManager()
{
	m_InfoTable.Initialize(16);
}

CKyungGongManager::~CKyungGongManager()
{

}

void CKyungGongManager::Init()
{	
	CMHFile file;
#ifdef _FILE_BIN_
	if(file.Init("Resource/KyungGongInfo.bin","rb") == FALSE)
		return;
#else
	if(file.Init("Resource/KyungGongInfo.txt","r") == FALSE)
		return;
#endif
	while(1)
	{
		if(file.IsEOF() != FALSE)
			break;
		CKyungGongInfo* pKGInfo = new CKyungGongInfo;
		pKGInfo->Init(&file);

		ASSERT(m_InfoTable.GetData(pKGInfo->GetKyungGongIdx()) == FALSE);
		m_InfoTable.Add(pKGInfo,pKGInfo->GetKyungGongIdx());
	}
}
void CKyungGongManager::Release()
{
	CKyungGongInfo* pKGInfo;
	m_InfoTable.SetPositionHead();
	while(pKGInfo = m_InfoTable.GetData())
	{
		delete pKGInfo;
	}
	m_InfoTable.RemoveAll();
}

CKyungGongInfo* CKyungGongManager::GetKyungGongInfo(WORD idx)
{
	CKyungGongInfo* p = m_InfoTable.GetData(idx);
	ASSERT(p);
	return p;
}

BOOL CKyungGongManager::IsSetableKyungGong(PLAYERTYPE* pHero,ITEMTYPE* pItem)
{
#ifdef _MAPSERVER_
	const ITEM_INFO* pInfo = pItem;
#else
	const ITEM_INFO* pInfo = pItem->GetItemInfo();
#endif
	
	if(pInfo->LimitLevel > pHero->GetLevel())
		return FALSE;

	// 辟仿.刮酶,缴钙,眉仿
	if(pInfo->LimitGenGol > pHero->GetGenGol())
		return FALSE;
	if(pInfo->LimitMinChub > pHero->GetMinChub())
		return FALSE;
	if(pInfo->LimitSimMek > pHero->GetSimMek())
		return FALSE;
	if(pInfo->LimitCheRyuk > pHero->GetCheRyuk())
		return FALSE;

	CKyungGongInfo* pKGInfo = GetKyungGongInfo(pInfo->MugongNum);
	if(pKGInfo == NULL)
		return FALSE;
	if(pKGInfo->GetKyungGongIdx() <= pHero->GetKyungGongGrade())		// 抗傈 版傍栏肺绰 倒酒哎荐 绝促.
		return FALSE;
	
	return TRUE;
}

void CKyungGongManager::SetKyungGong(PLAYERTYPE* pHero,WORD KyungGongIdx)
{
	ASSERT(GetKyungGongInfo(KyungGongIdx));
	pHero->SetKyungGongGrade(KyungGongIdx);

#ifdef _MAPSERVER_
	MSG_WORD msg;
	msg.Category = MP_KYUNGGONG;
	msg.Protocol = MP_KYUNGGONG_CHANGE_NOTIFY;
	msg.wData = KyungGongIdx;
	pHero->SendMsg(&msg,sizeof(msg));	
#endif
}

void CKyungGongManager::NetworkMsgParse(BYTE Protocol,void* pMsg)
{
#ifdef _MAPSERVER_
#else
	switch(Protocol) {
	case MP_KYUNGGONG_CHANGE_NOTIFY:
		{
			MSG_WORD* pmsg = (MSG_WORD*)pMsg;
			HERO->SetKyungGongGrade(pmsg->wData);
		}
		break;
	}
#endif
}

⌨️ 快捷键说明

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