A weird game.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
turings-tarpit/gui.cpp

67 lines
1.6 KiB

#include "gui.hpp"
#include <stdlib.h> // for EXIT_SUCCESS
#include <chrono> // for milliseconds
#include <fmt/core.h>
#include <memory> // for allocator, shared_ptr
#include <string> // for operator+, to_string
#include <vector>
#include <SFML/Audio.hpp>
#include <nlohmann/json.hpp>
#include <fstream>
#include "builder.hpp"
using std::string, std::vector;
using namespace fmt;
using namespace nlohmann;
namespace fs = std::filesystem;
GUI::GUI() {
std::ifstream infile(".tarpit.json");
json data = json::parse(infile);
// json load the config file
you_died_sound.load(data, "you_died");
build_works_sound.load(data, "build_works");
build_failed_sound.load(data, "build_failed");
building_sound.load(data, "building");
}
void GUI::output(const string msg) {
_lines.push_back(msg);
}
void GUI::main_loop(SFMLBackend &gui) {
gui.handle_events();
gui.update_entities();
gui.update_log(_lines);
}
void GUI::build_works() {
building_sound.stop();
build_works_sound.play();
output("BUILD FINISHED!");
}
void GUI::build_failed(bool play_sound, const string &command) {
building_sound.stop();
if(play_sound) {
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! !!!! Learn to code luser.");
output("YOU DIED!");
}
void GUI::building() {
output("############# START ############");
output(">>>> Will it Build?");
building_sound.play();
}