Compare commits

..

11 Commits

Author SHA1 Message Date
6794672c97 update for new version (doesn't really matter though) 2021-11-06 15:20:27 +00:00
d2c3269eba bump wasm-bindgen 2021-07-08 18:40:55 +01:00
215af194c8 remove unnecessary comment 2021-07-08 18:38:28 +01:00
0b82495451 separate build and deploy stages 2021-07-08 11:07:24 +01:00
c1d39023f8 add itch cover 2021-07-08 11:06:33 +01:00
ecd117afea 7.5 update 2021-07-08 11:06:07 +01:00
cbe3a33311 error/success handling (user feedback) 2020-08-23 16:36:27 +01:00
3903e4e6be no favicon (avoid 404) 2020-08-23 12:36:46 +01:00
0e0c4a4a73 tidy up build script 2020-08-23 12:36:00 +01:00
eff32a6540 package info and version bump 2020-08-23 12:19:44 +01:00
1c1d183dbe woo! application state! 2020-08-23 12:19:20 +01:00
8 changed files with 99 additions and 28 deletions

View File

@@ -1,8 +1,11 @@
[package] [package]
name = "bitsy-merge" name = "mixsy"
version = "0.71.0" description = "combine Bitsy games"
version = "0.710.0"
authors = ["Max Bradbury <max@tinybird.info>"] authors = ["Max Bradbury <max@tinybird.info>"]
edition = "2018" edition = "2018"
license = "MIT"
repository = "https://tinybird.dev/max/mixsy"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -10,5 +13,6 @@ edition = "2018"
crate-type = ["cdylib"] crate-type = ["cdylib"]
[dependencies] [dependencies]
"bitsy-parser" = "^0.71.1" "bitsy-parser" = "^0.710.0"
"wasm-bindgen" = "^0.2.64" "lazy_static" = "^1.4.0"
"wasm-bindgen" = "^0.2.78"

View File

@@ -1,5 +1,5 @@
#!/bin/sh #!/usr/bin/env bash
cargo build
pug index.pug pug index.pug
set -ex
wasm-pack build --target web wasm-pack build --target web

View File

@@ -1,6 +1,4 @@
#!/bin/sh #!/bin/sh
./build.sh
zip -r mixsy.zip README.md index.html merge.png pkg zip -r mixsy.zip README.md index.html merge.png pkg
butler push mixsy.zip ruin/mixsy:html butler push mixsy.zip ruin/mixsy:html

View File

@@ -1,13 +1,39 @@
import init, {merge} from './pkg/bitsy_merge.js'; import init, {load_main, load_additional, merge} from './pkg/mixsy.js';
async function run() { async function run() {
await init(); await init();
document.getElementById('merge').addEventListener('click', () => { const main = document.getElementById('a');
let a = document.getElementById('a').value; const additional = document.getElementById('b');
let b = document.getElementById('b').value; const output = document.getElementById('c');
document.getElementById('c').value = merge(a, b); const merge_button = document.getElementById('merge');
})
function handleResult(inputElement, message) {
console.log(message);
let messageBox = inputElement.nextSibling;
messageBox.innerText = message;
messageBox.style.display = "block"
setTimeout(() => {messageBox.style.display = "none"}, 4000);
}
main.addEventListener('change', () => {
if (main.value) {
handleResult(main, load_main(main.value));
}
});
additional.addEventListener('change', () => {
if (additional.value) {
handleResult(additional, load_additional(additional.value));
}
});
function mix() {
output.value = merge();
}
merge_button.addEventListener('click', mix);
merge_button.addEventListener('touchend', mix);
} }
run(); run();

View File

@@ -3,6 +3,8 @@ html(lang="en-gb")
head head
meta(content="text/html;charset=utf-8" http-equiv="Content-Type") meta(content="text/html;charset=utf-8" http-equiv="Content-Type")
title mixsy title mixsy
//- no favicon!! taken from: https://k1ss.org/blog/20191004a
<link href=data:, rel=icon>
style style
include style.css include style.css
body body
@@ -13,9 +15,11 @@ html(lang="en-gb")
#main.square.left #main.square.left
h2 main h2 main
textarea#a(placeholder="Paste your main game data here...") textarea#a(placeholder="Paste your main game data here...")
p.result
#additional.square.left #additional.square.left
h2 additional h2 additional
textarea#b(placeholder="Paste additional game data here...") textarea#b(placeholder="Paste additional game data here...")
p.result
.row.middle .row.middle
img.centre(src="merge.png" alt="") img.centre(src="merge.png" alt="")
button#merge.centre mix! button#merge.centre mix!
@@ -23,6 +27,5 @@ html(lang="en-gb")
.square.centre .square.centre
h2 output h2 output
textarea#c textarea#c
//- Note the usage of `type=module` here as this is an ES6 module -->
script(type="module") script(type="module")
include index.js include index.js

BIN
mixsy-cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,21 +1,55 @@
use wasm_bindgen::prelude::*;
use bitsy_parser::game::Game; 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] #[wasm_bindgen]
pub fn merge(a: String, b: String) -> String { pub fn load_main(game_data: String) -> String {
let main = Game::from(a); let result = Game::from(game_data);
let additional = Game::from(b);
if main.is_err() { if result.is_ok() {
return "Couldn't parse main game.".to_string(); let (game, _errors) = result.unwrap();
STATE.lock().unwrap().main = Some(game);
"OK!"
} else {
"Could not parse game data"
}.to_string()
}
#[wasm_bindgen]
pub fn load_additional(game_data: String) -> String {
let result = Game::from(game_data);
if result.is_ok() {
let (game, _errors) = result.unwrap();
STATE.lock().unwrap().additional = Some(game);
"OK!"
} else {
"Could not parse game data"
}.to_string()
}
#[wasm_bindgen]
pub fn merge() -> String {
let state = STATE.lock().unwrap();
if state.main.is_none() || state.additional.is_none() {
return "".to_string();
} }
if additional.is_err() { let mut main = state.main.clone().unwrap();
return "Couldn't parse additional game.".to_string(); let additional = state.additional.as_ref().unwrap();
}
let mut main = main.unwrap();
let additional = additional.unwrap();
main.merge(additional); main.merge(additional);
main.dedupe_tiles(); main.dedupe_tiles();

View File

@@ -72,6 +72,12 @@ textarea {
float: left; float: left;
} }
.result {
position: relative;
background: var(--bg);
color: var(--inverse);
}
.row { .row {
width: 100%; width: 100%;
height: calc(82vmin / 3); height: calc(82vmin / 3);
@@ -81,4 +87,4 @@ textarea {
width: 50vmin; width: 50vmin;
height: 100%; height: 100%;
padding: 0.5em; padding: 0.5em;
} }