From 2ee65798fdce002868c7a47f92e2e0644c2ed643 Mon Sep 17 00:00:00 2001 From: LorrensP-2158466 Date: Sun, 6 Apr 2025 15:49:38 +0200 Subject: [PATCH] almost --- assets/images/id_card_toolbar.png | Bin 0 -> 1434 bytes assets/main.assets.ron | 1 + src/asset_loading/mod.rs | 2 ++ src/interaction/ui.rs | 11 +++++------ src/player/toolbar.rs | 24 +++++++++++++++++++----- 5 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 assets/images/id_card_toolbar.png diff --git a/assets/images/id_card_toolbar.png b/assets/images/id_card_toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..c4bb27a1056982bb750202c2dd52e8c085b6b774 GIT binary patch literal 1434 zcmeAS@N?(olHy`uVBq!ia0y~yV2lA_4xj+T!rI6WKuRImBgmJ5p-PQ`p`nF=;TKS- z;RORjsR0ASs{{rHs~HRo;stYd1=;{5n3BBRT^Rni_n+AhTG zru&y?rf})`>SqNt^IrWv`RDY9Pv$!5>C=9%-oHok^De{vvY&hR&X4(@aprn>$`Rg9 zX(4l!JdZmQb|@A)KWYOBM8)+VeQbC?_sr*6-@nP-dHn<|imB}0+gf(G{Q#q^V?&8a?Y%OW4q%zF5_xsy5}FS$(zq; z@qBN5&(EL7u0K41-Szb{-S3b6d3vw>o8-^hGxohVaT;kaw*T+#v(@+iGJfa(FZBOp zcyd`0Gz?(wg9ggl{9})f&iH?F|Jn0D^PklvuRD9bdQS2D^Yaj)hNR>5-H10|>;G;I zuG^RNFAkT_zs{*&_fYZMui~@s&s*$-hdz=ykJ_%uAA9tA@B3#=f2`8f(c=lC^1`pP z5jDHN-;HTl`@Nzl1rmiQh8*FIeRJMr4l^zT?$3LA;&A1($DJLRX#p6KtEyu@SDW6# zkqGp^?wwq{^WF?gBUti5vHRNI{0EmR*q>rI`$=SkK z#7bCw3-roF+}^3X^P5laj6BY$*4^K8wA(O$uS1fZ|AV~8*Vq3`ug*VSV~jKWKNacB z>-$-jTxa$y9A9>M_F3#+PvzYi_xpYxyXU{I-UPRaRXTG0Kl763UEj0)`-3SQ!}1(R2Y7bO;T(`6-!cmAEy$E&1aE)Sv;kp(Ham zwYVfPw*a@EU5R%m1N8`l^yC7STa{E6q%vgYCZ?zA7v!byoGQ=`lxFaB^>bP0l+XkK D^>le2 literal 0 HcmV?d00001 diff --git a/assets/main.assets.ron b/assets/main.assets.ron index 1a7db2c..c1ceecf 100644 --- a/assets/main.assets.ron +++ b/assets/main.assets.ron @@ -6,4 +6,5 @@ path: "meshes/library", ), "id_card": File(path: "meshes/id_card.glb") + "id_card_toolbar": File(path: "images/id_card_toolbar.png"") }) diff --git a/src/asset_loading/mod.rs b/src/asset_loading/mod.rs index 5e89abf..1a1c74d 100644 --- a/src/asset_loading/mod.rs +++ b/src/asset_loading/mod.rs @@ -50,6 +50,8 @@ pub(crate) struct ConfigAssets {} pub(crate) struct ImageAssets { #[asset(key = "lebron")] pub(crate) king: Handle, + #[asset(key = "id_card_toolbar")] + pub(crate) id_card: Handle, } #[derive(AssetCollection, Resource, Clone)] diff --git a/src/interaction/ui.rs b/src/interaction/ui.rs index b126b90..137fecb 100644 --- a/src/interaction/ui.rs +++ b/src/interaction/ui.rs @@ -38,7 +38,6 @@ fn update_interaction_opportunities( let player = single!(player_query); for event in collision_events.read() { - dbg!(event); let (e1, e2, started) = match event { CollisionEvent::Started(e1, e2, CollisionEventFlags::SENSOR) => (*e1, *e2, true), CollisionEvent::Stopped(e1, e2, CollisionEventFlags::SENSOR) => (*e1, *e2, false), @@ -47,21 +46,21 @@ fn update_interaction_opportunities( } }; - let poss_target = match player { + let sensor = match player { p if p == e1 => e2, p if p == e2 => e1, _ => continue, }; - let mut ancestors = iter::once(poss_target).chain(parents.iter_ancestors(poss_target)); + let mut ancestors = iter::once(sensor).chain(parents.iter_ancestors(sensor)); - let Some(target) = ancestors.find_map(|entity| target_query.get(entity).ok()) else { + let Some(interactable) = ancestors.find_map(|entity| target_query.get(entity).ok()) else { continue; }; if started { - interaction_opportunity.0.replace(target); + interaction_opportunity.0.replace(interactable); } else { - interaction_opportunity.0.take_if(|t| *t == target); + interaction_opportunity.0.take_if(|t| *t == interactable); } } } diff --git a/src/player/toolbar.rs b/src/player/toolbar.rs index 9dcfe31..58c8f4c 100644 --- a/src/player/toolbar.rs +++ b/src/player/toolbar.rs @@ -1,14 +1,17 @@ -use bevy::{prelude::*, window::PrimaryWindow}; -use bevy_egui::{EguiContext, EguiContexts, egui}; +use bevy::prelude::*; +use bevy_egui::{EguiContexts, egui}; use std::default::Default; -use crate::{GameState, util::single}; +use crate::{GameState, asset_loading::ImageAssets, interaction::Interact, util::single}; use super::Player; #[derive(Component, Default, Debug)] pub struct Item(Option); +#[derive(Component, Default, Debug)] +pub struct ItemIcon(Handle); + impl Item { pub fn none() -> Self { Default::default() @@ -24,7 +27,13 @@ pub fn plugin(app: &mut App) { app.add_systems(Update, bottom_panel.run_if(in_state(GameState::Playing))); } -fn bottom_panel(mut egui_ctx: EguiContexts, item_query: Query<&Item, With>) { +fn bottom_panel( + mut egui_ctx: EguiContexts, + player_item_query: Query<&Item, With>, + item_query: Query<(&Name, &ItemIcon), With>, + models: Res>, + gltf_assets: Res, +) { egui::TopBottomPanel::bottom("inventory_toolbar") .frame(egui::Frame { fill: egui::Color32::from_rgba_premultiplied(0, 0, 0, 0), @@ -52,12 +61,17 @@ fn bottom_panel(mut egui_ctx: EguiContexts, item_query: Query<&Item, With 1) ui.label( - egui::RichText::new("LOL") + egui::RichText::new("") .color(egui::Color32::WHITE) .size(12.0), );