Skip to content

Commit

Permalink
fix: LUP Exhibit component type and use delta compression on serializ…
Browse files Browse the repository at this point in the history
…ation (#1365)

* fix: component type and use delta compression on serialization

* sorry jett, emo made me do it
  • Loading branch information
aronwk-aaron authored Dec 29, 2023
1 parent 1595441 commit 1bdce83
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 56 deletions.
38 changes: 9 additions & 29 deletions dGame/dComponents/LUPExhibitComponent.cpp
Original file line number Diff line number Diff line change
@@ -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;
}
}
37 changes: 10 additions & 27 deletions dGame/dComponents/LUPExhibitComponent.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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;
};

0 comments on commit 1bdce83

Please sign in to comment.