Identification scrolls

This commit is contained in:
Llywelwyn 2023-08-22 17:38:30 +01:00
parent cfe5884a0b
commit 51081c7c9c
11 changed files with 233 additions and 18 deletions

View file

@ -54,6 +54,7 @@ pub enum RunState {
ShowRemoveItem,
ShowTargeting { range: i32, item: Entity, aoe: i32 },
ShowRemoveCurse,
ShowIdentify,
ActionWithDirection { function: fn(i: i32, j: i32, ecs: &mut World) -> RunState },
MainMenu { menu_selection: gui::MainMenuSelection },
CharacterCreation { ancestry: gui::Ancestry, class: gui::Class },
@ -263,6 +264,7 @@ impl GameState for State {
new_runstate = RunState::MagicMapReveal { row: row, cursed: cursed }
}
RunState::ShowRemoveCurse => new_runstate = RunState::ShowRemoveCurse,
RunState::ShowIdentify => new_runstate = RunState::ShowIdentify,
_ => new_runstate = RunState::Ticking,
}
}
@ -397,6 +399,24 @@ impl GameState for State {
}
}
}
RunState::ShowIdentify => {
let result = gui::identify(self, ctx);
match result.0 {
gui::ItemMenuResult::Cancel => new_runstate = RunState::AwaitingInput,
gui::ItemMenuResult::NoResponse => {}
gui::ItemMenuResult::Selected => {
let item_entity = result.1.unwrap();
if let Some(name) = self.ecs.read_storage::<Name>().get(item_entity) {
let mut dm = self.ecs.fetch_mut::<MasterDungeonMap>();
dm.identified_items.insert(name.name.clone());
}
if let Some(beatitude) = self.ecs.write_storage::<Beatitude>().get_mut(item_entity) {
beatitude.known = true;
}
new_runstate = RunState::Ticking;
}
}
}
RunState::ActionWithDirection { function } => {
new_runstate = gui::get_input_direction(&mut self.ecs, ctx, function);
}
@ -637,7 +657,8 @@ fn main() -> rltk::BError {
gs.ecs.register::<EntryTrigger>();
gs.ecs.register::<EntityMoved>();
gs.ecs.register::<MultiAttack>();
gs.ecs.register::<RemovesCurse>();
gs.ecs.register::<ProvidesRemoveCurse>();
gs.ecs.register::<ProvidesIdentify>();
gs.ecs.register::<ParticleLifetime>();
gs.ecs.register::<SpawnParticleSimple>();
gs.ecs.register::<SpawnParticleBurst>();