mirror of
https://github.com/griffi-gh/kubi.git
synced 2024-11-28 17:58:52 -06:00
Compare commits
2 commits
5d8cc1433f
...
3d8307b124
Author | SHA1 | Date | |
---|---|---|---|
griffi-gh | 3d8307b124 | ||
griffi-gh | 6853f4529e |
25
Cargo.lock
generated
25
Cargo.lock
generated
|
@ -528,6 +528,15 @@ dependencies = [
|
|||
"libloading",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "document-features"
|
||||
version = "0.2.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95"
|
||||
dependencies = [
|
||||
"litrs",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "downcast-rs"
|
||||
version = "1.2.0"
|
||||
|
@ -888,21 +897,23 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
|||
|
||||
[[package]]
|
||||
name = "hui"
|
||||
version = "0.1.0-alpha.1"
|
||||
source = "git+https://github.com/griffi-gh/hui?rev=41049e5f#41049e5f59ab56d0e0bd3f813a6789d0935b5460"
|
||||
version = "0.1.0-alpha.3"
|
||||
source = "git+https://github.com/griffi-gh/hui?rev=9bb95b3baff#9bb95b3baff69b0ddee67ee28c1d271e79668468"
|
||||
dependencies = [
|
||||
"document-features",
|
||||
"fontdue",
|
||||
"glam",
|
||||
"hashbrown 0.14.3",
|
||||
"log",
|
||||
"nohash-hasher",
|
||||
"nz",
|
||||
"rect_packer",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hui-glium"
|
||||
version = "0.1.0-alpha.1"
|
||||
source = "git+https://github.com/griffi-gh/hui?rev=41049e5f#41049e5f59ab56d0e0bd3f813a6789d0935b5460"
|
||||
version = "0.1.0-alpha.3"
|
||||
source = "git+https://github.com/griffi-gh/hui?rev=9bb95b3baff#9bb95b3baff69b0ddee67ee28c1d271e79668468"
|
||||
dependencies = [
|
||||
"glam",
|
||||
"glium",
|
||||
|
@ -1231,6 +1242,12 @@ version = "0.4.13"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
|
||||
|
||||
[[package]]
|
||||
name = "litrs"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5"
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.11"
|
||||
|
|
|
@ -11,8 +11,8 @@ crate-type = ["lib", "cdylib"]
|
|||
[dependencies]
|
||||
kubi-shared = { path = "../kubi-shared" }
|
||||
kubi-logging = { path = "../kubi-logging" }
|
||||
hui = { version = "0.1.0-alpha.1", git = "https://github.com/griffi-gh/hui", rev = "41049e5f" }
|
||||
hui-glium = { version = "0.1.0-alpha.1", git = "https://github.com/griffi-gh/hui", rev = "41049e5f" }
|
||||
hui = { version = "0.1.0-alpha.3", git = "https://github.com/griffi-gh/hui", rev = "9bb95b3baff" }
|
||||
hui-glium = { version = "0.1.0-alpha.3", git = "https://github.com/griffi-gh/hui", rev = "9bb95b3baff" }
|
||||
log = "0.4"
|
||||
glium = { git = "https://github.com/glium/glium", rev = "a352c667" }
|
||||
glutin = "0.31"
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
use hui::element::progress_bar::ProgressBar;
|
||||
use hui::{
|
||||
element::{container::Container, progress_bar::ProgressBar, text::Text},
|
||||
layout::{Alignment, UiDirection, UiSize},
|
||||
rectangle::{Corners, Sides}
|
||||
};
|
||||
use shipyard::{UniqueView, UniqueViewMut, Workload, NonSendSync, IntoWorkload};
|
||||
use winit::keyboard::KeyCode;
|
||||
use crate::{
|
||||
|
@ -9,20 +13,57 @@ use crate::{
|
|||
hui_integration::UiState,
|
||||
};
|
||||
|
||||
fn render_progressbar(
|
||||
fn render_loading_ui(
|
||||
mut ui: NonSendSync<UniqueViewMut<UiState>>,
|
||||
world: UniqueView<ChunkStorage>,
|
||||
size: UniqueView<WindowSize>
|
||||
) {
|
||||
let value = {
|
||||
let loaded = world.chunks.iter().fold(0, |acc, (&_, chunk)| {
|
||||
acc + chunk.desired_state.matches_current(chunk.current_state) as usize
|
||||
});
|
||||
let total = world.chunks.len();
|
||||
loaded as f32 / total as f32
|
||||
};
|
||||
let loaded = world.chunks.iter().fold(0, |acc, (&_, chunk)| {
|
||||
acc + chunk.desired_state.matches_current(chunk.current_state) as usize
|
||||
});
|
||||
let total = world.chunks.len();
|
||||
let value = loaded as f32 / total as f32;
|
||||
let percentage = value * 100.;
|
||||
ui.hui.add(
|
||||
ProgressBar { value, ..Default::default() },
|
||||
Container {
|
||||
size: (UiSize::Fraction(1.), UiSize::Fraction(1.)),
|
||||
background: (0.1, 0.1, 0.1, 1. - (value - 0.75).max(0.)).into(),
|
||||
align: Alignment::Center.into(),
|
||||
elements: vec![
|
||||
Box::new(Container {
|
||||
padding: Sides::all(10.),
|
||||
gap: 10.,
|
||||
background: (0.2, 0.2, 0.2).into(),
|
||||
corner_radius: Corners::all(8.),
|
||||
elements: vec![
|
||||
Box::new(Text {
|
||||
text: "Loading...".into(),
|
||||
..Default::default()
|
||||
}),
|
||||
Box::new(ProgressBar {
|
||||
value,
|
||||
size: (UiSize::Static(400.), UiSize::Auto),
|
||||
corner_radius: Corners::all(2.),
|
||||
..Default::default()
|
||||
}),
|
||||
Box::new(Container {
|
||||
size: (UiSize::Static(400.), UiSize::Auto),
|
||||
align: (Alignment::End, Alignment::Begin).into(),
|
||||
direction: UiDirection::Horizontal,
|
||||
elements: vec![
|
||||
Box::new(Text {
|
||||
text: format!("{loaded}/{total} ({percentage:.1}%)").into(),
|
||||
..Default::default()
|
||||
})
|
||||
],
|
||||
..Default::default()
|
||||
})
|
||||
],
|
||||
..Default::default()
|
||||
})
|
||||
],
|
||||
..Default::default()
|
||||
},
|
||||
size.0.as_vec2()
|
||||
);
|
||||
}
|
||||
|
@ -53,7 +94,7 @@ fn override_loading(
|
|||
|
||||
pub fn update_loading_screen() -> Workload {
|
||||
(
|
||||
render_progressbar,
|
||||
render_loading_ui,
|
||||
override_loading,
|
||||
switch_to_ingame_if_loaded,
|
||||
).into_sequential_workload()
|
||||
|
|
Loading…
Reference in a new issue