From 1b2b33064599fb0937d48109c570430c61994a9a Mon Sep 17 00:00:00 2001 From: milo Date: Sat, 9 Mar 2024 17:47:42 -0500 Subject: [PATCH] simplify config storage, since its never mutated anyways --- fish-webworker/src/lib.rs | 34 ++++++++++------------------------ fish-webworker/src/worker.js | 6 ++++-- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/fish-webworker/src/lib.rs b/fish-webworker/src/lib.rs index a9fefd2..9826641 100644 --- a/fish-webworker/src/lib.rs +++ b/fish-webworker/src/lib.rs @@ -1,34 +1,22 @@ -use std::{cell::RefCell, mem::MaybeUninit}; use wasm_bindgen_macro::wasm_bindgen; use fish::{Bot, Weights}; use mino::srs::{PieceType, Queue}; use mino::MatBuf; -struct State { +struct Config { weights: Weights, max_iters: u32, } -static mut STATE: MaybeUninit> = MaybeUninit::uninit(); - -impl State { - fn new() -> RefCell { - RefCell::new(State { - weights: Weights::default(), - max_iters: 10_000, - }) - } - - fn get() -> &'static RefCell { - unsafe { STATE.assume_init_ref() } - } -} +static CONFIG: Config = Config { + weights: Weights::DEFAULT, + max_iters: 50_000, +}; #[wasm_bindgen(start)] fn start() { std::panic::set_hook(Box::new(console_error_panic_hook::hook)); - unsafe { STATE.write(State::new()) }; } #[wasm_bindgen] @@ -38,9 +26,9 @@ pub fn get_version() -> String { #[wasm_bindgen] pub fn get_config() -> Vec { - let state = State::get().borrow(); - let mut config = Vec::from(state.weights.0); - config.push(state.max_iters as i32); + let mut config = Vec::from(CONFIG.weights.0); + config.push(Weights::PER_PIECE); + config.push(CONFIG.max_iters as i32); config } @@ -51,11 +39,9 @@ pub fn suggest(matrix: String, hold: String, next: String) -> Result, S let next = parse_queue(&next)?; let queue = Queue::new(hold, &next); - let state = State::get().borrow(); - let res = { - let mut bot = Bot::new(&state.weights, &matrix, queue); - bot.think(state.max_iters); + let mut bot = Bot::new(&CONFIG.weights, &matrix, queue); + bot.think(CONFIG.max_iters); bot.suggest().ok_or("No suggestion found")? }; diff --git a/fish-webworker/src/worker.js b/fish-webworker/src/worker.js index 297aa52..01136b7 100644 --- a/fish-webworker/src/worker.js +++ b/fish-webworker/src/worker.js @@ -12,8 +12,10 @@ async function handle(msg) { case 'init': { let version = getVersion(); - let weights = Array.from(getConfig()); - let maxIters = weights.pop(); + let config = Array.from(getConfig()); + let maxIters = config.pop(); + let weightFactor = config.pop(); + let weights = config.map(w => w / weightFactor); return { version, config: { weights, maxIters } }; }