From 956122549e2c27c0ee0fab262e6028840c9e2349 Mon Sep 17 00:00:00 2001
From: hodasemi <michaelh.95@t-online.de>
Date: Sat, 5 Apr 2025 10:24:07 +0200
Subject: [PATCH] Fix ecs changes

---
 src/builder/builder.rs               |  4 ++--
 src/elements/button.rs               |  6 +++---
 src/elements/grid.rs                 |  4 ++--
 src/elements/icon.rs                 |  4 ++--
 src/elements/label.rs                |  4 ++--
 src/elements/multi_line_textfield.rs |  6 +++---
 src/elements/progress_bar.rs         |  4 ++--
 src/elements/textfield.rs            |  4 ++--
 src/keyboard/mod.rs                  | 15 ++++++---------
 src/states.rs                        |  8 +++-----
 10 files changed, 27 insertions(+), 32 deletions(-)

diff --git a/src/builder/builder.rs b/src/builder/builder.rs
index 4add342..091f12b 100644
--- a/src/builder/builder.rs
+++ b/src/builder/builder.rs
@@ -2,7 +2,7 @@ use crate::prelude::*;
 use anyhow::{Context, Result, bail};
 
 use assetpath::AssetPath;
-use ecs::World;
+use ecs::*;
 
 use super::validator::buttoninfo::{NeighbourDirection, NeighbourInfo};
 use super::validator::gridinfo::GridInfo;
@@ -310,7 +310,7 @@ impl TopLevelGui for GuiBuilder {
         self.set_visibility(world, true)?;
 
         if let Some(button) = &self.default_select {
-            button.select(world.resources.get_mut::<GuiHandler>())?;
+            button.select(world.resources.get_mut()?)?;
         }
 
         Ok(())
diff --git a/src/elements/button.rs b/src/elements/button.rs
index 612ba63..85434f5 100644
--- a/src/elements/button.rs
+++ b/src/elements/button.rs
@@ -5,7 +5,7 @@ use crate::{
 
 use anyhow::{Result, anyhow};
 use assetpath::AssetPath;
-use ecs::World;
+use ecs::*;
 use utilities::prelude::*;
 use vulkan_rs::prelude::*;
 
@@ -450,7 +450,7 @@ impl Visibility for Button {
 
     fn set_visibility(&self, world: &mut World, visibility: bool) -> Result<()> {
         if visibility != self.visible.load(SeqCst) {
-            let gui_handler = world.resources.get_mut::<GuiHandler>();
+            let gui_handler: &mut GuiHandler = world.resources.get_mut()?;
 
             self.visible.store(visibility, SeqCst);
 
@@ -583,7 +583,7 @@ impl Button {
 
         let selected_changed = move |world: &mut World, selected: bool| {
             if let Some(button) = button_weak.upgrade() {
-                let gui_handler = world.resources.get_mut::<GuiHandler>();
+                let gui_handler = world.resources.get_mut()?;
 
                 if selected {
                     button.set_button_state(gui_handler, ButtonState::Selected)?;
diff --git a/src/elements/grid.rs b/src/elements/grid.rs
index 4683b9d..3a4c20b 100644
--- a/src/elements/grid.rs
+++ b/src/elements/grid.rs
@@ -1,6 +1,6 @@
 use crate::prelude::*;
 use anyhow::Result;
-use ecs::World;
+use ecs::*;
 
 use crate::builder::validator::gridinfo::GridInfo;
 
@@ -445,7 +445,7 @@ impl Grid {
 
             if self.framable.is_framed() {
                 self.child_position(
-                    world.resources.get_mut::<GuiHandler>(),
+                    world.resources.get_mut()?,
                     child_gridable,
                     pos_x,
                     pos_y,
diff --git a/src/elements/icon.rs b/src/elements/icon.rs
index 01c7ba0..1dd0ff1 100644
--- a/src/elements/icon.rs
+++ b/src/elements/icon.rs
@@ -4,7 +4,7 @@ use crate::{
 };
 use anyhow::Result;
 use assetpath::AssetPath;
-use ecs::World;
+use ecs::*;
 use utilities::prelude::*;
 use vulkan_rs::prelude::*;
 
@@ -283,7 +283,7 @@ impl Visibility for Icon {
 
     fn set_visibility(&self, world: &mut World, visibility: bool) -> Result<()> {
         if visibility != self.visible.load(SeqCst) {
-            let gui_handler = world.resources.get_mut::<GuiHandler>();
+            let gui_handler: &mut GuiHandler = world.resources.get_mut()?;
 
             self.visible.store(visibility, SeqCst);
 
diff --git a/src/elements/label.rs b/src/elements/label.rs
index 28ed4a5..a95a1f4 100644
--- a/src/elements/label.rs
+++ b/src/elements/label.rs
@@ -8,7 +8,7 @@ use super::{
     wrapper::{IconizableWrapper, TextableWrapper},
 };
 
-use ecs::World;
+use ecs::*;
 use vulkan_rs::prelude::*;
 
 use std::sync::{
@@ -232,7 +232,7 @@ impl Visibility for Label {
 
     fn set_visibility(&self, world: &mut World, visibility: bool) -> Result<()> {
         if visibility != self.visible() {
-            let gui_handler = world.resources.get_mut::<GuiHandler>();
+            let gui_handler: &mut GuiHandler = world.resources.get_mut()?;
 
             self.visible.store(visibility, SeqCst);
 
diff --git a/src/elements/multi_line_textfield.rs b/src/elements/multi_line_textfield.rs
index 19cbfa8..abcf587 100644
--- a/src/elements/multi_line_textfield.rs
+++ b/src/elements/multi_line_textfield.rs
@@ -10,7 +10,7 @@ use std::sync::{
 };
 
 use anyhow::{Context, Result};
-use ecs::World;
+use ecs::*;
 use utilities::prelude::*;
 
 use super::fill_type::InnerFillType;
@@ -103,7 +103,7 @@ impl MultiLineTextFieldBuilder {
 
             move |world: &mut World, _text| {
                 if let Some(tf) = weak_tf.upgrade() {
-                    tf.update_text(world.resources.get_mut::<GuiHandler>())?;
+                    tf.update_text(world.resources.get_mut()?)?;
                 }
 
                 Ok(())
@@ -378,7 +378,7 @@ impl Visibility for MultiLineTextField {
 
     fn set_visibility(&self, world: &mut World, visibility: bool) -> Result<()> {
         if visibility != self.visible() {
-            let gui_handler = world.resources.get_mut::<GuiHandler>();
+            let gui_handler = world.resources.get_mut()?;
 
             if visibility {
                 self.writeable.add(gui_handler)?;
diff --git a/src/elements/progress_bar.rs b/src/elements/progress_bar.rs
index 2f99db2..e71a23d 100644
--- a/src/elements/progress_bar.rs
+++ b/src/elements/progress_bar.rs
@@ -1,7 +1,7 @@
 use crate::{builder::validator::progressbar_info::ProgressBarInfo, prelude::*};
 
 use anyhow::Result;
-use ecs::World;
+use ecs::*;
 use std::sync::{
     Arc, Mutex,
     atomic::{AtomicBool, Ordering::SeqCst},
@@ -281,7 +281,7 @@ impl Visibility for ProgressBar {
 
     fn set_visibility(&self, world: &mut World, visibility: bool) -> Result<()> {
         if visibility != self.visible() {
-            let gui_handler = world.resources.get_mut::<GuiHandler>();
+            let gui_handler: &mut GuiHandler = world.resources.get_mut()?;
 
             self.visible.store(visibility, SeqCst);
 
diff --git a/src/elements/textfield.rs b/src/elements/textfield.rs
index 71576da..1c389b7 100644
--- a/src/elements/textfield.rs
+++ b/src/elements/textfield.rs
@@ -1,6 +1,6 @@
 use crate::{builder::validator::textfieldinfo::TextFieldInfo, prelude::*};
 use anyhow::Result;
-use ecs::World;
+use ecs::*;
 use utilities::prelude::*;
 
 use std::sync::{
@@ -313,7 +313,7 @@ impl Visibility for TextField {
 
     fn set_visibility(&self, world: &mut World, visibility: bool) -> Result<()> {
         if visibility != self.visible() {
-            let gui_handler = world.resources.get_mut::<GuiHandler>();
+            let gui_handler: &mut GuiHandler = world.resources.get_mut()?;
 
             self.visible.store(visibility, SeqCst);
 
diff --git a/src/keyboard/mod.rs b/src/keyboard/mod.rs
index 9c33426..48fb69a 100644
--- a/src/keyboard/mod.rs
+++ b/src/keyboard/mod.rs
@@ -1,6 +1,6 @@
 use crate::prelude::*;
 use anyhow::Result;
-use ecs::World;
+use ecs::*;
 
 use std::any::Any;
 use std::collections::HashMap;
@@ -296,8 +296,7 @@ impl Keyboard {
 
             Box::new(move |world: &mut World| {
                 if let Some(text_field) = weak_textfield.upgrade() {
-                    let gui_handler = world.resources.get_mut::<GuiHandler>();
-                    text_field.add_letter(gui_handler, ' ')?;
+                    text_field.add_letter(world.resources.get_mut()?, ' ')?;
                 }
 
                 Ok(())
@@ -340,8 +339,8 @@ impl Keyboard {
             if let Some(textfield) = weak_textfield.upgrade() {
                 if let Some(button) = weak_button.upgrade() {
                     if let Some(text) = button.text()? {
-                        let gui_handler = world.resources.get_mut::<GuiHandler>();
-                        textfield.add_letter(gui_handler, text.as_bytes()[0] as char)?;
+                        textfield
+                            .add_letter(world.resources.get_mut()?, text.as_bytes()[0] as char)?;
                     }
                 }
             }
@@ -369,8 +368,7 @@ impl TopGui for Keyboard {
     fn previous_tab(&self, world: &mut World, second_level: bool) -> Result<()> {
         // abuse event
         if !second_level {
-            let gui_handler = world.resources.get_mut::<GuiHandler>();
-            self.text_field.remove_last(gui_handler)?;
+            self.text_field.remove_last(world.resources.get_mut()?)?;
         }
 
         Ok(())
@@ -442,8 +440,7 @@ impl TopLevelGui for Keyboard {
 
     fn enable(&self, world: &mut World) -> Result<()> {
         self.set_visibility(world, true)?;
-        self.text_field
-            .focus_input(world.resources.get_mut::<GuiHandler>())?;
+        self.text_field.focus_input(world.resources.get_mut()?)?;
 
         Ok(())
     }
diff --git a/src/states.rs b/src/states.rs
index 64d6060..e7ab6fe 100644
--- a/src/states.rs
+++ b/src/states.rs
@@ -1,8 +1,7 @@
 use crate::prelude::*;
 use anyhow::Result;
 use assetpath::AssetPath;
-use ecs::World;
-use utilities::prelude::remove_life_time_mut;
+use ecs::*;
 
 use std::any::Any;
 use std::collections::HashMap;
@@ -182,7 +181,7 @@ impl States {
     ///
     /// * `id` - Set state with the given identifier or None
     pub fn set_state<'b>(&self, world: &mut World, id: impl Into<Option<&'b str>>) -> Result<()> {
-        let gui_handler = unsafe { remove_life_time_mut(world.resources.get_mut::<GuiHandler>()) };
+        let gui_handler: &mut GuiHandler = world.resources.get_mut_unchecked();
 
         Self::_set_state(
             id.into().map(|id| self.get_state(id)).transpose()?,
@@ -261,8 +260,7 @@ impl States {
 
         Ok(Box::new(move |world: &mut World| {
             if let Some(current) = weak_current_state.upgrade() {
-                let gui_handler =
-                    unsafe { remove_life_time_mut(world.resources.get_mut::<GuiHandler>()) };
+                let gui_handler: &mut GuiHandler = world.resources.get_mut_unchecked();
 
                 Self::_set_state(
                     weak_state.as_ref().map(|w| w.upgrade()).flatten(),