Skip to main content

wowlab_engine_content/hooks/beast_mastery_hunter/
handler.rs

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