#include "AudioDevice.hpp" #include "Color.hpp" #include "raylib.h" #include #include #include static std::function pingButtonHandler; static bool darkMode = false; void PingButton() { pingButtonHandler(); } #define GUI_VOLUMECONTROL_IMPLEMENTATION #include "VolumeControl.h" int main() { raylib::Window window(800, 600, "CS381 - Assignment 1"); raylib::AudioDevice audio; auto guiState = InitGuiVolumeControl(); raylib::Sound ping("audio/ping.wav"); raylib::Music music("audio/price-of-freedom.mp3"); raylib::Music dialog("audio/crowd.wav"); music.SetLooping(true); music.Play(); dialog.SetLooping(true); dialog.Play(); // play ping sound when button is pressed auto lambdaPingButton = [&ping]() { ping.Play(); }; pingButtonHandler = lambdaPingButton; InitGuiVolumeControl(); while (!window.ShouldClose()) { window.BeginDrawing(); GuiVolumeControl(&guiState); const char *modeText = darkMode ? "Background: Black" : "Background: White"; if (GuiButton((Rectangle){ 24, 328, 256, 24 }, modeText)) { darkMode = !darkMode; } if (darkMode) { window.ClearBackground(raylib::Color::Black()); } else { window.ClearBackground(raylib::Color::RayWhite()); } ping.SetVolume(guiState.SFXSliderValue / 100.0f); music.Update(); music.SetVolume(guiState.MusicSliderValue / 100.0f); dialog.Update(); dialog.SetVolume(guiState.DialogueSliderValue / 100.0f); window.EndDrawing(); } return 0; }