use getset::*;
use serde_derive::{Serialize, Deserialize};
use crate::binary::{ReadBytes, WriteBytes};
use crate::error::Result;
use crate::files::{Decodeable, EncodeableExtraData, Encodeable};
use super::*;
#[derive(Default, PartialEq, Clone, Debug, Getters, MutGetters, Setters, Serialize, Deserialize)]
#[getset(get = "pub", get_mut = "pub", set = "pub")]
pub struct NonTerrainOutlines {
empire_outline: Vec<Outline2d>
}
impl Decodeable for NonTerrainOutlines {
fn decode<R: ReadBytes>(data: &mut R, extra_data: &Option<DecodeableExtraData>) -> Result<Self> {
let mut decoded = Self::default();
for _ in 0..data.read_u32()? {
decoded.empire_outline.push(Outline2d::decode(data, extra_data)?);
}
Ok(decoded)
}
}
impl Encodeable for NonTerrainOutlines {
fn encode<W: WriteBytes>(&mut self, buffer: &mut W,extra_data: &Option<EncodeableExtraData>) -> Result<()> {
buffer.write_u32(self.empire_outline.len() as u32)?;
for outline in &mut self.empire_outline {
outline.encode(buffer, extra_data)?;
}
Ok(())
}
}