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

📄 itemdata.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
字号:
// ItemData.cpp: implementation of the CItemData class.
//
//////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "ItemData.h"

//---------------------------------------------------------------------
CItemData::CItemData()
{
	m_dwRecordAmount = 0;
	m_pIDIndex = NULL;
	m_fp = NULL;
	char szFilename[]="ini/itemtype.dat";
	m_fp = fopen(szFilename, "rb");
	MYASSERT(m_fp);
	this->CreateIndexTable();
}
//---------------------------------------------------------------------
CItemData::~CItemData()
{
	delete[] m_pIDIndex;
	fclose(m_fp);
}
//---------------------------------------------------------------------
BOOL CItemData::CreateIndexTable()
{
	// 创建索引表
	// 取记录条数
	fread(&m_dwRecordAmount, sizeof(DWORD), 1, m_fp);
	// 为ID索引表分配内存
	m_pIDIndex = new OBJID[m_dwRecordAmount];
	MYASSERT(m_pIDIndex);
	// 读取ID索引
	fread(m_pIDIndex, sizeof(OBJID), m_dwRecordAmount, m_fp);

	return true;
}
//---------------------------------------------------------------------
BOOL CItemData::GetItemTypeInfo(OBJID idType, ItemTypeInfo& infoItemType)
{
	if(!m_pIDIndex)
		return false;
	// 初始化定位信息 -1 为没有找到
	int nLocate = -1;
	// 查找索引表, 当ItemType表超过300时考虑做多级索引
	for(DWORD i = 0; i < m_dwRecordAmount; i++)
	{
		OBJID* pObjID = m_pIDIndex + i;
		if(*pObjID == idType)
		{
			nLocate = i;
		}
	}

	// 看看索引表中有没有
	if(nLocate < 0)
		return false;
	
	// 定位文件指针
	DWORD dwOffset = sizeof(DWORD) + 
						sizeof(OBJID) * m_dwRecordAmount + 
						sizeof(ItemTypeInfo) * nLocate;
	fseek(m_fp, dwOffset, SEEK_SET);

	// 读记录
	fread(&infoItemType, sizeof(ItemTypeInfo), 1, m_fp);
	return true;
}
//---------------------------------------------------------------------
void CItemData::Covert()
{
	char szFilename[]="ini/itemtype.dat";

}

⌨️ 快捷键说明

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