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