diff --git a/src/simulator/Cargo.lock b/src/simulator/Cargo.lock index 455696d0..cb09e635 100644 --- a/src/simulator/Cargo.lock +++ b/src/simulator/Cargo.lock @@ -941,6 +941,17 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "mc-replay" +version = "0.1.0" +dependencies = [ + "bincode", + "serde", + "serde_json", + "tempfile", + "uuid", +] + [[package]] name = "mc-sim" version = "0.1.0" @@ -1770,6 +1781,7 @@ checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" dependencies = [ "getrandom 0.4.2", "js-sys", + "serde_core", "wasm-bindgen", ] diff --git a/src/simulator/Cargo.toml b/src/simulator/Cargo.toml index 189d7004..942186f6 100644 --- a/src/simulator/Cargo.toml +++ b/src/simulator/Cargo.toml @@ -21,6 +21,7 @@ members = [ "crates/mc-ecology", "crates/mc-sim", "crates/mc-mcts-service", + "crates/mc-replay", "api-wasm", "api-gdext", "tests/integration", diff --git a/src/simulator/crates/mc-replay/Cargo.toml b/src/simulator/crates/mc-replay/Cargo.toml new file mode 100644 index 00000000..4877e405 --- /dev/null +++ b/src/simulator/crates/mc-replay/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "mc-replay" +version = "0.1.0" +edition = "2021" + +# `mc-replay` owns `GameHistory`, `TurnSnapshot`, `TurnEvent`, +# `TurnEventCollector`, and the on-disk archive read/write surface that the +# Statistics modal, end-of-game summary, and Past Games index all consume. +# +# It deliberately depends on no other simulator crate today: the upstream +# strong-id types (ClanId, UnitKind, WonderId, TechId, EraId, MapDescriptor, +# WorldSnapshot) are still in flux across the workspace, so this crate carries +# its own newtype wrappers (see `ids.rs`). Each TODO in `ids.rs` names the +# upstream crate that should eventually supply the canonical type — at which +# point the wrapper here becomes a re-export. + +[dependencies] +serde = { workspace = true } +serde_json = { workspace = true } +bincode = { version = "2", features = ["serde"] } +uuid = { version = "1", features = ["serde", "v4"] } + +[dev-dependencies] +tempfile = "3" + +[lints] +workspace = true