mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Add buff information to item tooltips
This commit is contained in:
parent
c9a656908d
commit
5e3a1b203f
@ -1,7 +1,13 @@
|
|||||||
use common::comp::item::{
|
use common::{
|
||||||
armor::{Armor, ArmorKind, Protection},
|
comp::{
|
||||||
tool::{Hands, StatKind, Stats, Tool, ToolKind},
|
item::{
|
||||||
Item, ItemDesc, ItemKind, MaterialStatManifest, ModularComponent,
|
armor::{Armor, ArmorKind, Protection},
|
||||||
|
tool::{Hands, StatKind, Stats, Tool, ToolKind},
|
||||||
|
Item, ItemDesc, ItemKind, MaterialStatManifest, ModularComponent,
|
||||||
|
},
|
||||||
|
BuffKind,
|
||||||
|
},
|
||||||
|
effect::Effect,
|
||||||
};
|
};
|
||||||
use std::{borrow::Cow, fmt::Write};
|
use std::{borrow::Cow, fmt::Write};
|
||||||
|
|
||||||
@ -40,7 +46,7 @@ pub fn item_text<'a>(
|
|||||||
item.description(),
|
item.description(),
|
||||||
)),
|
)),
|
||||||
ItemKind::Glider(_glider) => Cow::Owned(glider_desc(item.description())),
|
ItemKind::Glider(_glider) => Cow::Owned(glider_desc(item.description())),
|
||||||
ItemKind::Consumable { .. } => Cow::Owned(consumable_desc(item.description())),
|
ItemKind::Consumable { effect, .. } => Cow::Owned(consumable_desc(Some(effect), item.description())),
|
||||||
ItemKind::Throwable { .. } => Cow::Owned(throwable_desc(item.description())),
|
ItemKind::Throwable { .. } => Cow::Owned(throwable_desc(item.description())),
|
||||||
ItemKind::Utility { .. } => Cow::Owned(utility_desc(item.description())),
|
ItemKind::Utility { .. } => Cow::Owned(utility_desc(item.description())),
|
||||||
ItemKind::Ingredient { .. } => Cow::Owned(ingredient_desc(
|
ItemKind::Ingredient { .. } => Cow::Owned(ingredient_desc(
|
||||||
@ -78,8 +84,47 @@ fn modular_component_desc(
|
|||||||
}
|
}
|
||||||
fn glider_desc(desc: &str) -> String { format!("Glider\n\n{}\n\n<Right-Click to use>", desc) }
|
fn glider_desc(desc: &str) -> String { format!("Glider\n\n{}\n\n<Right-Click to use>", desc) }
|
||||||
|
|
||||||
fn consumable_desc(desc: &str) -> String {
|
fn consumable_desc(maybe_effects: Option<&Vec<Effect>>, desc: &str) -> String {
|
||||||
format!("Consumable\n\n{}\n\n<Right-Click to use>", desc)
|
// TODO: localization
|
||||||
|
let mut description = format!(
|
||||||
|
"Consumable"
|
||||||
|
);
|
||||||
|
|
||||||
|
if let Some(effects) = maybe_effects {
|
||||||
|
for effect in effects {
|
||||||
|
match effect {
|
||||||
|
Effect::Buff(buff) => {
|
||||||
|
|
||||||
|
let dur_secs = buff.data.duration.unwrap().as_secs_f32();
|
||||||
|
let str_total = buff.data.strength * 0.1 * dur_secs;
|
||||||
|
|
||||||
|
let buff_desc = match buff.kind {
|
||||||
|
BuffKind::Saturation { .. } => {
|
||||||
|
format!("Restores {} Health over {} seconds", str_total, dur_secs)
|
||||||
|
},
|
||||||
|
BuffKind::Potion { .. } => {
|
||||||
|
format!("Restores {} Health", str_total)
|
||||||
|
},
|
||||||
|
_ => {
|
||||||
|
String::new()
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
if !buff_desc.is_empty() {
|
||||||
|
write!(&mut description, "\n\n{}", buff_desc).unwrap();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !desc.is_empty() {
|
||||||
|
write!(&mut description, "\n\n{}", desc).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
write!(&mut description, "\n\n<Right-Click to use>").unwrap();
|
||||||
|
description
|
||||||
}
|
}
|
||||||
|
|
||||||
fn throwable_desc(desc: &str) -> String {
|
fn throwable_desc(desc: &str) -> String {
|
||||||
@ -224,7 +269,7 @@ mod tests {
|
|||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
"Consumable\n\nmushrooms\n\n<Right-Click to use>",
|
"Consumable\n\nmushrooms\n\n<Right-Click to use>",
|
||||||
consumable_desc(item_description)
|
consumable_desc(None, item_description)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user