From 3cb4fcfeb56e4aa167e018bc0c271623a79a07d6 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Wed, 18 Sep 2024 10:46:17 -0400 Subject: [PATCH] Stupid self-portrait for the game's 'bad guy'. --- assets/build_success.png | Bin 0 -> 6571 bytes gui.cpp | 2 +- sfmlbackend.cpp | 13 +++++++++++-- sfmlbackend.hpp | 4 ++-- status.txt | 6 ++++++ tarpit_sample.json | 3 +++ 6 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 assets/build_success.png diff --git a/assets/build_success.png b/assets/build_success.png new file mode 100644 index 0000000000000000000000000000000000000000..c7985ed141ee0f8bf9303a1046b90d0985d7014c GIT binary patch literal 6571 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 #include #include -#include #include "builder.hpp" +#include #include using std::string, std::vector; diff --git a/sfmlbackend.cpp b/sfmlbackend.cpp index d02015a..1e7ce11 100644 --- a/sfmlbackend.cpp +++ b/sfmlbackend.cpp @@ -10,6 +10,8 @@ #include #include #include "sfmlbackend.hpp" +#include +#include using namespace fmt; using namespace nlohmann; @@ -109,8 +111,9 @@ sf::RectangleShape SFMLBackend::box(int x, int y, int width, int height, void SFMLBackend::update_entities() { window.clear(); - sf::RectangleShape face_box = box(2, 2, - X_ROWS/4, Y_LINES/2, sf::Color(100, 250, 200)); + sf::RectangleShape face_box = box(2, 2, X_ROWS/4, Y_LINES/2); + face_sprite.setPosition(translate(2,2)); + window.draw(face_sprite); sf::RectangleShape stats_box = box(X_ROWS/4 + 4, 2, X_ROWS - X_ROWS/4 - 5, Y_LINES/2); @@ -145,7 +148,13 @@ void SFMLBackend::update_entities() { SFMLBackend::SFMLBackend(GameEngine &g) : window(sf::VideoMode(X_DIM, Y_DIM), "Turing's Tarpit", sf::Style::None, settings), game(g) { + std::ifstream infile(".tarpit.json"); + json data = json::parse(infile); + auto audio = data["images"]; + json::string_t file_name = audio["build_works"].template get(); + face_texture.loadFromFile(file_name); + face_sprite.setTexture(face_texture); } /* diff --git a/sfmlbackend.hpp b/sfmlbackend.hpp index db28a63..e50ff0a 100644 --- a/sfmlbackend.hpp +++ b/sfmlbackend.hpp @@ -40,8 +40,8 @@ class SFMLBackend { sf::RenderWindow window; sf::Clock clock; sf::Clock deltaClock; - sf::Sprite background; - sf::Texture texture; + sf::Sprite face_sprite; + sf::Texture face_texture; bool window_active_out = false; bool show_build_log = false; int hit_points = 50; diff --git a/status.txt b/status.txt index 0dc11aa..d9c4c58 100644 --- a/status.txt +++ b/status.txt @@ -2,9 +2,15 @@ BUGS: +* Better error handling on config json. + TODO: * Add a timer to the game engine so you can set a kind of pomodoro timer and if you don't meet the goal it costs you. * Convert buttons to sprites. * Mouse events to the GUI. * sf::Rect::contains(mouse.x, mouse.y) will say if the mouse is inside the sprite rect. + +NOTES: + +Pic is 240x240 diff --git a/tarpit_sample.json b/tarpit_sample.json index 1e67401..41c6611 100644 --- a/tarpit_sample.json +++ b/tarpit_sample.json @@ -5,6 +5,9 @@ "build_failed": "./assets/build_failed.mp3", "building": "./assets/building.mp3" }, + "images": { + "build_words": "./assets/build_success.png" + }, "git_path": ".\\", "build_cmd": "meson compile -C builddir" }