overlord_event_system/async_handler/
offers.rs1use crate::{
2 async_handler::handler::OverlordAsyncEventHandler, event::OverlordEvent, state::OverlordState,
3};
4
5use essences::offers::Offer;
6
7use event_system::system::EventHandleResult;
8
9impl OverlordAsyncEventHandler {
10 pub fn handle_reset_offers(
11 &self,
12 new_offers: &[Offer],
13 mut state: OverlordState,
14 ) -> EventHandleResult<OverlordEvent, OverlordState> {
15 let reset_template_ids: Vec<_> = new_offers.iter().map(|o| o.template_id).collect();
16
17 state
18 .offers_info
19 .active_offers
20 .retain(|offer| !reset_template_ids.contains(&offer.template_id));
21
22 state
23 .offers_info
24 .offer_buy_counts
25 .retain(|k, _| !reset_template_ids.contains(k));
26
27 state
28 .offers_info
29 .active_offers
30 .extend_from_slice(new_offers);
31
32 EventHandleResult::ok(state)
33 }
34}