--- a/rust/hedgewars-server/src/core/events.rs Mon Jun 21 20:11:22 2021 +0300
+++ b/rust/hedgewars-server/src/core/events.rs Tue Jun 22 01:41:33 2021 +0300
@@ -23,6 +23,7 @@
current_time: Instant,
current_tick_index: u32,
next_event_id: u32,
+ events_count: u32,
}
impl<Data, const MAX_TIMEOUT: usize> TimedEvents<Data, MAX_TIMEOUT> {
@@ -37,6 +38,7 @@
current_time: Instant::now(),
current_tick_index: 0,
next_event_id: 0,
+ events_count: 0,
}
}
@@ -51,6 +53,9 @@
let entry = self.events[tick_index as usize].vacant_entry();
let event_index = entry.key() as u32;
entry.insert(event);
+
+ self.events_count += 1;
+
Timeout {
tick_index,
event_index,
@@ -62,6 +67,7 @@
let events = &mut self.events[timeout.tick_index as usize];
if matches!(events.get(timeout.event_index as usize), Some(Event { event_id: id, ..}) if *id == timeout.event_id)
{
+ self.events_count -= 1;
Some(events.remove(timeout.event_index as usize).data)
} else {
None
@@ -80,8 +86,13 @@
.map(|e| e.data),
);
}
+ self.events_count -= result.len() as u32;
result
}
+
+ pub fn is_empty(&self) -> bool {
+ self.events_count == 0
+ }
}
mod test {