Skip to main content

mindus/block/
turrets.rs

1//! idk why its not in the [`crate::block::defense`] module
2use super::simple::make_simple;
3use crate::data::{DataRead, ReadError};
4
5make_simple!(Turret => |_, buff: &mut DataRead| read_turret(buff));
6make_simple!(PointDefenseTurret => |_, buff: &mut DataRead| read_point_defense_turret(buff));
7make_simple!(ContinousTurret => |_, buff: &mut DataRead| read_continous_turret(buff));
8make_simple!(TractorBeamTurret => |_, buff: &mut DataRead| read_tractor_beam_turret(buff));
9make_simple!(ItemTurret => |_, buff: &mut DataRead| read_item_turret(buff));
10
11/// format:
12/// - call [`read_turret`]
13/// - iterate [`u8`]
14///     - item: [`u16`] as [`Item`](crate::item::Type)
15///     - amount: [`u16`]
16fn read_item_turret(buff: &mut DataRead) -> Result<(), ReadError> {
17    read_turret(buff)?;
18    for _ in 0..buff.read_u8()? {
19        buff.skip(4)?;
20    }
21    Ok(())
22}
23
24/// format:
25/// - reload: f32
26/// - rotation: f32
27fn read_turret(buff: &mut DataRead) -> Result<(), ReadError> {
28    buff.skip(8)
29}
30
31/// format:
32/// - rotation: [`f32`]
33fn read_point_defense_turret(buff: &mut DataRead) -> Result<(), ReadError> {
34    buff.skip(4)
35}
36
37/// format:
38/// - call [`read_turret`]
39/// - last length: [`f32`]
40fn read_continous_turret(buff: &mut DataRead) -> Result<(), ReadError> {
41    read_turret(buff)?;
42    buff.skip(4)
43}
44
45/// format:
46/// - rotation: [`f32`]
47fn read_tractor_beam_turret(buff: &mut DataRead) -> Result<(), ReadError> {
48    buff.skip(4)
49}