Entity sounds
Just like states, an entity can emit multiple different types of sound. Each different type must also have certain parameters associated with it:
enum class EntitySound{ None = -1, Footstep, Attack, Hurt, Death, COUNT }; struct SoundParameters{ static const int Max_SoundFrames = 5; SoundParameters(){ for (int i = 0; i < Max_SoundFrames; ++i){ m_frames[i] = -1; } } std::string m_sound; std::array<int, Max_SoundFrames> m_frames; };
struct SoundParameters
simply stores the name of the sound, as well as an array of integers for the maximum number of sound frames. A sound frame is the glue between sounds and sprite sheets, as it defines during which animation frames the sound is emitted.
Having defined the previous data structure allows us to successfully create a sound emitter component type:
class C_SoundEmitter : public C_Base{ public: C_SoundEmitter():C_Base(Component::SoundEmitter),m_soundID(-1){} void ReadIn(std::stringstream& l_stream...