#include "stdafx.h" #include #include #include #include #include #include #include #include #include "CampShopDB.h" CCampShopDB::CCampShopDB(CDBComponent& DBComponent, const CampInfoDB& CampInfo) : CCampDB(DBComponent, CampInfo), m_dwItemContainerSize(0), m_cItemNum(0), m_dwTempSafe(0), m_cTax(0) { std::fill_n(m_aryItemContainer, int(CampShopInfoDB::MAX_CONTAINER_SIZE), 0); } CCampShopDB::~CCampShopDB() { } Siege::eReturn CCampShopDB::Process() { if (m_cSiegeCount >= Siege::CAMP_SHOP_TRANSFER_COUNT) { Guild::CGuild* lpGuild = Guild::CGuildDBMgr::GetInstance().GetGuild(m_dwGID); if (NULL != lpGuild) { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ¸Þ¼¼Áö Àü¼Û PktCampMessage pktCampMessage; ::memset(&pktCampMessage, 0, sizeof(PktCampMessage)); // ±æµå ¿ä»õ »óÁ¡ ¼¼±Ý ¼öÀÍ±Ý È¹µæ // ¸Þ¼¼Áö Á¾·ù, Á¸ ¹øÈ£, °øÁö ¾Æ´Ô, ¼öÀÍ±Ý pktCampMessage.m_cMsgCmd = PktCampMessage::MSGCMD_SHOP_GAIN_TAX; pktCampMessage.m_dwCampID = GetCampID(); pktCampMessage.m_dwGID = GetGID(); pktCampMessage.m_cZone = GetZone(); pktCampMessage.m_bNotify = false; pktCampMessage.m_nValue1 = m_dwTempSafe; if (PacketWrap::WrapHeader(reinterpret_cast(&pktCampMessage), sizeof(PktCampMessage), CmdCampMessage, 0, PktBase::NO_SERVER_ERR)) { DBAgent::CGameDispatch::GetDispatchTable().Process(CSendPacketAllServer( reinterpret_cast(&pktCampMessage), sizeof(PktCampMessage), CmdCampMessage)); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// SendCampCmd(PktCampCmd::CAMP_SHOP_GAIN_TAX, m_dwTempSafe); DETLOG3(g_Log, "GID:%10u / CurrentGuildGold:%u / TempSafeGold:%u / ±æµå ¿ä»õ »óÁ¡ : ±×µ¿¾È ¸ðÀÎ ¼öÀͱÝÀ» ±æµå ¿ä»õ¿¡ ÀÔ±ÝÇÕ´Ï´Ù", lpGuild->GetGID(), lpGuild->GetGold(), m_dwTempSafe); lpGuild->AddGold(m_dwTempSafe); m_dwTempSafe = 0; SetSiegeCount(0); DBComponent::CastleDB::UpdateCampSiegeCount(m_DBComponent, GetCampID(), GetSiegeCount()); } } return CCampDB::Process(); } bool CCampShopDB::UpdateCampInfo(const char* aryItemBuffer, unsigned long dwItemBufferSize, unsigned char cItemNum, unsigned long dwTempSafe, unsigned char cTax) { return DBComponent::CastleDB::UpdateCampShopInfo(m_DBComponent, GetCampID(), aryItemBuffer, dwItemBufferSize, cItemNum, dwTempSafe, cTax); } bool CCampShopDB::SerializeOut(char* szBuffer_Out, unsigned short& usBufferSize_Out, unsigned long& dwCID_Out) { if (true == CCampDB::SerializeOut(szBuffer_Out, usBufferSize_Out, dwCID_Out)) { char* lpBuffer = szBuffer_Out + usBufferSize_Out; if (NULL == lpBuffer) { return false; } // ±æµå ¿ä»õ »óÁ¡ Á¤º¸ CampShopInfo* lpCampShopInfo = reinterpret_cast(lpBuffer); lpCampShopInfo->m_dwTempSafe = m_dwTempSafe; lpCampShopInfo->m_cTax = m_cTax; lpCampShopInfo->m_dwBufferSize = m_dwItemContainerSize; lpCampShopInfo->m_cItemNum = m_cItemNum; unsigned short wSize = static_cast(m_dwItemContainerSize + sizeof(unsigned long) * m_cItemNum); // ¾ÆÀÌÅÛ ¹öÆÛ char* lpItemBuffer = reinterpret_cast(lpCampShopInfo + 1); std::copy(m_aryItemContainer, m_aryItemContainer + wSize, lpItemBuffer); usBufferSize_Out += sizeof(CampShopInfo) + wSize; return true; } return false; }