woo! application state!
This commit is contained in:
50
src/lib.rs
50
src/lib.rs
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user