chiark / gitweb /
occult ilks: Wrap in some structures
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 11 Mar 2021 11:23:13 +0000 (11:23 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 11 Mar 2021 11:29:05 +0000 (11:29 +0000)
This will help with future-proofing savefiles.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/global.rs
src/occultilks.rs

index b2fe85d9eb0639b596053cd54154c166abba3933..2e093a598b610596345623db9b8976d4ec4b32ed 100644 (file)
@@ -46,7 +46,7 @@ pub struct Instance {
   pub name: Arc<InstanceName>,
   pub gs: GameState,
   pub ipieces: IPieces,
-  pub ioccults: OccultIlks,
+  pub ioccults: IOccults,
   pub clients: DenseSlotMap<ClientId, Client>,
   pub iplayers: SecondarySlotMap<PlayerId, PlayerRecord>,
   pub tokens_players: TokenRegistry<PlayerId>,
@@ -81,6 +81,11 @@ pub type ActualIPieces = SecondarySlotMap<PieceId, IPiece>;
 #[derive(Copy,Clone,Debug)]
 pub struct ModifyingPieces(());
 
+#[derive(Debug,Serialize,Deserialize,Default)]
+pub struct IOccults {
+  pub ilks: OccultIlks,
+}
+
 #[derive(Debug,Serialize,Deserialize,Default)]
 #[serde(transparent)]
 pub struct GPieces(pub(in crate::global) ActualGPieces);
@@ -1019,7 +1024,7 @@ impl InstanceGuard<'_> {
   fn load_game(accounts: &AccountsGuard,
                games: &mut GamesGuard,
                name: InstanceName) -> Option<InstanceRef> {
-    let InstanceSaveAccesses::<String,ActualIPieces,OccultIlks>
+    let InstanceSaveAccesses::<String,ActualIPieces,IOccults>
     { tokens_players, mut ipieces, ioccults, mut aplayers, acl, links }
     = match Self::load_something(&name, "a-") {
       Ok(data) => data,
index 44a108eb2916a6163d38b87c4c64b5558120fb74..81d912b8ea64fe158dd01374e647ab14017ee48c 100644 (file)
@@ -16,10 +16,15 @@ pub struct OccultIlkOwningId(Id);
 #[serde(transparent)]
 pub struct OccultIlkName(pub String);
 
+#[derive(Debug,Serialize,Deserialize)]
+pub struct OccultIlkData {
+  pub p_occ: Box<dyn OccultedPieceTrait>,
+}
+
 type Id = OccultIlkId;
 type OId = OccultIlkOwningId;
 type K = OccultIlkName;
-type V = Box<dyn OccultedPieceTrait>;
+type V = OccultIlkData;
 type Refcount = u32;
 
 #[derive(Debug,Serialize,Deserialize,Default)]