resource management

This commit is contained in:
2025-07-07 10:05:23 -05:00
parent 5fabd1a8ab
commit 3d995671cd
7 changed files with 77 additions and 82 deletions
+21 -32
View File
@@ -1,10 +1,7 @@
use osui::{
elements::{
div::Div,
grid::{HGrid, VGrid},
},
elements::grid::VGrid,
extensions::{
resources::Resource,
resources::VecResource,
tick::{TickEvent, TickExtension},
Handler,
},
@@ -13,43 +10,35 @@ use osui::{
};
fn main() {
let mut screen = Screen::new();
let screen = Screen::new();
screen.extension(TickExtension(10));
let container = Div::new(0xffff00);
let items = <VecResource<&str>>::new();
let vgrid = VGrid::new(0x000000, 0);
screen
.draw(container.clone())
.component(Transform::center().dimensions(70, 11));
.draw(vgrid.clone())
.component(Transform::center())
.component(Handler::new({
let items = items.clone();
move |_, e: &TickEvent| {
if e.0 == 1 {
items.push("Hello?");
}
}
}));
let vgrid = VGrid::new(0x0000ff, 1);
container.draw(screen.draw(vgrid.clone()).component(Transform::center()));
for _ in 1..6 {
let row = HGrid::new(0xff00ff, 1);
let row_widget = vgrid.draw(
screen
.draw(row.clone())
.component(Resource(Vec::<&str>::from(["Test"])))
.component(Handler::new(|w, t: &TickEvent| {
if t.0 >= 10 {
let mut res = w.get::<Resource<Vec<&str>>>().unwrap();
res.0.push("Hello World");
w.set_component(res);
}
})),
);
for i in row_widget.get::<Resource<Vec<&str>>>().unwrap().0 {
row.draw(
items.iterate({
let screen = screen.clone();
move |i| {
vgrid.draw(
screen
.draw((i.to_string(), 0xff0000))
.component(Transform::new()),
);
}
}
});
screen.run().unwrap();
}