diff options
Diffstat (limited to '2026/framing')
| -rw-r--r-- | 2026/framing/Cargo.toml | 2 | ||||
| -rw-r--r-- | 2026/framing/art/font0.aseprite | bin | 0 -> 9656 bytes | |||
| -rw-r--r-- | 2026/framing/dist/game_lib-756716c85f227e5e.js (renamed from 2026/framing/dist/game_lib-632bc23475e9f6db.js) | 35 | ||||
| -rw-r--r-- | 2026/framing/dist/game_lib-756716c85f227e5e_bg.wasm (renamed from 2026/framing/dist/game_lib-632bc23475e9f6db_bg.wasm) | bin | 21761231 -> 21784901 bytes | |||
| -rw-r--r-- | 2026/framing/dist/index.html | 9 | ||||
| -rw-r--r-- | 2026/framing/dist/snippets/game_lib-09da6449fcb9d06e/src/bindings.js | 4 | ||||
| -rw-r--r-- | 2026/framing/index.html | 3 | ||||
| -rw-r--r-- | 2026/framing/src/assets/fonts/font0.png | bin | 0 -> 8247 bytes | |||
| -rw-r--r-- | 2026/framing/src/bindings.js | 4 | ||||
| -rw-r--r-- | 2026/framing/src/game.rs | 29 | ||||
| -rw-r--r-- | 2026/framing/src/lagerboy.png | bin | 886192 -> 0 bytes |
11 files changed, 57 insertions, 29 deletions
diff --git a/2026/framing/Cargo.toml b/2026/framing/Cargo.toml index cf605fa..b34f573 100644 --- a/2026/framing/Cargo.toml +++ b/2026/framing/Cargo.toml @@ -2,7 +2,7 @@ name = "game_lib" version = "0.1.0" authors = ["LLLL Colonq <llll@colonq.computer>"] -edition = "2021" +edition = "2024" [lib] crate-type = ["cdylib", "rlib"] diff --git a/2026/framing/art/font0.aseprite b/2026/framing/art/font0.aseprite Binary files differnew file mode 100644 index 0000000..1893854 --- /dev/null +++ b/2026/framing/art/font0.aseprite diff --git a/2026/framing/dist/game_lib-632bc23475e9f6db.js b/2026/framing/dist/game_lib-756716c85f227e5e.js index ef71c3c..51c21fe 100644 --- a/2026/framing/dist/game_lib-632bc23475e9f6db.js +++ b/2026/framing/dist/game_lib-756716c85f227e5e.js @@ -1,4 +1,5 @@ -import * as __wbg_star0 from './snippets/teleia-727bf4351691f1c8/src/helpers.js'; +import * as __wbg_star0 from './snippets/game_lib-09da6449fcb9d06e/src/bindings.js'; +import * as __wbg_star1 from './snippets/teleia-727bf4351691f1c8/src/helpers.js'; const lAudioContext = (typeof AudioContext !== 'undefined' ? AudioContext : (typeof webkitAudioContext !== 'undefined' ? webkitAudioContext : undefined)); let wasm; @@ -219,8 +220,13 @@ export function titlescreen_click() { wasm.titlescreen_click(); } -export function start_game() { - wasm.start_game(); +/** + * @param {string | null} [verb] + */ +export function start_game(verb) { + var ptr0 = isLikeNone(verb) ? 0 : passStringToWasm0(verb, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.start_game(ptr0, len0); } /** @@ -1468,43 +1474,43 @@ function __wbg_get_imports() { const ret = false; return ret; }; - imports.wbg.__wbindgen_closure_wrapper3165 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper3202 = function(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 530, __wbg_adapter_43); return ret; }; - imports.wbg.__wbindgen_closure_wrapper3166 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper3203 = function(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 530, __wbg_adapter_43); return ret; }; - imports.wbg.__wbindgen_closure_wrapper3167 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper3204 = function(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 530, __wbg_adapter_43); return ret; }; - imports.wbg.__wbindgen_closure_wrapper3168 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper3205 = function(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 530, __wbg_adapter_43); return ret; }; - imports.wbg.__wbindgen_closure_wrapper3169 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper3206 = function(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 530, __wbg_adapter_43); return ret; }; - imports.wbg.__wbindgen_closure_wrapper3170 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper3207 = function(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 530, __wbg_adapter_54); return ret; }; - imports.wbg.__wbindgen_closure_wrapper3396 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper3433 = function(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 605, __wbg_adapter_57); return ret; }; - imports.wbg.__wbindgen_closure_wrapper463 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper466 = function(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 113, __wbg_adapter_34); return ret; }; - imports.wbg.__wbindgen_closure_wrapper465 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper468 = function(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 117, __wbg_adapter_37); return ret; }; - imports.wbg.__wbindgen_closure_wrapper467 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper470 = function(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 115, __wbg_adapter_40); return ret; }; @@ -1571,7 +1577,8 @@ function __wbg_get_imports() { imports.wbg.__wbindgen_throw = function(arg0, arg1) { throw new Error(getStringFromWasm0(arg0, arg1)); }; - imports['./snippets/teleia-727bf4351691f1c8/src/helpers.js'] = __wbg_star0; + imports['./snippets/game_lib-09da6449fcb9d06e/src/bindings.js'] = __wbg_star0; + imports['./snippets/teleia-727bf4351691f1c8/src/helpers.js'] = __wbg_star1; return imports; } diff --git a/2026/framing/dist/game_lib-632bc23475e9f6db_bg.wasm b/2026/framing/dist/game_lib-756716c85f227e5e_bg.wasm Binary files differindex 7c32fa2..ef0aad6 100644 --- a/2026/framing/dist/game_lib-632bc23475e9f6db_bg.wasm +++ b/2026/framing/dist/game_lib-756716c85f227e5e_bg.wasm diff --git a/2026/framing/dist/index.html b/2026/framing/dist/index.html index 4e46e09..0eb3597 100644 --- a/2026/framing/dist/index.html +++ b/2026/framing/dist/index.html @@ -6,8 +6,8 @@ <meta charset="UTF-8"> <script type="module"> -import init, * as bindings from '/framing/dist/game_lib-632bc23475e9f6db.js'; -const wasm = await init({ module_or_path: '/framing/dist/game_lib-632bc23475e9f6db_bg.wasm' }); +import init, * as bindings from '/framing/dist/game_lib-756716c85f227e5e.js'; +const wasm = await init({ module_or_path: '/framing/dist/game_lib-756716c85f227e5e_bg.wasm' }); window.wasmBindings = bindings; @@ -23,7 +23,7 @@ dispatchEvent(new CustomEvent("TrunkApplicationStarted", {detail: {wasm}})); <link rel="icon" href="data:;base64,iVBORw0KGgo="> <link rel="stylesheet" href="/framing/dist/index-1e3cd2ca0ba4d1ec.css" integrity="sha384-1q3UDTmLdOyf9/QxW+Imap//HWhTWNfvn7j2iwuUap3HSD6IOGG7pDS9VJMk7nKv"/> <title>TODO TITLE</title> - <link rel="modulepreload" href="/framing/dist/game_lib-632bc23475e9f6db.js" crossorigin="anonymous" integrity="sha384-wB3zF5FUBj4GzDXiAKthCzMd74wJmz9oHSr/4HCFLcoCjFLmCPiBqXtQiPKpTYaD"><link rel="modulepreload" href="/framing/dist/snippets/game_lib-09da6449fcb9d06e/src/bindings.js" crossorigin="anonymous" integrity="sha384-Dpb3ctNH+2/9pBmnYvFi51S+PB475HUMu/0Sm9buFrBKpJMf6WI/rwH94aMAAaxG"><link rel="modulepreload" href="/framing/dist/snippets/teleia-727bf4351691f1c8/src/helpers.js" crossorigin="anonymous" integrity="sha384-HhtEY2WfGmhyPUSRWKZvqsRxYsdT/DLEdFUqWyDZt6G6lrNHmE1zMlw4BJ3RycRd"><link rel="preload" href="/framing/dist/game_lib-632bc23475e9f6db_bg.wasm" crossorigin="anonymous" integrity="sha384-V6RbIHd2D2OX3mjNLY1lHJQtMKAl0bPzVL+yzEhuqVP4cWc9eK/99BRlKCpxs1Ds" as="fetch" type="application/wasm"></head> + <link rel="modulepreload" href="/framing/dist/game_lib-756716c85f227e5e.js" crossorigin="anonymous" integrity="sha384-kETWGSRk6mu21Pl7hsEBpB7eWp9Jg8dJ0WfMsHTslM4gPgB1ny4BccJxZQiG/rOL"><link rel="modulepreload" href="/framing/dist/snippets/game_lib-09da6449fcb9d06e/src/bindings.js" crossorigin="anonymous" integrity="sha384-OqSoI1U/qGAdOIY23X7G4HXgi2h6nb8jbT8RiF1LDHgJg7UPDyGz1ZQ/rgmUg4ue"><link rel="modulepreload" href="/framing/dist/snippets/teleia-727bf4351691f1c8/src/helpers.js" crossorigin="anonymous" integrity="sha384-HhtEY2WfGmhyPUSRWKZvqsRxYsdT/DLEdFUqWyDZt6G6lrNHmE1zMlw4BJ3RycRd"><link rel="preload" href="/framing/dist/game_lib-756716c85f227e5e_bg.wasm" crossorigin="anonymous" integrity="sha384-iM/1P6P3lvXgnPMw0tt4ocjj6nBFBjHbULHKLD27+v172BszheW1lu2oltfrpEnw" as="fetch" type="application/wasm"></head> <body> <script type="module"> window.addEventListener("TrunkApplicationStarted", async (event) => { @@ -36,7 +36,8 @@ dispatchEvent(new CustomEvent("TrunkApplicationStarted", {detail: {wasm}})); window.wasmBindings.titlescreen_click(); break; case "startgame": - window.wasmBindings.start_game(); + console.log("verb!", ev.data.verb); + window.wasmBindings.start_game(ev.data.verb); break; case "endgame": window.wasmBindings.end_game(ev.data.win); diff --git a/2026/framing/dist/snippets/game_lib-09da6449fcb9d06e/src/bindings.js b/2026/framing/dist/snippets/game_lib-09da6449fcb9d06e/src/bindings.js index 1f17e14..a95d4a5 100644 --- a/2026/framing/dist/snippets/game_lib-09da6449fcb9d06e/src/bindings.js +++ b/2026/framing/dist/snippets/game_lib-09da6449fcb9d06e/src/bindings.js @@ -1,3 +1,3 @@ -export function js_test() { - console.log("test"); +export function js_update_lifetotal(lives) { + window.parent.postMessage({op: "lifetotal", lives: lives}); } diff --git a/2026/framing/index.html b/2026/framing/index.html index a554795..a11064b 100644 --- a/2026/framing/index.html +++ b/2026/framing/index.html @@ -25,7 +25,8 @@ window.wasmBindings.titlescreen_click(); break; case "startgame": - window.wasmBindings.start_game(); + console.log("verb!", ev.data.verb); + window.wasmBindings.start_game(ev.data.verb); break; case "endgame": window.wasmBindings.end_game(ev.data.win); diff --git a/2026/framing/src/assets/fonts/font0.png b/2026/framing/src/assets/fonts/font0.png Binary files differnew file mode 100644 index 0000000..048ef6c --- /dev/null +++ b/2026/framing/src/assets/fonts/font0.png diff --git a/2026/framing/src/bindings.js b/2026/framing/src/bindings.js index 1f17e14..a95d4a5 100644 --- a/2026/framing/src/bindings.js +++ b/2026/framing/src/bindings.js @@ -1,3 +1,3 @@ -export function js_test() { - console.log("test"); +export function js_update_lifetotal(lives) { + window.parent.postMessage({op: "lifetotal", lives: lives}); } diff --git a/2026/framing/src/game.rs b/2026/framing/src/game.rs index 6c2df1b..30c778e 100644 --- a/2026/framing/src/game.rs +++ b/2026/framing/src/game.rs @@ -161,7 +161,9 @@ pub struct Game { mode: Mode, mode_started: Tick, renderer: renderer::Renderer<assets::Assets>, + font0: font::Bitmap, lives: Lives, + verb: Option<String>, } impl Game { @@ -170,7 +172,9 @@ impl Game { mode: Mode::Titlescreen, mode_started: 0, renderer: renderer::Renderer::new(ctx, st, assets::Assets::new), + font0: font::Bitmap::from_image(ctx, 32, 48, 512, 288, include_bytes!("assets/fonts/font0.png")), lives: Lives::new(), + verb: None, } } pub fn switch(&mut self, _ctx: &context::Context, st: &mut state::State, m: Mode) { @@ -182,21 +186,34 @@ impl Game { self.renderer.bind_texture(ctx, st, assets::Texture::Mrworld); self.renderer.set_position_2d(ctx, st, Vec2::ZERO, st.render_dims); self.renderer.set_vec2(ctx, st, "texture_flip", glam::Vec2::new(0.0, 1.0)); - if let Some(t) = fadeout { + let opacity = if let Some(t) = fadeout { if t < 35 { self.renderer.set_texture_offset(ctx, st, 8, 1, 2 + (t / 5).clamp(0, 5) as i32, 0); self.renderer.set_f32(ctx, st, "opacity", 1.0); + 1.0 } else if t < 70 { let since = ((t - 35) as f32).clamp(0.0, 34.0); let opacity = (34.0 - since) / 34.0; self.renderer.set_texture_offset(ctx, st, 8, 1, 7, 0); self.renderer.set_f32(ctx, st, "opacity", opacity); - } + opacity + } else { 1.0 } } else { self.renderer.set_texture_offset(ctx, st, 8, 1, (st.tick as i32 / 20) % 2, 0); self.renderer.set_f32(ctx, st, "opacity", 1.0); - } + 1.0 + }; self.renderer.render_square(ctx, st); + if let Some(v) = &self.verb && let Some(t) = fadeout && t > 5 && t < 70 { + self.renderer.text_screen(ctx, st, + glam::Vec2::new(st.render_dims.x / 2.0, st.render_dims.y / 2.0), + v + ) + .centered() + .font(&self.font0) + .color(glam::Vec4::new(0.39, 0.61, 1.0, opacity)) + .render(); + } Ok(()) } fn play_random_sound(&mut self, ctx: &context::Context, st: &mut state::State, sounds: &[&str]) { @@ -287,7 +304,7 @@ impl teleia::state::Game for Game { #[wasm_bindgen(module = "/src/bindings.js")] extern { - fn js_test(); + fn js_update_lifetotal(lives: i32); } #[wasm_bindgen] @@ -299,9 +316,10 @@ pub fn titlescreen_click() { } #[wasm_bindgen] -pub fn start_game() { +pub fn start_game(verb: Option<String>) { contextualize(|ctx, st, g: &mut Game| { g.switch(ctx, st, Mode::InGame); + g.verb = verb.as_ref().map(|x| x.to_ascii_uppercase()); st.audio.mute_music(0.0); }); } @@ -318,5 +336,6 @@ pub fn end_game(win: bool) { st.audio.play_sfx("footsteps"); g.play_random_sound(ctx, st, SOUND_NEGATIVE); } + js_update_lifetotal(g.lives.lives_remaining()); }); } diff --git a/2026/framing/src/lagerboy.png b/2026/framing/src/lagerboy.png Binary files differdeleted file mode 100644 index 89992f7..0000000 --- a/2026/framing/src/lagerboy.png +++ /dev/null |
