Skip to main content

wowlab_engine_content/hooks/feral_druid/
handler.rs

1use wowlab_engine_combat::CombatHandler;
2use wowlab_engine_ports::{HandlerParams, SimContext};
3
4
5use super::config::register_feral;
6
7#[derive(Debug)]
8pub(crate) struct FeralHandler {
9    inner: CombatHandler,
10}
11
12impl FeralHandler {
13    pub(crate) fn new(
14        parts: crate::composition::ContentHandlerParts,
15        params: &HandlerParams<'_>,
16    ) -> Result<Self, wowlab_engine_ports::EngineError> {
17        let mut parts = parts;
18        let built = parts.draft_mut();
19
20        register_feral(built, params);
21
22        let built = parts.finalize()?;
23
24        Ok(Self {
25            inner: CombatHandler::from_built(built),
26        })
27    }
28}
29
30crate::hooks::define_spec_handler! {
31    impl FeralHandler(self, inner) {
32        fn on_sim_start(&mut self, ctx: &mut SimContext) {
33            self.inner.on_sim_start(ctx);
34        }
35    }
36}