use crate::event::Event;
use serde::{Deserialize, Serialize};
pub type BuffId = String;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BuffApplyRequested {
pub buff_id: BuffId,
}
impl Event for BuffApplyRequested {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BuffRemoveRequested {
pub buff_id: BuffId,
}
impl Event for BuffRemoveRequested {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BuffTickRequested;
impl Event for BuffTickRequested {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BuffAppliedEvent {
pub buff_id: BuffId,
}
impl Event for BuffAppliedEvent {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BuffRemovedEvent {
pub buff_id: BuffId,
}
impl Event for BuffRemovedEvent {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BuffExpiredEvent {
pub buff_id: BuffId,
}
impl Event for BuffExpiredEvent {}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_event_serialization() {
let event = BuffApplyRequested {
buff_id: "haste".to_string(),
};
let json = serde_json::to_string(&event).unwrap();
assert!(json.contains("haste"));
let deserialized: BuffApplyRequested = serde_json::from_str(&json).unwrap();
assert_eq!(deserialized.buff_id, "haste");
}
#[test]
fn test_buff_expired_event_serialization() {
let event = BuffExpiredEvent {
buff_id: "shield".to_string(),
};
let json = serde_json::to_string(&event).unwrap();
let deserialized: BuffExpiredEvent = serde_json::from_str(&json).unwrap();
assert_eq!(deserialized.buff_id, "shield");
}
}