woo! application state!

This commit is contained in:
2020-08-23 12:19:20 +01:00
parent 73074c8b75
commit 1c1d183dbe
3 changed files with 60 additions and 19 deletions

View File

@@ -1,22 +1,48 @@
use wasm_bindgen::prelude::*;
use bitsy_parser::game::Game;
use lazy_static::lazy_static;
use std::sync::Mutex;
use wasm_bindgen::prelude::*;
struct State {
main: Option<Game>,
additional: Option<Game>,
}
lazy_static! {
static ref STATE: Mutex<State> = Mutex::new(State { main: None, additional: None});
}
// TODO DEDUPE
#[wasm_bindgen]
pub fn merge(a: String, b: String) -> String {
let main = Game::from(a);
let additional = Game::from(b);
pub fn load_main(game_data: String) -> String {
let game = Game::from(game_data);
if main.is_err() {
return "Couldn't parse main game.".to_string();
}
if game.is_ok() {
STATE.lock().unwrap().main = Some(game.unwrap());
"OK!"
} else {
"Could not parse game data"
}.to_string()
}
if additional.is_err() {
return "Couldn't parse additional game.".to_string();
}
#[wasm_bindgen]
pub fn load_additional(game_data: String) -> String {
let game = Game::from(game_data);
let mut main = main.unwrap();
let additional = additional.unwrap();
if game.is_ok() {
STATE.lock().unwrap().additional = Some(game.unwrap());
"OK!"
} else {
"Could not parse game data"
}.to_string()
}
#[wasm_bindgen]
pub fn merge() -> String {
let state = STATE.lock().unwrap();
let mut main = state.main.clone().unwrap();
let additional = state.additional.clone().unwrap();
main.merge(additional);
main.dedupe_tiles();
main.to_string()