71 lines
1.7 KiB
C++
71 lines
1.7 KiB
C++
#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 );
|
|
} |