summaryrefslogtreecommitdiff
path: root/src/being
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-10-04 17:38:19 +0300
committerAndrei Karas <akaras@inbox.ru>2013-10-04 17:38:19 +0300
commit65a88f27b994f7ade178368c569d466f6344ded6 (patch)
tree1b4bae38055b1ce31201ebb72b5c10987cba9f62 /src/being
parenta553b3cda91aa095d88e22abcaa81701c2894334 (diff)
downloadmv-65a88f27b994f7ade178368c569d466f6344ded6.tar.gz
mv-65a88f27b994f7ade178368c569d466f6344ded6.tar.bz2
mv-65a88f27b994f7ade178368c569d466f6344ded6.tar.xz
mv-65a88f27b994f7ade178368c569d466f6344ded6.zip
add sound effects for equip/unequip/use items for local player.
It using: "equip", "unequip", "use" effects from items. If no item effect present, fallback to same effects from player race.
Diffstat (limited to 'src/being')
-rw-r--r--src/being/localplayer.cpp10
-rw-r--r--src/being/playerinfo.cpp41
-rw-r--r--src/being/playerinfo.h12
3 files changed, 48 insertions, 15 deletions
diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp
index 22a214168..657436f49 100644
--- a/src/being/localplayer.cpp
+++ b/src/being/localplayer.cpp
@@ -2349,7 +2349,7 @@ void LocalPlayer::changeEquipmentBeforeAttack(const Being *const target) const
// if sword not equiped
if (!item->isEquipped())
- PlayerInfo::equipItem(item);
+ PlayerInfo::equipItem(item, true);
// if need equip shield too
if (mAttackWeaponType == 3)
@@ -2359,7 +2359,7 @@ void LocalPlayer::changeEquipmentBeforeAttack(const Being *const target) const
if (!item)
item = inv->findItem(602, 0);
if (item && !item->isEquipped())
- PlayerInfo::equipItem(item);
+ PlayerInfo::equipItem(item, true);
}
}
// big distance. allowed only bow
@@ -2376,7 +2376,7 @@ void LocalPlayer::changeEquipmentBeforeAttack(const Being *const target) const
return;
if (!item->isEquipped())
- PlayerInfo::equipItem(item);
+ PlayerInfo::equipItem(item, true);
}
}
@@ -3981,7 +3981,7 @@ void LocalPlayer::imitateOutfit(Being *const player, const int sprite) const
const Item *const item = inv->findItemBySprite(path,
player->getGender(), player->getSubType());
if (item && !item->isEquipped())
- PlayerInfo::equipItem(item);
+ PlayerInfo::equipItem(item, false);
}
else
{
@@ -3996,7 +3996,7 @@ void LocalPlayer::imitateOutfit(Being *const player, const int sprite) const
if (item)
{
// logger->log("unequiping");
- PlayerInfo::unequipItem(item);
+ PlayerInfo::unequipItem(item, false);
}
}
}
diff --git a/src/being/playerinfo.cpp b/src/being/playerinfo.cpp
index 954cb20f4..3d311dd91 100644
--- a/src/being/playerinfo.cpp
+++ b/src/being/playerinfo.cpp
@@ -25,6 +25,7 @@
#include "configuration.h"
#include "depricatedevent.h"
#include "inventory.h"
+#include "itemsoundmanager.h"
#include "gui/windows/inventorywindow.h"
#include "gui/windows/npcdialog.h"
@@ -245,55 +246,85 @@ void setEquipmentBackend(Equipment::Backend *const backend)
mEquipment->setBackend(backend);
}
-void equipItem(const Item *const item)
+void equipItem(const Item *const item, bool sfx)
{
+ if (sfx)
+ ItemSoundManager::playSfx(item, SOUND_EVENT_EQUIP);
Net::getInventoryHandler()->equipItem(item);
}
-void unequipItem(const Item *const item)
+void unequipItem(const Item *const item, bool sfx)
{
+ if (sfx)
+ ItemSoundManager::playSfx(item, SOUND_EVENT_UNEQUIP);
Net::getInventoryHandler()->unequipItem(item);
}
-void useItem(const Item *const item)
+void useItem(const Item *const item, bool sfx)
{
+ if (sfx)
+ ItemSoundManager::playSfx(item, SOUND_EVENT_USE);
Net::getInventoryHandler()->useItem(item);
}
-void useEquipItem(const Item *const item)
+void useEquipItem(const Item *const item, bool sfx)
{
if (item)
{
if (item->isEquipment())
{
if (item->isEquipped())
+ {
+ if (sfx)
+ ItemSoundManager::playSfx(item, SOUND_EVENT_UNEQUIP);
Net::getInventoryHandler()->unequipItem(item);
+ }
else
+ {
+ if (sfx)
+ ItemSoundManager::playSfx(item, SOUND_EVENT_EQUIP);
Net::getInventoryHandler()->equipItem(item);
+ }
}
else
{
if (mProtectedItems.find(item->getId()) == mProtectedItems.end())
+ {
Net::getInventoryHandler()->useItem(item);
+ if (sfx)
+ ItemSoundManager::playSfx(item, SOUND_EVENT_USE);
+ }
}
}
}
-void useEquipItem2(const Item *const item)
+void useEquipItem2(const Item *const item, bool sfx)
{
if (item)
{
if (!item->isEquipment())
{
if (item->isEquipped())
+ {
+ if (sfx)
+ ItemSoundManager::playSfx(item, SOUND_EVENT_UNEQUIP);
Net::getInventoryHandler()->unequipItem(item);
+ }
else
+ {
+ if (sfx)
+ ItemSoundManager::playSfx(item, SOUND_EVENT_EQUIP);
Net::getInventoryHandler()->equipItem(item);
+ }
}
else
{
if (mProtectedItems.find(item->getId()) == mProtectedItems.end())
+ {
Net::getInventoryHandler()->useItem(item);
+ if (sfx)
+ ItemSoundManager::playSfx(item, SOUND_EVENT_USE);
+ }
}
}
}
diff --git a/src/being/playerinfo.h b/src/being/playerinfo.h
index 052fbe966..cd454692f 100644
--- a/src/being/playerinfo.h
+++ b/src/being/playerinfo.h
@@ -24,6 +24,8 @@
#include "equipment.h"
+#include "resources/soundinfo.h"
+
#include <map>
#include <string>
@@ -255,15 +257,15 @@ namespace PlayerInfo
void setEquipmentBackend(Equipment::Backend *const backend);
- void equipItem(const Item *const item);
+ void equipItem(const Item *const item, bool sfx);
- void unequipItem(const Item *const item);
+ void unequipItem(const Item *const item, bool sfx);
- void useItem(const Item *const item);
+ void useItem(const Item *const item, bool sfx);
- void useEquipItem(const Item *const item);
+ void useEquipItem(const Item *const item, bool sfx);
- void useEquipItem2(const Item *const item);
+ void useEquipItem2(const Item *const item, bool sfx);
void protectItem(const int id);