mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Deduplicate setting equipment tooltips
This commit is contained in:
@ -751,6 +751,43 @@ impl<'a> Widget for Bag<'a> {
|
|||||||
slot_manager: Some(self.slot_manager),
|
slot_manager: Some(self.slot_manager),
|
||||||
pulse: self.pulse,
|
pulse: self.pulse,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// NOTE: Yes, macros considered harmful.
|
||||||
|
// Though, this code mutably captures two different fields of `self`
|
||||||
|
// This works because it's different branches of if-let
|
||||||
|
// so in reality borrow checker allows you to do this as you
|
||||||
|
// capture only one field.
|
||||||
|
//
|
||||||
|
// The less impossible, but still tricky part is denote type of
|
||||||
|
// `$slot_maker` which has 1 lifetype parameter and 3 type parameters
|
||||||
|
// in such way that it implements all traits conrod needs.
|
||||||
|
//
|
||||||
|
// And final part is that this uses that much of arguments
|
||||||
|
// that just by passing all of them, you will get about the same
|
||||||
|
// amount of lines this macro has or even more.
|
||||||
|
//
|
||||||
|
// So considering how many times we copy-paste this code
|
||||||
|
// and how easy this macro looks it sounds like lawful evil.
|
||||||
|
//
|
||||||
|
// What this actually does is checks if we have equipped item on this slot
|
||||||
|
// and if we do, display item tooltip for it.
|
||||||
|
// If not, just show text of slot name.
|
||||||
|
macro_rules! set_tooltip {
|
||||||
|
($slot_maker:expr, $slot_id:expr, $slot:expr, $desc:expr) => {
|
||||||
|
if let Some(item) = inventory.equipped($slot) {
|
||||||
|
let manager = &mut *self.item_tooltip_manager;
|
||||||
|
$slot_maker
|
||||||
|
.with_item_tooltip(manager, item, &None, &item_tooltip)
|
||||||
|
.set($slot_id, ui)
|
||||||
|
} else {
|
||||||
|
let manager = &mut *self.tooltip_manager;
|
||||||
|
$slot_maker
|
||||||
|
.with_tooltip(manager, i18n.get($desc), "", &tooltip, color::WHITE)
|
||||||
|
.set($slot_id, ui)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
let filled_slot = self.imgs.armor_slot;
|
let filled_slot = self.imgs.armor_slot;
|
||||||
if !self.show.bag_inv {
|
if !self.show.bag_inv {
|
||||||
// Stat icons and text
|
// Stat icons and text
|
||||||
@ -841,410 +878,203 @@ impl<'a> Widget for Bag<'a> {
|
|||||||
}
|
}
|
||||||
// Loadout Slots
|
// Loadout Slots
|
||||||
// Head
|
// Head
|
||||||
let head_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Head);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Head))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Head), [45.0; 2])
|
.fabricate(item_slot, [45.0; 2])
|
||||||
.mid_top_with_margin_on(state.bg_ids.bg_frame, 60.0)
|
.mid_top_with_margin_on(state.bg_ids.bg_frame, 60.0)
|
||||||
.with_icon(self.imgs.head_bg, Vec2::new(32.0, 40.0), Some(UI_MAIN))
|
.with_icon(self.imgs.head_bg, Vec2::new(32.0, 40.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = head_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.head_slot;
|
||||||
.set(state.ids.head_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.head");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.head"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.head_slot, ui)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Necklace
|
// Necklace
|
||||||
let neck_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Neck);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Neck))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Neck), [45.0; 2])
|
.fabricate(item_slot, [45.0; 2])
|
||||||
.mid_bottom_with_margin_on(state.ids.head_slot, -55.0)
|
.mid_bottom_with_margin_on(state.ids.head_slot, -55.0)
|
||||||
.with_icon(self.imgs.necklace_bg, Vec2::new(40.0, 31.0), Some(UI_MAIN))
|
.with_icon(self.imgs.necklace_bg, Vec2::new(40.0, 31.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = neck_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.neck_slot;
|
||||||
.set(state.ids.neck_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.neck");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.neck"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.neck_slot, ui)
|
|
||||||
}
|
|
||||||
// Chest
|
// Chest
|
||||||
//Image::new(self.imgs.armor_slot) // different graphics for empty/non empty
|
//Image::new(self.imgs.armor_slot) // different graphics for empty/non empty
|
||||||
let chest_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Chest);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Chest))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Chest), [85.0; 2])
|
.fabricate(item_slot, [85.0; 2])
|
||||||
.mid_bottom_with_margin_on(state.ids.neck_slot, -95.0)
|
.mid_bottom_with_margin_on(state.ids.neck_slot, -95.0)
|
||||||
.with_icon(self.imgs.chest_bg, Vec2::new(64.0, 42.0), Some(UI_MAIN))
|
.with_icon(self.imgs.chest_bg, Vec2::new(64.0, 42.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = chest_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
|
||||||
.set(state.ids.chest_slot, ui)
|
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.chest"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.chest_slot, ui)
|
|
||||||
}
|
|
||||||
// Shoulders
|
|
||||||
let shoulder_item = inventory
|
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Shoulders))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
|
|
||||||
|
let slot_id = state.ids.chest_slot;
|
||||||
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.chest");
|
||||||
|
|
||||||
|
// Shoulders
|
||||||
|
let item_slot = EquipSlot::Armor(ArmorSlot::Shoulders);
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Shoulders), [70.0; 2])
|
.fabricate(item_slot, [70.0; 2])
|
||||||
.bottom_left_with_margins_on(state.ids.chest_slot, 0.0, -80.0)
|
.bottom_left_with_margins_on(state.ids.chest_slot, 0.0, -80.0)
|
||||||
.with_icon(self.imgs.shoulders_bg, Vec2::new(60.0, 36.0), Some(UI_MAIN))
|
.with_icon(self.imgs.shoulders_bg, Vec2::new(60.0, 36.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = shoulder_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.shoulders_slot;
|
||||||
.set(state.ids.shoulders_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.shoulders");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.shoulders"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.shoulders_slot, ui)
|
|
||||||
}
|
|
||||||
// Hands
|
// Hands
|
||||||
let hands_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Hands);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Hands))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Hands), [70.0; 2])
|
.fabricate(item_slot, [70.0; 2])
|
||||||
.bottom_right_with_margins_on(state.ids.chest_slot, 0.0, -80.0)
|
.bottom_right_with_margins_on(state.ids.chest_slot, 0.0, -80.0)
|
||||||
.with_icon(self.imgs.hands_bg, Vec2::new(55.0, 60.0), Some(UI_MAIN))
|
.with_icon(self.imgs.hands_bg, Vec2::new(55.0, 60.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = hands_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.hands_slot;
|
||||||
.set(state.ids.hands_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.hands");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.hands"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.hands_slot, ui)
|
|
||||||
}
|
|
||||||
// Belt
|
// Belt
|
||||||
let belt_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Belt);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Belt))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Belt), [45.0; 2])
|
.fabricate(item_slot, [45.0; 2])
|
||||||
.mid_bottom_with_margin_on(state.ids.chest_slot, -55.0)
|
.mid_bottom_with_margin_on(state.ids.chest_slot, -55.0)
|
||||||
.with_icon(self.imgs.belt_bg, Vec2::new(40.0, 23.0), Some(UI_MAIN))
|
.with_icon(self.imgs.belt_bg, Vec2::new(40.0, 23.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = belt_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.belt_slot;
|
||||||
.set(state.ids.belt_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.belt");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.belt"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.belt_slot, ui)
|
|
||||||
}
|
|
||||||
// Legs
|
// Legs
|
||||||
let legs_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Legs);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Legs))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Legs), [85.0; 2])
|
.fabricate(item_slot, [85.0; 2])
|
||||||
.mid_bottom_with_margin_on(state.ids.belt_slot, -95.0)
|
.mid_bottom_with_margin_on(state.ids.belt_slot, -95.0)
|
||||||
.with_icon(self.imgs.legs_bg, Vec2::new(48.0, 70.0), Some(UI_MAIN))
|
.with_icon(self.imgs.legs_bg, Vec2::new(48.0, 70.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = legs_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.legs_slot;
|
||||||
.set(state.ids.legs_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.legs");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.legs"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.legs_slot, ui)
|
|
||||||
}
|
|
||||||
// Ring
|
// Ring
|
||||||
let ring1_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Ring1);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Ring1))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Ring1), [45.0; 2])
|
.fabricate(item_slot, [45.0; 2])
|
||||||
.bottom_left_with_margins_on(state.ids.hands_slot, -55.0, 0.0)
|
.bottom_left_with_margins_on(state.ids.hands_slot, -55.0, 0.0)
|
||||||
.with_icon(self.imgs.ring_bg, Vec2::new(36.0, 40.0), Some(UI_MAIN))
|
.with_icon(self.imgs.ring_bg, Vec2::new(36.0, 40.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = ring1_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.ring1_slot;
|
||||||
.set(state.ids.ring1_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.ring");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.ring"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.ring1_slot, ui)
|
|
||||||
}
|
|
||||||
// Ring 2
|
// Ring 2
|
||||||
let ring2_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Ring2);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Ring2))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Ring2), [45.0; 2])
|
.fabricate(item_slot, [45.0; 2])
|
||||||
.bottom_right_with_margins_on(state.ids.shoulders_slot, -55.0, 0.0)
|
.bottom_right_with_margins_on(state.ids.shoulders_slot, -55.0, 0.0)
|
||||||
.with_icon(self.imgs.ring_bg, Vec2::new(36.0, 40.0), Some(UI_MAIN))
|
.with_icon(self.imgs.ring_bg, Vec2::new(36.0, 40.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = ring2_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.ring2_slot;
|
||||||
.set(state.ids.ring2_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.ring");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.ring"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.ring2_slot, ui)
|
|
||||||
}
|
|
||||||
// Back
|
// Back
|
||||||
let back_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Back);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Back))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Back), [45.0; 2])
|
.fabricate(item_slot, [45.0; 2])
|
||||||
.down_from(state.ids.ring2_slot, 10.0)
|
.down_from(state.ids.ring2_slot, 10.0)
|
||||||
.with_icon(self.imgs.back_bg, Vec2::new(33.0, 40.0), Some(UI_MAIN))
|
.with_icon(self.imgs.back_bg, Vec2::new(33.0, 40.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = back_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.back_slot;
|
||||||
.set(state.ids.back_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.back");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.back"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.back_slot, ui)
|
|
||||||
}
|
|
||||||
// Foot
|
// Foot
|
||||||
let feet_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Feet);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Feet))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Feet), [45.0; 2])
|
.fabricate(item_slot, [45.0; 2])
|
||||||
.down_from(state.ids.ring1_slot, 10.0)
|
.down_from(state.ids.ring1_slot, 10.0)
|
||||||
.with_icon(self.imgs.feet_bg, Vec2::new(32.0, 40.0), Some(UI_MAIN))
|
.with_icon(self.imgs.feet_bg, Vec2::new(32.0, 40.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = feet_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.feet_slot;
|
||||||
.set(state.ids.feet_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.feet");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.feet"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.feet_slot, ui)
|
|
||||||
}
|
|
||||||
// Lantern
|
// Lantern
|
||||||
let lantern_item = inventory
|
let item_slot = EquipSlot::Lantern;
|
||||||
.equipped(EquipSlot::Lantern)
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Lantern, [45.0; 2])
|
.fabricate(item_slot, [45.0; 2])
|
||||||
.top_right_with_margins_on(state.bg_ids.bg_frame, 60.0, 5.0)
|
.top_right_with_margins_on(state.bg_ids.bg_frame, 60.0, 5.0)
|
||||||
.with_icon(self.imgs.lantern_bg, Vec2::new(24.0, 38.0), Some(UI_MAIN))
|
.with_icon(self.imgs.lantern_bg, Vec2::new(24.0, 38.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = lantern_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.lantern_slot;
|
||||||
.set(state.ids.lantern_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.lantern");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.lantern"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.lantern_slot, ui)
|
|
||||||
}
|
|
||||||
// Glider
|
// Glider
|
||||||
let glider_item = inventory
|
let item_slot = EquipSlot::Glider;
|
||||||
.equipped(EquipSlot::Glider)
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Glider, [45.0; 2])
|
.fabricate(item_slot, [45.0; 2])
|
||||||
.down_from(state.ids.lantern_slot, 5.0)
|
.down_from(state.ids.lantern_slot, 5.0)
|
||||||
.with_icon(self.imgs.glider_bg, Vec2::new(38.0, 38.0), Some(UI_MAIN))
|
.with_icon(self.imgs.glider_bg, Vec2::new(38.0, 38.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = glider_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.glider_slot;
|
||||||
.set(state.ids.glider_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.glider");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.glider"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.glider_slot, ui)
|
|
||||||
}
|
|
||||||
// Tabard
|
// Tabard
|
||||||
let tabard_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Tabard);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Tabard))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Tabard), [45.0; 2])
|
.fabricate(item_slot, [45.0; 2])
|
||||||
.down_from(state.ids.glider_slot, 5.0)
|
.down_from(state.ids.glider_slot, 5.0)
|
||||||
.with_icon(self.imgs.tabard_bg, Vec2::new(38.0, 38.0), Some(UI_MAIN))
|
.with_icon(self.imgs.tabard_bg, Vec2::new(38.0, 38.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = tabard_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
|
||||||
.set(state.ids.tabard_slot, ui)
|
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.tabard"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.tabard_slot, ui)
|
|
||||||
}
|
|
||||||
// Active Mainhand/Left-Slot
|
|
||||||
let mainhand_item = inventory
|
|
||||||
.equipped(EquipSlot::ActiveMainhand)
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
|
|
||||||
|
let slot_id = state.ids.tabard_slot;
|
||||||
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.tabard");
|
||||||
|
|
||||||
|
// Active Mainhand/Left-Slot
|
||||||
|
let item_slot = EquipSlot::ActiveMainhand;
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::ActiveMainhand, [85.0; 2])
|
.fabricate(item_slot, [85.0; 2])
|
||||||
.bottom_right_with_margins_on(state.ids.back_slot, -95.0, 0.0)
|
.bottom_right_with_margins_on(state.ids.back_slot, -95.0, 0.0)
|
||||||
.with_icon(self.imgs.mainhand_bg, Vec2::new(75.0, 75.0), Some(UI_MAIN))
|
.with_icon(self.imgs.mainhand_bg, Vec2::new(75.0, 75.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = mainhand_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.active_mainhand_slot;
|
||||||
.set(state.ids.active_mainhand_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.mainhand");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.mainhand"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.active_mainhand_slot, ui)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Active Offhand/Right-Slot
|
// Active Offhand/Right-Slot
|
||||||
let offhand_item = inventory
|
let item_slot = EquipSlot::ActiveOffhand;
|
||||||
.equipped(EquipSlot::ActiveOffhand)
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::ActiveOffhand, [85.0; 2])
|
.fabricate(item_slot, [85.0; 2])
|
||||||
.bottom_left_with_margins_on(state.ids.feet_slot, -95.0, 0.0)
|
.bottom_left_with_margins_on(state.ids.feet_slot, -95.0, 0.0)
|
||||||
.with_icon(self.imgs.offhand_bg, Vec2::new(75.0, 75.0), Some(UI_MAIN))
|
.with_icon(self.imgs.offhand_bg, Vec2::new(75.0, 75.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = offhand_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
|
||||||
.set(state.ids.active_offhand_slot, ui)
|
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.offhand"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.active_offhand_slot, ui)
|
|
||||||
}
|
|
||||||
// Inactive Mainhand/Left-Slot
|
|
||||||
let mainhand_item = inventory
|
|
||||||
.equipped(EquipSlot::InactiveMainhand)
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
|
|
||||||
|
let slot_id = state.ids.active_offhand_slot;
|
||||||
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.offhand");
|
||||||
|
|
||||||
|
// Inactive Mainhand/Left-Slot
|
||||||
|
let item_slot = EquipSlot::InactiveMainhand;
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::InactiveMainhand, [40.0; 2])
|
.fabricate(item_slot, [40.0; 2])
|
||||||
.bottom_right_with_margins_on(state.ids.active_mainhand_slot, 3.0, -47.0)
|
.bottom_right_with_margins_on(state.ids.active_mainhand_slot, 3.0, -47.0)
|
||||||
.with_icon(self.imgs.mainhand_bg, Vec2::new(35.0, 35.0), Some(UI_MAIN))
|
.with_icon(self.imgs.mainhand_bg, Vec2::new(35.0, 35.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = mainhand_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
|
||||||
.set(state.ids.inactive_mainhand_slot, ui)
|
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.inactive_mainhand"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.inactive_mainhand_slot, ui)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inctive Offhand/Right-Slot
|
let slot_id = state.ids.inactive_mainhand_slot;
|
||||||
let offhand_item = inventory
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.inactive_mainhand");
|
||||||
.equipped(EquipSlot::InactiveOffhand)
|
|
||||||
.map(|item| item.to_owned());
|
// Inactive Offhand/Right-Slot
|
||||||
|
let item_slot = EquipSlot::InactiveOffhand;
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::InactiveOffhand, [40.0; 2])
|
.fabricate(item_slot, [40.0; 2])
|
||||||
.bottom_left_with_margins_on(state.ids.active_offhand_slot, 3.0, -47.0)
|
.bottom_left_with_margins_on(state.ids.active_offhand_slot, 3.0, -47.0)
|
||||||
.with_icon(self.imgs.offhand_bg, Vec2::new(35.0, 35.0), Some(UI_MAIN))
|
.with_icon(self.imgs.offhand_bg, Vec2::new(35.0, 35.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = offhand_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.inactive_offhand_slot;
|
||||||
.set(state.ids.inactive_offhand_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.inactive_offhand");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.inactive_offhand"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.inactive_offhand_slot, ui)
|
|
||||||
}
|
|
||||||
|
|
||||||
if Button::image(self.imgs.swap_equipped_weapons_btn)
|
if Button::image(self.imgs.swap_equipped_weapons_btn)
|
||||||
.hover_image(self.imgs.swap_equipped_weapons_btn_hover)
|
.hover_image(self.imgs.swap_equipped_weapons_btn_hover)
|
||||||
@ -1278,11 +1108,9 @@ impl<'a> Widget for Bag<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Bag 1
|
// Bag 1
|
||||||
let bag1_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Bag1);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Bag1))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Bag1), [35.0; 2])
|
.fabricate(item_slot, [35.0; 2])
|
||||||
.bottom_left_with_margins_on(
|
.bottom_left_with_margins_on(
|
||||||
state.bg_ids.bg_frame,
|
state.bg_ids.bg_frame,
|
||||||
if self.show.bag_inv { 600.0 } else { 167.0 },
|
if self.show.bag_inv { 600.0 } else { 167.0 },
|
||||||
@ -1290,85 +1118,42 @@ impl<'a> Widget for Bag<'a> {
|
|||||||
)
|
)
|
||||||
.with_icon(self.imgs.bag_bg, Vec2::new(28.0, 24.0), Some(UI_MAIN))
|
.with_icon(self.imgs.bag_bg, Vec2::new(28.0, 24.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = bag1_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.bag1_slot;
|
||||||
.set(state.ids.bag1_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.bag");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.bag"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.bag1_slot, ui)
|
|
||||||
}
|
|
||||||
// Bag 2
|
// Bag 2
|
||||||
let bag2_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Bag2);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Bag2))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Bag2), [35.0; 2])
|
.fabricate(item_slot, [35.0; 2])
|
||||||
.down_from(state.ids.bag1_slot, 2.0)
|
.down_from(state.ids.bag1_slot, 2.0)
|
||||||
.with_icon(self.imgs.bag_bg, Vec2::new(28.0, 24.0), Some(UI_MAIN))
|
.with_icon(self.imgs.bag_bg, Vec2::new(28.0, 24.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = bag2_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.bag2_slot;
|
||||||
.set(state.ids.bag2_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.bag");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.bag"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.bag2_slot, ui)
|
|
||||||
}
|
|
||||||
// Bag 3
|
// Bag 3
|
||||||
let bag3_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Bag3);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Bag3))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Bag3), [35.0; 2])
|
.fabricate(item_slot, [35.0; 2])
|
||||||
.down_from(state.ids.bag2_slot, 2.0)
|
.down_from(state.ids.bag2_slot, 2.0)
|
||||||
.with_icon(self.imgs.bag_bg, Vec2::new(28.0, 24.0), Some(UI_MAIN))
|
.with_icon(self.imgs.bag_bg, Vec2::new(28.0, 24.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = bag3_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.bag3_slot;
|
||||||
.set(state.ids.bag3_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.bag");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.bag"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.bag3_slot, ui)
|
|
||||||
}
|
|
||||||
// Bag 4
|
// Bag 4
|
||||||
let bag4_item = inventory
|
let item_slot = EquipSlot::Armor(ArmorSlot::Bag4);
|
||||||
.equipped(EquipSlot::Armor(ArmorSlot::Bag4))
|
|
||||||
.map(|item| item.to_owned());
|
|
||||||
let slot = slot_maker
|
let slot = slot_maker
|
||||||
.fabricate(EquipSlot::Armor(ArmorSlot::Bag4), [35.0; 2])
|
.fabricate(item_slot, [35.0; 2])
|
||||||
.down_from(state.ids.bag3_slot, 2.0)
|
.down_from(state.ids.bag3_slot, 2.0)
|
||||||
.with_icon(self.imgs.bag_bg, Vec2::new(28.0, 24.0), Some(UI_MAIN))
|
.with_icon(self.imgs.bag_bg, Vec2::new(28.0, 24.0), Some(UI_MAIN))
|
||||||
.filled_slot(filled_slot);
|
.filled_slot(filled_slot);
|
||||||
if let Some(item) = bag4_item {
|
|
||||||
slot.with_item_tooltip(self.item_tooltip_manager, &item, &None, &item_tooltip)
|
let slot_id = state.ids.bag4_slot;
|
||||||
.set(state.ids.bag4_slot, ui)
|
set_tooltip!(slot, slot_id, item_slot, "hud.bag.bag");
|
||||||
} else {
|
|
||||||
slot.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
i18n.get("hud.bag.bag"),
|
|
||||||
"",
|
|
||||||
&tooltip,
|
|
||||||
color::WHITE,
|
|
||||||
)
|
|
||||||
.set(state.ids.bag4_slot, ui)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Close button
|
// Close button
|
||||||
if Button::image(self.imgs.close_btn)
|
if Button::image(self.imgs.close_btn)
|
||||||
|
Reference in New Issue
Block a user