mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Addressed more comments in MR review.
This commit is contained in:
parent
d7f5b907ff
commit
259db56ca6
@ -806,7 +806,7 @@ impl Item {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn add_component(
|
||||
pub fn persistence_access_add_component(
|
||||
&mut self,
|
||||
component: Item,
|
||||
ability_map: &AbilityMap,
|
||||
@ -820,7 +820,7 @@ impl Item {
|
||||
self.update_item_config(ability_map, msm);
|
||||
}
|
||||
|
||||
pub fn component_mut(&mut self, index: usize) -> Option<&mut Self> {
|
||||
pub fn persistence_access_mutable_component(&mut self, index: usize) -> Option<&mut Self> {
|
||||
self.components.get_mut(index)
|
||||
}
|
||||
|
||||
@ -998,11 +998,10 @@ pub trait ItemDesc {
|
||||
fn num_slots(&self) -> u16;
|
||||
fn item_definition_id(&self) -> &str;
|
||||
fn tags(&self) -> &[ItemTag];
|
||||
fn concrete_item(&self) -> Option<&Item>;
|
||||
|
||||
fn is_modular(&self) -> bool;
|
||||
|
||||
fn components(&self) -> &[Item] { self.concrete_item().map_or(&[], |i| i.components()) }
|
||||
fn components(&self) -> &[Item];
|
||||
|
||||
fn tool_info(&self) -> Option<ToolKind> {
|
||||
if let ItemKind::Tool(tool) = &*self.kind() {
|
||||
@ -1028,9 +1027,9 @@ impl ItemDesc for Item {
|
||||
|
||||
fn tags(&self) -> &[ItemTag] { self.tags() }
|
||||
|
||||
fn concrete_item(&self) -> Option<&Item> { Some(self) }
|
||||
|
||||
fn is_modular(&self) -> bool { self.is_modular() }
|
||||
|
||||
fn components(&self) -> &[Item] { self.components() }
|
||||
}
|
||||
|
||||
impl ItemDesc for ItemDef {
|
||||
@ -1048,9 +1047,9 @@ impl ItemDesc for ItemDef {
|
||||
|
||||
fn tags(&self) -> &[ItemTag] { &self.tags }
|
||||
|
||||
fn concrete_item(&self) -> Option<&Item> { None }
|
||||
|
||||
fn is_modular(&self) -> bool { false }
|
||||
|
||||
fn components(&self) -> &[Item] { &[] }
|
||||
}
|
||||
|
||||
impl Component for Item {
|
||||
@ -1081,8 +1080,6 @@ impl<'a, T: ItemDesc + ?Sized> ItemDesc for &'a T {
|
||||
|
||||
fn tags(&self) -> &[ItemTag] { (*self).tags() }
|
||||
|
||||
fn concrete_item(&self) -> Option<&Item> { None }
|
||||
|
||||
fn is_modular(&self) -> bool { (*self).is_modular() }
|
||||
}
|
||||
|
||||
|
@ -39,7 +39,6 @@ pub enum ToolKind {
|
||||
}
|
||||
|
||||
impl ToolKind {
|
||||
// Changing this will break persistence of modular weapons
|
||||
pub fn identifier_name(&self) -> &'static str {
|
||||
match self {
|
||||
ToolKind::Sword => "sword",
|
||||
|
@ -125,15 +125,12 @@ impl Recipe {
|
||||
}
|
||||
let (item_def, quantity) = &self.output;
|
||||
|
||||
let mut crafted_item = Item::new_from_item_base(
|
||||
let crafted_item = Item::new_from_item_base(
|
||||
ItemBase::Raw(Arc::clone(item_def)),
|
||||
&[],
|
||||
&components,
|
||||
ability_map,
|
||||
msm,
|
||||
);
|
||||
for component in components {
|
||||
crafted_item.add_component(component, ability_map, msm);
|
||||
}
|
||||
let mut crafted_items = Vec::with_capacity(*quantity as usize);
|
||||
for _ in 0..*quantity {
|
||||
crafted_items.push(crafted_item.duplicate(ability_map, msm));
|
||||
|
@ -296,7 +296,7 @@ where
|
||||
// Returns mutable reference to parent item of original item, by grabbing
|
||||
// the component representing the parent item from the parent item's parent
|
||||
// item
|
||||
component_index.and_then(move |i| parent.component_mut(i))
|
||||
component_index.and_then(move |i| parent.persistence_access_mutable_component(i))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
@ -400,7 +400,11 @@ pub fn convert_inventory_from_database_items(
|
||||
&mut inventory,
|
||||
&|inv, s| inv.slot_mut(slot(s).ok()?).and_then(|a| a.as_mut()),
|
||||
) {
|
||||
parent.add_component(item, &ABILITY_MAP, &MATERIAL_STATS_MANIFEST);
|
||||
parent.persistence_access_add_component(
|
||||
item,
|
||||
&ABILITY_MAP,
|
||||
&MATERIAL_STATS_MANIFEST,
|
||||
);
|
||||
} else {
|
||||
return Err(PersistenceError::ConversionError(format!(
|
||||
"Parent slot {} for component {} was empty even though it occurred earlier in \
|
||||
@ -459,7 +463,11 @@ pub fn convert_loadout_from_database_items(
|
||||
l.get_mut_item_at_slot_using_persistence_key(s).ok()
|
||||
})
|
||||
{
|
||||
parent.add_component(item, &ABILITY_MAP, &MATERIAL_STATS_MANIFEST);
|
||||
parent.persistence_access_add_component(
|
||||
item,
|
||||
&ABILITY_MAP,
|
||||
&MATERIAL_STATS_MANIFEST,
|
||||
);
|
||||
} else {
|
||||
return Err(PersistenceError::ConversionError(format!(
|
||||
"Parent slot {} for component {} was empty even though it occurred earlier in \
|
||||
|
@ -70,7 +70,7 @@ pub fn price_desc(
|
||||
}
|
||||
}
|
||||
|
||||
pub fn kind_text<'a>(item: &dyn ItemDesc, i18n: &'a Localization) -> Cow<'a, str> {
|
||||
pub fn kind_text<'a, I: ItemDesc + ?Sized>(item: &I, i18n: &'a Localization) -> Cow<'a, str> {
|
||||
match &*item.kind() {
|
||||
ItemKind::Armor(armor) => Cow::Borrowed(armor_kind(armor, i18n)),
|
||||
ItemKind::Tool(tool) => Cow::Owned(format!(
|
||||
|
Loading…
Reference in New Issue
Block a user