wgui: customizable defaults

This commit is contained in:
Aleksander
2025-09-16 18:32:56 +02:00
parent 54767d75da
commit 129785daa7
20 changed files with 82 additions and 215 deletions

View File

@@ -3,21 +3,34 @@ use std::{
rc::Rc,
};
use crate::{assets::AssetProvider, i18n::I18n};
use crate::{assets::AssetProvider, drawing, i18n::I18n};
pub struct Defaults {
pub text_color: drawing::Color,
}
impl Default for Defaults {
fn default() -> Self {
Self {
text_color: drawing::Color::new(0.0, 0.0, 0.0, 1.0),
}
}
}
pub struct Globals {
pub assets: Box<dyn AssetProvider>,
pub i18n: I18n,
pub defaults: Defaults,
}
#[derive(Clone)]
pub struct WguiGlobals(Rc<RefCell<Globals>>);
impl WguiGlobals {
pub fn new(mut assets: Box<dyn AssetProvider>) -> anyhow::Result<Self> {
pub fn new(mut assets: Box<dyn AssetProvider>, defaults: Defaults) -> anyhow::Result<Self> {
let i18n = I18n::new(&mut assets)?;
Ok(Self(Rc::new(RefCell::new(Globals { assets, i18n }))))
Ok(Self(Rc::new(RefCell::new(Globals { assets, i18n, defaults }))))
}
pub fn get(&self) -> RefMut<Globals> {