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

📄 resourcemanager.cpp

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

#include "stdafx.h"
#include "ResourceManager.h"


GLOBALTON(CGameResourceManager);

CGameResourceManager::CGameResourceManager()
{
	m_ItemInfoList.Initialize(MAX_ITEM_NUM);
	m_SkillInfoList.Initialize(5000);
	m_KyunggongInfoList.Initialize(50);
	m_AbilityInfoList.Initialize(64);
	m_NpcList.Initialize(50);

	m_MonsterList.Initialize(300);

	m_QuestStringTable.Initialize( 100 );

	m_MapNameTable.Initialize( 100 );
}

CGameResourceManager::~CGameResourceManager()
{
	char* pData = NULL;
	m_MapNameTable.SetPositionHead();
	while( pData = m_MapNameTable.GetData() )
		delete pData;
	m_MapNameTable.RemoveAll();

	CQuestString* pQuestString = NULL;
	m_QuestStringTable.SetPositionHead();
	while( pQuestString = m_QuestStringTable.GetData() )
		delete pQuestString;
	m_QuestStringTable.RemoveAll();

	ITEM_INFO * pItemInfo = NULL;
	m_ItemInfoList.SetPositionHead();
	while(pItemInfo = m_ItemInfoList.GetData())
		delete pItemInfo;
	m_ItemInfoList.RemoveAll();

	SKILLINFO * pSkillInfo = NULL;
	m_SkillInfoList.SetPositionHead();
	while(pSkillInfo = m_SkillInfoList.GetData())
		delete pSkillInfo;
	m_SkillInfoList.RemoveAll();

	KYUNGGONG_INFO * pKInfo = NULL;
	m_KyunggongInfoList.SetPositionHead();
	while(pKInfo = m_KyunggongInfoList.GetData())
		delete pKInfo;
	m_KyunggongInfoList.RemoveAll();

	CAbilityInfo* pAInfo;
	m_AbilityInfoList.SetPositionHead();
	while(pAInfo = m_AbilityInfoList.GetData())
		delete pAInfo;
	m_AbilityInfoList.RemoveAll();

	NPC_LIST* pNInfo;
	m_NpcList.SetPositionHead();
	while(pNInfo = m_NpcList.GetData())
		delete pNInfo;
	m_NpcList.RemoveAll();

	MONSTEREX_LIST* pMInfo;
	m_MonsterList.SetPositionHead();
	while(pMInfo = m_MonsterList.GetData())
	{
		delete pMInfo->AttackIndex;
		delete pMInfo->AttackRate;
		delete pMInfo->SkillInfo;

		delete pMInfo;
	}
	m_MonsterList.RemoveAll();
}

BOOL CGameResourceManager::Init()
{
	if( !LoadExpPoint() )
		return FALSE;

	if( !LoadItemList() )
		return FALSE;

	if( !LoadSkillInfoList() )
		return FALSE;

	if( !LoadKyunggongInfoList() )
		return FALSE;

	if( !LoadAbilityInfoList() )
		return FALSE;

	if( !LoadNpcList() )
		return FALSE;

	if( !LoadMonsterList() )
		return FALSE;

	LoadQuestString();

	LoadMapNameList();

	return TRUE;
}

BOOL CGameResourceManager::LoadExpPoint()
{
	char filename[64];
	CMHFile file;
#ifdef _FILE_BIN_
	sprintf(filename,"Resource/characterExpPoint.bin");	
	if(!file.Init(filename, "rb"))
		return FALSE;
#else
	sprintf(filename,"Resource/characterExpPoint.txt");	
	if(!file.Init(filename, "rt"))
		return FALSE;
#endif

	int idx =0;
	while(1)
	{
		if(idx > MAX_CHARACTER_LEVEL_NUM-1) break;
		if(file.IsEOF())
			break;
		file.GetWord();												// 饭骇
		m_CharacterExpPoint[idx] = file.GetExpPoint();				// 版氰摹
		idx++;
	}

	file.Release();

	return TRUE;	
}


BOOL CGameResourceManager::LoadItemList()
{
	CMHFile file;
#ifdef _FILE_BIN_
	if(!file.Init("Resource/ItemList.bin", "rb"))
		return FALSE;
#else
	if(!file.Init("Resource/ItemList.txt", "rt"))
		return FALSE;
#endif

	ITEM_INFO * pInfo = NULL;
	while(1)
	{
		if(file.IsEOF())
			break;

		ASSERT(!pInfo);
		pInfo = new ITEM_INFO;

		pInfo->ItemIdx = file.GetWord();
		strcpy(pInfo->ItemName, file.GetString());
		pInfo->ItemTooltipIdx = file.GetWord();
		pInfo->Image2DNum = file.GetWord();	
		pInfo->ItemKind = file.GetWord();			
		pInfo->BuyPrice = file.GetDword();			
		pInfo->SellPrice = file.GetDword();			
		pInfo->Rarity = file.GetWord();			
		pInfo->WeaponType = file.GetWord();		
		pInfo->GenGol = file.GetWord();			
		pInfo->MinChub = file.GetWord();			
		pInfo->CheRyuk = file.GetWord();			
		pInfo->SimMek = file.GetWord();			
		pInfo->Life = file.GetDword();			
		pInfo->Shield = file.GetDword();				
		pInfo->NaeRyuk = file.GetWord();			
		pInfo->AttrRegist.SetElement_Val(ATTR_FIRE,file.GetFloat());
		pInfo->AttrRegist.SetElement_Val(ATTR_WATER,file.GetFloat());
		pInfo->AttrRegist.SetElement_Val(ATTR_TREE,file.GetFloat());
		pInfo->AttrRegist.SetElement_Val(ATTR_IRON,file.GetFloat());
		pInfo->AttrRegist.SetElement_Val(ATTR_EARTH,file.GetFloat());
		pInfo->LimitJob = file.GetWord();			
		pInfo->LimitGender = file.GetWord();		
		pInfo->LimitLevel = file.GetLevel();		
		pInfo->LimitGenGol = file.GetWord();		
		pInfo->LimitMinChub = file.GetWord();		
		pInfo->LimitCheRyuk = file.GetWord();		
		pInfo->LimitSimMek = file.GetWord();		
		pInfo->ItemGrade = file.GetWord();			
		pInfo->RangeType = file.GetWord();			
		pInfo->EquipKind = file.GetWord();			
		pInfo->Part3DType = file.GetWord();		
		pInfo->Part3DModelNum = file.GetWord();	
		pInfo->MeleeAttackMin = file.GetWord();	
		pInfo->MeleeAttackMax = file.GetWord();	
		pInfo->RangeAttackMin = file.GetWord();	
		pInfo->RangeAttackMax = file.GetWord();	
		pInfo->CriticalPercent = file.GetWord();	
		pInfo->AttrAttack.SetElement_Val(ATTR_FIRE,file.GetFloat());
		pInfo->AttrAttack.SetElement_Val(ATTR_WATER,file.GetFloat());
		pInfo->AttrAttack.SetElement_Val(ATTR_TREE,file.GetFloat());
		pInfo->AttrAttack.SetElement_Val(ATTR_IRON,file.GetFloat());
		pInfo->AttrAttack.SetElement_Val(ATTR_EARTH,file.GetFloat());
		pInfo->PhyDef = file.GetWord();			
		pInfo->Plus_MugongIdx = file.GetWord();	
		pInfo->Plus_Value = file.GetWord();		
		pInfo->AllPlus_Kind = file.GetWord();		
		pInfo->AllPlus_Value = file.GetWord();		
		pInfo->MugongNum = file.GetWord();			
		pInfo->MugongType = file.GetWord();		
		pInfo->LifeRecover = file.GetWord();		
		pInfo->LifeRecoverRate = file.GetFloat();
		pInfo->NaeRyukRecover = file.GetWord();	
		pInfo->NaeRyukRecoverRate = file.GetFloat();	
		pInfo->ItemType = file.GetWord();
				
		ASSERT(m_ItemInfoList.GetData(pInfo->ItemIdx) == FALSE);
		m_ItemInfoList.Add(pInfo, pInfo->ItemIdx);
		pInfo = NULL;
	}
	file.Release();

	return TRUE;
}


BOOL CGameResourceManager::LoadSkillInfoList()
{
	CMHFile file;
#ifdef _FILE_BIN_
	if(!file.Init("Resource/SkillList.bin","rb"))
		return FALSE;
#else
	if(!file.Init("Resource/SkillList.txt","rt"))
		return FALSE;
#endif

	while(1)
	{
		if(file.IsEOF() != FALSE)
			break;

		SKILLINFO* pInfo = new SKILLINFO;
		
		pInfo->SkillIdx = file.GetWord();
		file.GetString(pInfo->SkillName);
		pInfo->SkillTooltipIdx = file.GetWord();
		pInfo->RestrictLevel = file.GetWord();
		pInfo->LowImage = file.GetInt();
		pInfo->HighImage = file.GetInt();
		pInfo->SkillKind = file.GetWord();
		pInfo->WeaponKind = file.GetWord();
		pInfo->SkillRange = file.GetWord();
		pInfo->TargetKind = file.GetWord();
		pInfo->TargetRange = file.GetWord();
		pInfo->TargetAreaIdx = file.GetWord();
		pInfo->TargetAreaPivot = file.GetWord();
		pInfo->TargetAreaFix = file.GetWord();
		pInfo->MoveTargetArea = file.GetWord();
		pInfo->MoveTargetAreaDirection = file.GetWord();
		pInfo->MoveTargetAreaVelocity = file.GetFloat();
		pInfo->Duration = file.GetDword();
		pInfo->Interval = file.GetWord();
		pInfo->DelaySingleEffect = file.GetWord();	
		pInfo->ComboNum = file.GetWord();
		pInfo->Life = file.GetWord();
		pInfo->BindOperator = file.GetWord();
		pInfo->EffectStartTime = file.GetWord();
		file.GetString();
		file.GetString();
		file.GetString();
		file.GetString();
		file.GetString();
		pInfo->DelayTime = file.GetWord();
		pInfo->FatalDamage = file.GetWord();
		for(int n=0;n<12;++n)
			pInfo->NeedExp[n] = file.GetExpPoint();
		file.GetWord(pInfo->NeedNaeRyuk,12);
		pInfo->Attrib = file.GetWord();
		pInfo->NegativeResultTargetType = file.GetWord();
		pInfo->TieUpType = file.GetWord();
		pInfo->ChangeSpeedType = file.GetWord();
		pInfo->ChangeSpeedRate = file.GetWord();
		pInfo->Dispel = file.GetWord();
		pInfo->PositiveResultTargetType = file.GetWord();
		pInfo->Immune = file.GetWord();
		pInfo->AIObject = file.GetWord();
		pInfo->MineCheckRange = file.GetWord();
		pInfo->MineCheckStartTime = file.GetWord();
		
		pInfo->CounterDodgeKind = file.GetWord();
		file.GetString();
		
		WORD AdditiveAttr;
		WORD temp[12];
		for(n=0;n<6;++n)
		{
			AdditiveAttr = file.GetWord();
			ySWITCH(AdditiveAttr)
			yCASE(0)	file.GetWord(temp,12);
			yCASE(11)	file.GetFloat(pInfo->FirstPhyAttack,12);
			yCASE(12)	file.GetFloat(pInfo->UpPhyAttack,12);
			yCASE(13)	file.GetWord(pInfo->FirstAttAttackMin,12);
			yCASE(14)	file.GetWord(pInfo->FirstAttAttackMax,12);
			yCASE(15)	file.GetWord(pInfo->ContinueAttAttack,12);
			
			yCASE(20)	file.GetFloat(pInfo->CounterPhyAttack,12);
			yCASE(21)	file.GetFloat(pInfo->CounterAttAttack,12);
			yCASE(22)	file.GetFloat(pInfo->UpPhyDefence,12);
			yCASE(23)	file.GetFloat(pInfo->UpAttDefence,12);
			yCASE(24)	file.GetWord(pInfo->UpMaxNaeRyuk,12);
			yCASE(25)	file.GetWord(pInfo->UpMaxLife,12);
			yCASE(26)	file.GetWord(pInfo->ContinueRecoverNaeRyuk,12);
			yCASE(27)	file.GetWord(pInfo->FirstRecoverNaeRyuk,12);
			yCASE(28)	file.GetWord(pInfo->ContinueRecoverLife,12);
			yCASE(29)	file.GetWord(pInfo->FirstRecoverLife,12);
			yCASE(30)	file.GetFloat(pInfo->CounterDodgeRate,12);
			
			yCASE(31)	file.GetFloat(pInfo->CriticalRate,12);
			yCASE(32)	file.GetFloat(pInfo->StunRate,12);
			yCASE(33)	file.GetWord(pInfo->StunTime,12);
			
			
			yCASE(34)	file.GetWord(pInfo->UpMaxShield,12);			
			yCASE(35)	file.GetWord(pInfo->AmplifiedPowerPhy,12);			
			yCASE(36)	file.GetFloat(pInfo->VampiricLife,12);
			yCASE(37)	file.GetFloat(pInfo->VampiricNaeryuk,12);			
			yCASE(38)	file.GetFloat(pInfo->RecoverStateAbnormal,12);
			
			yCASE(39)	file.GetFloat(pInfo->DispelAttackFeelRate,12);
			
			
			yCASE(41)	file.GetWord(pInfo->DownMaxLife,12);			
			yCASE(42)	file.GetWord(pInfo->DownMaxNaeRyuk,12);			
			yCASE(43)	file.GetWord(pInfo->DownMaxShield,12);
			yCASE(44)	file.GetFloat(pInfo->DownPhyDefence,12);			
			yCASE(45)	file.GetFloat(pInfo->DownAttDefence,12);	
			yCASE(46)	file.GetFloat(pInfo->DownPhyAttack,12);
			
			yCASE(47)	file.GetDword(pInfo->SkillAdditionalTime,12);
			yCASE(48)	file.GetWord(pInfo->AmplifiedPowerAtt,12);
			yCASE(49)	file.GetFloat(pInfo->AmplifiedPowerAttRate,12);
			
			yCASE(50)	file.GetFloat(pInfo->FirstAttAttack,12);
			yCASE(51)	file.GetFloat(pInfo->ContinueAttAttackRate,12);
			yENDSWITCH
		}	
		
//		ASSERT(m_SkillInfoList.GetData(pInfo->SkillIdx) == NULL);
		m_SkillInfoList.Add(pInfo, pInfo->SkillIdx);
	}
	
	return TRUE;
}

BOOL CGameResourceManager::LoadKyunggongInfoList()
{
	CMHFile file;
#ifdef _FILE_BIN_
	if(file.Init("Resource/KyungGongInfo.bin","rb") == FALSE)
		return FALSE;
#else
	if(file.Init("Resource/KyungGongInfo.txt","rt") == FALSE)
		return FALSE;
#endif

	while(1)
	{
		if(file.IsEOF() != FALSE)
			break;

		KYUNGGONG_INFO* pInfo = new KYUNGGONG_INFO;

		pInfo->KyungGongIdx = file.GetWord();		//公傍 index
		file.GetString(pInfo->KyungGongName);		//版傍捞抚
		pInfo->NeedNaeRyuk = file.GetWord();		//家葛 郴仿
		pInfo->MoveType = file.GetWord();			//捞悼 鸥涝
		pInfo->Speed = file.GetFloat();			//捞悼 加档
		pInfo->ChangeTime = file.GetWord();		//版傍 葛靛 傈券 矫埃
		pInfo->StartEffect = file.GetWord();		//版傍 荤侩 楷免
		pInfo->IngEffect = file.GetWord();			//版傍 楷免 颇老
		pInfo->EndEffect = file.GetWord();			//版傍 场 楷免

		ASSERT(m_KyunggongInfoList.GetData(pInfo->KyungGongIdx) == FALSE);
		m_KyunggongInfoList.Add(pInfo, pInfo->KyungGongIdx);
	}	

	return TRUE;
}

BOOL CGameResourceManager::LoadAbilityInfoList()
{
	CMHFile file;
#ifdef _FILE_BIN_
	if(!file.Init("./Resource/AbilityBaseInfo.bin", "rb"))

⌨️ 快捷键说明

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