infinity-rs 0.2.4

Safe, idiomatic Rust bindings for the MSFS 2024 WASM SDK.
use infinity_rs::{events, prelude::*, sys::*, utils::FsParamArg};

pub struct EventSystem {
    event_sub: Option<events::Subscription>,
}

impl EventSystem {
    pub fn new() -> Self {
        Self { event_sub: None }
    }
}

impl Default for EventSystem {
    fn default() -> Self {
        Self::new()
    }
}

impl System for EventSystem {
    fn init(&mut self, _ctx: &Context, _install: &SystemInstall) -> bool {
        self.event_sub = Some(events::subscribe(|event| {
            let event_id = event.id;
            let first_param = event.params.first();

            match first_param {
                Some(FsParamArg::Index(value)) => {
                    let _ = (event_id, value);
                }
                Some(FsParamArg::Double(value)) => {
                    let _ = (event_id, value);
                }
                Some(FsParamArg::Crc(value)) => {
                    let _ = (event_id, value);
                }
                Some(FsParamArg::Str(ptr)) => {
                    let _ = (event_id, ptr);
                }
                None => {
                    let _ = event_id;
                }
            }

            if event_id == KEY_TOGGLE_MASTER_BATTERY {
                let _battery_index = event.params.first_index().unwrap_or(1);
            }
        }));

        let _ = events::trigger1(KEY_TOGGLE_MASTER_BATTERY, FsParamArg::Index(1));
        true
    }

    fn update(&mut self, _ctx: &Context, _dt: f32) -> bool {
        true
    }

    fn kill(&mut self, _ctx: &Context) -> bool {
        true
    }
}