* Added chat message when an item is picked up
* Changed InventoryUpdateEvent::Collected to InventoryUpdateEvent::Collected(Item) to facilitate the client being aware of what was picked up
* Added SfxInventoryEvent enum to allow different sounds to be used based on the item type. The RON mapping/de-serialization doesn't support matching on structs so we have to give it fixed enum values which are determined in TryFrom<&InventoryUpdateEvent> for SfxEvent
* Refactored InventoryManip::Pickup arm of match in inventory_manip::handle_inventory for clarity/better warning messages
* Fixed a bug that prevented the CollectFailed event from being raised when a player's inventory is full
* Added a panic for the situation where an item is pushed into the players inventory and then the deletion of the entity fails as this would indicate an item dupe bug - this could potentially be reworked to pull the item back from the player's inventory but this seems like there's be a more correct transactional way to do this.
* Added two temporary sounds to prove the per-item sound functionality (pickup sounds for Swords and Staffs)
New SFX sounds.
add_item.wav (Better fitting pickup sound)
drop_item.wav (New sound for dropping items)
open_inventory.wav (The old pickup sound, can be used for opening the bag but needs to be implemented)
sword_in.wav (Better fitting sound)
sowrd_out.wav (Better fitting sound)
Fixed the drop sfx sound in sfx.ron
Its the drop_item sound instead of a grass moving step.
This clears out about 56MB of unused audio files.
There were also some unused methods in the audio modules which
referenced a file, which has also been removed.
Implements a potential structure for splitting the SFX event mapping
into smaller individual files for maintainability.
- Remove inventory events for now: For a later commit.
- No longer panic when there is a failure parsing the sfx file: log the error and not play sfx.
- Updated title music with a version provided by aeronic which fades out
more gracefully
- Removed attack SFX as it was included in the movement processing, but
will return later as part of a similar chunk of code which processes
combat sfx independent of movement.
This is an event based approach to SFX sounds. There is a specific
character sound event mapper which determines sfx to play based on
character or NPC state, as well as emitting sfx events for
non-character-triggers such as levelling up.