manabrew_engine/agent/
notification.rs1use crate::agent::GameLogEvent;
2use crate::agent::ManaCostAction;
3use crate::ids::{CardId, PlayerId};
4use forge_foundation::PhaseType;
5
6#[derive(Debug, Clone)]
7pub enum GameNotification {
8 Event(GameLogEvent),
9 CardPlayed {
10 player: PlayerId,
11 card_id: CardId,
12 card_name: String,
13 set_code: String,
14 },
15 TurnChanged {
16 active_player: PlayerId,
17 turn_number: u32,
18 },
19 PhaseChanged {
20 phase: PhaseType,
21 },
22 PriorityChanged {
23 player: PlayerId,
24 },
25 StateChanged,
26 SnapshotCreated {
27 checkpoint_id: u64,
28 label: String,
29 },
30 ManaPaymentResolved {
31 player: PlayerId,
32 actions: Vec<ManaCostAction>,
33 },
34 ActivatedAbilityPaymentFailed {
35 player: PlayerId,
36 card_id: CardId,
37 ability_index: usize,
38 },
39 DiceRolled {
42 player: PlayerId,
43 sides: i32,
44 natural_results: Vec<i32>,
46 final_results: Vec<i32>,
48 ignored_rolls: Vec<i32>,
50 source_card_name: Option<String>,
52 },
53 FirstPlayerRoll {
57 sides: i32,
58 rolls: Vec<(PlayerId, i32)>,
60 winner: PlayerId,
62 },
63 GameOver,
64}