identify now works properly with beatitude
This commit is contained in:
parent
51081c7c9c
commit
c46e302274
2 changed files with 9 additions and 3 deletions
|
|
@ -228,6 +228,7 @@ fn handle_identify(ecs: &mut World, event: &mut EventInfo, mut logger: gamelog::
|
||||||
return (logger, true);
|
return (logger, true);
|
||||||
}
|
}
|
||||||
let mut to_identify: Vec<(Entity, String)> = Vec::new();
|
let mut to_identify: Vec<(Entity, String)> = Vec::new();
|
||||||
|
let mut beatitudes = ecs.write_storage::<Beatitude>();
|
||||||
for (e, _i, _bp, _o, name) in (
|
for (e, _i, _bp, _o, name) in (
|
||||||
&ecs.entities(),
|
&ecs.entities(),
|
||||||
&ecs.read_storage::<Item>(),
|
&ecs.read_storage::<Item>(),
|
||||||
|
|
@ -237,14 +238,16 @@ fn handle_identify(ecs: &mut World, event: &mut EventInfo, mut logger: gamelog::
|
||||||
)
|
)
|
||||||
.join()
|
.join()
|
||||||
.filter(|(_e, _i, bp, _o, name)| {
|
.filter(|(_e, _i, bp, _o, name)| {
|
||||||
bp.owner == event.source.unwrap() && !dm.identified_items.contains(&name.name.clone())
|
bp.owner == event.source.unwrap()
|
||||||
|
&& (!dm.identified_items.contains(&name.name.clone())
|
||||||
|
|| !beatitudes.get(event.source.unwrap()).map(|beatitude| beatitude.known).unwrap_or(true))
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
to_identify.push((e, name.name.clone()));
|
to_identify.push((e, name.name.clone()));
|
||||||
}
|
}
|
||||||
for item in to_identify {
|
for item in to_identify {
|
||||||
dm.identified_items.insert(item.1);
|
dm.identified_items.insert(item.1);
|
||||||
if let Some(beatitude) = ecs.write_storage::<Beatitude>().get_mut(item.0) {
|
if let Some(beatitude) = beatitudes.get_mut(item.0) {
|
||||||
beatitude.known = true;
|
beatitude.known = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ pub fn identify(gs: &mut State, ctx: &mut Rltk) -> (ItemMenuResult, Option<Entit
|
||||||
let dm = gs.ecs.fetch::<MasterDungeonMap>();
|
let dm = gs.ecs.fetch::<MasterDungeonMap>();
|
||||||
let names = gs.ecs.read_storage::<Name>();
|
let names = gs.ecs.read_storage::<Name>();
|
||||||
let renderables = gs.ecs.read_storage::<Renderable>();
|
let renderables = gs.ecs.read_storage::<Renderable>();
|
||||||
|
let beatitudes = gs.ecs.read_storage::<Beatitude>();
|
||||||
|
|
||||||
let build_identify_iterator = || {
|
let build_identify_iterator = || {
|
||||||
(&entities, &items, &renderables, &names).join().filter(|(item_entity, _i, _r, n)| {
|
(&entities, &items, &renderables, &names).join().filter(|(item_entity, _i, _r, n)| {
|
||||||
|
|
@ -41,7 +42,9 @@ pub fn identify(gs: &mut State, ctx: &mut Rltk) -> (ItemMenuResult, Option<Entit
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// If not obfuscated, or already identified, return false.
|
// If not obfuscated, or already identified, return false.
|
||||||
if !obfuscated.get(*item_entity).is_some() || dm.identified_items.contains(&n.name) {
|
if (!obfuscated.get(*item_entity).is_some() || dm.identified_items.contains(&n.name))
|
||||||
|
&& beatitudes.get(*item_entity).map(|beatitude| beatitude.known).unwrap_or(true)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue