mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Minor inventory ux improvements
This commit is contained in:
parent
e762a0b390
commit
67f2d05d3c
@ -773,8 +773,6 @@ impl Show {
|
||||
}
|
||||
}
|
||||
|
||||
fn toggle_bag(&mut self) { self.bag(!self.bag); }
|
||||
|
||||
fn toggle_trade(&mut self) { self.trade(!self.trade); }
|
||||
|
||||
fn toggle_map(&mut self) { self.map(!self.map) }
|
||||
@ -2710,7 +2708,10 @@ impl Hud {
|
||||
)
|
||||
.set(self.ids.buttons, ui_widgets)
|
||||
{
|
||||
Some(buttons::Event::ToggleBag) => self.show.toggle_bag(),
|
||||
Some(buttons::Event::ToggleBag) => {
|
||||
let state = !self.show.bag;
|
||||
Self::show_bag(&mut self.slot_manager, &mut self.show, state)
|
||||
},
|
||||
Some(buttons::Event::ToggleSettings) => self.show.toggle_settings(global_state),
|
||||
Some(buttons::Event::ToggleSocial) => self.show.toggle_social(),
|
||||
Some(buttons::Event::ToggleSpell) => self.show.toggle_spell(),
|
||||
@ -2919,7 +2920,7 @@ impl Hud {
|
||||
Some(bag::Event::BagExpand) => self.show.bag_inv = !self.show.bag_inv,
|
||||
Some(bag::Event::Close) => {
|
||||
self.show.stats = false;
|
||||
self.show.bag(false);
|
||||
Self::show_bag(&mut self.slot_manager, &mut self.show, false);
|
||||
if !self.show.social {
|
||||
self.show.want_grab = true;
|
||||
self.force_ungrab = false;
|
||||
@ -3631,15 +3632,23 @@ impl Hud {
|
||||
// Used from hotbar
|
||||
self.hotbar.get(h).map(|s| match s {
|
||||
hotbar::SlotContents::Inventory(i, _) => {
|
||||
if let Some(slot) = inventories
|
||||
.get(client.entity())
|
||||
.and_then(|inv| inv.get_slot_from_hash(i))
|
||||
if let Some(inv) = inventories.get(client.entity()) {
|
||||
// If the item in the inactive main hand is the same as the item
|
||||
// pressed in the hotbar, then swap active and inactive hands
|
||||
// instead of looking for
|
||||
// the item in the inventory
|
||||
if inv
|
||||
.equipped(comp::slot::EquipSlot::InactiveMainhand)
|
||||
.map_or(false, |item| item.item_hash() == i)
|
||||
{
|
||||
events.push(Event::SwapEquippedWeapons);
|
||||
} else if let Some(slot) = inv.get_slot_from_hash(i) {
|
||||
events.push(Event::UseSlot {
|
||||
slot: comp::slot::Slot::Inventory(slot),
|
||||
bypass_dialog: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
hotbar::SlotContents::Ability(_) => {},
|
||||
});
|
||||
@ -3775,6 +3784,13 @@ impl Hud {
|
||||
events
|
||||
}
|
||||
|
||||
fn show_bag(slot_manager: &mut slots::SlotManager, show: &mut Show, state: bool) {
|
||||
show.bag(state);
|
||||
if !state {
|
||||
slot_manager.idle();
|
||||
}
|
||||
}
|
||||
|
||||
pub fn add_failed_block_pickup(&mut self, pos: Vec3<i32>) {
|
||||
self.failed_block_pickups.insert(pos, self.pulse);
|
||||
}
|
||||
@ -3852,15 +3868,24 @@ impl Hud {
|
||||
hotbar.get(slot).map(|s| match s {
|
||||
hotbar::SlotContents::Inventory(i, _) => {
|
||||
if just_pressed {
|
||||
if let Some(slot) =
|
||||
client_inventory.and_then(|inv| inv.get_slot_from_hash(i))
|
||||
if let Some(inv) = client_inventory {
|
||||
// If the item in the inactive main hand is the same as the item
|
||||
// pressed in the hotbar, then swap active and inactive hands
|
||||
// instead of looking for the item
|
||||
// in the inventory
|
||||
if inv
|
||||
.equipped(comp::slot::EquipSlot::InactiveMainhand)
|
||||
.map_or(false, |item| item.item_hash() == i)
|
||||
{
|
||||
events.push(Event::SwapEquippedWeapons);
|
||||
} else if let Some(slot) = inv.get_slot_from_hash(i) {
|
||||
events.push(Event::UseSlot {
|
||||
slot: comp::slot::Slot::Inventory(slot),
|
||||
bypass_dialog: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
hotbar::SlotContents::Ability(i) => events.push(Event::Ability(i, state)),
|
||||
});
|
||||
@ -3969,6 +3994,9 @@ impl Hud {
|
||||
self.events.push(Event::TradeAction(TradeAction::Decline));
|
||||
} else {
|
||||
// Close windows on esc
|
||||
if self.show.bag {
|
||||
self.slot_manager.idle();
|
||||
}
|
||||
self.show.toggle_windows(global_state);
|
||||
}
|
||||
true
|
||||
@ -3988,7 +4016,8 @@ impl Hud {
|
||||
true
|
||||
},
|
||||
GameInput::Bag if state => {
|
||||
self.show.toggle_bag();
|
||||
let state = !self.show.bag;
|
||||
Self::show_bag(&mut self.slot_manager, &mut self.show, state);
|
||||
true
|
||||
},
|
||||
GameInput::Social if state => {
|
||||
|
Loading…
Reference in New Issue
Block a user