Skip to content

Commit d5d050e

Browse files
committed
fix: new items n sprites
1 parent 2457775 commit d5d050e

7 files changed

Lines changed: 45 additions & 14 deletions

File tree

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
assets/sprites/**/* filter=lfs diff=lfs merge=lfs -text
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
id = "quintessence"
2+
name = "Quintessence"
3+
sprite = "sprites/items/quintessence.png"
4+
stack_size = 10

assets/items/ritual_doll.item.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
id = "ritual_doll"
2+
name = "Ritual Doll"
3+
sprite = "sprites/items/ritual_doll.png"
4+
stack_size = 5
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading

src/simulation/hud/item_slot.rs

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ fn setup(
182182
mut commands: Commands,
183183
item_assets: Res<ItemAssets>,
184184
mut item_defs: ResMut<Assets<ItemDef>>,
185+
asset_server: Res<AssetServer>,
185186
) {
186187
let items = item_defs
187188
.iter()
@@ -233,21 +234,33 @@ fn setup(
233234
.id();
234235

235236
if let Some((asset_id, item_def)) = items_iter.next() {
236-
commands.spawn((
237-
Name::new(item_def.name.clone()),
238-
InSlot(slot_id),
239-
Item(item_defs.get_strong_handle(*asset_id).unwrap()),
240-
Node {
241-
width: Val::Percent(80.0),
242-
height: Val::Percent(80.0),
237+
let id = commands
238+
.spawn((
239+
Name::new(item_def.name.clone()),
240+
InSlot(slot_id),
241+
Item(item_defs.get_strong_handle(*asset_id).unwrap()),
242+
Node {
243+
width: Val::Percent(80.0),
244+
height: Val::Percent(80.0),
245+
..default()
246+
},
247+
))
248+
.id();
249+
250+
if let Some(sprite_path) = &item_def.sprite {
251+
commands.entity(id).insert(ImageNode {
252+
image: asset_server.load(sprite_path.clone()),
243253
..default()
244-
},
245-
ImageNode::default(),
246-
AseSlice {
247-
aseprite: item_assets.aseprite.clone(),
248-
name: item_def.id.clone(),
249-
},
250-
));
254+
});
255+
} else {
256+
commands.entity(id).insert((
257+
ImageNode::default(),
258+
AseSlice {
259+
aseprite: item_assets.aseprite.clone(),
260+
name: item_def.id.clone(),
261+
},
262+
));
263+
}
251264
}
252265
}
253266
}

src/simulation/item/assets.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ pub fn plugin(app: &mut App) {
2323
pub struct ItemDef {
2424
pub id: String,
2525
pub name: String,
26+
pub sprite: Option<String>,
2627
pub stack_size: u32,
2728
}
2829

@@ -37,6 +38,7 @@ impl Indexable for ItemDef {
3738
pub struct ItemAssets {
3839
pub aseprite: Handle<Aseprite>,
3940
pub item_definitions: Handle<LoadedFolder>,
41+
pub item_sprites: Handle<LoadedFolder>,
4042
}
4143

4244
impl FromWorld for ItemAssets {
@@ -46,6 +48,7 @@ impl FromWorld for ItemAssets {
4648
Self {
4749
aseprite: asset_server.load("items.aseprite"),
4850
item_definitions: asset_server.load_folder("items"),
51+
item_sprites: asset_server.load_folder("sprites/items"),
4952
}
5053
}
5154
}

0 commit comments

Comments
 (0)