1use bevy::ecs::system::SystemParam;
2use bevy::prelude::{Event, EventWriter, Res};
3use crate::counter::UndoCounter;
4
5#[derive(Event, Default, PartialEq, Debug, Copy, Clone, )]
6pub(crate) struct RequestUndoEvent(pub UndoCounter);
7
8
9#[derive(SystemParam)]
10pub struct UndoRequester<'w> {
11 ew: EventWriter<'w, RequestUndoEvent>,
12 counter: Res<'w, UndoCounter>
13}
14
15
16impl<'w> UndoRequester<'w> {
17 #[inline(always)]
20 pub fn undo(&mut self) {
21 self.ew.send(RequestUndoEvent(*self.counter));
22 }
23}