diff --git a/watchgit.cpp b/watchgit.cpp index 5debc5c..0404716 100644 --- a/watchgit.cpp +++ b/watchgit.cpp @@ -20,6 +20,31 @@ using namespace fmt; #define BUF_MAX 1024 +class GameEngine { + int hit_points = 0; + + public: + GameEngine(int hp) : hit_points(hp) {}; + + bool hit(unsigned int damage) { + hit_points -= damage; + + if(is_dead()) { + println("YOU DIED!"); + } else { + println("DAMAGE {}, HP: {}", damage, hit_points); + } + + // super dumb but I'll clean it up later + return is_dead(); + } + + bool is_dead() { + return hit_points <= 0; + } +}; + + /* * No idea what the semantics of this are. Will need * to research git's dumb terminology to figure out why @@ -109,7 +134,7 @@ class UpdateListener : public efsw::FileWatchListener { } }; -void run_build(const char* command) { +void run_build(GameEngine &game, const char* command) { regex err_re("(.*?):([0-9]+):([0-9]+):\\s*(.*?):\\s*(.*)\n*"); char buffer[BUF_MAX]; // BUF_MAX is a define already? @@ -141,7 +166,14 @@ void run_build(const char* command) { lnumber, col, type, message); stats_out << result; - cout << "MATCHED: " << quoted(result); + println("{} @ {}:{}:{} {}", type, file_name, lnumber, col, message); + + + if(type == "error") { + game.hit(4); + } else { + game.hit(1); + } } } @@ -149,7 +181,6 @@ void run_build(const char* command) { dbc::post("a post test", [&]() { return !stats_out.is_open(); }); } - int main(int argc, char *argv[]) { git_repository* repo = nullptr; @@ -174,6 +205,8 @@ int main(int argc, char *argv[]) print("Watching directory {} for changes...\n", git_path); efsw::WatchID wid = fileWatcher->addWatch(git_path, listener, true); + GameEngine game{100}; + while(true) { print("WAITING...\r"); fileWatcher->watch(); @@ -181,7 +214,7 @@ int main(int argc, char *argv[]) if(listener->changes) { sleep(1); println("CHANGES! Running build {}", build_cmd); - run_build(build_cmd); + run_build(game, build_cmd); listener->reset_state(); } sleep(1); @@ -191,8 +224,7 @@ int main(int argc, char *argv[]) } catch(dbc::Error &err) { print("ERROR: {}\n", err.message); if(repo != nullptr) git_repository_free(repo); + git_libgit2_shutdown(); return 1; } - - git_libgit2_shutdown(); }