rpfm_lib/files/bmd/common/building_reference/
mod.rs1use getset::*;
12use serde_derive::{Serialize, Deserialize};
13
14use crate::binary::{ReadBytes, WriteBytes};
15use crate::error::{Result, RLibError};
16use crate::files::{Decodeable, EncodeableExtraData, Encodeable};
17
18use super::*;
19
20mod v1;
21
22#[derive(Default, PartialEq, Clone, Debug, Getters, MutGetters, Setters, Serialize, Deserialize)]
27#[getset(get = "pub", get_mut = "pub", set = "pub")]
28pub struct BuildingReference {
29 serialise_version: u16,
30 building_index: i32,
31}
32
33impl Decodeable for BuildingReference {
38
39 fn decode<R: ReadBytes>(data: &mut R, extra_data: &Option<DecodeableExtraData>) -> Result<Self> {
40 let mut flags = Self::default();
41 flags.serialise_version = data.read_u16()?;
42
43 match flags.serialise_version {
44 1 => flags.read_v1(data, extra_data)?,
45 _ => return Err(RLibError::DecodingFastBinUnsupportedVersion(String::from("BuildingReference"), flags.serialise_version)),
46 }
47
48 Ok(flags)
49 }
50}
51
52impl Encodeable for BuildingReference {
53
54 fn encode<W: WriteBytes>(&mut self, buffer: &mut W, extra_data: &Option<EncodeableExtraData>) -> Result<()> {
55 buffer.write_u16(self.serialise_version)?;
56
57 match self.serialise_version {
58 1 => self.write_v1(buffer, extra_data)?,
59 _ => return Err(RLibError::EncodingFastBinUnsupportedVersion(String::from("BuildingReference"), self.serialise_version)),
60 }
61
62 Ok(())
63 }
64}