cs381/as1/as1.cpp

72 lines
1.6 KiB
C++

#include "AudioDevice.hpp"
#include "Color.hpp"
#include "raylib.h"
#include <raylib-cpp.hpp>
#include <functional>
#include <iostream>
static std::function<void()> 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/custom-ping.mp3");
raylib::Music music("audio/custom-music.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;
}