#include "stdafx.h" #include "BroadCastSiegeObjectData.h" BroadCastSiege::CSiegeObjectData::CSiegeObjectData() : m_dwCID(0), m_dwUpdateDataFlag(0) { memset( &m_OwershipInfo, 0, sizeof( sOwnerShipInfo ) ); memset( &m_StateInfo, 0, sizeof( sStateInfo ) ); memset( &m_HPInfo, 0, sizeof( sHPInfo ) ); memset( &m_PosInfo, 0, sizeof( sPosInfo ) ); memset( &m_MaterialInfo, 0, sizeof( sMaterialInfo ) ); memset( &m_RiderInfo, 0, sizeof( sRiderInfo ) ); m_PosInfo.m_NetworkPos.Initialize( 0, 0, 0, 0, 0 ); } BroadCastSiege::CSiegeObjectData::~CSiegeObjectData() { } const void BroadCastSiege::CSiegeObjectData::GetRiders( unsigned long* pRiders ) const { std::copy( &m_RiderInfo.m_dwRiderID[0], &m_RiderInfo.m_dwRiderID[Siege::AIRSHIP_RIDER_NUM ], pRiders ); } const bool BroadCastSiege::CSiegeObjectData::IsSameRiders( unsigned long* pRiders ) const { for ( int i=0; i 84 byte unsigned long dwUpdateFlag = 0; const char* szDataPos = szData; const int iBufferSize = iBufferSize_InOut; if ( iBufferSize < sizeof(unsigned long) ) { return false; } // Update Flag Àоî¿À±â COPY_AND_ADVANCE_SRC( &dwUpdateFlag, szDataPos, sizeof(unsigned long) ); // Àоî¿Â UpdateFlag·Î, ÇÊ¿äÇÑ µ¥ÀÌÅÍÀÇ ¾çÀ» Ãß»êÇÑ´Ù. µ¥ÀÌÅÍ ¾çÀÌ ºÎÁ·ÇÏ¸é ¿¡·¯¸¦ ¹ñ´Â´Ù. int iEstimateBufferSize = EstimateBufferSize( dwUpdateFlag ); if ( iBufferSize < iEstimateBufferSize ) { // ¹öÆÛ Å©±â°¡ Ãß»êÇÑ ±æÀ̺¸´Ù ÀÛÀº °æ¿ì´Â ½ÇÆÐ. return false; } // µ¥ÀÌÅÍ º¹»ç. ¼ø¼­ ¹Ù²î¸é Á״´Ù!!. m_dwCID = dwCID; if ( dwUpdateFlag & DELTA_OWNERSHIP ) { COPY_AND_ADVANCE_SRC( &m_OwershipInfo, szDataPos, sizeof( sOwnerShipInfo ) ); } if ( dwUpdateFlag & DELTA_STATE ) { COPY_AND_ADVANCE_SRC( &m_StateInfo, szDataPos, sizeof( sStateInfo ) ); } if ( dwUpdateFlag & DELTA_HP ) { COPY_AND_ADVANCE_SRC( &m_HPInfo, szDataPos, sizeof( sHPInfo ) ); } if ( dwUpdateFlag & DELTA_POS ) { COPY_AND_ADVANCE_SRC( &m_PosInfo, szDataPos, sizeof( sPosInfo ) ); } if ( dwUpdateFlag & DELTA_MATERIAL ) { COPY_AND_ADVANCE_SRC( &m_MaterialInfo, szDataPos, sizeof( sMaterialInfo ) ); } if ( dwUpdateFlag & DELTA_RIDER ) { COPY_AND_ADVANCE_SRC( &m_RiderInfo, szDataPos, sizeof( sRiderInfo ) ); } iBufferSize_InOut = static_cast( szDataPos - szData ); // SetDataFlag(Broadcast2nd::CHARDATA_CHANGED); return true; } int BroadCastSiege::CSiegeObjectData::EstimateBufferSize( unsigned long dwUpdateFlag ) { int iEstimateBufferSize = 0; if ( dwUpdateFlag & DELTA_OWNERSHIP ) { iEstimateBufferSize += sizeof( sOwnerShipInfo ); } if ( dwUpdateFlag & DELTA_STATE ) { iEstimateBufferSize += sizeof( sStateInfo ); } if ( dwUpdateFlag & DELTA_HP ) { iEstimateBufferSize += sizeof( sHPInfo ); } if ( dwUpdateFlag & DELTA_POS ) { iEstimateBufferSize += sizeof( sPosInfo ); } if ( dwUpdateFlag & DELTA_MATERIAL ) { iEstimateBufferSize += sizeof( sMaterialInfo ); } if ( dwUpdateFlag & DELTA_RIDER ) { iEstimateBufferSize += sizeof( sRiderInfo ); } return iEstimateBufferSize; }