summaryrefslogtreecommitdiff
path: root/2026/framing
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-07-17 03:10:43 -0400
committerLLLL Colonq <llll@colonq>2026-07-17 03:10:43 -0400
commit07a36f2b38a5cba402ebc5158710f5a85f443456 (patch)
treef28855384eadc73f49cc1a707a73896f87bc5530 /2026/framing
parent951b316773265052fbc5fa546bbcf31bef277062 (diff)
Post-stream update
Diffstat (limited to '2026/framing')
-rw-r--r--2026/framing/Cargo.toml2
-rw-r--r--2026/framing/art/font0.asepritebin0 -> 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)bin21761231 -> 21784901 bytes
-rw-r--r--2026/framing/dist/index.html9
-rw-r--r--2026/framing/dist/snippets/game_lib-09da6449fcb9d06e/src/bindings.js4
-rw-r--r--2026/framing/index.html3
-rw-r--r--2026/framing/src/assets/fonts/font0.pngbin0 -> 8247 bytes
-rw-r--r--2026/framing/src/bindings.js4
-rw-r--r--2026/framing/src/game.rs29
-rw-r--r--2026/framing/src/lagerboy.pngbin886192 -> 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
new file mode 100644
index 0000000..1893854
--- /dev/null
+++ b/2026/framing/art/font0.aseprite
Binary files differ
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
index 7c32fa2..ef0aad6 100644
--- a/2026/framing/dist/game_lib-632bc23475e9f6db_bg.wasm
+++ b/2026/framing/dist/game_lib-756716c85f227e5e_bg.wasm
Binary files differ
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
new file mode 100644
index 0000000..048ef6c
--- /dev/null
+++ b/2026/framing/src/assets/fonts/font0.png
Binary files differ
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
deleted file mode 100644
index 89992f7..0000000
--- a/2026/framing/src/lagerboy.png
+++ /dev/null
Binary files differ