diff options
| author | LLLL Colonq <llll@colonq> | 2026-06-12 04:17:29 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2026-06-12 04:17:29 -0400 |
| commit | 140f3eeead7f56ce2fd65e727ae638372af97750 (patch) | |
| tree | 9ec2c0c4c2c4b88c02ab4418e67a10d4ff8986fa /2026/framing/src | |
| parent | 8cdb8016dedf16caf1bf5ad0eeb9d8b13e00ca2a (diff) | |
Add test server
Diffstat (limited to '2026/framing/src')
| -rw-r--r-- | 2026/framing/src/game.rs | 72 |
1 files changed, 34 insertions, 38 deletions
diff --git a/2026/framing/src/game.rs b/2026/framing/src/game.rs index d379dad..4e81e16 100644 --- a/2026/framing/src/game.rs +++ b/2026/framing/src/game.rs @@ -57,8 +57,8 @@ impl Lives { fn render(&self, ctx: &context::Context, st: &mut state::State, r: &mut renderer::Renderer<assets::Assets>, ) -> Erm<()> { - let base = glam::Vec2::new(90.0, 250.0); - let off = glam::Vec2::new(90.0, 0.0); + let base = Vec2::new(90.0, 250.0); + let off = Vec2::new(90.0, 0.0); let t = st.tick as f32 / 10.0; for i in 0..NUM_LIVES { let fi = i as f32; @@ -66,7 +66,7 @@ impl Lives { let osc = (t + fi * 10.0).sin(); if self.lives[i].is_active() { let hoff = self.lives[i].progress(st.tick) * st.render_dims.x; - draw_mr_armed(ctx, st, r, MrColor::Blue, pos + glam::Vec2::new(hoff, 0.0), osc)?; + draw_mr_armed(ctx, st, r, MrColor::Blue, pos + Vec2::new(hoff, 0.0), osc)?; } else { draw_mr_armed(ctx, st, r, MrColor::Green, pos, osc)?; }; @@ -78,21 +78,20 @@ impl Lives { pub fn draw_texture_rotated_about( ctx: &context::Context, st: &mut state::State, r: &mut renderer::Renderer<assets::Assets>, texture: assets::Texture, flip: bool, hueset: Option<f32>, - pos: glam::Vec2, dims: glam::Vec2, joint: glam::Vec2, angle: f32, + pos: Vec2, dims: Vec2, joint: Vec2, angle: f32, ) -> Erm<()> { - let origin_offset = glam::Vec3::new(-st.render_dims.x / 2.0, st.render_dims.y / 2.0, 0.0); - r.bind_uber_2d(ctx, st, UberFlags::TEXTURE_COLOR | UberFlags::EFFECTS); - r.set_i32(ctx, st, "effect_flip", flip as i32); - r.set_f32(ctx, st, "effect_flash", 0.0); - r.set_f32(ctx, st, "effect_huescale", if hueset.is_some() { 0.0 } else { 1.0 }); - r.set_f32(ctx, st, "effect_hueshift", if let Some(hs) = hueset { hs } else { 0.0 }); + let origin_offset = Vec3::new(-st.render_dims.x / 2.0, st.render_dims.y / 2.0, 0.0); + r.bind_uber_2d(ctx, st, UberFlags::TEXTURE_COLOR | UberFlags::TEXTURE_FLIP | UberFlags::HUE); + r.set_vec2(ctx, st, "texture_flip", Vec2::new(flip as i32 as f32, 1.0)); + r.set_f32(ctx, st, "hue_scale", if hueset.is_some() { 0.0 } else { 1.0 }); + r.set_f32(ctx, st, "hue_shift", hueset.unwrap_or(0.0)); r.bind_texture(ctx, st, texture); r.set_position_2d_mat(ctx, st, - glam::Mat4::from_translation(glam::Vec3::new(pos.x, -pos.y, 0.0) + origin_offset) - .mul_mat4(&glam::Mat4::from_translation(glam::Vec3::new(joint.x, -joint.y, 0.0))) - .mul_mat4(&glam::Mat4::from_rotation_z(angle)) - .mul_mat4(&glam::Mat4::from_translation(glam::Vec3::new(-joint.x, joint.y, 0.0))) - .mul_mat4(&glam::Mat4::from_scale(glam::Vec3::new(dims.x / 2.0, dims.y / 2.0, 1.0))), + Mat4::from_translation(Vec3::new(pos.x, -pos.y, 0.0) + origin_offset) + .mul_mat4(&Mat4::from_translation(Vec3::new(joint.x, -joint.y, 0.0))) + .mul_mat4(&Mat4::from_rotation_z(angle)) + .mul_mat4(&Mat4::from_translation(Vec3::new(-joint.x, joint.y, 0.0))) + .mul_mat4(&Mat4::from_scale(Vec3::new(dims.x / 2.0, dims.y / 2.0, 1.0))), ); r.render_square(ctx, st); Ok(()) @@ -100,10 +99,10 @@ pub fn draw_texture_rotated_about( fn draw_mr_armed( ctx: &context::Context, st: &mut state::State, r: &mut renderer::Renderer<assets::Assets>, - mr: MrColor, center: glam::Vec2, oscillation: f32, + mr: MrColor, center: Vec2, oscillation: f32, ) -> Erm<()> { - let dims = glam::Vec2::new(48.0, 48.0); - let pos = center + glam::Vec2::new(0.0, 4.0 * oscillation); + let dims = Vec2::new(48.0, 48.0); + let pos = center + Vec2::new(0.0, 4.0 * oscillation); let topleft = pos - dims / 2.0; let leftedge = pos.x - dims.x / 2.0; let rightedge = pos.x + dims.x / 2.0; @@ -111,42 +110,38 @@ fn draw_mr_armed( let legheight = pos.y + dims.y / 2.0; let legangle = 0.2 * oscillation; let armangle = 0.1 * oscillation; - let origin_offset = glam::Vec3::new(-st.render_dims.x / 2.0, st.render_dims.y / 2.0, 0.0); + let origin_offset = Vec3::new(-st.render_dims.x / 2.0, st.render_dims.y / 2.0, 0.0); draw_texture_rotated_about(ctx, st, r, assets::Texture::Timbs, true, None, - glam::Vec2::new(leftedge, legheight), + Vec2::new(leftedge, legheight), dims, - glam::Vec2::new(dims.x / 2.0, -dims.y / 2.0), + Vec2::new(dims.x / 2.0, -dims.y / 2.0), legangle, )?; draw_texture_rotated_about(ctx, st, r, assets::Texture::Timbs, false, None, - glam::Vec2::new(rightedge, legheight), + Vec2::new(rightedge, legheight), dims, - glam::Vec2::new(-dims.x / 2.0, -dims.y / 2.0), + Vec2::new(-dims.x / 2.0, -dims.y / 2.0), -legangle, )?; if mr == MrColor::Green { draw_texture_rotated_about(ctx, st, r, assets::Texture::Arm, true, Some(mr.hue()), - glam::Vec2::new(leftedge, armheight), + Vec2::new(leftedge, armheight), dims, - glam::Vec2::new(dims.x / 2.0, dims.y / 2.0), + Vec2::new(dims.x / 2.0, dims.y / 2.0), armangle, )?; draw_texture_rotated_about(ctx, st, r, assets::Texture::Arm, false, Some(mr.hue()), - glam::Vec2::new(rightedge, armheight), + Vec2::new(rightedge, armheight), dims, - glam::Vec2::new(-dims.x / 2.0, dims.y / 2.0), + Vec2::new(-dims.x / 2.0, dims.y / 2.0), -armangle, )?; } - r.texture_screen(ctx, st, - mr.texture(), - topleft, - dims, - ); + r.texture_screen(ctx, st, topleft, mr.texture()).dimensions(dims).render(); Ok(()) } @@ -161,10 +156,10 @@ pub struct Game { } impl Game { - pub fn new(ctx: &context::Context) -> Self { + pub fn new(ctx: &context::Context, st: &mut state::State) -> Self { Self { mode: Mode::Running, - renderer: renderer::Renderer::new(ctx, assets::Assets::new), + renderer: renderer::Renderer::new(ctx, st, assets::Assets::new), lives: Lives::new(), } } @@ -182,12 +177,13 @@ impl teleia::state::Game for Game { fn render(&mut self, ctx: &context::Context, st: &mut state::State) -> Erm<()> { match self.mode { Mode::Running => { - self.renderer.clear(ctx, st, glam::Vec4::ZERO); - self.renderer.text_screen(ctx, st, glam::Vec2::new(0.0, 0.0), "hi"); - self.renderer.bind_uber_2d(ctx, st, UberFlags::TEXTURE_COLOR | UberFlags::SPRITE | UberFlags::OPACITY); + self.renderer.begin_frame(ctx, st, Vec4::ZERO); + self.renderer.text_screen(ctx, st, Vec2::new(0.0, 0.0), "hi").render(); + self.renderer.bind_uber_2d(ctx, st, UberFlags::TEXTURE_COLOR | UberFlags::TEXTURE_FLIP | UberFlags::SPRITE | UberFlags::OPACITY); self.renderer.bind_texture(ctx, st, assets::Texture::Mrworld); self.renderer.set_texture_offset(ctx, st, 2, 1, ((st.tick / 15) % 2) as i32, 0); - self.renderer.set_position_2d(ctx, st, glam::Vec2::ZERO, st.render_dims); + 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)); self.renderer.set_f32(ctx, st, "opacity", 0.5); self.renderer.render_square(ctx, st); self.lives.render(ctx, st, &mut self.renderer)?; |
