summaryrefslogtreecommitdiff
path: root/src/being/playerinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/being/playerinfo.cpp')
-rw-r--r--src/being/playerinfo.cpp693
1 files changed, 0 insertions, 693 deletions
diff --git a/src/being/playerinfo.cpp b/src/being/playerinfo.cpp
deleted file mode 100644
index 0a89bd7e1..000000000
--- a/src/being/playerinfo.cpp
+++ /dev/null
@@ -1,693 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "being/playerinfo.h"
-
-#include "configuration.h"
-#include "itemsoundmanager.h"
-
-#include "being/localplayer.h"
-
-#include "being/homunculusinfo.h"
-#include "being/mercenaryinfo.h"
-#include "being/petinfo.h"
-
-#include "gui/windows/inventorywindow.h"
-#include "gui/windows/npcdialog.h"
-
-#include "listeners/statlistener.h"
-
-#include "net/homunculushandler.h"
-#include "net/inventoryhandler.h"
-#include "net/mercenaryhandler.h"
-#include "net/playerhandler.h"
-
-#include "resources/item/item.h"
-
-#include "utils/delete2.h"
-
-#include "utils/translation/translationmanager.h"
-
-#include "debug.h"
-
-namespace PlayerInfo
-{
-
-PlayerInfoBackend mData;
-int mCharId = 0;
-
-Inventory *mInventory = nullptr;
-Inventory *mCartInventory = nullptr;
-MercenaryInfo *mMercenary = nullptr;
-HomunculusInfo *mHomunculus = nullptr;
-PetInfo *mPet = nullptr;
-std::string mRoomName;
-Equipment *mEquipment = nullptr;
-BeingId mPetBeingId = BeingId_zero;
-GuildPositionFlags::Type mGuildPositionFlags = GuildPositionFlags::None;
-BeingId mElementalId = BeingId_zero;
-
-Trading mTrading = Trading_false;
-bool mVending = false;
-int mLevelProgress = 0;
-int mServerLanguage = -1;
-std::set<int> mProtectedItems;
-
-// --- Triggers ---------------------------------------------------------------
-
-void triggerAttr(const AttributesT id,
- const int64_t old)
-{
- AttributeListener::distributeEvent(id, old,
- mData.mAttributes.find(id)->second);
-}
-
-void triggerStat(const AttributesT id,
- const int old1,
- const int old2)
-{
- StatListener::distributeEvent(id, old1, old2);
-}
-
-// --- Attributes -------------------------------------------------------------
-
-int64_t getAttribute64(const AttributesT id)
-{
- const AtrIntMap::const_iterator it = mData.mAttributes.find(id);
- if (it != mData.mAttributes.end())
- return it->second;
- return 0;
-}
-
-int32_t getAttribute(const AttributesT id)
-{
- const AtrIntMap::const_iterator it = mData.mAttributes.find(id);
- if (it != mData.mAttributes.end())
- return CAST_S32(it->second);
- return 0;
-}
-
-void setAttribute(const AttributesT id,
- const int64_t value,
- const Notify notify)
-{
- const int64_t old = mData.mAttributes[id];
- mData.mAttributes[id] = value;
- if (notify == Notify_true)
- triggerAttr(id, old);
-}
-
-int getSkillLevel(const int id)
-{
- const IntMap::const_iterator it = mData.mSkills.find(id);
- if (it != mData.mSkills.end())
- return it->second;
- return 0;
-}
-
-void setSkillLevel(const int id, const int value)
-{
- mData.mSkills[id] = value;
-}
-
-// --- Stats ------------------------------------------------------------------
-
-int getStatBase(const AttributesT id)
-{
- const StatMap::const_iterator it = mData.mStats.find(id);
- if (it != mData.mStats.end())
- return it->second.base;
- return 0;
-}
-
-void setStatBase(const AttributesT id, const int value, const Notify notify)
-{
- const int old = mData.mStats[id].base;
- mData.mStats[id].base = value;
- if (notify == Notify_true)
- triggerStat(id, old, 0);
-}
-
-int getStatMod(const AttributesT id)
-{
- const StatMap::const_iterator it = mData.mStats.find(id);
- if (it != mData.mStats.end())
- return it->second.mod;
- return 0;
-}
-
-void setStatMod(const AttributesT id, const int value, const Notify notify)
-{
- const int old = mData.mStats[id].mod;
- mData.mStats[id].mod = value;
- if (notify == Notify_true)
- triggerStat(id, old, 0);
-}
-
-int getStatEffective(const AttributesT id)
-{
- const StatMap::const_iterator it = mData.mStats.find(id);
- if (it != mData.mStats.end())
- return it->second.base + it->second.mod;
- return 0;
-}
-
-const std::pair<int, int> getStatExperience(const AttributesT id)
-{
- const StatMap::const_iterator it = mData.mStats.find(id);
- int a, b;
- if (it != mData.mStats.end())
- {
- a = it->second.exp;
- b = it->second.expNeed;
- }
- else
- {
- a = 0;
- b = 0;
- }
- return std::pair<int, int>(a, b);
-}
-
-void setStatExperience(const AttributesT id,
- const int have,
- const int need,
- const Notify notify)
-{
- Stat &stat = mData.mStats[id];
-
- const int oldExp = stat.exp;
- const int oldExpNeed = stat.expNeed;
- stat.exp = have;
- stat.expNeed = need;
- if (notify == Notify_true)
- triggerStat(id, oldExp, oldExpNeed);
-}
-
-// --- Inventory / Equipment --------------------------------------------------
-
-Inventory *getInventory()
-{
- return mInventory;
-}
-
-Inventory *getStorageInventory()
-{
- if (inventoryHandler != nullptr)
- return inventoryHandler->getStorage();
- return nullptr;
-}
-
-Inventory *getCartInventory()
-{
- return mCartInventory;
-}
-
-void clearInventory()
-{
- if (mEquipment != nullptr)
- mEquipment->clear();
- if (mInventory != nullptr)
- mInventory->clear();
-}
-
-Equipment *getEquipment()
-{
- return mEquipment;
-}
-
-const Item *getEquipment(const unsigned int slot)
-{
- if (mEquipment != nullptr)
- return mEquipment->getEquipment(slot);
- return nullptr;
-}
-
-void setEquipmentBackend(Equipment::Backend *const backend)
-{
- if (mEquipment != nullptr)
- mEquipment->setBackend(backend);
-}
-
-void equipItem(const Item *const item, const Sfx sfx)
-{
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::EQUIP);
- if (inventoryHandler != nullptr)
- inventoryHandler->equipItem(item);
-}
-
-void unequipItem(const Item *const item, const Sfx sfx)
-{
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::UNEQUIP);
- if (inventoryHandler != nullptr)
- inventoryHandler->unequipItem(item);
-}
-
-void useItem(const Item *const item, const Sfx sfx)
-{
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::USE);
- if (inventoryHandler != nullptr)
- inventoryHandler->useItem(item);
-}
-
-void useEquipItem(const Item *const item,
- const int16_t useType,
- const Sfx sfx)
-{
- if (item != nullptr)
- {
- if (item->getType() == ItemType::Card)
- {
- if (mProtectedItems.find(item->getId()) == mProtectedItems.end())
- {
- if (inventoryHandler != nullptr)
- inventoryHandler->useCard(item);
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::USECARD);
- }
- }
- else if (item->isEquipment() == Equipm_true)
- {
- if (item->isEquipped() == Equipped_true)
- {
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::UNEQUIP);
- if (inventoryHandler != nullptr)
- inventoryHandler->unequipItem(item);
- }
- else
- {
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::EQUIP);
- if (inventoryHandler != nullptr)
- inventoryHandler->equipItem(item);
- }
- }
- else
- {
- if (mProtectedItems.find(item->getId()) == mProtectedItems.end())
- {
- if (inventoryHandler != nullptr)
- {
- if (useType == 0)
- inventoryHandler->useItem(item);
- else
- inventoryHandler->useItem(item, useType);
- }
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::USE);
- }
- }
- }
-}
-
-void useEquipItem2(const Item *const item,
- const int16_t useType,
- const Sfx sfx)
-{
- if (item != nullptr)
- {
- if (item->isEquipment() == Equipm_false)
- {
- if (item->isEquipped() == Equipped_true)
- {
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::UNEQUIP);
- if (inventoryHandler != nullptr)
- inventoryHandler->unequipItem(item);
- }
- else
- {
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::EQUIP);
- if (inventoryHandler != nullptr)
- inventoryHandler->equipItem(item);
- }
- }
- else
- {
- if (mProtectedItems.find(item->getId()) == mProtectedItems.end())
- {
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::USE);
- if (inventoryHandler != nullptr)
- {
- if (useType == 0)
- inventoryHandler->useItem(item);
- else
- inventoryHandler->useItem(item, useType);
- }
- }
- }
- }
-}
-
-void dropItem(const Item *const item, const int amount, const Sfx sfx)
-{
- if (item != nullptr &&
- mProtectedItems.find(item->getId()) == mProtectedItems.end())
- {
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::DROP);
- if (inventoryHandler != nullptr)
- inventoryHandler->dropItem(item, amount);
- }
-}
-
-void pickUpItem(const FloorItem *const item, const Sfx sfx)
-{
- if (sfx == Sfx_true)
- ItemSoundManager::playSfx(item, ItemSoundEvent::PICKUP);
- if (playerHandler != nullptr)
- playerHandler->pickUp(item);
-}
-
-// --- Misc -------------------------------------------------------------------
-
-void setBackend(const PlayerInfoBackend &backend)
-{
- mData = backend;
-}
-
-void setCharId(const int charId)
-{
- mCharId = charId;
-}
-
-int getCharId()
-{
- return mCharId;
-}
-
-Trading isTrading()
-{
- return mTrading;
-}
-
-void setTrading(const Trading trading)
-{
- mTrading = trading;
-}
-
-#define updateAttackStat(atk, delay, speed) \
- attackDelay = getStatBase(delay); \
- if (attackDelay != 0) \
- { \
- setStatBase(speed, \
- getStatBase(atk) * 1000 / attackDelay, \
- Notify_false); \
- setStatMod(speed, \
- getStatMod(atk) * 1000 / attackDelay, \
- Notify_true); \
- } \
- else \
- { \
- setStatBase(speed, 0, \
- Notify_false); \
- setStatMod(speed, 0, \
- Notify_true); \
- }
-
-void updateAttrs()
-{
- int attackDelay;
- updateAttackStat(Attributes::PLAYER_ATK,
- Attributes::PLAYER_ATTACK_DELAY,
- Attributes::PLAYER_ATTACK_SPEED)
- updateAttackStat(Attributes::HOMUN_ATK,
- Attributes::HOMUN_ATTACK_DELAY,
- Attributes::HOMUN_ATTACK_SPEED)
- updateAttackStat(Attributes::MERC_ATK,
- Attributes::MERC_ATTACK_DELAY,
- Attributes::MERC_ATTACK_SPEED)
-}
-
-void init()
-{
-}
-
-void deinit()
-{
- clearInventory();
- delete2(mMercenary);
- mPetBeingId = BeingId_zero;
-}
-
-void loadData()
-{
- mProtectedItems.clear();
- splitToIntSet(mProtectedItems,
- serverConfig.getStringValue("protectedItems"), ',');
-}
-
-void clear()
-{
- mData.mSkills.clear();
- mPetBeingId = BeingId_zero;
-}
-
-bool isTalking()
-{
- return NpcDialog::isActive() || InventoryWindow::isStorageActive();
-}
-
-void gameDestroyed()
-{
- delete2(mInventory);
- delete2(mEquipment);
- delete2(mCartInventory);
-}
-
-void stateChange(const StateT state)
-{
- if (state == State::GAME)
- {
- if (mInventory == nullptr)
- {
- mInventory = new Inventory(InventoryType::Inventory);
- mEquipment = new Equipment;
- mCartInventory = new Inventory(InventoryType::Cart);
- }
- }
-}
-
-static void saveProtectedItems()
-{
- std::string str;
- std::set<int>::const_iterator it = mProtectedItems.begin();
- std::set<int>::const_iterator it_end = mProtectedItems.end();
- if (it != it_end)
- {
- str.append(toString(*it));
- ++ it;
- }
- while (it != it_end)
- {
- str.append(",").append(toString(*it));
- ++ it;
- }
- serverConfig.setValue("protectedItems", str);
- serverConfig.write();
-}
-
-void protectItem(const int id)
-{
- mProtectedItems.insert(id);
- saveProtectedItems();
-}
-
-void unprotectItem(const int id)
-{
- mProtectedItems.erase(id);
- saveProtectedItems();
-}
-
-bool isItemProtected(const int id)
-{
- return mProtectedItems.find(id) != mProtectedItems.end();
-}
-
-void setMercenary(MercenaryInfo *const info)
-{
- delete mMercenary;
- mMercenary = info;
-}
-
-void setMercenaryBeing(Being *const being)
-{
- if (being == nullptr ||
- mMercenary == nullptr)
- {
- return;
- }
- being->setName(mMercenary->name);
- being->setOwner(localPlayer);
- being->setLevel(mMercenary->level);
- being->setAttackRange(mMercenary->range);
-}
-
-void setElemental(const BeingId id)
-{
- mElementalId = id;
-}
-
-BeingId getElementalId()
-{
- return mElementalId;
-}
-
-MercenaryInfo *getMercenary()
-{
- return mMercenary;
-}
-
-void setPet(PetInfo *const info)
-{
- delete mPet;
- mPet = info;
-}
-
-void setPetBeing(Being *const being)
-{
- if (being != nullptr)
- mPetBeingId = being->getId();
- else
- mPetBeingId = BeingId_zero;
- if (being == nullptr ||
- mPet == nullptr)
- {
- return;
- }
- being->setName(mPet->name);
- being->setOwner(localPlayer);
- being->setLevel(mPet->level);
-}
-
-PetInfo *getPet()
-{
- return mPet;
-}
-
-BeingId getPetBeingId()
-{
- return mPetBeingId;
-}
-
-void setHomunculus(HomunculusInfo *const info)
-{
- delete mHomunculus;
- mHomunculus = info;
-}
-
-void setHomunculusBeing(Being *const being)
-{
- if (being == nullptr ||
- mHomunculus == nullptr)
- {
- return;
- }
- being->setName(mHomunculus->name);
- being->setOwner(localPlayer);
-}
-
-HomunculusInfo *getHomunculus()
-{
- return mHomunculus;
-}
-
-BeingId getHomunculusId()
-{
- return mHomunculus != nullptr ? mHomunculus->id : BeingId_zero;
-}
-
-BeingId getMercenaryId()
-{
- return mMercenary != nullptr ? mMercenary->id : BeingId_zero;
-}
-
-void updateAttackAi(const BeingId targetId,
- const Keep keep)
-{
- if (mMercenary != nullptr &&
- mercenaryHandler != nullptr)
- {
- mercenaryHandler->attack(targetId, keep);
- }
- if (mHomunculus != nullptr &&
- homunculusHandler != nullptr)
- {
- homunculusHandler->attack(targetId, keep);
- }
-}
-
-std::string getRoomName()
-{
- return mRoomName;
-}
-
-void setRoomName(const std::string &name)
-{
- mRoomName = name;
-}
-
-bool isInRoom()
-{
- return !mRoomName.empty();
-}
-
-void setGuildPositionFlags(const GuildPositionFlags::Type pos)
-{
- mGuildPositionFlags = pos;
-}
-
-GuildPositionFlags::Type getGuildPositionFlags()
-{
- return mGuildPositionFlags;
-}
-
-void enableVending(const bool b)
-{
- mVending = b;
-}
-
-bool isVending()
-{
- return mVending;
-}
-
-void setServerLanguage(const int lang)
-{
- if (lang != mServerLanguage)
- {
- mServerLanguage = lang;
- TranslationManager::loadDictionaryLang();
- }
-}
-
-int getServerLanguage()
-{
- return mServerLanguage;
-}
-
-} // namespace PlayerInfo