diff --git a/CInterface/Battling/Battle.cpp b/CInterface/Battling/Battle.cpp index 460504a..6af7f5b 100644 --- a/CInterface/Battling/Battle.cpp +++ b/CInterface/Battling/Battle.cpp @@ -78,4 +78,6 @@ export bool CreatureLib_Battle_HasVolatileScript(Battle* p, const char* key) { export uint8_t CreatureLib_Battle_RegisterEventListener(Battle* p, void (*func)(const EventData*)) { Try(p->RegisterEventListener(func);) } -export const HistoryHolder* CreatureLib_Battle_GetHistory(Battle* p) { return &p->GetHistory(); } \ No newline at end of file +export const HistoryHolder* CreatureLib_Battle_GetHistory(Battle* p) { return &p->GetHistory(); } + +SIMPLE_GET_FUNC(Battle, GetLastTurnTimeMicroseconds, long); \ No newline at end of file diff --git a/src/Battling/Models/Battle.cpp b/src/Battling/Models/Battle.cpp index d42bf64..0ea3041 100644 --- a/src/Battling/Models/Battle.cpp +++ b/src/Battling/Models/Battle.cpp @@ -46,6 +46,7 @@ void Battle::CheckChoicesSetAndRun() { THROW("Exception during choices set validation: '" << e.what() << "'.") } + auto begin = std::chrono::steady_clock::now(); auto choices = std::vector>(_numberOfSides * _creaturesPerSide); auto i = 0; try { @@ -90,6 +91,8 @@ void Battle::CheckChoicesSetAndRun() { this->_currentTurnQueue = nullptr; } TriggerEventListener(); + auto end = std::chrono::steady_clock::now(); + _lastTurnTime = std::chrono::duration_cast(end - begin).count(); } ArbUt::BorrowedPtr Battle::GetCurrentTurnQueue() const noexcept { return _currentTurnQueue; } diff --git a/src/Battling/Models/Battle.hpp b/src/Battling/Models/Battle.hpp index 2cb4897..9de3dbd 100644 --- a/src/Battling/Models/Battle.hpp +++ b/src/Battling/Models/Battle.hpp @@ -34,6 +34,7 @@ namespace CreatureLib::Battling { uint32_t _currentTurn = 0; ScriptSet _volatile; + long _lastTurnTime; public: Battle(const BattleLibrary* library, ArbUt::List parties, bool canFlee = true, @@ -113,6 +114,8 @@ namespace CreatureLib::Battling { , "Exception occurred during history element registration."); } const HistoryHolder& GetHistory() const noexcept { return _historyHolder; } + + long GetLastTurnTimeMicroseconds() const noexcept { return _lastTurnTime; } }; }