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

74 lines
1.8 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 "builder.hpp"
#include <fstream>
#include <iostream>
using std::string, std::vector;
using namespace fmt;
using namespace nlohmann;
namespace fs = std::filesystem;
GUI::GUI(SFMLBackend &backend) : gui(backend) {
std::ifstream infile(".tarpit.json");
json data = json::parse(infile);
// json load the config file
you_died_sound.load(data, "you_died");
build_success_sound.load(data, "build_success");
build_failed_sound.load(data, "build_failed");
building_sound.load(data, "building", true);
}
void GUI::output(const string msg) {
// _lines.push_back(msg);
std::cout << msg << std::endl;
}
void GUI::main_loop() {
gui.handle_events();
gui.update_entities();
gui.update_log(_lines);
}
void GUI::build_success() {
gui.change_face("build_success");
building_sound.stop();
build_success_sound.play();
output("BUILD FINISHED!");
}
void GUI::build_failed(bool play_sound, const string &command) {
gui.change_face("build_failed");
building_sound.stop();
if(play_sound) {
build_failed_sound.play();
}
output(format("!!! BUILD FAILED. Your command correct? '{}'", command));
}
void GUI::you_died() {
gui.change_face("you_died");
building_sound.stop();
you_died_sound.play();
output("!!!! YOU DIED! !!!! Learn to code luser.");
output("YOU DIED!");
}
void GUI::building() {
gui.change_face("building");
output("############# START ############");
output(">>>> Will it Build?");
building_sound.play();
}