#pragma once #include "ClientSingleton.h" #include "SkillData.h" class Player; class SkillMain : public Client::Singleton { private: // Ŭ¶óÀ̾ðÆ®(Hero) °íÀ¯ÀÇ ½ºÅ³µ¥ÀÌÅÍ SkillDataSet m_SkillDataSet; // ½ºÅ³Ã¢À» À§ÇÑ µ¥ÀÌÅÍ »çº» SkillDataSet m_SkillDataSetForTree; // ½ºÅ³ Æ÷ÀÎÆ® (Æ®¸®¿ë) int m_RemainSkillPointForTree; // È÷¾î·Î Player* m_pHero; public: SkillMain(); ~SkillMain(); void SetHero( Player* hero ) { m_pHero = hero; } void ClearSkillData() { m_SkillDataSet.clear(); } void AddSkillData( const SkillData& skill_data ) { m_SkillDataSet.push_back(skill_data); } int AddNewSkillCode( CODETYPE skill_code ); // »õ·Î¿î ½ºÅ³À» ¹è¿ï‹š // basic size_t GetSkillDataCount() { return m_SkillDataSet.size(); } SkillData& GetSkillData( size_t index ) { return m_SkillDataSet[index]; } SkillDataSet& GetSkillDataSet() { return m_SkillDataSet; } // ½ÇÁ¦ Ç÷¹À̾ °¡Áö°í ÀÖ´Â ½ºÅ³ÀÇ ¸ñ·Ï const SkillDataSet& GetSkillDataSet() const { return m_SkillDataSet; } void SetRemainSkillPoint( int remain_point ); int GetRemainSkillPoint(); int GetHeroLevel(); // find int FindPosBySkillClassCode(int skill_class_code) { return m_SkillDataSet.FindPosBySkillClassCode( skill_class_code ); } int FindPosBySkillCode(SLOTCODE skill_code ); SkillData* GetSkillDataBySkillClassCode(CODETYPE skill_class) { return m_SkillDataSet.GetSkillDataBySkillClassCode( skill_class ); } SkillData* GetSkillDataBySkillCode(CODETYPE skill_code) { return m_SkillDataSet.GetSkillDataBySkillCode( skill_code ); } SkillData* GetSkillDataBySlotPosition(int position) { return m_SkillDataSet.GetSkillDataBySlotPosition( position ); } void BlockSkill(DWORD char_class); void UnBlockSkill(); // ½ºÅ³ÀÇ ½Àµæ¿©ºÎ¸¦ °Ë»ç bool CheckSkillLevel(DWORD skill_class, int skill_level, DWORD* skill_name_code); // ½ºÅ³ÀÌ ·¹º§¾÷°¡´É¿©ºÎ¸¦ °»½Å void RefreshLevelupCondition(); // ½ÇÁ¦ º¸À¯ÁßÀÎ ½ºÅ³·¹º§¿¡ ÇØ´çÇÏ´Â Äڵ带 °¡Á®¿Â´Ù int GetRealSkillCode( int skill_code ); // Æ®¸®¿ë µ¥ÀÌÅÍ ¸®¼Â void ResetTreeData(); // »ç¿ë°¡´ÉÇÑ Æ÷ÀÎÆ® int GetRemainUseablePoint() { return m_RemainSkillPointForTree; } SkillDataSet& GetSkillDataSetForTree() { return m_SkillDataSetForTree; } // ½ºÅ³ Æ®¸®¿¡ Ç¥½ÃµÇ°í ÀÖ´Â ½ºÅ³ÀÇ ¸ñ·Ï (½Ã¹Ä·¹ÀÌÅÍÁßÀϰæ¿ì Ç÷¹À̾îÀÇ ½ºÅ³°ú ´Ù¸§) bool LevelupSkill( SkillData* skill_data ); void RefreshActiveSkill( SkillDataSet& skill_set ); // ½ºÅ³ ½Ã¹Ä·¹ÀÌÆ®ÁßÀΰ¡ bool IsSkillSimulated(); // Æ®¸®ÀÇ µ¥ÀÌÅÍ¿Í ¿øº»ÀÇ µ¥ÀÌÅ͸¦ ºñ±³ÇØ »õ·Ó°Ô ½ÀµæÇÑ ½ºÅ³ÀÇ ÄÚµå¸ñ·ÏÀ» ±¸ÇÑ´Ù. bool MakeNewSkillCodeArray( std::vector& code_array ); // ¹è¿ï ¼ö ÀÖ´Â ÃÖ´ë ½ºÅ³·¹º§ÀÇ ½ºÅ³¸ñ·ÏÀ» ¸¸µç´Ù bool MakeMaxSkillCodeArray( std::vector& code_array ); public: static int SkillCode2SkillClassCode( int skill_code ); }; #define xGetSkillData() SkillMain::Instance() #define SKILLCODE2SKILLCLASSCODE(_code) SkillMain::SkillCode2SkillClassCode(_code)