Files
Leviathan/Client/Game/game/GameSystem/SPetSkillMgr.cpp
T
2026-06-01 12:46:52 +02:00

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 );
}