mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-11-15 08:17:13 +00:00
refactor(component): proximity monitor and movement AI load their own rows
The ProximityMonitorComponent row's radii and the MovementAIComponent row (with the level's wanderRadius over it) move out of Entity::Initialize into each component's LoadDataFromTemplate / LoadConfigData. Same components and bytes for every LOT. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
#include "ProximityMonitorComponent.h"
|
||||
#include "CDClientManager.h"
|
||||
#include "CDProximityMonitorComponentTable.h"
|
||||
#include "GameMessages.h"
|
||||
#include "dZoneManager.h"
|
||||
#include "ControllablePhysicsComponent.h"
|
||||
@@ -17,6 +19,22 @@ ProximityMonitorComponent::ProximityMonitorComponent(Entity* parent, const int32
|
||||
RegisterMsg(&ProximityMonitorComponent::OnGetObjectReportInfo);
|
||||
}
|
||||
|
||||
// The ProximityMonitorComponent row's radii, "small,large" (one value, as LOT 9833's "4", is both): the rocket
|
||||
// launch radii
|
||||
void ProximityMonitorComponent::LoadDataFromTemplate() {
|
||||
if (m_ComponentID <= 0) return;
|
||||
const auto componentID = m_ComponentID;
|
||||
const auto proxCompData = CDClientManager::GetTable<CDProximityMonitorComponentTable>()->Query([componentID](const CDProximityMonitorComponent& entry) { return (entry.id == componentID); });
|
||||
if (proxCompData.empty()) return;
|
||||
|
||||
const auto radii = GeneralUtils::SplitString(proxCompData[0].Proximities, ',');
|
||||
const auto small = radii.empty() ? std::nullopt : GeneralUtils::TryParse<int32_t>(radii[0]);
|
||||
const auto large = radii.size() > 1 ? GeneralUtils::TryParse<int32_t>(radii[1]) : small;
|
||||
if (!small || !large) return;
|
||||
SetProximityRadius(*small, "rocketSmall");
|
||||
SetProximityRadius(*large, "rocketLarge");
|
||||
}
|
||||
|
||||
ProximityMonitorComponent::~ProximityMonitorComponent() {
|
||||
for (const auto& en : m_ProximitiesData) {
|
||||
if (!en.second) continue;
|
||||
|
||||
Reference in New Issue
Block a user