diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-08-15 01:35:46 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-08-15 01:35:46 +0200 | 
| commit | 9a17ee0e31c4ee4fbf75e5f1bc007a99bbe5ed4b (patch) | |
| tree | 52660eecfcb318e274bbdddd5415467f0f0f07ad /pixel-client/src/menu | |
| parent | bd4bb93e6da8d7f8dd3ad86ba1bea1fd8892a1a1 (diff) | |
| download | hurrycurry-9a17ee0e31c4ee4fbf75e5f1bc007a99bbe5ed4b.tar hurrycurry-9a17ee0e31c4ee4fbf75e5f1bc007a99bbe5ed4b.tar.bz2 hurrycurry-9a17ee0e31c4ee4fbf75e5f1bc007a99bbe5ed4b.tar.zst | |
pc: add username setting
Diffstat (limited to 'pixel-client/src/menu')
| -rw-r--r-- | pixel-client/src/menu/main.rs | 6 | ||||
| -rw-r--r-- | pixel-client/src/menu/settings.rs | 40 | 
2 files changed, 40 insertions, 6 deletions
| diff --git a/pixel-client/src/menu/main.rs b/pixel-client/src/menu/main.rs index 54b0fe9c..7045931e 100644 --- a/pixel-client/src/menu/main.rs +++ b/pixel-client/src/menu/main.rs @@ -17,6 +17,7 @@  */  use super::{background::MenuBackground, credits::CreditsMenu, settings::SettingsMenu};  use crate::{ +    config::Config,      game::Game,      render::{sprite::SpriteDraw, AtlasLayout, Renderer},      ui::UiState, @@ -66,12 +67,12 @@ impl MainMenu {      pub fn keyboard_event(&mut self, keycode: Keycode, down: bool) {          self.ui_state.keyboard_event(keycode, down);      } -    pub fn draw(&mut self, ctx: &mut Renderer) { +    pub fn draw(&mut self, ctx: &mut Renderer, config: &mut Config) {          self.background.draw(ctx);          self.ui_state.draw(ctx, |ui| {              if let Some(settings) = &mut self.settings { -                if settings.draw(ui) { +                if settings.draw(ui, config) {                      self.settings = None;                  }                  return; @@ -85,6 +86,7 @@ impl MainMenu {              if ui.button(80., "Join") {                  self.next_state = Some(Box::new(State::Ingame(Box::new(Game::new(                      Network::connect(&self.server_address).unwrap(), +                    &config,                      ui.renderer.atlas_layout(),                  )))))              } diff --git a/pixel-client/src/menu/settings.rs b/pixel-client/src/menu/settings.rs index 90668039..aef56f2f 100644 --- a/pixel-client/src/menu/settings.rs +++ b/pixel-client/src/menu/settings.rs @@ -15,7 +15,9 @@      along with this program.  If not, see <https://www.gnu.org/licenses/>.  */ -use crate::ui::Ui; +use crate::{config::Config, render::sprite::SpriteDraw, ui::Ui}; +use hurrycurry_protocol::glam::Vec2; +use log::warn;  pub struct Settings {      pub username: String, @@ -25,9 +27,39 @@ pub struct Settings {  pub struct SettingsMenu {}  impl SettingsMenu { -    pub fn draw(&mut self, ui: &mut Ui) -> bool { -        ui.text("Settings placeholder"); +    pub fn draw(&mut self, ui: &mut Ui, config: &mut Config) -> bool { +        ui.renderer.draw_ui(SpriteDraw::overlay( +            ui.renderer.misc_textures.solid, +            Vec2::ZERO, +            ui.renderer.ui_size, +            Some([0, 0, 0, 150]), +        )); -        return ui.button(80., "Back"); +        let mut back = false; + +        ui.horizontal(|ui| { +            ui.advance(Vec2::splat(20.)); +            ui.vertical(|ui| { +                ui.advance(Vec2::splat(10.)); +                ui.text("Settings"); + +                ui.horizontal(|ui| { +                    ui.text("Username:     "); +                    ui.textedit(100., &mut config.username); +                }); + +                ui.advance(ui.get_remaining() - Vec2::Y * 30.); + +                if ui.button(80., "Back") { +                    if let Err(e) = config.save() { +                        warn!("cannot save config: {e}"); +                    } else { +                        back = true +                    } +                } +            }); +        }); + +        return back;      }  } | 
