whoa/src/sound/SI2.hpp
2025-11-29 11:50:00 -06:00

46 lines
1.8 KiB
C++

#ifndef SOUND_SI2_HPP
#define SOUND_SI2_HPP
#include "sound/SI2Script.hpp"
#include "ui/Types.hpp"
#include <storm/Array.hpp>
#include <storm/Hash.hpp>
#include <cstdint>
class SOUNDKITDEF;
struct SOUNDKITLOOKUP;
class SOUNDKITOBJECT;
class SoundKitProperties;
class SI2 {
public:
// Static variables
static FrameScript_Method s_ScriptFunctions[NUM_SCRIPT_FUNCTIONS_SI2];
static TSGrowableArray<SOUNDKITDEF*> s_SoundKitDefs;
static TSHashTable<SOUNDKITLOOKUP, HASHKEY_CONSTSTRI> s_SoundKitLookupTable;
static char s_ChannelGroupNames[32][18];
// Static functions
static int32_t CreditsMusicUpdate(const void* data, void* param);
static SOUNDKITDEF* GetSoundKitDef(int32_t id);
static int32_t GetSoundKitID(const char* name);
static int32_t GlueMusicUpdate(const void* data, void* param);
static int32_t Init(int32_t a1);
static void InitSoundKitDefs();
static void InitSoundKitGroups();
static bool IsPlaying(SOUNDKITOBJECT* object);
static int32_t PlaySoundKit(const char *name, int a2, SOUNDKITOBJECT* object, SoundKitProperties* properties);
static int32_t PlaySoundKit(int32_t id, int32_t a2, SOUNDKITOBJECT* object, SoundKitProperties* properties, int32_t a5, void* a6, int32_t a7, int32_t a8);
static void PlayUISound(int32_t id);
static void RegisterCVars();
static void RegisterUserCVars();
static void RegisterScriptFunctions();
static void StartCreditsMusic(const char* name);
static void StartGlueMusic(const char* name);
static int32_t StopCreditsMusic();
static int32_t StopGlueMusic(float fadeOutTime);
static int32_t StopOrFadeOut(SOUNDKITOBJECT* object, int32_t stop, float fadeOutTime, int32_t a4);
};
#endif