#include "stdafx.h" #include "SGame.h" #include "SPetSkillMgr.h" #include "SSkillDB.h" #include "SPetDB.h" //#include "SGameMessageUI.h" #include "SGameSystem.h" #include "SPetMgr.h" #include "SkillBase.h" #include "SDebug_Util.h" extern SGameSystem* g_pCurrentGameSystem; SPetSkillMgr::SPetSkillMgr() : SSkillSlotMgr() { } SPetSkillMgr::~SPetSkillMgr() { } void SPetSkillMgr::UpdateSkillList( AR_HANDLE petHandle ) { if( !m_pGame->IsSummonPet( petHandle ) ) return; DATA_PET* PetData = m_pGame->IsLocalPet( petHandle ); if( !PetData ) return; SPetInfoEx& Pet = GetPetDB().Find( PetData->code ); int nSkillTreeID = Pet.getSkillTreeID(); typedef const std::vector< SkillTreeEx > skill_tree_vector_t; skill_tree_vector_t* SkillList = GetSkillTreeDB().GetSkillTreeData( nSkillTreeID ); int skillCount = SkillList ? SkillList->size() : 0; SMSG_SKILL_LIST SkillListMsg; SkillListMsg.dwTime = m_dwTime; SkillListMsg.count = skillCount; SkillListMsg.target = PetData->pet_handle; SkillListMsg.modification_type = SMSG_SKILL_LIST::UPDATE; /// 2011.07.04 - prodongi if( skillCount ) { SkillListMsg.pSkillInfo = new SMSG_SKILL_LIST::SkillInfo[ skillCount ]; skill_tree_vector_t::const_iterator it = SkillList->begin(), end = SkillList->end(); for( unsigned int index = 0 ; it != end; ++it, ++index ) { const SkillTreeEx& SkillSource = *it; SMSG_SKILL_LIST::SkillInfo& SkillInfo = SkillListMsg.pSkillInfo[ index ]; SkillInfo.remain_cool_time = 0; SkillInfo.skill_id = SkillSource.skill_id; SkillInfo.base_skill_level = SkillSource.min_skill_lv; SkillInfo.total_cool_time = 0; SkillInfo.current_skill_level = SkillSource.min_skill_lv; } } m_pGame->ProcMsgAtStatic( &SkillListMsg ); }