chiark / gitweb /
pass PieceState to [add_]ui_operations
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Feb 2021 22:02:54 +0000 (22:02 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 14 Feb 2021 16:00:53 +0000 (16:00 +0000)
NFC

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/session.rs
src/bin/otterlib.rs
src/gamestate.rs

index e49dbd37089e45ee89bb1ddbdcf0ae200d8b822a..bd9381d46fc475f0bc1382c8c9eae89f19690673 100644 (file)
@@ -124,7 +124,7 @@ fn session_inner(form: Json<SessionForm>,
         zg: pr.zlevel.zg,
         pinned: pr.pinned,
         angle: vangle,
-        uos: &p.ui_operations()?,
+        uos: &p.ui_operations(pr)?,
       };
 
       let for_piece = SessionPieceContext {
index f727c189b4fabe7b1117fdf21c4f61c334a79a73..88e0bde391992e18fb9cf59fa3ab981397fff2bb 100644 (file)
@@ -93,7 +93,21 @@ fn preview(items: Vec<ItemForOutput>) {
     (||{
       let pc = spec.clone().load().context("load")?;
       let mut uos = vec![];
-      pc.add_ui_operations(&mut uos).context("add uos")?;
+      let gen_dummy = Generation(1);
+      let gpc_dummy = PieceState {
+        pos: PosC([0,0]),
+        face: default(),
+        held: None,
+        zlevel: ZLevel { z: default(), zg: gen_dummy },
+        pinned: false,
+        occult: default(),
+        angle: default(),
+        gen: gen_dummy,
+        lastclient: ClientId(default()),
+        gen_before_lastclient: gen_dummy,
+        xdata: None,
+      };
+      pc.add_ui_operations(&mut uos, &gpc_dummy).context("add uos")?;
       let uos = uos.into_iter().map(|uo| uo.opname).collect::<Vec<_>>();
       let spec = spec.clone();
 
index 8316bcc32442d5cb16df04911cb133076168841a..a82b18a8ca90cd2c149f3671c25bde8e3a0b06c8 100644 (file)
@@ -135,7 +135,8 @@ pub trait Piece: Outline + Send + Debug {
   fn nfaces(&self) -> RawFaceId;
 
   #[throws(InternalError)]
-  fn add_ui_operations(&self, _upd: &mut Vec<UoDescription>) { }
+  fn add_ui_operations(&self, _upd: &mut Vec<UoDescription>,
+                       _gpc: &PieceState) { }
 
   fn ui_operation(&self,
                   _gs: &mut GameState, _player: PlayerId, _piece: PieceId,
@@ -269,7 +270,7 @@ impl PieceState {
       z          : self.zlevel.z.clone(),
       zg         : self.zlevel.zg,
       pinned     : self.pinned,
-      uos        : p.ui_operations()?,
+      uos        : p.ui_operations(self)?,
     }
   }
 
@@ -294,7 +295,7 @@ impl PieceXDataExt for PieceXDataState {
 pub trait PieceExt {
   fn make_defs(&self, pri: &PieceRenderInstructions) -> Result<Html, IE>;
   fn describe_pri(&self, pri: &PieceRenderInstructions) -> Html;
-  fn ui_operations(&self) -> Result<Vec<UoDescription>, IE>;
+  fn ui_operations(&self, gpc: &PieceState) -> Result<Vec<UoDescription>, IE>;
 }
 
 impl<T> PieceExt for T where T: Piece + ?Sized {
@@ -323,7 +324,7 @@ impl<T> PieceExt for T where T: Piece + ?Sized {
   }
 
   #[throws(InternalError)]
-  fn ui_operations(&self) -> Vec<UoDescription> {
+  fn ui_operations(&self, gpc: &PieceState) -> Vec<UoDescription> {
     type WRC = WhatResponseToClientOp;
 
     let mut out = vec![];
@@ -336,7 +337,7 @@ impl<T> PieceExt for T where T: Piece + ?Sized {
         desc: Html::lit("flip"),
       })
     }
-    self.add_ui_operations(&mut out)?;
+    self.add_ui_operations(&mut out, gpc)?;
     out
   }
 }