fix: LUP Exhibit component type and use delta compression on serialization (#1365)

* fix: component type and use delta compression on serialization

* sorry jett, emo made me do it
This commit is contained in:
Aaron Kimbrell 2023-12-28 22:24:45 -06:00 committed by GitHub
parent 15954413ae
commit 1bdce8384f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 56 deletions

View File

@ -1,44 +1,24 @@
#include "LUPExhibitComponent.h"
#include "EntityManager.h"
LUPExhibitComponent::LUPExhibitComponent(Entity* parent) : Component(parent) {
m_Exhibits = { 11121, 11295, 11423, 11979 };
m_ExhibitIndex = 0;
m_Exhibit = m_Exhibits[m_ExhibitIndex];
}
LUPExhibitComponent::~LUPExhibitComponent() {
}
void LUPExhibitComponent::Update(float deltaTime) {
m_UpdateTimer += deltaTime;
if (m_UpdateTimer > 20.0f) {
NextExhibit();
NextLUPExhibit();
m_UpdateTimer = 0.0f;
}
}
void LUPExhibitComponent::NextExhibit() {
m_ExhibitIndex++;
if (m_ExhibitIndex >= m_Exhibits.size()) {
m_ExhibitIndex = 0;
}
m_Exhibit = m_Exhibits[m_ExhibitIndex];
void LUPExhibitComponent::NextLUPExhibit() {
m_LUPExhibitIndex++;
m_DirtyLUPExhibit = true;
Game::entityManager->SerializeEntity(m_Parent);
}
void LUPExhibitComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate) {
outBitStream->Write1(); // Dirty flag?
outBitStream->Write(m_Exhibit);
outBitStream->Write(m_DirtyLUPExhibit);
if (m_DirtyLUPExhibit) {
outBitStream->Write(m_LUPExhibits[m_LUPExhibitIndex % m_LUPExhibits.size()]);
if (!bIsInitialUpdate) m_DirtyLUPExhibit = false;
}
}

View File

@ -3,6 +3,9 @@
#include "Component.h"
#include "Entity.h"
#include "eReplicaComponentType.h"
#include <cstdint>
#include <array>
#include "dCommonVars.h"
/**
* Component that handles the LOT that is shown in the LUP exhibit in the LUP world. Works by setting a timer and
@ -11,35 +14,15 @@
class LUPExhibitComponent : public Component
{
public:
inline static const eReplicaComponentType ComponentType = eReplicaComponentType::EXHIBIT;
inline static const eReplicaComponentType ComponentType = eReplicaComponentType::LUP_EXHIBIT;
LUPExhibitComponent(Entity* parent);
~LUPExhibitComponent();
LUPExhibitComponent(Entity* parent) : Component(parent) {};
void Update(float deltaTime) override;
void Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate) override;
/**
* After the timer runs out, this changes the currently exhibited LOT to the next one
*/
void NextExhibit();
void NextLUPExhibit();
private:
/**
* The LOT that's currently on exhibit
*/
LOT m_Exhibit;
/**
* The time since we've last updated the exhibit
*/
float m_UpdateTimer;
/**
* The list of possible exhibits to show
*/
std::vector<LOT> m_Exhibits;
/**
* The current index in the exhibit list
*/
size_t m_ExhibitIndex;
float m_UpdateTimer = 0.0f;
std::array<LOT, 4> m_LUPExhibits = { 11121, 11295, 11423, 11979 };
uint8_t m_LUPExhibitIndex = 0;
bool m_DirtyLUPExhibit = true;
};