mirror of
https://gitlab.com/veloren/veloren
synced 2026-08-16 16:26:07 -04:00
Merge branch 'shandley/inventory-full-handling' into 'master'
Feedback when collecting an item while inventory is full Closes #459 See merge request veloren/veloren!847
This commit is contained in:
commit
875ae6cedd
7 changed files with 47 additions and 15 deletions
|
|
@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- Game pauses when in singleplayer and pause menu
|
||||
- Added authentication system (to play on the official server register on https://account.veloren.net)
|
||||
- Added gamepad/controller support
|
||||
- Added player feedback when attempting to pickup an item with a full inventory
|
||||
|
||||
### Changed
|
||||
|
||||
|
|
|
|||
|
|
@ -88,6 +88,12 @@
|
|||
"voxygen.audio.sfx.inventory.consumable.food",
|
||||
],
|
||||
threshold: 0.3,
|
||||
),
|
||||
Inventory(CollectFailed): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.add_failed",
|
||||
],
|
||||
threshold: 0.3,
|
||||
)
|
||||
}
|
||||
)
|
||||
3
assets/voxygen/audio/sfx/inventory/add_failed.wav
Normal file
3
assets/voxygen/audio/sfx/inventory/add_failed.wav
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b7cf98460ef3c627df1603e34b9b2b4443f54dc9bfafccaccaba6719f4214085
|
||||
size 51216
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5320d020c82cab3f1ed294c06bdd50df007ed354bca2103b42e3fb4fc3f3ee7a
|
||||
size 71196
|
||||
oid sha256:f811babdffe01795b1ff75827ab8e968b61baff8243ea031390dc49152885950
|
||||
size 40140
|
||||
|
|
|
|||
|
|
@ -14,7 +14,9 @@ pub use specs::{
|
|||
|
||||
use byteorder::{ByteOrder, LittleEndian};
|
||||
use common::{
|
||||
comp::{self, ControlEvent, Controller, ControllerInputs, InventoryManip},
|
||||
comp::{
|
||||
self, ControlEvent, Controller, ControllerInputs, InventoryManip, InventoryUpdateEvent,
|
||||
},
|
||||
event::{EventBus, SfxEvent, SfxEventItem},
|
||||
msg::{
|
||||
validate_chat_msg, ChatMsgValidationError, ClientMsg, ClientState, PlayerListUpdate,
|
||||
|
|
@ -689,7 +691,19 @@ impl Client {
|
|||
}
|
||||
},
|
||||
ServerMsg::InventoryUpdate(inventory, event) => {
|
||||
self.state.write_component(self.entity, inventory);
|
||||
match event {
|
||||
InventoryUpdateEvent::CollectFailed => {
|
||||
frontend_events.push(Event::Chat {
|
||||
message: String::from(
|
||||
"Failed to collect item. Your inventory may be full!",
|
||||
),
|
||||
chat_type: ChatType::Meta,
|
||||
})
|
||||
},
|
||||
_ => {
|
||||
self.state.write_component(self.entity, inventory);
|
||||
},
|
||||
}
|
||||
|
||||
self.state
|
||||
.ecs()
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ pub enum InventoryUpdateEvent {
|
|||
Swapped,
|
||||
Dropped,
|
||||
Collected,
|
||||
CollectFailed,
|
||||
Possession,
|
||||
Debug,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,17 +61,24 @@ pub fn handle_inventory(server: &mut Server, entity: EcsEntity, manip: comp::Inv
|
|||
let block = state.terrain().get(pos).ok().copied();
|
||||
|
||||
if let Some(block) = block {
|
||||
if block.is_collectible()
|
||||
&& state
|
||||
.ecs()
|
||||
.read_storage::<comp::Inventory>()
|
||||
.get(entity)
|
||||
.map(|inv| !inv.is_full())
|
||||
.unwrap_or(false)
|
||||
&& state.try_set_block(pos, Block::empty()).is_some()
|
||||
{
|
||||
comp::Item::try_reclaim_from_block(block)
|
||||
.map(|item| state.give_item(entity, item));
|
||||
let has_inv_space = state
|
||||
.ecs()
|
||||
.read_storage::<comp::Inventory>()
|
||||
.get(entity)
|
||||
.map(|inv| !inv.is_full())
|
||||
.unwrap_or(false);
|
||||
|
||||
if !has_inv_space {
|
||||
state.write_component(
|
||||
entity,
|
||||
comp::InventoryUpdate::new(comp::InventoryUpdateEvent::CollectFailed),
|
||||
);
|
||||
} else {
|
||||
if block.is_collectible() && state.try_set_block(pos, Block::empty()).is_some()
|
||||
{
|
||||
comp::Item::try_reclaim_from_block(block)
|
||||
.map(|item| state.give_item(entity, item));
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue