aboutsummaryrefslogtreecommitdiff
path: root/pixel-client/src/menu/settings.rs
blob: 91d43025b8c0f402ce3e75ffbf7e66dd1cc45622 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
    Hurry Curry! - a game about cooking
    Copyright 2024 metamuffin

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, version 3 of the License only.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

*/
use crate::{config::Config, render::sprite::SpriteDraw, strings::tr, ui::Ui};
use hurrycurry_protocol::glam::Vec2;
use log::warn;

pub struct Settings {
    pub username: String,
}

#[derive(Default)]
pub struct SettingsMenu {}

impl SettingsMenu {
    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]),
        ));

        let mut back = false;

        ui.horizontal(|ui| {
            ui.advance(Vec2::splat(20.));
            ui.vertical(|ui| {
                ui.advance(Vec2::splat(10.));
                ui.text(tr("c.menu.settings"));

                ui.horizontal(|ui| {
                    ui.text(tr("c.settings.username"));
                    ui.advance(Vec2::X * 20.);
                    ui.textedit(100., &mut config.username);
                });

                ui.advance(ui.get_remaining() - Vec2::Y * 30.);

                if ui.button(80., tr("c.menu.back")) {
                    if let Err(e) = config.save() {
                        warn!("cannot save config: {e}");
                    } else {
                        back = true
                    }
                }
            });
        });

        back
    }
}