1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 18:24:05 +02:00

explicit event type to event message

This commit is contained in:
Robin Appelman 2024-01-29 22:54:45 +01:00
commit c08f30a60c

View file

@ -13,6 +13,7 @@ use crate::{GameEventError, Parse, ParseError, ParserState, ReadResult, Result,
#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct GameEventMessage { pub struct GameEventMessage {
pub event_type_id: GameEventTypeId, pub event_type_id: GameEventTypeId,
pub event_type: GameEventType,
pub event: GameEvent, pub event: GameEvent,
} }
@ -26,6 +27,7 @@ impl Parse<'_> for GameEventMessage {
if state.event_definitions.is_empty() { if state.event_definitions.is_empty() {
return Ok(GameEventMessage { return Ok(GameEventMessage {
event_type_id, event_type_id,
event_type: GameEventType::Unknown(String::new()),
event: GameEvent::Unknown(RawGameEvent { event: GameEvent::Unknown(RawGameEvent {
event_type: GameEventType::Unknown(String::new()), event_type: GameEventType::Unknown(String::new()),
values: Vec::new(), values: Vec::new(),
@ -43,6 +45,7 @@ impl Parse<'_> for GameEventMessage {
}; };
Ok(GameEventMessage { Ok(GameEventMessage {
event_type_id, event_type_id,
event_type: event.event_type(),
event, event,
}) })
} }
@ -94,6 +97,7 @@ fn test_game_event_roundtrip() {
crate::test_roundtrip_encode( crate::test_roundtrip_encode(
GameEventMessage { GameEventMessage {
event_type_id: GameEventTypeId(0), event_type_id: GameEventTypeId(0),
event_type: GameEventType::ServerShutdown,
event: GameEvent::ServerShutdown(ServerShutdownEvent { event: GameEvent::ServerShutdown(ServerShutdownEvent {
reason: "asd".into(), reason: "asd".into(),
}), }),
@ -103,6 +107,7 @@ fn test_game_event_roundtrip() {
crate::test_roundtrip_encode( crate::test_roundtrip_encode(
GameEventMessage { GameEventMessage {
event_type_id: GameEventTypeId(2), event_type_id: GameEventTypeId(2),
event_type: GameEventType::GameInit,
event: GameEvent::GameInit(GameInitEvent {}), event: GameEvent::GameInit(GameInitEvent {}),
}, },
&state, &state,