Addressed feedback

This commit is contained in:
Sam 2022-08-04 21:40:40 -04:00
parent 807a8bcea0
commit e4ebd17363
5 changed files with 43 additions and 10 deletions

View File

@ -30,16 +30,12 @@ hud-crafting-tabs-utility = Utility
hud-crafting-tabs-weapon = Weapons
hud-crafting-tabs-bag = Bags
hud-crafting-tabs-processed_material = Materials
hud-crafting-tabs-repair = Repair
hud-crafting-dismantle_title = Dismantling
hud-crafting-dismantle_explanation =
Hover items in your bag to see what
you can salvage.
Double-Click them to start dismantling.
hud-crafting-repair_title = Repair Items
hud-crafting-repair_slot_title = Damaged Item
hud-crafting-repair_slot_desc = Place a damaged item here to repair it.
hud-crafting-modular_desc = Drag Item-Parts here to craft a weapon
hud-crafting-mod_weap_prim_slot_title = Primary Weapon Component
hud-crafting-mod_weap_prim_slot_desc = Place a primary weapon component here (e.g. a sword blade, axe head, or bow limbs).

View File

@ -38,7 +38,7 @@ impl ArmorKind {
Back => true,
Ring => false,
Neck => false,
Head => false,
Head => true,
Tabard => false,
Bag => false,
}

View File

@ -218,11 +218,12 @@ impl Mul<DurabilityMultiplier> for Stats {
fn mul(self, value: DurabilityMultiplier) -> Self {
let DurabilityMultiplier(value) = value;
let less_scaled = value * 0.5 + 0.5;
Self {
equip_time_secs: self.equip_time_secs / value.max(0.01),
equip_time_secs: self.equip_time_secs / less_scaled.max(0.01),
power: self.power * value,
effect_power: self.effect_power * value,
speed: self.speed * value,
speed: self.speed * less_scaled,
crit_chance: self.crit_chance * value,
range: self.range * value,
energy_efficiency: self.energy_efficiency * value,

View File

@ -5,7 +5,8 @@ use common::{
item::{
armor::{Armor, ArmorKind, Protection},
tool::{Hands, Tool, ToolKind},
Effects, ItemDefinitionId, ItemDesc, ItemKind, MaterialKind, MaterialStatManifest,
Effects, Item, ItemDefinitionId, ItemDesc, ItemKind, MaterialKind,
MaterialStatManifest,
},
BuffKind,
},
@ -355,6 +356,14 @@ pub fn protec2string(stat: Protection) -> String {
}
}
/// Gets the durability of an item in a format more intuitive for UI
pub fn item_durability(item: &dyn ItemDesc) -> Option<u32> {
let durability = item
.durability()
.or_else(|| item.has_durability().then_some(0));
durability.map(|d| Item::MAX_DURABILITY - d)
}
pub fn ability_image(imgs: &img_ids::Imgs, ability_id: &str) -> image::Id {
match ability_id {
// Debug stick

View File

@ -711,6 +711,13 @@ impl<'a> Widget for ItemTooltip<'a> {
equipped_tool_stats.buff_strength,
);
let tool_durability =
util::item_durability(item).unwrap_or(Item::MAX_DURABILITY);
let equipped_durability =
util::item_durability(equipped_item).unwrap_or(Item::MAX_DURABILITY);
let durability_diff =
util::comparison(tool_durability, equipped_durability);
let mut diff_text = |text: String, color, id_index| {
widget::Text::new(&text)
.align_middle_y_of(state.ids.stats[id_index])
@ -766,6 +773,14 @@ impl<'a> Widget for ItemTooltip<'a> {
);
diff_text(text, buff_strength_diff.1, 6)
}
if tool_durability != equipped_durability {
let text = format!(
"{} {}",
&durability_diff.0,
tool_durability as i32 - equipped_durability as i32
);
diff_text(text, durability_diff.1, 7)
}
}
}
},
@ -890,8 +905,7 @@ impl<'a> Widget for ItemTooltip<'a> {
index += 1;
}
if item.has_durability() {
let durability = Item::MAX_DURABILITY - item.durability().unwrap_or(0);
if let Some(durability) = util::item_durability(item) {
stat_text(
format!(
"{} : {}/{}",
@ -931,6 +945,11 @@ impl<'a> Widget for ItemTooltip<'a> {
let stealth_diff =
util::option_comparison(&armor_stats.stealth, &equipped_stats.stealth);
let armor_durability = util::item_durability(item);
let equipped_durability = util::item_durability(equipped_item);
let durability_diff =
util::option_comparison(&armor_durability, &equipped_durability);
let mut diff_text = |text: String, color, id_index| {
widget::Text::new(&text)
.align_middle_y_of(state.ids.stats[id_index])
@ -999,6 +1018,14 @@ impl<'a> Widget for ItemTooltip<'a> {
diff_text(text, stealth_diff.1, index);
}
}
index += armor_stats.stealth.is_some() as usize;
if armor_durability != equipped_durability {
let diff = armor_durability.unwrap_or(Item::MAX_DURABILITY) as i32
- equipped_durability.unwrap_or(Item::MAX_DURABILITY) as i32;
let text = format!("{} {}", &durability_diff.0, diff);
diff_text(text, durability_diff.1, index);
}
}
}
},