#include "AudioDevice.hpp" #include "Color.hpp" #include #include void PingButton() { std::cout << "Ping!" << std::endl; } #define GUI_VOLUMECONTROL_IMPLEMENTATION #include "VolumeControl.h" template concept calls_with_no_arguments = requires(T a) { { a() }; }; template void call_lambda(TFunction func) { func(); } int main() { raylib::Window window(800, 600, "CS381 - Assignment 0"); raylib::AudioDevice audio; auto guiState = InitGuiVolumeControl(); raylib::Sound ping("audio/ping.wav"); raylib::Music music("audio/price-of-freedom.mp3"); music.Play(); // play ping sound when button is pressed auto lambdaPingButton = [&ping]() { ping.Play(); }; call_lambda(lambdaPingButton); InitGuiVolumeControl(); while (!window.ShouldClose()) { window.BeginDrawing(); window.ClearBackground(raylib::Color::RayWhite()); music.Update(); music.SetVolume(guiState.MusicSliderValue / 100.0f); GuiVolumeControl(&guiState); window.EndDrawing(); } delete ping; return 0; }