diff --git a/audiotest.cpp b/audiotest.cpp index cefb08f..c3b1adc 100644 --- a/audiotest.cpp +++ b/audiotest.cpp @@ -6,10 +6,10 @@ int main(int argc, char *argv[]) { sf::SoundBuffer buffer; - sf::Sound click; + sf::Sound sound; if(argc != 2) { - fmt::println("USAGE: audiotest click.mp3"); + fmt::println("USAGE: audiotest [FILE]"); return 0; } @@ -17,15 +17,16 @@ int main(int argc, char *argv[]) { if(!buffer.loadFromFile(in_file)) { fmt::println("Failed to load {}", in_file); + return 0; } - click.setBuffer(buffer); + sound.setBuffer(buffer); fmt::println("Playing {}. Hit ctrl-c to exit.", in_file); - while(true) { - click.play(); - std::this_thread::sleep_for(std::chrono::milliseconds(1000)); + sound.play(); + while(sound.getStatus() != sf::SoundSource::Status::Stopped) { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); } return 0; diff --git a/builder.cpp b/builder.cpp index a4b0153..27d927a 100644 --- a/builder.cpp +++ b/builder.cpp @@ -66,7 +66,7 @@ void Builder::run_build(GameEngine &game, const char* command) { // refactor this if(game.is_dead()) { - gui.output(format("YOU DIED!\n")); + gui.you_died(); } } } @@ -75,9 +75,9 @@ void Builder::run_build(GameEngine &game, const char* command) { int rc = pclose(build_out); if(rc == 0) { - gui.output("BUILD FINISHED!"); + gui.build_works(); } else { - gui.output(format("!!! BUILD FAILED. Your command correct? '{}'", command)); + gui.build_failed(command); } stats_out.close(); @@ -107,7 +107,7 @@ void Builder::run(const char *git_path, const char *build_cmd) { fileWatcher->watch(); if(listener->changes) { - gui.output("############# START ############"); + gui.building(); std::this_thread::sleep_for(std::chrono::milliseconds(100)); gui.output(format("CHANGES! Running build {}", build_cmd)); run_build(game, build_cmd); diff --git a/gui.cpp b/gui.cpp index 4a93f40..2706e44 100644 --- a/gui.cpp +++ b/gui.cpp @@ -13,12 +13,28 @@ #include "ftxui/component/loop.hpp" // for Loop #include "ftxui/component/screen_interactive.hpp" // for ScreenInteractive #include +#include using namespace ftxui; using namespace std; using namespace fmt; namespace fs = std::filesystem; +void load_sound(sf::Sound &sound, sf::SoundBuffer &buffer, const char *in_file) { + if(!buffer.loadFromFile(in_file)) { + fmt::println("Failed to load {}", in_file); + } + + sound.setBuffer(buffer); +} + +GUI::GUI() { + load_sound(you_died_sound, you_died_buffer, "./assets/you_died.wav"); + load_sound(build_works_sound, build_works_buffer, "./assets/build_works.wav"); + load_sound(build_failed_sound, build_failed_buffer, "./assets/build_failed.wav"); + load_sound(building_sound, building_buffer, "./assets/building.wav"); +} + void GUI::output(const string &msg) { lines.push_back(msg); } @@ -98,3 +114,27 @@ int GUI::main_loop(GameEngine &game, std::function runner) { return EXIT_SUCCESS; } + +void GUI::build_works() { + building_sound.stop(); + build_works_sound.play(); + output("BUILD FINISHED!"); +} + +void GUI::build_failed(const string &command) { + building_sound.stop(); + build_failed_sound.play(); + output(format("!!! BUILD FAILED. Your command correct? '{}'", command)); +} + +void GUI::you_died() { + building_sound.stop(); + you_died_sound.play(); + output("YOU DIED!"); +} + +void GUI::building() { + output("############# START ############"); + output(">>>> Will it Build?"); + building_sound.play(); +} diff --git a/gui.hpp b/gui.hpp index 9f68db2..c6a452c 100644 --- a/gui.hpp +++ b/gui.hpp @@ -4,13 +4,30 @@ #include "game_engine.hpp" #include #include +#include class GUI { vector lines; + sf::Sound you_died_sound; + sf::Sound build_works_sound; + sf::Sound build_failed_sound; + sf::Sound building_sound; + sf::SoundBuffer you_died_buffer; + sf::SoundBuffer build_works_buffer; + sf::SoundBuffer build_failed_buffer; + sf::SoundBuffer building_buffer; + public: + GUI(); + void output(const string &msg); int main_loop(GameEngine &game, std::function runner); + + void build_works(); + void build_failed(const string &command); + void you_died(); + void building(); }; diff --git a/scripts/reset_build.sh b/scripts/reset_build.sh index 8058b17..06be5f5 100644 --- a/scripts/reset_build.sh +++ b/scripts/reset_build.sh @@ -8,9 +8,15 @@ mv packagecache ./subprojects/ mkdir builddir cp *.wrap subprojects meson wrap install fmt -meson wrap install openal-soft meson wrap install sqlite3 meson wrap install sqlitecpp meson wrap install ftxui meson wrap install catch2 +meson wrap install libpng +meson wrap install vorbis +meson wrap install ogg +meson wrap install flac +meson wrap install freetype2 +meson wrap install openal-soft +meson wrap install sfml meson setup builddir