Skip to content

Commit 641629e

Browse files
committed
split dungeon_items.rs between separate files
1 parent c878f0e commit 641629e

17 files changed

+650
-514
lines changed

Cargo.lock

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ enumset = "1.1.10"
2525
fstr = { path = "crates/fstr" }
2626
include_dir = "0.7.4"
2727
bevy_ecs = "0.18.0"
28+
enum_dispatch = "0.3.13"
2829

2930
[profile.dev.package."*"]
3031
opt-level = 3

src/dungeon/dungeon.rs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
use crate::dungeon::door::door::{Door, DoorType};
22
use crate::dungeon::door::door_positions::DOOR_POSITIONS;
33
use crate::dungeon::dungeon_player::DungeonPlayer;
4-
use crate::dungeon::items::dungeon_items::DungeonItem;
4+
use crate::dungeon::items::aspect_of_the_void::AspectOfTheVoid;
5+
use crate::dungeon::items::ender_pearl::EnderPearl;
6+
use crate::dungeon::items::hyperion::Hyperion;
7+
use crate::dungeon::items::magical_map::MagicalMap;
8+
use crate::dungeon::items::pickaxe::Pickaxe;
9+
use crate::dungeon::items::skyblock_menu::SkyblockMenu;
10+
use crate::dungeon::items::spirit_sceptre::SpiritSceptre;
11+
use crate::dungeon::items::tactical_insertion::TacticalInsertion;
512
use crate::dungeon::map::DungeonMap;
613
use crate::dungeon::room::room::{Room, RoomNeighbour, RoomSegment, RoomStatus};
714
use crate::dungeon::room::room_data::{get_random_data_with_type, RoomData, RoomShape, RoomType};
@@ -196,13 +203,13 @@ impl WorldExtension for Dungeon {
196203

197204
player.extension.sidebar.write_init_packets(&mut player.packet_buffer);
198205

199-
player.inventory.set_slot(36, Some(DungeonItem::Hyperion));
200-
player.inventory.set_slot(37, Some(DungeonItem::AspectOfTheVoid));
201-
player.inventory.set_slot(38, Some(DungeonItem::EnderPearl));
202-
player.inventory.set_slot(39, Some(DungeonItem::Pickaxe));
203-
player.inventory.set_slot(41, Some(DungeonItem::SpiritSceptre));
204-
player.inventory.set_slot(42, Some(DungeonItem::TacticalInsertion));
205-
player.inventory.set_slot(44, Some(DungeonItem::SkyblockMenu));
206+
player.inventory.set_slot(36, Some(Hyperion.into()));
207+
player.inventory.set_slot(37, Some(AspectOfTheVoid.into()));
208+
player.inventory.set_slot(38, Some(EnderPearl.into()));
209+
player.inventory.set_slot(39, Some(Pickaxe.into()));
210+
player.inventory.set_slot(41, Some(SpiritSceptre.into()));
211+
player.inventory.set_slot(42, Some(TacticalInsertion.into()));
212+
player.inventory.set_slot(44, Some(SkyblockMenu.into()));
206213
player.sync_inventory();
207214

208215
let cmd = command!("tpr", |player: &mut Player<DungeonPlayer>, room_name: GreedyString| {
@@ -256,7 +263,7 @@ impl Dungeon {
256263
if let OpenContainer::Menu(_) = player.get_container() {
257264
player.open_container(OpenContainer::None)
258265
}
259-
player.inventory.set_slot(44, Some(DungeonItem::MagicalMap));
266+
player.inventory.set_slot(44, Some(MagicalMap.into()));
260267
player.sync_inventory();
261268
}
262269

src/dungeon/dungeon_player.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::dungeon::dungeon::{Dungeon, DungeonState};
22
use crate::dungeon::items::ability::{Ability, ActiveAbility, Cooldown};
3-
use crate::dungeon::items::dungeon_items::DungeonItem;
3+
use crate::dungeon::items::dungeon_items::{DungeonItem, DungeonItems};
44
use crate::dungeon::room::room::Room;
55
use chrono::Local;
66
use glam::IVec3;
@@ -28,13 +28,13 @@ pub struct DungeonPlayer {
2828
// maybe disallow multiple of the same,
2929
// however if you pair with cooldowns it should be fine
3030
pub active_abilities: Cell<Vec<ActiveAbility>>,
31-
pub cooldowns: HashMap<DungeonItem, Cooldown>,
31+
pub cooldowns: HashMap<DungeonItems, Cooldown>,
3232

3333
}
3434

3535
impl PlayerExtension for DungeonPlayer {
3636
type World = Dungeon;
37-
type Item = DungeonItem;
37+
type Item = DungeonItems;
3838

3939
fn tick(player: &mut Player<Self>) {
4040
if player.ticks_existed.is_multiple_of(60) {
@@ -77,7 +77,7 @@ impl PlayerExtension for DungeonPlayer {
7777
match action {
7878
PlayerDiggingAction::StartDestroyBlock => {
7979
if let Some(item) = *player.inventory.get_hotbar_slot(player.held_slot as usize) {
80-
if matches!(item, DungeonItem::Pickaxe) {
80+
if matches!(item, DungeonItems::Pickaxe(_)) {
8181
restore_block = true;
8282
}
8383
}
@@ -101,7 +101,7 @@ impl PlayerExtension for DungeonPlayer {
101101
}
102102

103103
fn interact(player: &mut Player<Self>, item: Option<ItemStack>, block: Option<BlockInteractResult>) {
104-
if let Some(block) = block {
104+
if let Some(block) = &block {
105105
{
106106
let mut pos = block.position;
107107
match block.direction {
@@ -130,18 +130,18 @@ impl PlayerExtension for DungeonPlayer {
130130
player.sync_inventory();
131131
}
132132
if let Some(held_item) = held_item {
133-
held_item.on_right_click(player)
133+
DungeonItem::on_interact(&held_item, player, block);
134134
}
135135
}
136136
}
137137

138138
impl DungeonPlayer {
139139

140-
pub fn item_cooldown(&self, item: &DungeonItem) -> Option<&Cooldown> {
140+
pub fn item_cooldown(&self, item: &DungeonItems) -> Option<&Cooldown> {
141141
self.cooldowns.get(item)
142142
}
143143

144-
pub fn add_item_cooldown(&mut self, item: &DungeonItem, cooldown: Cooldown) {
144+
pub fn add_item_cooldown(&mut self, item: &DungeonItems, cooldown: Cooldown) {
145145
self.cooldowns.insert(*item, cooldown);
146146
}
147147

0 commit comments

Comments
 (0)