Skip to main content

nurtex_protocol/types/
game_event.rs

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