feat: add cooldown timer
This commit is contained in:
@@ -41,21 +41,36 @@ class Timer {
|
||||
private:
|
||||
std::uint64_t m_Interval;
|
||||
std::uint64_t m_InternalTime = 0;
|
||||
|
||||
bool m_Waiting = true;
|
||||
public:
|
||||
Timer() : m_Interval(0) {}
|
||||
Timer(std::uint64_t interval) : m_Interval(interval) {}
|
||||
|
||||
bool update(std::uint64_t delta);
|
||||
|
||||
void wait(); // let update return true on the next tick (if it was not used)
|
||||
|
||||
void reset();
|
||||
|
||||
void setInterval(std::uint64_t newInterval) { m_Interval = newInterval; }
|
||||
std::uint64_t getInterval() const { return m_Interval; }
|
||||
};
|
||||
|
||||
// utililty class to call function at regular period of time with a cooldown (used for towers)
|
||||
class CooldownTimer {
|
||||
private:
|
||||
std::uint64_t m_Cooldown;
|
||||
std::uint64_t m_CooldownTime;
|
||||
public:
|
||||
CooldownTimer() : m_Cooldown(0), m_CooldownTime(0) {}
|
||||
CooldownTimer(std::uint64_t cooldown) : m_Cooldown(0), m_CooldownTime(cooldown) {}
|
||||
|
||||
bool update(std::uint64_t delta);
|
||||
|
||||
void applyCooldown();
|
||||
|
||||
void reset();
|
||||
|
||||
void setCooldown(std::uint64_t newCooldown) { m_CooldownTime = newCooldown; }
|
||||
std::uint64_t getCooldown() const { return m_CooldownTime; }
|
||||
};
|
||||
|
||||
} // namespace utils
|
||||
} // namespace td
|
||||
|
||||
Reference in New Issue
Block a user