diff options
Diffstat (limited to 'dungeon/src/lib.rs')
| -rw-r--r-- | dungeon/src/lib.rs | 62 |
1 files changed, 3 insertions, 59 deletions
diff --git a/dungeon/src/lib.rs b/dungeon/src/lib.rs index 0fd3e0d..fa75c10 100644 --- a/dungeon/src/lib.rs +++ b/dungeon/src/lib.rs @@ -10,16 +10,14 @@ pub mod player_input; pub mod pos; pub mod rng; -use std::time::Instant; - use rand::{Rng, SeedableRng, TryRngCore, rngs::OsRng}; use crate::{ - entity::{Entity, EntityKind, PLAYER_INVENTORY_SIZE_USIZE, Player}, + entity::{Entity, Player}, map::{Floor, Tile}, msg::Message, player_input::PlayerInput, - pos::{Direction, FPos}, + pos::FPos, rng::DungeonRng, }; @@ -147,8 +145,7 @@ impl Dungeon { let changed = self.msg.update(player_input); UpdateResult::MessageUpdated(changed) } else { - let mut action = self.update_player(player_input); - + let mut action = self.update_player(player_input, delta_time); let curr_player_pos = self.player.entity.fpos; self.update_entities(player_input, delta_time); if self @@ -181,59 +178,6 @@ impl Dungeon { } } - fn update_player(&mut self, player_input: PlayerInput) -> PlayerAction { - let mut action = PlayerAction::default(); - - // update potion timer - if let Some(timer) = self.player.potion_timer - && Instant::now() > timer - { - self.player.potion_timer = None; - self.player.entity.speed = self.player.entity.kind.initial_speed(); - } - - // use item - if player_input.use_item - && self.player.active_inv_slot < self.player.inventory.len() - { - let item = self.player.inventory.remove(self.player.active_inv_slot); - action.potion = item.is_potion(); - action.bomb = item.is_bomb(); - item.consume(self); - } - - if player_input.attack { - // TODO: attack - action.attack = true; - } - - // check for drop input - if player_input.drop && self.player.active_inv_slot < self.player.inventory.len() { - let item = self.player.inventory.remove(self.player.active_inv_slot); - self.entities.push(Entity::new( - self.player.entity.pos, - Direction::East, - EntityKind::Item(item), - )); - self.player.active_inv_slot = self - .player - .active_inv_slot - .max(self.player.inventory.len().saturating_sub(1)); - action.drop_item = true; - } - - // TODO: pickup items - - // check for inv slot request - if let Some(slot) = player_input.inv_slot - && slot < PLAYER_INVENTORY_SIZE_USIZE - { - self.player.active_inv_slot = slot; - } - - action - } - fn spawn_enimies(&mut self) { // TODO: better entity spawning let zombie = Entity::zombie(self.floor.random_walkable_pos(&mut self.level_rng)); |