#pragma once // ================================================================================================ // °¢Á¾ Åë°è°ü·Ã Á¤º¸ ¸ðÀ½ // ================================================================================================ #include class GameStatisticsData { public: VOID Initialize() { m_StatisticsManager.Init(); m_ui64TotalGetMoney = 0; m_ui64TotalLoseMoney = 0; m_ui64TotalUserMoney = 0; m_ui64WarehouseGetMoney = 0; m_ui64WarehouseLoseMoney = 0; m_ui64WarehouseUserMoney = 0; m_usJackpotCnt = 0; m_ui64JackpotMoney = 0; } public: //==================================================================================================== // // //---------------------------------------------------------------------------------------------------- // Common/StatisticsManager¿¡ °ü·ÃÇÑ Ã³¸® ·çƾµé // // // º¯°æµÈ Åë°è(_WHATTHEHELL_STATISTICS_CHANGE_20060621)¿¡ ¸ÂÃá ÅëÈ­·® Åë°è inline VOID AddStatistics( eSTATISTICS_TYPE etype, ULONGLONG& ui64Statistics ) { m_StatisticsManager.PlusStatisticType( etype, ui64Statistics ); } inline VOID ClearStatistics( eSTATISTICS_TYPE etype ) { m_StatisticsManager.ClearStatisticType( etype ); } inline VOID ClearAllStatistics() { m_ui64TotalUserMoney = 0; m_ui64WarehouseUserMoney = 0; for( DWORD dwtype = eSTATISTIC_MONEY_CIRCULATION ; dwtype < eSTATISTIC_MAX ; ++dwtype ) { m_StatisticsManager.ClearStatisticType( (eSTATISTICS_TYPE)dwtype ); } } inline ULONGLONG GetStatisticsType( eSTATISTICS_TYPE etype ) { return m_StatisticsManager.GetStatisticType( etype ); } // // //---------------------------------------------------------------------------------------------------- // // ÅëÈ­·® // inline VOID SetAveMoney( ULONGLONG& ui64UserMoney, ULONGLONG& ui64WarehouseMoney ) { m_ui64TotalUserMoney = ui64UserMoney; m_ui64WarehouseUserMoney = ui64WarehouseMoney; } inline VOID SetMoney( ULONGLONG& ui64Get, ULONGLONG& ui64Lose, ULONGLONG& ui64User ) { // ¾òÀºµ·°ú ÀÒÀº µ·Àº WOPS¿¡¼­ ´Þ¶ó°í ÇÒ ¶§±îÁö ½×¾Æ µ×´Ù°¡ ´Þ¶ó°í Çϸé Áָ鼭 ÃʱâÈ­ÇÑ´Ù m_ui64TotalGetMoney = ( m_ui64TotalGetMoney < (ULLONG_MAX - ui64Get) ) ? m_ui64TotalGetMoney + ui64Get : ULLONG_MAX ; m_ui64TotalLoseMoney = ( m_ui64TotalLoseMoney < (ULLONG_MAX - ui64Lose) ) ? m_ui64TotalLoseMoney + ui64Lose : ULLONG_MAX ; m_ui64TotalUserMoney = ui64User; } inline ULONGLONG GetTotalGetMoney() { return m_ui64TotalGetMoney; } inline ULONGLONG GetTotalLoseMoney() { return m_ui64TotalLoseMoney; } inline ULONGLONG GetAveUserMoney() { return m_ui64TotalUserMoney; } // // //---------------------------------------------------------------------------------------------------- // // â°í ÅëÈ­·® // inline VOID SetWarehouseMoney( ULONGLONG& ui64Get, ULONGLONG& ui64Lose, ULONGLONG& ui64User ) { m_ui64WarehouseGetMoney = ( m_ui64WarehouseGetMoney < (ULLONG_MAX - ui64Get) ) ? m_ui64WarehouseGetMoney + ui64Get : ULLONG_MAX ; m_ui64WarehouseLoseMoney = ( m_ui64WarehouseLoseMoney < (ULLONG_MAX - ui64Lose) ) ? m_ui64WarehouseLoseMoney + ui64Lose : ULLONG_MAX ; m_ui64WarehouseUserMoney = ui64User; } inline ULONGLONG GetWarehouseGetMoney() { return m_ui64WarehouseGetMoney; } inline ULONGLONG GetWarehouseLoseMoney() { return m_ui64WarehouseLoseMoney; } inline ULONGLONG GetAveWarehouseMoney() { return m_ui64WarehouseUserMoney; } inline VOID ClearMoney() { m_ui64TotalGetMoney = 0; m_ui64TotalLoseMoney = 0; m_ui64TotalUserMoney = 0; } inline VOID ClearWarehouseMoney() { m_ui64WarehouseGetMoney = 0; m_ui64WarehouseLoseMoney = 0; m_ui64WarehouseUserMoney = 0; } // // //---------------------------------------------------------------------------------------------------- // // ÀèÆÌ°ü·Ã // inline VOID SetJackpotMoney( USHORT& usJackpotCnt, ULONGLONG& ui64JackpotMoney ) { m_usJackpotCnt += usJackpotCnt; m_ui64JackpotMoney += ui64JackpotMoney; } inline VOID GetJackpotInfo( USHORT& usJackpotCnt, ULONGLONG& ui64JackpotMoney ) { usJackpotCnt += m_usJackpotCnt; ui64JackpotMoney += m_ui64JackpotMoney; } inline VOID ClearJackpotMoney() { m_usJackpotCnt = 0; m_ui64JackpotMoney = 0; } private: StatisticsManager m_StatisticsManager; // À¯Àú/â°í º¸À¯ ±Ý¾×À» Á¦¿ÜÇÑ ¸ðµç Åë°è °ü¸®¿ë struct { ULONGLONG m_ui64TotalGetMoney; // ÀÏÁ¤ ½Ã°£ µ¿¾È »ý°Ü³­ µ· ÃѰè ULONGLONG m_ui64TotalLoseMoney; // ÀÏÁ¤ ½Ã°£ µ¿¾È ¾ø¾îÁø µ· ÃѰè ULONGLONG m_ui64TotalUserMoney; // ÇöÀç µ¿Á¢ À¯ÀúµéÀÌ °®°í ÀÖ´Â Æò±Õ ±Ý¾× ULONGLONG m_ui64WarehouseGetMoney; // ÀÏÁ¤ ½Ã°£ µ¿¾È »ý°Ü³­ µ· ÃѰè ULONGLONG m_ui64WarehouseLoseMoney; // ÀÏÁ¤ ½Ã°£ µ¿¾È ¾ø¾îÁø µ· ÃѰè ULONGLONG m_ui64WarehouseUserMoney; // ÇöÀç µ¿Á¢ À¯ÀúµéÀÌ °®°í ÀÖ´Â Æò±Õ ±Ý¾× ULONGLONG m_ui64JackpotMoney; // ÀÏÁ¤ ½Ã°£ µ¿¾È ÀèÆÌ ÅÍÁø ±Ý¾× ÇÕ°è USHORT m_usJackpotCnt; // ÀÏÁ¤ ½Ã°£ µ¿¾È ÀèÆÌ ÅÍÁø Ƚ¼ö }; }; class MSG_MO_RTTG_USERMONEY_ANS; class MSG_MO_RTTG_GAMESTATISTICS_ANS; class GameStatistics { public: // °ÔÀÓ¼­¹öµéÀÇ ÅëÈ­·® ó¸® > OpServer·Î Àü¼ÛÇϱâ À§ÇØ »ç¿ëµÇ¹Ç·Î ÀÎÀÚ¸¦ ÆÐŶÀ¸·Î... // ±¸ Interface -> CheckServerMoney static VOID SendPacket_SumMoneyCirculation( MSG_MO_RTTG_USERMONEY_ANS* pMsgANS ); // ±âŸ Åë°è Áý°è -> ÅëÈ­·®ÀÌ ¾Æ´Ñ ´Ù¸¥ Á¤º¸µé // ±¸ Interface -> CheckStatistics static VOID SendPacket_StatisticsEtcInfo( MSG_MO_RTTG_GAMESTATISTICS_ANS* pMsgANS ); // â°í ÅëÈ­·® <- NOT USED VOID CheckServerWarehouseMoney(); // VOID SendMoneyReq(); private: static VOID MakePacket_SumMoneyCirculation_GatheringInfo( GameStatisticsData* pGameData, MSG_MO_RTTG_USERMONEY_ANS* pMsgANS ); static VOID MakePacket_StatisticsEtcInfo_GatheringInfo( GameStatisticsData* pGameData, MSG_MO_RTTG_GAMESTATISTICS_ANS* pMsgANS ); };