diff --git a/src/sound/CVarHandlers.cpp b/src/sound/CVarHandlers.cpp index e8a971e..7033af5 100644 --- a/src/sound/CVarHandlers.cpp +++ b/src/sound/CVarHandlers.cpp @@ -61,3 +61,43 @@ bool VoiceChatOutputDriverHandler(CVar* var, const char* oldValue, const char* v // TODO WHOA_UNIMPLEMENTED(true); } + +bool AmbienceVolume_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg) { + // TODO + WHOA_UNIMPLEMENTED(true); +} + +bool EnableAllSound_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg) { + // TODO + WHOA_UNIMPLEMENTED(true); +} + +bool EnableAmbience_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg) { + // TODO + WHOA_UNIMPLEMENTED(true); +} + +bool EnableMusic_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg) { + // TODO + WHOA_UNIMPLEMENTED(true); +} + +bool EnableSFX_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg) { + // TODO + WHOA_UNIMPLEMENTED(true); +} + +bool MasterVolume_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg) { + // TODO + WHOA_UNIMPLEMENTED(true); +} + +bool MusicVolume_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg) { + // TODO + WHOA_UNIMPLEMENTED(true); +} + +bool SFXVolume_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg) { + // TODO + WHOA_UNIMPLEMENTED(true); +} diff --git a/src/sound/CVarHandlers.hpp b/src/sound/CVarHandlers.hpp index 4ffd4ce..82619d2 100644 --- a/src/sound/CVarHandlers.hpp +++ b/src/sound/CVarHandlers.hpp @@ -27,4 +27,20 @@ bool VoiceChatModeHandler(CVar* var, const char* oldValue, const char* value, vo bool VoiceChatOutputDriverHandler(CVar* var, const char* oldValue, const char* value, void* arg); +bool AmbienceVolume_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg); + +bool EnableAllSound_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg); + +bool EnableAmbience_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg); + +bool EnableMusic_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg); + +bool EnableSFX_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg); + +bool MasterVolume_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg); + +bool MusicVolume_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg); + +bool SFXVolume_CVarCallback(CVar* var, const char* oldValue, const char* value, void* arg); + #endif diff --git a/src/sound/SI2.cpp b/src/sound/SI2.cpp index 7a33abb..a839407 100644 --- a/src/sound/SI2.cpp +++ b/src/sound/SI2.cpp @@ -53,9 +53,7 @@ int32_t SI2::Init(int32_t a1) { // TODO // if (CmdLineGetBool(26)) { // SI2::RegisterCVars(); - // - // // TODO - // // sub_4D1600(); + // SI2::RegisterUserCVars(); // // return 17; // } @@ -135,6 +133,8 @@ int32_t SI2::Init(int32_t a1) { // TODO + SI2::RegisterUserCVars(); + if (!a1) { SI2::InitSoundKitDefs(); // TODO @@ -702,6 +702,182 @@ void SI2::RegisterCVars() { ); } +void SI2::RegisterUserCVars() { + CVar::Register("ChatMusicVolume", + "music volume (0.0 to 1.0)", + 0x0, + "0.3", + nullptr, + SOUND + ); + + CVar::Register( + "ChatSoundVolume", + "sound volume (0.0 to 1.0)", + 0x0, + "0.4", + nullptr, + SOUND + ); + + CVar::Register( + "ChatAmbienceVolume", + "Ambience Volume (0.0 to 1.0)", + 0x0, + "0.3", + nullptr, + SOUND + ); + + CVar::Register( + "Sound_EnableSFX", + "", + 0x0, + "1", + &EnableSFX_CVarCallback, + SOUND + ); + + CVar::Register( + "Sound_EnableAmbience", + "Enable Ambience", + 0x0, + "1", + &EnableAmbience_CVarCallback, + SOUND + ); + + CVar::Register( + "Sound_EnableErrorSpeech", + "error speech", + 0x0, + "1", + nullptr, + SOUND + ); + + CVar::Register( + "Sound_EnableMusic", + "Enables music", + 0x0, + "1", + &EnableMusic_CVarCallback, + SOUND + ); + + CVar::Register( + "Sound_EnableAllSound", + "", + 0x0, + "1", + &EnableAllSound_CVarCallback, + SOUND + ); + + CVar::Register( + "Sound_MasterVolume", + "master volume (0.0 to 1.0)", + 0x0, + "1.0", + &MasterVolume_CVarCallback, + SOUND + ); + + CVar::Register( + "Sound_SFXVolume", + "sound volume (0.0 to 1.0)", + 0x0, + "1.0", + &SFXVolume_CVarCallback, + SOUND + ); + + CVar::Register( + "Sound_MusicVolume", + "music volume (0.0 to 1.0)", + 0x0, + "0.4", + &MusicVolume_CVarCallback, + SOUND + ); + + CVar::Register( + "Sound_AmbienceVolume", + "Ambience Volume (0.0 to 1.0)", + 0x0, + "0.6", + &AmbienceVolume_CVarCallback, + SOUND + ); + + CVar::Register( + "Sound_ListenerAtCharacter", + "lock listener at character", + 0x0, + "1", + nullptr, + SOUND + ); + + CVar::Register( + "Sound_EnableEmoteSounds", + "", + 0x0, + "1", + nullptr, + SOUND + ); + + CVar::Register( + "Sound_ZoneMusicNoDelay", + "", + 0x0, + "0", + nullptr, + SOUND + ); + + CVar::Register( + "Sound_EnableArmorFoleySoundForSelf", + "", + 0x0, + "1", + nullptr, + SOUND + ); + + CVar::Register( + "Sound_EnableArmorFoleySoundForOthers", + "", + 0x0, + "1", + nullptr, + SOUND + ); + + // TODO + + CVar::Register( + "Sound_EnablePetSounds", + "Enables pet sounds", + 0x0, + "1", + nullptr, + SOUND + ); + + CVar::Register( + "Sound_EnableSoundWhenGameIsInBG", + "Enable Sound When Game Is In Background", + 0x0, + "0", + nullptr, + SOUND + ); + + // TODO +} + void SI2::RegisterScriptFunctions() { for (int32_t i = 0; i < NUM_SCRIPT_FUNCTIONS_SI2; ++i) { FrameScript_RegisterFunction( diff --git a/src/sound/SI2.hpp b/src/sound/SI2.hpp index fac7f3a..f6af22a 100644 --- a/src/sound/SI2.hpp +++ b/src/sound/SI2.hpp @@ -28,6 +28,7 @@ class SI2 { static int32_t PlaySoundKit(int32_t id, int32_t a2, void* handle, 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 StartGlueMusic(const char* name); };