summaryrefslogtreecommitdiff
path: root/2026/framing/src/game.rs
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-06-16 15:09:57 -0400
committerLLLL Colonq <llll@colonq>2026-06-16 15:09:57 -0400
commit068f3b9dc0522b03af534479cfa300a720ae86fa (patch)
treefd716225332835a2fe7f7cbc8b041d0eba70beed /2026/framing/src/game.rs
parent11f43a75bcf70b13b68ca1b722e75715652d6977 (diff)
Update
Diffstat (limited to '2026/framing/src/game.rs')
-rw-r--r--2026/framing/src/game.rs28
1 files changed, 21 insertions, 7 deletions
diff --git a/2026/framing/src/game.rs b/2026/framing/src/game.rs
index 4e81e16..f27b6c1 100644
--- a/2026/framing/src/game.rs
+++ b/2026/framing/src/game.rs
@@ -146,11 +146,13 @@ fn draw_mr_armed(
}
pub enum Mode {
- Running,
+ BetweenGames,
+ InGame,
}
pub struct Game {
mode: Mode,
+ mode_started: Tick,
renderer: renderer::Renderer<assets::Assets>,
lives: Lives,
}
@@ -158,7 +160,8 @@ pub struct Game {
impl Game {
pub fn new(ctx: &context::Context, st: &mut state::State) -> Self {
Self {
- mode: Mode::Running,
+ mode: Mode::BetweenGames,
+ mode_started: 0,
renderer: renderer::Renderer::new(ctx, st, assets::Assets::new),
lives: Lives::new(),
}
@@ -175,19 +178,30 @@ impl teleia::state::Game for Game {
Ok(())
}
fn render(&mut self, ctx: &context::Context, st: &mut state::State) -> Erm<()> {
+ let t = st.tick - self.mode_started;
match self.mode {
- Mode::Running => {
+ Mode::BetweenGames => {
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_uber_2d(ctx, st, UberFlags::TEXTURE_COLOR | UberFlags::TEXTURE_FLIP | UberFlags::SPRITE);
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_texture_offset(ctx, st, 8, 1, (t % 2) as i32, 0);
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)?;
},
+ Mode::InGame => {
+ self.renderer.begin_frame(ctx, st, Vec4::ZERO);
+ if t < 18 {
+ 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, 8, 1, 2 + (t % 6) as i32, 0);
+ 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.render_square(ctx, st);
+ }
+ self.lives.render(ctx, st, &mut self.renderer)?;
+ }
}
Ok(())
}