summaryrefslogtreecommitdiff
path: root/2026/framing/src
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-06-12 04:17:29 -0400
committerLLLL Colonq <llll@colonq>2026-06-12 04:17:29 -0400
commit140f3eeead7f56ce2fd65e727ae638372af97750 (patch)
tree9ec2c0c4c2c4b88c02ab4418e67a10d4ff8986fa /2026/framing/src
parent8cdb8016dedf16caf1bf5ad0eeb9d8b13e00ca2a (diff)
Add test server
Diffstat (limited to '2026/framing/src')
-rw-r--r--2026/framing/src/game.rs72
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)?;