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

📄 shopdata.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
字号:
// ShopData.cpp: implementation of the CShopData class.
//
//////////////////////////////////////////////////////////////////////

#include "ShopData.h"
#include "GameMsg.h"

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

CShopData::CShopData()
{
	m_setShopData.clear();
	this->Create();
}

CShopData::~CShopData()
{
	this->Destroy();
}

//-------------------------------------------------------------------

BOOL CShopData::GetItemList(OBJID idShop, DEQUE_ITEM& setItem, char* pszName, int& nType)
{
	if(idShop == ID_NONE)
	{
		g_objGameMsg.AddMsg("GetItemList ERROR ID=ID_NONE!");
		return false;
	}
	int nAmount = setItem.size();
	int i = 0;
	for(i = nAmount-1; i >= 0; i --)
	{
		CItem* pItem = setItem[i];
		SAFE_DELETE(pItem);
	}
	setItem.clear();

	ShopDataInfo* pInfo = NULL;
	nAmount = m_setShopData.size();
	for(i = 0; i < nAmount; i++)
	{
		ShopDataInfo* pMyInfo = m_setShopData[i];
		if(pMyInfo && pMyInfo->idShop == idShop)
		{
			pInfo = pMyInfo;
			break;
		}
	}

	if(!pInfo)
	{
		char szMsg[128];
		sprintf(szMsg, "Cannot found Shop,ID=%u!", idShop);
		g_objGameMsg.AddMsg(szMsg);
		return false;
	}
	nType = pInfo->nType;
	strcpy(pszName, pInfo->szName);
	for(i = 0; i < pInfo->dwItemAmount; i++)
	{
		OBJID* pCurrentId = pInfo->pidItem+i;
		CItem* pItem = new CItem;
		MYASSERT(pItem);
		if(!pItem->Create(96120059, *pCurrentId))
		{
			char szMsg[128];
			sprintf(szMsg, "create item for shop error,IdType=%u!", *pCurrentId);
			g_objGameMsg.AddMsg(szMsg);
			SAFE_DELETE(pItem);
			return false;
		}
		setItem.push_back(pItem);
	}
	return true;
}

//-------------------------------------------------------------------

void CShopData::Create()
{
	char szShopFile[]="ini/Shop.dat";
	FILE* fp = fopen(szShopFile, "rb");
	if(!fp)
	{
		char szMsg[128];
		sprintf(szMsg, "open shop file %s error!", szShopFile);
		g_objGameMsg.AddMsg(szMsg);
		return;
	}
	
	// get Amount ...
	DWORD dwAmount;

	fread(&dwAmount, sizeof(DWORD), 1, fp);

	// get Shopdata
	for(DWORD i = 0; i < dwAmount; i ++)
	{
		ShopDataInfo* pInfo = new ShopDataInfo;
		MYASSERT(pInfo);
		// get shop ID
		fread(&pInfo->idShop, sizeof(OBJID), 1, fp);
		// get shop name
		fread(pInfo->szName, sizeof(char), _MAX_NAMESIZE, fp);
		// get shop type
		fread(&pInfo->nType, sizeof(int), 1, fp);
		// get id amount
		fread(&pInfo->dwItemAmount, sizeof(DWORD), 1, fp);
		// create id buf
		pInfo->pidItem = new OBJID[pInfo->dwItemAmount];
		fread(pInfo->pidItem, sizeof(OBJID), pInfo->dwItemAmount, fp);
		m_setShopData.push_back(pInfo);
	}

	fclose(fp);
}

//-------------------------------------------------------------------

void CShopData::Destroy()
{
	int nAmount = m_setShopData.size();
	for(int i = 0; i < nAmount; i++)
	{
		ShopDataInfo* pInfo = m_setShopData[i];
		delete[] pInfo->pidItem;
		SAFE_DELETE(pInfo);
	}
	m_setShopData.clear();
}

//-------------------------------------------------------------------

⌨️ 快捷键说明

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