Skip to main content

nurtex_protocol/types/
game_event.rs

1use nurtex_codec::Buffer;
2
3/// Событие игры
4#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
5pub enum GameEvent {
6  NoRespawnBlockAvailable,
7  BeginRaining,
8  EndRaining,
9  ChangeGameMode,
10  WinGame,
11  DemoEvent,
12  ArrowHitPlayer,
13  RainLevelChange,
14  ThunderLevelChange,
15  PlayPufferfishStingSound,
16  PlayElderGuardianMobAppearance,
17  EnableRespawnScreen,
18  LimitedCrafting,
19  StartWaitingForLevelChunks,
20}
21
22impl Buffer for GameEvent {
23  fn read_buf(buffer: &mut std::io::Cursor<&[u8]>) -> Option<Self> {
24    let id = u8::read_buf(buffer)?;
25
26    match id {
27      0 => Some(Self::NoRespawnBlockAvailable),
28      1 => Some(Self::BeginRaining),
29      2 => Some(Self::EndRaining),
30      3 => Some(Self::ChangeGameMode),
31      4 => Some(Self::WinGame),
32      5 => Some(Self::DemoEvent),
33      6 => Some(Self::ArrowHitPlayer),
34      7 => Some(Self::RainLevelChange),
35      8 => Some(Self::ThunderLevelChange),
36      9 => Some(Self::PlayPufferfishStingSound),
37      10 => Some(Self::PlayElderGuardianMobAppearance),
38      11 => Some(Self::EnableRespawnScreen),
39      12 => Some(Self::LimitedCrafting),
40      13 => Some(Self::StartWaitingForLevelChunks),
41      _ => None,
42    }
43  }
44
45  fn write_buf(&self, buffer: &mut impl std::io::Write) -> std::io::Result<()> {
46    let id = match self {
47      Self::NoRespawnBlockAvailable => 0,
48      Self::BeginRaining => 1,
49      Self::EndRaining => 2,
50      Self::ChangeGameMode => 3,
51      Self::WinGame => 4,
52      Self::DemoEvent => 5,
53      Self::ArrowHitPlayer => 6,
54      Self::RainLevelChange => 7,
55      Self::ThunderLevelChange => 8,
56      Self::PlayPufferfishStingSound => 9,
57      Self::PlayElderGuardianMobAppearance => 10,
58      Self::EnableRespawnScreen => 11,
59      Self::LimitedCrafting => 12,
60      Self::StartWaitingForLevelChunks => 13,
61    };
62
63    (id as u8).write_buf(buffer)?;
64
65    Ok(())
66  }
67}