rpfm_lib/files/bmd/sound_shape_list/
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 self::sound_shape::SoundShape;
19
20use super::*;
21
22mod sound_shape;
23mod v1;
24
25#[derive(Default, PartialEq, Clone, Debug, Getters, MutGetters, Setters, Serialize, Deserialize)]
30#[getset(get = "pub", get_mut = "pub", set = "pub")]
31pub struct SoundShapeList {
32 serialise_version: u16,
33 sound_shapes: Vec<SoundShape>
34}
35
36impl Decodeable for SoundShapeList {
41
42 fn decode<R: ReadBytes>(data: &mut R, extra_data: &Option<DecodeableExtraData>) -> Result<Self> {
43 let mut decoded = Self::default();
44 decoded.serialise_version = data.read_u16()?;
45
46 match decoded.serialise_version {
47 1 => decoded.read_v1(data, extra_data)?,
48 _ => return Err(RLibError::DecodingFastBinUnsupportedVersion(String::from("SoundShapeList"), decoded.serialise_version)),
49 }
50
51 Ok(decoded)
52 }
53}
54
55impl Encodeable for SoundShapeList {
56
57 fn encode<W: WriteBytes>(&mut self, buffer: &mut W, extra_data: &Option<EncodeableExtraData>) -> Result<()> {
58 buffer.write_u16(self.serialise_version)?;
59
60 match self.serialise_version {
61 1 => self.write_v1(buffer, extra_data)?,
62 _ => return Err(RLibError::EncodingFastBinUnsupportedVersion(String::from("SoundShapeList"), self.serialise_version)),
63 }
64
65 Ok(())
66 }
67}