overlord_event_system/logic/
offers.rs

1use 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}