From ecb6ff15c24841dc08ab8f5c3b347c8080720ac4 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 25 Jul 2024 13:50:09 +0200 Subject: pc: main menu background --- pixel-client/src/menu.rs | 52 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 5 deletions(-) (limited to 'pixel-client/src/menu.rs') diff --git a/pixel-client/src/menu.rs b/pixel-client/src/menu.rs index 22a0244a..0d63d4e7 100644 --- a/pixel-client/src/menu.rs +++ b/pixel-client/src/menu.rs @@ -1,6 +1,7 @@ use crate::{ - render::{AtlasLayout, Renderer}, + render::{sprite::SpriteDraw, AtlasLayout, Renderer}, tilemap::Tilemap, + ui::UiState, }; use hurrycurry_protocol::{ glam::{IVec2, Vec2}, @@ -12,6 +13,9 @@ use sdl2::keyboard::KeyboardState; #[derive(Debug)] pub struct Menu { map: Tilemap, + fade_in: f32, + ui_state: UiState, + background: Vec2, } impl Menu { @@ -44,15 +48,53 @@ impl Menu { } } - Self { map } + Self { + map, + fade_in: 0., + ui_state: UiState::default(), + background: Vec2::ZERO, + } + } + pub fn tick(&mut self, dt: f32, _keyboard: &KeyboardState, _layout: &AtlasLayout) { + self.fade_in = (self.fade_in + dt).min(1.); + self.background += Vec2::new(2., 3.) * dt; } - pub fn tick(&mut self, _dt: f32, _keyboard: &KeyboardState, _layout: &AtlasLayout) {} - pub fn draw(&self, ctx: &mut Renderer) { + pub fn draw(&mut self, ctx: &mut Renderer) { ctx.set_world_view( ctx.size / ctx.get_world_scale() * Vec2::new(0.8, 0.2), ctx.size.max_element() / 32. / 15., ); + + for x in -1..=2 { + for y in -1..=2 { + ctx.draw_ui(SpriteDraw::underlay( + ctx.misc_textures.clouds, + Vec2::new(x as f32, y as f32) * 256. + self.background, + Vec2::ONE * 256., + None, + )); + } + } + ctx.draw_ui(SpriteDraw::underlay( + ctx.misc_textures.solid, + Vec2::ZERO, + ctx.ui_size, + Some([0, 0, 0, 50]), + )); + self.map.draw(ctx); - ctx.draw_text(Vec2::new(1., 1.), "Hello world!"); + + self.ui_state.draw(ctx, |ui| { + ui.button("Join"); + ui.button("Settings"); + ui.button("Quit"); + }); + + ctx.draw_ui(SpriteDraw::overlay( + ctx.misc_textures.solid, + Vec2::ZERO, + ctx.ui_size, + Some([0, 0, 0, 255 - (self.fade_in * 255.) as u8]), + )); } } -- cgit v1.2.3-70-g09d2