mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-11-14 07:47:13 +00:00
DoObjectComponentLoad walks the client's load order and calls the type's allocator from a table, like ObjectLoader2, instead of one 76-case switch. Components with rules of their own have a static Allocator (the client's LWOxComponent::Allocator); the rest share a registry allocator. The load state moves to ObjectLoadState.h so the allocators can take it. Construction bytes are identical for all 15,962 LOTs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
14 lines
541 B
C++
14 lines
541 B
C++
#include "VendorComponent.h"
|
|
#include "Entity.h"
|
|
#include "ObjectLoadState.h"
|
|
#include "ProximityMonitorComponent.h"
|
|
|
|
void VendorComponent::Allocator(Entity& entity, ObjectLoadState& state) {
|
|
const auto vendorID = state.GetComponentID(eReplicaComponentType::VENDOR);
|
|
// The vendor allocators add a proximity monitor first when there is none
|
|
if (vendorID > 0) {
|
|
if (!entity.HasComponent(eReplicaComponentType::PROXIMITY_MONITOR)) entity.AddComponent<ProximityMonitorComponent>(-1);
|
|
entity.AddComponent<VendorComponent>(vendorID);
|
|
}
|
|
}
|