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

📄 purse.cpp

📁 墨香最新私服
💻 CPP
字号:
#include "stdafx.h"

#include "purse.h"
#include "player.h"
#include "Munpa.h"
#include "MapDBMsgParser.h"

CPurse::CPurse()
{
	m_bInit = FALSE;
}

CPurse::~CPurse()
{
}

BOOL CPurse::InitPurse( void* pOwner, MONEYTYPE money, MONEYTYPE max )
{
	/* DB¿¡¼­ Çѹø °¡Á®¿Í ¼ÂÆÃÇÒ¶§ ¿Ü¿£ ÀÓÀÇ·Î Àüü °ªÀ» º¯°æÇÒ ¼ö ¾ø´Ù. 
	   ¿ÜºÎ¿¡¼­ ¿¬»êÇϴ°ÍÀ» ¸·±âÀ§Çؼ­ ó¸®ÇÏ°Ô µÊ. */
	if( m_bInit ) 
	{
		ASSERTMSG(0, "ÃʱâÈ­¸¦ µÎ¹ø ÇÏ·Á ÇÕ´Ï´Ù.");
		return FALSE;
	}

	if( money > max )
	{// ÃʱâÈ­½Ã¿¡ À߸øµÈ ÀÔ·ÂÀ» ÇßÀ» °æ¿ì¿¡ ´ëÇØ¼­ CHECK
		ASSERTMSG(0, "ÃʱâÈ­ ÀԷ°ªÀÌ À߸øµÇ¾ú½À´Ï´Ù.(ÇöÀç±Ý¾× > Á¦Çѱݾ×)");
		return FALSE;
	}

	m_pOwner = pOwner;

	m_dwMoney = money;
	m_dwMaxMoney = max;
	m_bInit = TRUE;

	m_MsgMoney.Category = MP_ITEM;
	m_MsgMoney.Protocol = MP_ITEM_MONEY;

	return TRUE;
}

void CPurse::Release()
{
	m_pOwner = NULL;

	m_bInit = FALSE;
}

void CPurse::SetMoney( MONEYTYPE money, BYTE MsgFlag )
{
	m_dwMoney = money;
}

BOOL CPurse::SetMaxMoney( MONEYTYPE max )
{
	if( !m_bInit ) return FALSE;

	if( m_dwMoney > max )
	{
		ASSERTMSG(0, "À߸øµÈ Á¦ÇÑÄ¡·Î ¼³Á¤Çϰí ÀÖ´Ù.(ÇöÀç±Ý¾× > Á¦Çѱݾ×)");
		return FALSE;
	}
	
	m_dwMaxMoney = max;

	return TRUE;
}

MONEYTYPE CPurse::GetMaxMoney()
{
	return m_dwMaxMoney;
}

/* ½ÇÁ¦ º¯È­·® Return */
MONEYTYPE CPurse::Addition( MONEYTYPE money, BYTE MsgFlag )
{
	if( !m_bInit ) return 0;

	if( m_dwMoney + money > m_dwMaxMoney )		// Á¦ÇÑÄ¡¿¡ ´ëÇÑ MAXó¸® 
	{
		if( m_dwMaxMoney < m_dwMoney )
			return 0;

		money = m_dwMaxMoney - m_dwMoney;
	}

	if( m_dwMoney + money < m_dwMoney )		// ÀÚ·áÇü¿¡ ´ëÇÑ MAXó¸®
		money = MAXMONEY - m_dwMoney;

	SetMoney(m_dwMoney + money, MsgFlag);

	return money;
}

/* ½ÇÁ¦ º¯È­·® Return */
MONEYTYPE CPurse::Subtraction( MONEYTYPE money, BYTE MsgFlag )
{
	if( !m_bInit ) return 0;

	if( !IsEnoughMoney(money) )
		return 0; // ½Çº¯È­·® ¾øÀ½.

	if( m_dwMoney - money > m_dwMoney ) // Ãß°¡ ÀÚ·áÇü¿¡ ´ëÇÑ ¿¡·¯ check
		return 0;

	SetMoney(m_dwMoney - money, MsgFlag);

	return money;
}

BOOL CPurse::IsAdditionEnough( MONEYTYPE AdditionMoney )
{
	if( m_dwMoney + AdditionMoney < m_dwMoney ||
		m_dwMoney + AdditionMoney > m_dwMaxMoney )
		return FALSE;

	return TRUE;
}

// °¨»ê ±Ý¾×°úÀÇ ºñ±³
BOOL CPurse::IsEnoughMoney( MONEYTYPE SubtractionMoney )
{
	if( m_dwMoney >= SubtractionMoney )
		return TRUE;

	return FALSE;
}

void CPurse::RSetMoney( MONEYTYPE money, BYTE flag )
{
	m_dwMoney = money;
}


/////////////////////////////////////////////////////////////////
// °³ÀÎ µ·
/////////////////////////////////////////////////////////////////
void CInventoryPurse::SetMoney( MONEYTYPE money, BYTE MsgFlag )
{
	m_dwMoney = money;

	CPlayer* pPlayer = (CPlayer*)m_pOwner;
	if( !pPlayer ) return;

	pPlayer->MoneyUpdate( m_dwMoney );

	// DB update
	if( MsgFlag != MF_OBTAIN )	//¸ó½ºÅÍ¿¡°Ô ¾ò¾úÀ» °æ¿ì¸¦ Á¦¿ÜÇϰí.
		CharacterHeroInfoUpdate(pPlayer);

	// Client Msg;
	SendMoneyMsg(MsgFlag);
	
/*
	CPlayer* pPlayer = (CPlayer*)m_pOwner;
	if( !pPlayer ) return;

	// DB update
	if( MsgFlag != MF_OBTAIN )	//¸ó½ºÅÍ¿¡°Ô ¾ò¾úÀ» °æ¿ì¸¦ Á¦¿ÜÇϰí.
	{
		m_dwMoney = money;
		pPlayer->MoneyUpdate( m_dwMoney );	
		UpdateCharacterMoney( pPlayer->GetID(), money, MsgFlag );		
	}
	else
	{
		m_dwMoney = money;
		pPlayer->MoneyUpdate( m_dwMoney );
		SendMoneyMsg(MsgFlag);
	}
	*/
}

void CInventoryPurse::RSetMoney( MONEYTYPE money, BYTE flag )
{
	m_dwMoney = money;

	SendMoneyMsg( flag );
}

void CInventoryPurse::SendMoneyMsg(BYTE flag)
{
	CPlayer* pPlayer = (CPlayer*)m_pOwner;
	if( !pPlayer ) return;

	// Client¿¡°Ô º¸³¾ ¸Þ¼¼Áö.. (Ãß°¡ Çϼ¼¿è!!)
	switch( flag )
	{
	case MF_NOMAL:
		{
			m_MsgMoney.dwObjectID = pPlayer->GetID();
			m_MsgMoney.dwTotalMoney = m_dwMoney;
			m_MsgMoney.bFlag = flag;

			pPlayer->SendMsg(&m_MsgMoney, sizeof(m_MsgMoney));
		}
		break;
	case MF_OBTAIN:
		{
			m_MsgMoney.dwObjectID = pPlayer->GetID();
			m_MsgMoney.dwTotalMoney = m_dwMoney;
			m_MsgMoney.bFlag = flag;

			pPlayer->SendMsg(&m_MsgMoney, sizeof(m_MsgMoney));
		}
		break;
	case MF_LOST:
		{
			m_MsgMoney.dwObjectID = pPlayer->GetID();
			m_MsgMoney.dwTotalMoney = m_dwMoney;
			m_MsgMoney.bFlag = flag;

			pPlayer->SendMsg(&m_MsgMoney, sizeof(m_MsgMoney));

		}
		break;
	default:
		return;
	}
}


/////////////////////////////////////////////////////////////////
// â°í µ·
/////////////////////////////////////////////////////////////////
void CPyogukPurse::SetMoney( MONEYTYPE money, BYTE MsgFlag )
{
	m_dwMoney = money;
}


/////////////////////////////////////////////////////////////////
// ¹®ÆÄ µ·
/////////////////////////////////////////////////////////////////
void CMunpaWarePurse::SetMoney( MONEYTYPE money, BYTE MsgFlag )
{
	m_dwMoney = money;
	
	CMunpa* pMunpa = (CMunpa*)m_pOwner;
	if( !pMunpa ) return;

	// db Update, Client Msg;
	pMunpa->MoneyUpdate( m_dwMoney );
	SendMoneyMsg(MsgFlag);
}

void CMunpaWarePurse::SendMoneyMsg(BYTE flag)
{
//	CMunpa* pMunpa = (CMunpa*)m_pOwner;
//	if( !pMunpa ) return;
}

⌨️ 快捷键说明

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