72 lines
1.6 KiB
C++
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/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;
|
|
}
|