// ---------- game state ----------
-#[derive(Debug)]
+#[derive(Debug,Serialize)]
pub struct GameState {
pub pieces : DenseSlotMap<PieceId,PieceState>,
pub players : DenseSlotMap<PlayerId,PlayerState>,
pub log : Vec<(Generation,LogEntryRef)>,
}
-#[derive(Debug)]
+#[derive(Debug,Serialize)]
pub struct PieceState {
pub pos : Pos,
+ #[serde(with="self::piece_serde")]
pub p : Box<dyn Piece>,
pub face : FaceId,
pub held : Option<PlayerId>,
pub gen_before_lastclient : Generation,
}
-#[derive(Debug)]
+#[derive(Debug,Serialize)]
pub struct PlayerState {
pub nick : String,
}
}
}
+// ---------- pice load and save ----------
+
+mod piece_serde {
+ use crate::gamestate::*;
+ use serde::Serializer;
+// #[throws(Result<<S as Serializer>::Ok,<S as Serializer>::Error>)]
+ pub fn serialize<S:Serializer>(pc : &Box<dyn Piece>, s:S)
+ -> Result<S::Ok, S::Error> {
+ s.serialize_none()
+ }
+ pub fn deserialize() { }
+}
+
// ========== ad-hoc and temporary ==========
pub fn make_pieceid_visible(p : PieceId) -> VisiblePieceId {