#if defined(PRE_ADD_TOTAL_LEVEL_SKILL) #pragma once #include "Singleton.h" class CDnTotalLevelSkillSystem { public: CDnTotalLevelSkillSystem(DnActorHandle hActor); virtual ~CDnTotalLevelSkillSystem(); enum _TotalLevelSkillType { TotalLevelSkill_Type_None = -1, TotalLevelSkill_Type_Attack = 0, TotalLevelSkill_Type_Defence, TotalLevelSkill_Type_Ability, }; enum _TotalLevelSkillSlotIndex { TotalLevelSkill_Slot_0, TotalLevelSkill_Slot_1, TotalLevelSkill_Slot_2, TotalLevelSkill_Slot_3, //ij½Ã ½½·Ô. TotallevelSkill_Slot_Count, }; enum _ErrorCode { TotalLevelSystem_Error_None = 0, TotalLevelSystem_Error_NotUsable, TotalLevelSystem_Error_NotActivateSlot, TotalLevelSystem_Error_SameSkillType, }; struct _TotalLevelSkillInfo { int m_TotalLevelLimit; int m_ActorLevelLimit; int m_SkillType; int m_SkillTreeSlotIndex; int m_SkillID; }; struct _TotalLevelSkillSlotInfo { int m_LevelLimit; int m_SlotIndex; bool m_isCashSlot; __time64_t m_ExpireDate; }; protected: DnActorHandle m_hActor; //ÅëÇÕ ·¹º§ ½ºÅ³ ¾×ÅÍ ÁÖÀÎ vector m_vlTotalLevelSkillList; std::map m_TotalLevelSkillInfoList; //ÅëÇÕ ·¹º§ ½ºÅ³ Á¤º¸ std::map m_TotalLevelSlotInfoList; //ÅëÇÕ ·¹º§ ½ºÅ³ ½½·Ô Á¤º¸ std::map m_TotalLevelSkillSlotActivate; //ÅëÇÕ ·¹º§ ½½·Ô Ȱ¼ºÈ­ Á¤º¸ std::map m_ActiveTotalLevelSkillList; //ÅëÇÕ ·¹º§ ½ºÅ³ µî·Ï Á¤º¸ int m_TotalLevel; //ÅëÇÕ ·¹º§ ÇöÀç ¼öÄ¡ void RemoveTotalLevelSkillFromList(int slotIndex); public: std::map& GetSlotActivateList() { return m_TotalLevelSkillSlotActivate; } _TotalLevelSkillSlotInfo* GetSlotInfo(int nSlotIndex); vector& GetTotalLevelSkillList() { return m_vlTotalLevelSkillList; } _TotalLevelSkillInfo* GetTotalLevelSkillInfo(int nSkillID); void LoadTotalLevelSkillList(); void LoadTotalLevelSkillSlotInfo(); DnSkillHandle FindTotalLevelSkill( int nSkillTableID ); bool IsTotalLevelSkill( int nSkillTableID ); bool IsActivateSlot(int nSlotIndex); //ÅëÇÕ ·¹º§ ½ºÅ³ µî·Ï.. void AddTotalLevelSkill(int slotIndex, DnSkillHandle hSkill, bool isInitialize = false); //ÅëÇÕ ·¹º§ ½ºÅ³ Á¦°Å void RemoveTotallevelSkill(int slotIndex); //µî·ÏµÈ ÅëÇÕ ·¹º§ ½ºÅ³À» ¹Ýȯ DnSkillHandle GetActivateTotalLevelSkill(int slotIndex); //ÅëÇÕ ·¹º§ ½ºÅ³ ½½·Ô Ȱ¼ºÈ­ ¼³Á¤. void ActivateTotalLevelSkillSlot(int slotIndex, bool bActivate); //ij½¬ ½½·Ô Ȱ¼ºÈ­ ¼³Á¤.. void ActivateTotalLevelSkillCashSlot(int nSlotIndex, bool bActivate, __time64_t tExpireDate); void SetTotalLevel(int totalLevel); int GetTotalLevel() { return m_TotalLevel; } //½ºÅ³ µî·Ï °¡´É ÇÑÁö ÆÇ´Ü. int CanAddSkill(int slotIndex, DnSkillHandle hSkill); //ÅëÇÕ ·¹º§ ½ºÅ³ÀÌ È°¼ºÈ­ µÇ¾ú´ÂÁö.. bool IsUsableSkill(DnSkillHandle hSkill); void UpdateTotalLevel(); void Process(LOCAL_TIME localTime, float fDelta); int FindEmptySlot(); int FindEmptyNormalSlot(int nSkillID); int FindEmptyCashSlot(int nSkillID); int FindEmptySlot(int nSkillID); }; #endif // PRE_ADD_TOTAL_LEVEL_SKILL