mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-11-15 16:27:14 +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>
41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
#ifndef __DONATIONVENDORCOMPONENT__H__
|
|
#define __DONATIONVENDORCOMPONENT__H__
|
|
|
|
#include "BaseVendorComponent.h"
|
|
#include "eReplicaComponentType.h"
|
|
|
|
struct ObjectLoadState;
|
|
|
|
class Entity;
|
|
|
|
class DonationVendorComponent final : public BaseVendorComponent {
|
|
public:
|
|
static constexpr eReplicaComponentType ComponentType = eReplicaComponentType::DONATION_VENDOR;
|
|
|
|
// The client's allocator for this type (ObjectLoader2::DoObjectComponentLoad calls it in load order)
|
|
static void Allocator(Entity& entity, ObjectLoadState& state);
|
|
DonationVendorComponent(Entity* parent, const int32_t componentID);
|
|
|
|
void LoadConfigData() override;
|
|
void Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) override;
|
|
uint32_t GetActivityID() {return m_ActivityId;};
|
|
void SubmitDonation(uint32_t count);
|
|
|
|
// AddDonationItem from the player at sysAddr: moves count of the item into their donation inventory.
|
|
void AddDonationItem(const SystemAddress& sysAddr, LWOOBJID itemObjID, uint32_t count);
|
|
|
|
// ConfirmDonationOnPlayer: the player donates everything in their donation inventory to this vendor.
|
|
void ConfirmDonation(Entity& player);
|
|
|
|
private:
|
|
bool m_DirtyDonationVendor = false;
|
|
float m_PercentComplete = 0.0;
|
|
int32_t m_TotalDonated = 0;
|
|
int32_t m_TotalRemaining = 0;
|
|
uint32_t m_ActivityId = 0;
|
|
int32_t m_Goal = 0;
|
|
};
|
|
|
|
|
|
#endif //!__DONATIONVENDORCOMPONENT__H__
|