KSkillManager.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef KSKILLMANAGER_H
  2. #define KSKILLMANAGER_H
  3. #include "KCore.h"
  4. #ifndef _STANDALONE
  5. #include "crtdbg.h"
  6. #endif
  7. #include "KSkills.h"
  8. typedef eSKillStyle eSkillStyle ;
  9. class KSkillManager
  10. {
  11.     friend class KSkill;
  12. typedef struct 
  13. {
  14. int m_nTabFileRowId;
  15. int m_nSkillStyle;
  16. unsigned long m_ulFirstLoadLevel;
  17. unsigned long m_ulMaxSkillLevel;
  18. } TSkillInfo;
  19. private:
  20. TSkillInfo m_SkillInfo[MAX_SKILL];
  21. //TOrdinSkillCommonData * m_pOrdinSkillCommonData[MAX_SKILL];
  22. ISkill* m_pOrdinSkill[MAX_SKILL][MAX_SKILLLEVEL];// 
  23. private:
  24. ISkill* InstanceSkill( unsigned long ulSkillID, unsigned long ulSkillLevel);
  25. int GetSkillStyle(unsigned long ulSkill);
  26.     
  27. public:
  28. KSkillManager();
  29.     // Add By Freeway Chen in 2003.6.6
  30. ~KSkillManager();
  31. BOOL Init();
  32. ISkill *GetSkill(int nSkill, int nSkillLevel);
  33. ISkill *GetSkill(int nSkillID, int nSkillLevel, eSkillStyle eStyle);
  34. unsigned long GetSkillMaxLevel(int nSkill)
  35. {
  36. if (nSkill<= 0 ) return 0;
  37. if (nSkill <= MAX_SKILL)
  38. return m_SkillInfo[nSkill - 1].m_ulMaxSkillLevel;
  39. else
  40. return 0;
  41. };
  42. };
  43. inline int KSkillManager::GetSkillStyle(unsigned long ulSkillID)
  44. {
  45. if (m_SkillInfo[ulSkillID - 1].m_nTabFileRowId > 0)
  46. return m_SkillInfo[ulSkillID - 1].m_nSkillStyle;
  47. else
  48. return -1;
  49. }
  50. inline ISkill * KSkillManager::GetSkill(int nSkillID, int nSkillLevel, eSkillStyle eStyle)
  51. {
  52. ISkill * pSkill = GetSkill(nSkillID, nSkillLevel);
  53. if (pSkill)
  54. {
  55. if (pSkill->GetSkillStyle() == eStyle)
  56. return pSkill;
  57. }
  58. return NULL;
  59. }
  60. inline ISkill *KSkillManager::GetSkill(int nSkillID, int nSkillLevel)
  61. {
  62. // _ASSERT((nSkillID <= MAX_SKILL)    && (nSkillID > 0));
  63. // _ASSERT((nSkillLevel <= MAX_SKILLLEVEL) && (nSkillLevel > 0));
  64. if (nSkillID > MAX_SKILL || nSkillID <= 0 || nSkillLevel <= 0 || nSkillLevel > MAX_SKILLLEVEL)
  65. return NULL;
  66.     unsigned long ulSkillID = nSkillID;
  67.     unsigned long ulSkillLevel = nSkillLevel;
  68.     if (m_pOrdinSkill[ulSkillID - 1][ulSkillLevel - 1])
  69.     { 
  70.         return m_pOrdinSkill[ulSkillID - 1][ulSkillLevel - 1];
  71.     }
  72. return InstanceSkill(ulSkillID , ulSkillLevel);
  73. }
  74. extern KSkillManager g_SkillManager;
  75. #endif