use std::io::Read;
use prost::Message;
use serde::Deserialize;
use serde_bytes::ByteBuf;
use crate::error::Error;
use crate::models::battle_results::BattleResults;
use crate::result::Result;
#[derive(Debug, Deserialize)]
#[serde(from = "(u64, ByteBuf)")]
pub struct BattleResultsDat {
pub arena_unique_id: u64,
pub buffer: ByteBuf,
}
impl From<(u64, ByteBuf)> for BattleResultsDat {
fn from((arena_unique_id, buffer): (u64, ByteBuf)) -> Self {
Self {
arena_unique_id,
buffer,
}
}
}
impl BattleResultsDat {
pub fn from_reader(reader: impl Read) -> Result<Self> {
Ok(serde_pickle::from_reader(reader, Default::default())?)
}
}
impl TryInto<BattleResults> for BattleResultsDat {
type Error = Error;
fn try_into(self) -> Result<BattleResults> {
Ok(BattleResults::decode(self.buffer.as_ref())?)
}
}