mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-16 05:08:21 +00:00
7671cc6865
* CDClient cleanup and optimization - Use static function to get table name - Remove unused GetName function - Replace above function with a static GetTableName function - Remove verbose comments - Remove verbose initializers - Remove need to specify table name when getting a table by name - Remove unused typedef for mac and linux * Re-add unused table Convert tables to singletons - Convert all CDClient tables to singletons - Move Singleton.h to dCommon - Reduce header clutter in CDClientManager
27 lines
1.2 KiB
C++
27 lines
1.2 KiB
C++
#include "FireFirstSkillonStartup.h"
|
|
#include "Entity.h"
|
|
#include "SkillComponent.h"
|
|
#include "CDClientDatabase.h"
|
|
#include "CDObjectSkillsTable.h"
|
|
#include "CDSkillBehaviorTable.h"
|
|
#include "CDClientManager.h"
|
|
|
|
void FireFirstSkillonStartup::OnStartup(Entity* self) {
|
|
auto skillComponent = self->GetComponent<SkillComponent>();
|
|
if (!skillComponent) return;
|
|
|
|
// Get the skill IDs of this object.
|
|
CDObjectSkillsTable* skillsTable = CDClientManager::Instance().GetTable<CDObjectSkillsTable>();
|
|
std::vector<CDObjectSkills> skills = skillsTable->Query([=](CDObjectSkills entry) {return (entry.objectTemplate == self->GetLOT()); });
|
|
|
|
// For each skill, cast it with the associated behavior ID.
|
|
for (auto skill : skills) {
|
|
CDSkillBehaviorTable* skillBehaviorTable = CDClientManager::Instance().GetTable<CDSkillBehaviorTable>();
|
|
CDSkillBehavior behaviorData = skillBehaviorTable->GetSkillByID(skill.skillID);
|
|
|
|
// Should parent entity be null, make the originator self.
|
|
const auto target = self->GetParentEntity() ? self->GetParentEntity()->GetObjectID() : self->GetObjectID();
|
|
skillComponent->CalculateBehavior(skill.skillID, behaviorData.behaviorID, LWOOBJID_EMPTY, false, false, target);
|
|
}
|
|
}
|