chiark / gitweb /
plumb GameState into add_ui_operations
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 19 Mar 2021 00:05:40 +0000 (00:05 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 20 Mar 2021 20:12:41 +0000 (20:12 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Cargo.toml
apitest/Cargo.toml
daemon/Cargo.toml
daemon/session.rs
src/bin/otterlib.rs
src/gamestate.rs
src/hand.rs
src/pcrender.rs
wasm/Cargo.toml
wdriver/Cargo.toml

index d84893faada8aabf1a1a0c9e0d69c4f7b3da5459..14f68e553275596a3ba1650fff9071357e2ff97c 100644 (file)
@@ -1,80 +1,88 @@
-# Copyright 2020-2021 Ian Jackson and contributors to Otter
-# SPDX-License-Identifier: AGPL-3.0-or-later
-# There is NO WARRANTY.
 
-[package]
-name = "otter"
-authors = ["Ian Jackson <ijackson@chiark.greenend.org.uk>"]
-license = "AGPL-3.0-or-later"
+[dependencies]
+anyhow="1"
+argparse="0.2"
+backtrace="0.3"
+boolinator="2"
+cast_trait_object="0.1"
+chrono="0.4"
+chrono-tz="0.5"
+delegate="0.5"
+downcast-rs="1"
+either="1"
+enum_dispatch="0.3.5"
+env_logger="0.8"
+extend="1"
+failure="0.1.8"
+fehler="1"
+fs2="0.4"
+glob="0.3"
+htmlescape="0.3"
+inventory="0.1"
+itertools="0.10"
+lazy-init="0.5"
+lazy_static="1"
+libc="0.2"
+log="0.4"
+nix="0.20"
+num="0.4"
+num-derive="0.3"
+num-traits="0.2"
+once_cell="1"
+ordered-float="2"
+parking_lot="0.11"
+percent-encoding="2"
+pwd="1"
+rand="0.8"
+regex="1"
+rmp="0.8"
+rmp-serde="0.15"
+serde_json="1"
+serde_with="1"
+structopt="0.3"
+tempfile="3"
+tera="0.11"
+toml="0.5"
+typetag="0.1.6"
+uds="0.2"
+url="2"
+vecdeque-stableix="1"
+void="1"
 
-version = "0.3.0"
-edition = "2018"
+[dependencies.enum-map]
+version="0.6"
+features=["serde"]
 
-[workspace]
-members = ["wasm", "daemon", "wdriver", "apitest"]
+[dependencies.flexi_logger]
+version="0.17"
+features=["specfile"]
 
-[dependencies]
+[dependencies.index_vec]
+version="0.1.1"
+features=["serde"]
 
-otter-base = { path = "base" }
+[dependencies.otter-base]
+path="base"
 
-anyhow = "1"
-enum_dispatch = "0.3.5"
-argparse = "0.2"
-backtrace = "0.3"
-boolinator = "2"
-cast_trait_object = "0.1"
-chrono = "0.4"
-chrono-tz = "0.5"
-delegate = "0.5"
-downcast-rs = "1"
-either = "1"
-extend = "1"
-enum-map = { version = "0.6", features = [ "serde" ] }
-env_logger = "0.8"
-failure = "0.1.8" # for pwd
-flexi_logger = { version = "0.17", features = [ "specfile" ] }
-fs2 = "0.4"
-glob = "0.3"
-htmlescape = "0.3"
-index_vec = { version = "0.1.1", features = ['serde'] }
-inventory = "0.1"
-itertools = "0.10"
-lazy-init = "0.5"
-lazy_static = "1"
-libc = "0.2"
-log = "0.4"
-nix = "0.20"
-num = "0.4"
-num-derive = "0.3"
-once_cell = "1"
-ordered-float = "2"
-parking_lot = "0.11"
-percent-encoding = "2"
-pwd = "1"
-rand = "0.8"
-regex = "1"
-rmp = "0.8"
-rmp-serde = "0.15"
-serde_json = "1"
-tempfile = "3"
-toml = "0.5"
-typetag = "0.1.6"
-uds = "0.2"
-url = "2"
-vecdeque-stableix = "1"
-void = "1"
+[dependencies.serde]
+version="1"
+features=["derive", "rc"]
 
-slotmap = { features = ['serde'], git = "https://github.com/ijackson/slotmap", branch="entry-return-stale-key" }
-# ^ MR not yet reviewed
+[dependencies.slotmap]
+branch="entry-return-stale-key"
+git="https://github.com/ijackson/slotmap"
+features=["serde"]
 
-# This version wants to stay aligned with Rocket's, or we'll hve
-# two copies of the templating engine in our executables!
-tera = "0.11"
+[dependencies.strum]
+version="0.20"
+features=["derive"]
 
-# Repeated here because importing does not work properly
-fehler = "1"
-num-traits = "0.2"
-serde = { version = "1", features = ["derive","rc"] }
-serde_with = "1"
-structopt = "0.3"
-strum = { version = "0.20", features = ['derive'] }
+[package]
+edition="2018"
+license="AGPL-3.0-or-later"
+name="otter"
+version="0.3.0"
+authors=["Ian Jackson <ijackson@chiark.greenend.org.uk>"]
+
+[workspace]
+members=["wasm", "daemon", "wdriver", "apitest"]
\ No newline at end of file
index 46011c204b97e0bd8ba76f3eb705173147c10e3b..d348f404f0757752d02dbd0da0c95098d8299b27 100644 (file)
@@ -1,34 +1,38 @@
-# Copyright 2020-2021 Ian Jackson and contributors to Otter
-# SPDX-License-Identifier: AGPL-3.0-or-later
-# There is NO WARRANTY.
 
-[package]
-name = "otter-api-tests"
-authors = ["Ian Jackson <ijackson@chiark.greenend.org.uk>"]
-license = "AGPL-3.0-or-later"
-
-version = "0.0.1"
-edition = "2018"
+[[bin]]
+name="at-otter"
+path="at-otter.rs"
 
 [dependencies]
-otter = { path = ".." }
+ego-tree="0.6"
+fehler="1"
+humantime="2"
+num-traits="0.2"
+scraper="0.12"
+structopt="0.3"
+
+[dependencies.otter]
+path=".."
 
-ego-tree = "0.6"
-humantime = "2"
-reqwest = { version = "0.11", features = ["blocking", "json", "stream"] }
-scraper = "0.12"
+[dependencies.reqwest]
+version="0.11"
+features=["blocking", "json", "stream"]
 
-# Repeated here because importing does not work properly
-fehler = "1"
-num-traits = "0.2"
-serde = { version = "1", features = ["derive","rc"] }
-structopt = "0.3"
-strum = { version = "0.20", features = ['derive'] }
+[dependencies.serde]
+version="1"
+features=["derive", "rc"]
+
+[dependencies.strum]
+version="0.20"
+features=["derive"]
 
 [lib]
-name = "otter_api_tests"
-path = "apitest.rs"
+name="otter_api_tests"
+path="apitest.rs"
 
-[[bin]]
-name = "at-otter"
-path = "at-otter.rs"
+[package]
+edition="2018"
+license="AGPL-3.0-or-later"
+name="otter-api-tests"
+version="0.0.1"
+authors=["Ian Jackson <ijackson@chiark.greenend.org.uk>"]
\ No newline at end of file
index 525163434c024cbf9f255ba9dcdf64442d95f56e..5f242365cd513c2b3eec645211597603c22dc5ed 100644 (file)
@@ -1,35 +1,41 @@
-# Copyright 2020-2021 Ian Jackson and contributors to Otter
-# SPDX-License-Identifier: AGPL-3.0-or-later
-# There is NO WARRANTY.
-
-[package]
-name = "otter-daemon"
-authors = ["Ian Jackson <ijackson@chiark.greenend.org.uk>"]
-license = "AGPL-3.0-or-later"
-
-version = "0.0.1"
-edition = "2018"
 
 [[bin]]
-name = "daemon-otter"
-path = "main.rs"
+name="daemon-otter"
+path="main.rs"
 
 [dependencies]
-otter = { path = ".." }
-otter-base = { path = "../base" }
+fehler="1"
+num-traits="0.2"
+rocket_cors="0.5"
+serde_with="1"
+structopt="0.3"
+
+[dependencies.otter]
+path=".."
 
-rocket = { version = "^0.4.6", features=["sse"] }
-rocket_cors = "0.5"
+[dependencies.otter-base]
+path="../base"
 
-# Repeated here because importing does not work properly
-fehler = "1"
-num-traits = "0.2"
-serde = { version = "1", features = ["derive","rc"] }
-serde_with = "1"
-structopt = "0.3"
-strum = { version = "0.20", features = ['derive'] }
+[dependencies.rocket]
+version="^0.4.6"
+features=["sse"]
 
 [dependencies.rocket_contrib]
-version = "0.4"
-default-features = false
-features = ["tera_templates","helmet","json","serve"]
+default-features=false
+version="0.4"
+features=["tera_templates", "helmet", "json", "serve"]
+
+[dependencies.serde]
+version="1"
+features=["derive", "rc"]
+
+[dependencies.strum]
+version="0.20"
+features=["derive"]
+
+[package]
+edition="2018"
+license="AGPL-3.0-or-later"
+name="otter-daemon"
+version="0.0.1"
+authors=["Ian Jackson <ijackson@chiark.greenend.org.uk>"]
\ No newline at end of file
index 04b64b53bfc65e0e96125c7307c30099c686c6a6..f24016b87cbcfe850613d43ec485aefcdf36222c 100644 (file)
@@ -138,7 +138,7 @@ fn session_inner(form: Json<SessionForm>,
         pinned: gpc.pinned,
         angle: vangle,
         desc,
-        uos: &pri.ui_operations(gpc, ipc)?,
+        uos: &pri.ui_operations(&ig.gs, gpc, ipc)?,
       };
 
       let for_piece = SessionPieceContext {
index 19a623606721231213ecf4775d9e87eaee85a402..801e7f2d0149adfd55d3e91cd6d2cbaf1d865f2c 100644 (file)
@@ -94,7 +94,7 @@ fn preview(items: Vec<ItemForOutput>) {
       let loaded = spec.clone().load().context("load")?;
       let p = loaded.p; // xxx show occulted version too
       let mut uos = vec![];
-      p.add_ui_operations(&mut uos, &GPiece::dummy())
+      p.add_ui_operations(&mut uos, &GameState::dummy(), &GPiece::dummy())
         .context("add uos")?;
       let uos = uos.into_iter().map(|uo| uo.opname).collect::<Vec<_>>();
       let spec = spec.clone();
index ad1ca4b81970ce81e4e85730444abfe69238f096..a66ca304a05350dc95604a04541adf71491fdd1f 100644 (file)
@@ -128,7 +128,7 @@ pub trait PieceTrait: OutlineTrait + Send + Debug + 'static {
 
   #[throws(InternalError)]
   fn add_ui_operations(&self, _upd: &mut Vec<UoDescription>,
-                       _gpc: &GPiece) { }
+                       _gs: &GameState, _gpc: &GPiece) { }
 
   fn ui_operation(&self, _a: ApiPieceOpArgs<'_>,
                   _opname: &str, _wrc: WhatResponseToClientOp)
index b5829107b5d634c1ca10d739fc8bc41774c08575..8b9cc7f7ae0c5e469fd5132ba6a9c4cf82ff1eda 100644 (file)
@@ -116,7 +116,8 @@ impl PieceTrait for Hand {
   }
 
   #[throws(InternalError)]
-  fn add_ui_operations(&self, upd: &mut Vec<UoDescription>, gpc: &GPiece) {
+  fn add_ui_operations(&self, upd: &mut Vec<UoDescription>,
+                       _gs: &GameState, gpc: &GPiece) {
     upd.push(if_chain! {
       if let Some(xdata) = gpc.xdata.get::<HandState>()?;
       if let Some(_owner) = &xdata.owner;
index ed961ca3c26f08280bfe309dc634f47fce4e7daa..f93e7ade377cb4b2243ffcf9856198c75658b356 100644 (file)
@@ -123,7 +123,7 @@ impl PieceRenderInstructions {
       zg         : zlevel.zg,
       angle      : pri.angle(gpc).to_compass(),
       pinned     : gpc.pinned,
-      uos        : pri.ui_operations(gpc, ipc)?,
+      uos        : pri.ui_operations(gs, gpc, ipc)?,
     };
     dbgc!(pri, ipc, gpc, r);
     r
@@ -136,7 +136,7 @@ impl PieceRenderInstructions {
     let pri = self;
     let r = PreparedPieceImage {
       svg        : pri.make_defs(ioccults, gs, gpc, ipc)?,
-      uos        : pri.ui_operations(gpc, ipc)?,
+      uos        : pri.ui_operations(gs, gpc, ipc)?,
     };
     dbgc!(pri, ipc, gpc, r);
     r
@@ -201,7 +201,7 @@ impl PieceRenderInstructions {
   }
 
   #[throws(InternalError)]
-  pub fn ui_operations(&self, gpc: &GPiece, ipc: &IPiece)
+  pub fn ui_operations(&self, gs: &GameState, gpc: &GPiece, ipc: &IPiece)
                        -> Vec<UoDescription>
   {
     let y = match self.occulted {
@@ -221,7 +221,7 @@ impl PieceRenderInstructions {
         desc: Html::lit("flip"),
       })
     }
-    ipc.show(y).add_ui_operations(&mut out, gpc)?;
+    ipc.show(y).add_ui_operations(&mut out, gs, gpc)?;
     out
   }
 }
index 9eb7021acb3092116be0cb72edbb073973c3b172..154e46a63298e594ff377bb17de414d151e27d26 100644 (file)
@@ -1,25 +1,22 @@
 
-[package]
-name = "otter-wasm"
-authors = ["Ian Jackson <ijackson@chiark.greenend.org.uk>"]
-license = "AGPL-3.0-or-later"
-
-version = "0.0.1"
-edition = "2018"
-
-[lib]
-name = "otter_wasm"
-path = "wasm.rs"
-crate-type = ["cdylib"]
-
 [dependencies]
+console_error_panic_hook="0.1"
+fehler="1"
+js-sys="0.3"
+wasm-bindgen="= 0.2.70"
+wee_alloc="0.4"
 
-otter-base = { path = "../base" }
+[dependencies.otter-base]
+path="../base"
 
-console_error_panic_hook = "0.1"
-js-sys = "0.3"
-wasm-bindgen = "= 0.2.70"
-wee_alloc = "0.4"
+[lib]
+name="otter_wasm"
+path="wasm.rs"
+crate-type=["cdylib"]
 
-# Repeated here because importing does not work properly
-fehler = "1"
+[package]
+edition="2018"
+license="AGPL-3.0-or-later"
+name="otter-wasm"
+version="0.0.1"
+authors=["Ian Jackson <ijackson@chiark.greenend.org.uk>"]
\ No newline at end of file
index 2a9bdd62d3d1f2d13c408d020018d82f29116b3b..4e10399d5f85fe9ae5c9c4d84639c83de38fa4ed 100644 (file)
@@ -1,29 +1,30 @@
-# Copyright 2020-2021 Ian Jackson and contributors to Otter
-# SPDX-License-Identifier: AGPL-3.0-or-later
-# There is NO WARRANTY.
 
-[package]
-name = "otter-webdriver-tests"
-authors = ["Ian Jackson <ijackson@chiark.greenend.org.uk>"]
-license = "AGPL-3.0-or-later"
-
-version = "0.0.1"
-edition = "2018"
+[[bin]]
+name="wdriver"
+path="wdriver.rs"
 
 [dependencies]
-otter-api-tests = { path = "../apitest" }
+fehler="1"
+ndarray="0.14"
+num-traits="0.2"
+structopt="0.3"
+thirtyfour_sync="0.22"
+x11rb="0.8"
 
-ndarray = "0.14"
-thirtyfour_sync = "0.22"
-x11rb = "0.8"
+[dependencies.otter-api-tests]
+path="../apitest"
 
-# Repeated here because importing does not work properly
-fehler = "1"
-num-traits = "0.2"
-serde = { version = "1", features = ["derive","rc"] }
-structopt = "0.3"
-strum = { version = "0.20", features = ['derive'] }
+[dependencies.serde]
+version="1"
+features=["derive", "rc"]
 
-[[bin]]
-name = "wdriver"
-path = "wdriver.rs"
+[dependencies.strum]
+version="0.20"
+features=["derive"]
+
+[package]
+edition="2018"
+license="AGPL-3.0-or-later"
+name="otter-webdriver-tests"
+version="0.0.1"
+authors=["Ian Jackson <ijackson@chiark.greenend.org.uk>"]
\ No newline at end of file