Skip to main content

wowlab_engine_content/hooks/subtlety_rogue/
handler.rs

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