mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-12-26 07:23:34 +00:00
b261e63233
* chore: Change entity and component logic to use bitstream references * merge
78 lines
1.7 KiB
C++
78 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include "dCommonVars.h"
|
|
#include "Entity.h"
|
|
#include "GUID.h"
|
|
#include "Component.h"
|
|
#include "eReplicaComponentType.h"
|
|
|
|
struct MusicCue {
|
|
std::string name;
|
|
uint32_t result;
|
|
float boredomTime;
|
|
|
|
MusicCue(std::string name, float boredomTime = -1.0, uint32_t result = 1){
|
|
this->name = name;
|
|
this->result = result;
|
|
this->boredomTime = boredomTime;
|
|
};
|
|
|
|
void Serialize(RakNet::BitStream& outBitStream);
|
|
};
|
|
|
|
struct MusicParameter {
|
|
std::string name;
|
|
float value;
|
|
|
|
MusicParameter(std::string name, float value = 0.0){
|
|
this->name = name;
|
|
this->value = value;
|
|
}
|
|
|
|
void Serialize(RakNet::BitStream& outBitStream);
|
|
};
|
|
|
|
struct GUIDResults{
|
|
GUID guid;
|
|
uint32_t result;
|
|
|
|
GUIDResults(std::string guidString, uint32_t result = 1){
|
|
this->guid = GUID(guidString);
|
|
this->result = result;
|
|
}
|
|
|
|
void Serialize(RakNet::BitStream& outBitStream);
|
|
};
|
|
|
|
struct MixerProgram {
|
|
std::string name;
|
|
uint32_t result;
|
|
|
|
MixerProgram(std::string name, uint32_t result = 0){
|
|
this->name = name;
|
|
this->result = result;
|
|
}
|
|
|
|
void Serialize(RakNet::BitStream& outBitStream);
|
|
};
|
|
|
|
|
|
class SoundTriggerComponent : public Component {
|
|
public:
|
|
static constexpr eReplicaComponentType ComponentType = eReplicaComponentType::SOUND_TRIGGER;
|
|
explicit SoundTriggerComponent(Entity* parent);
|
|
void Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) override;
|
|
void ActivateMusicCue(const std::string& name, float bordemTime = -1.0);
|
|
void DeactivateMusicCue(const std::string& name);
|
|
|
|
private:
|
|
|
|
std::vector<MusicCue> m_MusicCues;
|
|
std::vector<MusicParameter> m_MusicParameters;
|
|
std::vector<GUIDResults> m_2DAmbientSounds;
|
|
std::vector<GUIDResults> m_3DAmbientSounds;
|
|
std::vector<MixerProgram> m_MixerPrograms;
|
|
|
|
bool m_Dirty = false;
|
|
};
|