Skip to main content

nurtex_protocol/types/
experience.rs

1use nurtex_codec::VarInt;
2
3use std::io::{self, Cursor, Write};
4
5use nurtex_codec::Buffer;
6
7/// Структура опыта
8#[derive(Clone, Copy, Debug, PartialEq)]
9pub struct Experience {
10  pub bar: f32,
11  pub level: i32,
12  pub total: i32,
13}
14
15impl Default for Experience {
16  fn default() -> Self {
17    Self { bar: 0.0, level: 0, total: 0 }
18  }
19}
20
21impl Buffer for Experience {
22  fn read_buf(buffer: &mut Cursor<&[u8]>) -> Option<Self> {
23    Some(Self {
24      bar: f32::read_buf(buffer)?,
25      level: i32::read_varint(buffer)?,
26      total: i32::read_varint(buffer)?,
27    })
28  }
29
30  fn write_buf(&self, buffer: &mut impl Write) -> io::Result<()> {
31    self.bar.write_buf(buffer)?;
32    self.level.write_varint(buffer)?;
33    self.total.write_varint(buffer)?;
34    Ok(())
35  }
36}