use ::bracket_lib::prelude::*; use ::specs::prelude::*; use crate::components::{Consumable, CursedItem, MagicItem, MagicItemClass, Name, ObfuscatedName}; use crate::{colors, MasterDungeonMap}; pub fn get_item_color(ecs: &World, item: Entity) -> RGB { let dm = ecs.fetch::(); // If the item is cursed, and you have identified it, display it in red if let Some(name) = ecs.read_storage::().get(item) { if ecs.read_storage::().get(item).is_some() && dm.identified_items.contains(&name.name) { return colors::RED; } } if let Some(magic) = ecs.read_storage::().get(item) { return match magic.class { MagicItemClass::Common => colors::EQUIP_COMMON, MagicItemClass::Rare => colors::EQUIP_RARE, MagicItemClass::Legendary => colors::EQUIP_LEGEND, }; } colors::WHITE } pub fn get_item_display_name(ecs: &World, item: Entity) -> String { if let Some(name) = ecs.read_storage::().get(item) { if ecs.read_storage::().get(item).is_some() { let dm = ecs.fetch::(); if dm.identified_items.contains(&name.name) { if let Some(c) = ecs.read_storage::().get(item) { if c.max_charges > 1 { format!("{} ({})", name.name.clone(), c.charges) } else { name.name.clone() } } else { name.name.clone() } } else if let Some(obfuscated) = ecs.read_storage::().get(item) { obfuscated.name.clone() } else { "Unidentified magic item".to_string() } } else { name.name.clone() } } else { "Nameless item (bug)".to_string() } }