#ifndef _RYL_REBALANCE_LIB_REBALANCE_H_ #define _RYL_REBALANCE_LIB_REBALANCE_H_ #pragma once #pragma warning(disable:4800) #include #include #include #include // forward decl. class CSkillMgr; namespace Item { // forward decl. class CItemMgr; } namespace OldItem { // forward decl. class CItemMgr; } namespace RebalanceLib { // forward decl. class CItemChecker; // Key ´Â UID ȤÀº CID // Value ´Â ½ºÅ³ °³¼ö typedef std::map, boost::fast_pool_allocator > > SkillDataMap; // Key ´Â UID ȤÀº CID // Value ´Â Ãß°¡ÇÒ ±Ý¾× typedef std::map, boost::fast_pool_allocator > > GoldDataMap; // ½ºÅ³ Àбâ class CDBReadSkill : public IDBCharSkillProcess { public: CDBReadSkill(SkillDataMap& CIDSkillDataMap, bool bClearSkill = false); virtual ConvertResult operator()(RylDBCommand::CSkillData& charSkillData_InOut); private: SkillDataMap& m_CIDSkillDataMap; bool m_bClearSkill; }; // ³²Àº ½ºÅ³ºÏ ·Î±×·Î ³²±â±â void LogRemainSkillBook(SkillDataMap& SkillDataMap, const char* szHeader); // ³²Àº µ· ·Î±×·Î ³²±â±â void LogRemainGold(GoldDataMap& GoldDataMap, const char* szHeader); // ½ºÅ³ºÏ Á¦°Å ¹× Ä«¿îÆÃ / Àåºñ ÄÁ¹öÆÃ class CDBItemConvert : public IDBCharItemProcess, public IDBCharItemExProcess, public IDBStoreProcess { public: // SkillDataMapÀ» ³ÖÀ¸¸é, ½ºÅ³ºÏÀ» Á¦°ÅÇϰí ÄÁ¹öÆÃÇÑ´Ù. CDBItemConvert( CDBItemSerialMgr& dbItemSerialMgr, Item::CItemMgr& newItemMgr, OldItem::CItemMgr& oldItemMgr, SkillDataMap* lpUIDSkillDataMap, SkillDataMap* lpCIDSkillDataMap, bool bConvertRebalanceItem = true, bool bRenumberingItemUID = true); virtual ConvertResult operator()(RylDBCommand::CCharItem& charItem_InOut); virtual ConvertResult operator()(RylDBCommand::CCharItemEx& charItemEx_InOut); virtual ConvertResult operator()(RylDBCommand::CUnifiedStore1& unifiedStore1_InOut); virtual ConvertResult operator()(RylDBCommand::CUnifiedStore2& unifiedStore2_InOut); // ÄÁÅ×À̳ʸ¦ ÄÁ¹öÆ®ÇÑ´Ù. bool ConvertData(unsigned long dwUID, unsigned long dwCID, CItemChecker* lpItemChecker, const char* szOriginalData, unsigned long dwOriginalSize, char* szChangedData, unsigned long& dwChangedSize_InOut); // 1/2´Ü°è ½ºÅ³ºÏÀ» µ·À¸·Î ¹Ù²ã ÁØ´Ù. static void ChangeSkillBookToGold(SkillDataMap& skillDataMap, GoldDataMap& goldDataMap); // 3/4´Ü°è ½ºÅ³ºÏÀ» ºó ÄÁÅ×À̳ʿ¡ »ðÀÔÇÑ´Ù. static void GiveSkillBook(unsigned long dwUID, unsigned long dwCID, CDBItemSerialMgr& DBItemSerialMgr, SkillBookInfo& skillData, CItemChecker& itemChecker, const char* szPosition, char* szData_InOut, unsigned long& dwDataSize_InOut); private: CDBItemSerialMgr& m_DBItemSerialMgr; Item::CItemMgr& m_newItemMgr; OldItem::CItemMgr& m_oldItemMgr; SkillDataMap* m_lpUIDSkillDataMap; SkillDataMap* m_lpCIDSkillDataMap; bool m_bConvertRebalanceItem; bool m_bRenumberingItemUID; }; // ij¸¯ÅÍ¿¡ µ· ³Ö¾îÁÖ±â class CDBAddCharGold : public IDBCharInfoProcess { public: CDBAddCharGold(GoldDataMap& CIDGoldDataMap); virtual ConvertResult operator()(RylDBCommand::CCharData& charData_InOut); private: GoldDataMap& m_CIDGoldDataMap; }; // ÅëÇÕ¼­¹ö â°í¿¡ µ· ³Ö¾îÁÖ±â class CDBAddUnifiedStoreGold : public IDBStoreProcess { public: CDBAddUnifiedStoreGold(GoldDataMap& UIDGoldDataMap); virtual ConvertResult operator()(RylDBCommand::CUnifiedStore1& unifiedStore1_InOut); virtual ConvertResult operator()(RylDBCommand::CUnifiedStore2& unifiedStore2_InOut); private: GoldDataMap& m_UIDGoldDataMap; }; } #endif