diff --git a/src/RecordTracker.cpp b/src/RecordTracker.cpp new file mode 100644 index 0000000..941d9fc --- /dev/null +++ b/src/RecordTracker.cpp @@ -0,0 +1,26 @@ +#include "RecordTracker.h" +#include "FileManager.h" + +void RecordTracker::OnWallJumped(WallJumpEvent *event) { + jumped++; +} + +void RecordTracker::OnWallCrashed(WallCrashEvent *event) { + checkJumpRecord(); + jumped = 0; +} + +void RecordTracker::checkJumpRecord() const { + const uint64_t newRecord = jumped; + FileManager::instance->readFile("record_jump.txt", [newRecord](const std::string& content){ + if (content.empty()){ + FileManager::instance->writeFile("record_jump.txt", std::to_string(newRecord)); + return; + } + uint64_t oldRecord = std::stoull(content); + if (newRecord > oldRecord){ + std::cout << "New jump record!" << std::endl; + FileManager::instance->writeFile("record_jump.txt", std::to_string(newRecord)); + } + }); +} diff --git a/src/RecordTracker.h b/src/RecordTracker.h new file mode 100644 index 0000000..f6259db --- /dev/null +++ b/src/RecordTracker.h @@ -0,0 +1,11 @@ +#pragma once + +#include "Listener.h" + +class RecordTracker : public GameListener { + uint64_t jumped = 0; + void checkJumpRecord() const; +protected: + void OnWallJumped(WallJumpEvent * event) override; + void OnWallCrashed(WallCrashEvent * event) override; +};