Initial commit

This commit is contained in:
2025-07-17 21:52:37 +03:00
commit 5d0e71c629
83 changed files with 4787 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
#include "Alarm.h"
namespace NGame {
void TAlarm::Set(TId id, std::uint32_t millis) {
auto& data = Alarms_[id];
data.Target = millis;
data.Current = 0;
}
void TAlarm::Unset(TId id) {
auto& data = Alarms_[id];
data.Target = 0;
data.Current = 0;
}
void TAlarm::Update(std::uint32_t delta) {
for (auto it = Alarms_.begin(); it != Alarms_.end(); ++it) {
auto& alarm = it->second;
if (alarm.Target) {
alarm.Current += delta;
}
if (alarm.Current >= alarm.Target) {
DueAlarms_.push(it->first);
}
}
}
bool TAlarm::Next(TId& id) {
bool repeat;
do {
repeat = false;
if (DueAlarms_.empty())
return false;
id = DueAlarms_.front();
DueAlarms_.pop();
auto& alarm = Alarms_[id];
if (alarm.Target) {
if (alarm.Current >= alarm.Target) {
alarm.Current -= alarm.Target;
}
if (alarm.Current >= alarm.Target) {
DueAlarms_.push(id);
}
} else {
alarm.Current = 0;
repeat = true;
}
} while (repeat);
return true;
}
} // namespace NGame