spring_ai_rs/ai_interface/callback/game_mod/
mip.rs

1use std::error::Error;
2
3use crate::get_callback;
4
5#[derive(Debug, Copy, Clone)]
6pub struct GameModMipLevel {
7    pub ai_id: i32,
8}
9
10#[derive(Debug, Clone)]
11pub struct GameModMipLevelAll {
12    los: i32,
13    air: i32,
14    radar: i32,
15}
16
17impl GameModMipLevel {
18    pub fn los(&self) -> Result<i32, Box<dyn Error>> {
19        let get_los_level = get_callback!(self.ai_id, Mod_getLosMipLevel)?;
20
21        Ok(unsafe { get_los_level(self.ai_id) })
22    }
23
24    pub fn air(&self) -> Result<i32, Box<dyn Error>> {
25        let get_air_level = get_callback!(self.ai_id, Mod_getAirMipLevel)?;
26
27        Ok(unsafe { get_air_level(self.ai_id) })
28    }
29
30    pub fn radar(&self) -> Result<i32, Box<dyn Error>> {
31        let get_radar_level = get_callback!(self.ai_id, Mod_getRadarMipLevel)?;
32
33        Ok(unsafe { get_radar_level(self.ai_id) })
34    }
35
36    pub fn all(&self) -> Result<GameModMipLevelAll, Box<dyn Error>> {
37        Ok(GameModMipLevelAll {
38            los: self.los()?,
39            air: self.air()?,
40            radar: self.radar()?,
41        })
42    }
43}