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

📄 userweaponskill.cpp

📁 魔域源代码需要的可以学习一下真么这么麻烦啊
💻 CPP
字号:
// UserWeaponSkill.cpp: implementation of the CUserWeaponSkill class.
//
//////////////////////////////////////////////////////////////////////

#include "UserWeaponSkill.h"
#include "I_mydb.h"
#include "Mapgroup.h"
#include "string.h"

//////////////////////////////////////////////////////////////////////
char	szWpSkillTable[] = _TBL_WEAPONSKILL;


//////////////////////////////////////////////////////////////////////
const char SQL_CREATERECORDSET[512]	= "INSERT INTO %s VALUES (%d, %d, %d, %d, %u, %u)";

//-------------------------------------
// static 
MYHEAP_IMPLEMENTATION(CUserWeaponSkill, m_sHeap)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CUserWeaponSkill::CUserWeaponSkill()
{

}

CUserWeaponSkill::~CUserWeaponSkill()
{
	if(m_pRes)
	{
		m_pRes->UpdateRecord();
		m_pRes->Release();
	}
}

//////////////////////////////////////////////////////////////////////
CUserWeaponSkill* CUserWeaponSkill::CreateNew(IRecordset* pRes)
{
	CHECKF(pRes);		// CHECKF相当于ASSERT,只是失败的时候会返回0。paled

	CUserWeaponSkill* pSkill	= new CUserWeaponSkill();
	if (!pSkill)
		return NULL;

	if (!pSkill->Create(pRes))
	{
		pSkill->ReleaseByOwner();
		return NULL;
	}

	return pSkill;
}

//////////////////////////////////////////////////////////////////////
CUserWeaponSkill* CUserWeaponSkill::CreateNew(UserWeaponSkillInfoStruct* pInfo, IRecordset* pDefault)
{
	CHECKF(pInfo);
	
	CUserWeaponSkill* pSkill	= new CUserWeaponSkill();
	if (!pSkill)
		return NULL;

	memcpy(&pSkill->m_Info, pInfo, sizeof(UserWeaponSkillInfoStruct));

	pSkill->m_pRes = pDefault->CreateNewRecord(pInfo->id);
	pSkill->m_pRes->SetDWord("type",		pInfo->nType);
	pSkill->m_pRes->SetDWord("level",		pInfo->ucLevel);
	pSkill->m_pRes->SetDWord("exp",			pInfo->nExp);
	pSkill->m_pRes->SetDWord("old_level",	pInfo->ucOldLev);
	pSkill->m_pRes->SetDWord("owner_id",	pInfo->idowner);
	pSkill->m_pRes->ClearUpdateFlags();

	return pSkill;
}

//////////////////////////////////////////////////////////////////////
CUserWeaponSkill* CUserWeaponSkill::InsertNewRecord(UserWeaponSkillInfoStruct* pInfo, IRecordset* pDefault, OBJID idNew)
{
	CHECKF(pInfo);
	
	CUserWeaponSkill* pSkill	= new CUserWeaponSkill();
	if (!pSkill)
		return NULL;

	if(idNew)
		pInfo->id	= idNew;

	pSkill->m_pRes = pDefault->CreateNewRecord(pInfo->id);
	pSkill->m_pRes->SetDWord("type",		pInfo->nType);
	pSkill->m_pRes->SetDWord("level",		pInfo->ucLevel);
	pSkill->m_pRes->SetDWord("exp",			pInfo->nExp);
	pSkill->m_pRes->SetDWord("owner_id",	pInfo->idowner);
	pSkill->m_pRes->SetDWord("unlearn",		false);
	if(idNew == ID_NONE)
	{
		pSkill->m_pRes->SetDWord("old_level",	pInfo->ucOldLev);
		pInfo->id = pSkill->m_pRes->InsertRecord();
	}
	else
		pSkill->m_pRes->UpdateRecord();

	memcpy(&pSkill->m_Info, pInfo, sizeof(UserWeaponSkillInfoStruct));
	return pSkill;
}

//////////////////////////////////////////////////////////////////////
BOOL CUserWeaponSkill::Create(IRecordset* pRes)
{
	CHECKF(pRes);

	m_pRes = pRes->CreateNewRecord();

	return this->LoadInfo();
}

//////////////////////////////////////////////////////////////////////
BOOL CUserWeaponSkill::LoadInfo(void)
{
	if (!m_pRes) 
		return false;

	// load again?
	if (m_Info.id != ID_NONE)
		return true;

	m_Info.id		= m_pRes->LoadDWord("id");
	m_Info.idowner	= m_pRes->LoadDWord("owner_id");
	m_Info.nExp		= m_pRes->LoadInt("exp");
	m_Info.ucLevel	= m_pRes->LoadInt("level");
	m_Info.ucOldLev	= m_pRes->LoadInt("old_level");
	m_Info.nType	= m_pRes->LoadInt("type");

	if(m_Info.nType == ARROW_SUBTYPE)
		return false;

	return true;
}

/*/////////////////////////////////////////////////////////////////////
BOOL CUserWeaponSkill::CreateNewRecordset(UserWeaponSkillInfoStruct &info, IDatabase* pDb)
{	//INSERT INTO cq_weapon_skill VALUES (...)
	if (!pDb)
		return false;

	info.id	= ID_NONE;

	char szSql[512];
	sprintf(szSql, SQL_CREATERECORDSET, _TBL_WEAPONSKILL, info.nType, info.ucLevel, info.nExp, info.ucOldLev, info.idowner, info.id);

	DEBUG_TRY
	pDb->ExecuteSQL(szSql);
	DEBUG_CATCH("Fatal Database error Database() operate crash in UserWeaponSkill create new recordset.")

	return true;
}*/

//////////////////////////////////////////////////////////////////////
int	CUserWeaponSkill::GetType()
{
	return m_Info.nType;
}

//////////////////////////////////////////////////////////////////////
void CUserWeaponSkill::SetType(int nType, BOOL fUpdate)
{
	m_Info.nType	= nType;
	if (m_pRes)
	{
		m_pRes->SetInt("type", nType);
		if (fUpdate)
			m_pRes->UpdateRecord();
	}
}

//////////////////////////////////////////////////////////////////////
int CUserWeaponSkill::GetLevel()
{
	return m_Info.ucLevel;
}

//////////////////////////////////////////////////////////////////////
void CUserWeaponSkill::SetLevel(int nLevel, BOOL fUpdate)
{
	m_Info.ucLevel	= nLevel;
	if (m_pRes)
	{
		m_pRes->SetInt("level", nLevel);
		if (fUpdate)
			m_pRes->UpdateRecord();
	}
}

//////////////////////////////////////////////////////////////////////
int CUserWeaponSkill::GetExp()
{
	return m_Info.nExp;
}

//////////////////////////////////////////////////////////////////////
void CUserWeaponSkill::SetExp(int nExp, BOOL fUpdate)
{
	m_Info.nExp	= nExp;
	if (m_pRes)
	{
		m_pRes->SetInt("exp", nExp);
		if (fUpdate)
			m_pRes->UpdateRecord();
	}
}

//////////////////////////////////////////////////////////////////////
int CUserWeaponSkill::GetOldLev()
{
	return m_Info.ucOldLev;
}

//////////////////////////////////////////////////////////////////////
void CUserWeaponSkill::SetUnlearn(int nData, BOOL fUpdate)
{
// no memery var	m_Info.ucOldLev	= nOldLev;
	if (m_pRes)
	{
		m_pRes->SetInt("unlearn", nData);
		if (fUpdate)
			m_pRes->UpdateRecord();
	}
}

//////////////////////////////////////////////////////////////////////
void CUserWeaponSkill::SetOldLev(int nOldLev, BOOL fUpdate)
{
	m_Info.ucOldLev	= nOldLev;
	if (m_pRes)
	{
		m_pRes->SetInt("old_level", nOldLev);
		if (fUpdate)
			m_pRes->UpdateRecord();
	}
}

//////////////////////////////////////////////////////////////////////
OBJID CUserWeaponSkill::GetID()
{
	return m_Info.id;
}

//////////////////////////////////////////////////////////////////////
void CUserWeaponSkill::SetID(OBJID id)
{
	m_Info.id	= id;
}

//////////////////////////////////////////////////////////////////////
OBJID CUserWeaponSkill::GetOwnerID()
{
	return m_Info.idowner;
}

//////////////////////////////////////////////////////////////////////
void CUserWeaponSkill::SetOwnerID(OBJID idOwner, BOOL fUpdate)
{
	m_Info.idowner	= idOwner;
	if (m_pRes)
	{
		m_pRes->SetInt("owner_id", idOwner);
		if (fUpdate)
			m_pRes->UpdateRecord();
	}
}

//////////////////////////////////////////////////////////////////////
bool CUserWeaponSkill::DeleteRecord()
{
	return m_pRes->DeleteRecord() != 0;
}

⌨️ 快捷键说明

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