diff options
Diffstat (limited to 'src/being/being.h')
-rw-r--r-- | src/being/being.h | 1375 |
1 files changed, 0 insertions, 1375 deletions
diff --git a/src/being/being.h b/src/being/being.h deleted file mode 100644 index 0ca1ce780..000000000 --- a/src/being/being.h +++ /dev/null @@ -1,1375 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2004-2009 The Mana World Development Team - * Copyright (C) 2009-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/>. - */ - -#ifndef BEING_BEING_H -#define BEING_BEING_H - -#include "position.h" - -#include "enums/being/badgeindex.h" -#include "enums/being/reachable.h" - -#include "enums/gui/usercolorid.h" - -#include "enums/simpletypes/move.h" - -#include "enums/being/visiblenamepos.h" - -#include "resources/beinginfo.h" -#include "resources/beingslot.h" - -#include "being/actorsprite.h" - -#include "enums/being/attacktype.h" -#include "enums/being/badgedrawtype.h" -#include "enums/being/beingaction.h" -#include "enums/being/gender.h" - -#include "listeners/configlistener.h" - -#include "localconsts.h" - -static const int DEFAULT_BEING_WIDTH = 32; -static const int DEFAULT_BEING_HEIGHT = 32; - -class AnimatedSprite; -class BeingCacheEntry; -class CastingEffect; -class Color; -class Equipment; -class FlashText; -class Guild; -class ItemInfo; -class Particle; -class Party; -class SpeechBubble; -class Text; - -struct ChatObject; -struct HorseInfo; -struct MissileInfo; -struct SkillInfo; -struct ParticleInfo; - -extern volatile time_t cur_time; - -struct NextSoundInfo final -{ - NextSoundInfo() noexcept2 : - sound(nullptr), - x(0), - y(0), - time(0) - { - } - - A_DELETE_COPY(NextSoundInfo) - - const SoundInfo *sound; - int x; - int y; - int time; -}; - -class Being notfinal : public ActorSprite, - public ConfigListener -{ - public: - friend class ActorManager; - friend class BeingEquipBackend; - friend class LocalPlayer; - - /** - * Constructor. - * - * @param id a unique being id - * @param subtype partly determines the type of the being - * @param map the map the being is on - */ - Being(const BeingId id, - const ActorTypeT type); - - A_DELETE_COPY(Being) - - virtual ~Being(); - - ActorTypeT getType() const restrict2 noexcept2 override final - A_WARN_UNUSED - { return mType; } - - /** - * Removes all path nodes from this being. - */ - void clearPath() restrict2; - - /** - * Returns the time spent in the current action. - */ - int getActionTime() const restrict2 noexcept2 A_WARN_UNUSED - { return mActionTime; } - - /** - * Set the current action time. - * @see Ea::BeingHandler that set it to tick time. - */ - void setActionTime(const int actionTime) restrict2 noexcept2 - { mActionTime = actionTime; } - - /** - * Makes this being take the next tile of its path. - */ - virtual void nextTile() restrict2; - - /** - * Creates a path for the being from current position to ex and ey - */ - void setDestination(const int dstX, - const int dstY) restrict2; - - void setCachedDestination(const int dstX, - const int dstY) restrict2 noexcept2 - { mCachedX = dstX; mCachedY = dstY; } - - int getCachedX() const noexcept2 A_WARN_UNUSED - { return mCachedX; } - - int getCachedY() const noexcept2 A_WARN_UNUSED - { return mCachedY; } - - /** - * Returns the destination for this being. - */ - const Vector &getDestination() const restrict2 noexcept2 A_WARN_UNUSED - { return mDest; } - - /** - * Returns the tile x coord - */ - int getTileX() const restrict2 noexcept2 override A_WARN_UNUSED - { return mX; } - - /** - * Returns the tile y coord - */ - int getTileY() const restrict2 noexcept2 override A_WARN_UNUSED - { return mY; } - - /** - * Sets the tile x and y coord - */ - void setTileCoords(const int x, const int y) restrict2; - - /** - * Puts a "speech balloon" above this being for the specified amount - * of time. - * - * @param text The text that should appear. - * @param time The amount of time the text should stay in milliseconds. - */ - void setSpeech(const std::string &restrict text, - const std::string &restrict channel = "", - int time = 0) restrict2; - - /** - * Puts a damage bubble above this being. - * - * @param attacker the attacking being - * @param amount the amount of damage recieved (0 means miss) - * @param type the attack type - * @param attackId the attack id - * @param level the skill level - */ - void takeDamage(Being *restrict const attacker, - const int amount, - const AttackTypeT type, - const int attackId = 1, - const int level = 1) restrict2; - - /** - * Handles an attack of another being by this being. - * - * @param victim the victim being - * @param damage the amount of damage dealt (0 means miss) - * @param attackId the attack id - */ - void handleAttack(Being *restrict const victim, - const int damage, - const int attackId = 1) restrict2; - - void handleSkillCasting(Being *restrict const victim, - const int skillId, - const int skillLevel) restrict2; - - void handleSkill(Being *restrict const victim, - const int damage, - const int skillId, - const int skillLevel) restrict2; - - const ItemInfo *getEquippedWeapon() const restrict2 A_WARN_UNUSED - { return mEquippedWeapon; } - - /** - * Returns the name of the being. - */ - const std::string &getName() const restrict2 noexcept2 A_WARN_UNUSED - { return mName; } - - const std::string &getExtName() const restrict2 noexcept2 A_WARN_UNUSED - { return mExtName; } - - /** - * Sets the name for the being. - * - * @param name The name that should appear. - */ - void setName(const std::string &restrict name) restrict2; - - bool getShowName() const noexcept2 A_WARN_UNUSED - { return mShowName; } - - void setShowName(const bool doShowName) restrict2; - - /** - * Sets the name of the party the being is in. Shown in BeingPopup. - */ - void setPartyName(const std::string &restrict name) restrict2; - - const std::string &getPartyName() const restrict2 noexcept2 - A_WARN_UNUSED - { return mPartyName; } - - const std::string &getGuildName() const restrict2 noexcept2 - A_WARN_UNUSED - { return mGuildName; } - - /** - * Sets the name of the primary guild the being is in. Shown in - * BeingPopup (eventually). - */ - void setGuildName(const std::string &restrict name) restrict2; - - void setGuildPos(const std::string &restrict pos) restrict2 A_CONST; - - /** - * Adds a guild to the being. - */ - void addGuild(Guild *restrict const guild) restrict2; - - /** - * Removers a guild from the being. - */ - void removeGuild(const int id) restrict2; - - /** - * Returns a pointer to the specified guild that the being is in. - */ - const Guild *getGuild(const std::string &restrict guildName) - const restrict2 A_WARN_UNUSED; - - /** - * Returns a pointer to the specified guild that the being is in. - */ - const Guild *getGuild(const int id) const restrict2 A_WARN_UNUSED; - - /** - * Returns a pointer to the specified guild that the being is in. - */ - Guild *getGuild() const restrict2 A_WARN_UNUSED; - - /** - * Returns all guilds the being is in. - */ - const std::map<int, Guild*> &getGuilds() const restrict2 noexcept2 - A_WARN_UNUSED - { return mGuilds; } - - /** - * Removes all guilds the being is in. - */ - void clearGuilds() restrict2; - - /** - * Get number of guilds the being belongs to. - */ - int16_t getNumberOfGuilds() const restrict2 A_WARN_UNUSED - { return CAST_S16(mGuilds.size()); } - - bool isInParty() const restrict2 noexcept2 A_WARN_UNUSED - { return mParty != nullptr; } - - void setParty(Party *restrict const party) restrict2; - - void setGuild(Guild *restrict const guild) restrict2; - - void updateGuild() restrict2; - - Party *getParty() const restrict2 noexcept2 A_WARN_UNUSED - { return mParty; } - - void setSprite(const unsigned int slot, - const int id, - std::string color, - ItemColor colorId) restrict2; - - void setSpriteColor(const unsigned int slot, - const int id, - const std::string &color) restrict2; - - void setSpriteColorId(const unsigned int slot, - const int id, - ItemColor colorId) restrict2; - - void setSpriteCards(const unsigned int slot, - const int id, - const CardsList &restrict cards) restrict2; - - void setSpriteId(const unsigned int slot, - const int id) restrict2; - - void unSetSprite(const unsigned int slot) restrict2; - - void setWeaponId(const int id) restrict2; - - void setTempSprite(const unsigned int slot, - const int id) restrict2; - - void setHairTempSprite(const unsigned int slot, - const int id) restrict2; - - void updateSprite(const unsigned int slot, - const int id, - const std::string &restrict color = "") - restrict2; - - void setHairColorSpriteID(const unsigned int slot, - const int id) restrict2; - - void setSpriteColor(const unsigned int slot, - const std::string &restrict color = "") restrict2; - - /** - * Get the number of layers used to draw the being - */ - int getNumberOfLayers() const restrict2 override A_WARN_UNUSED - { return CompoundSprite::getNumberOfLayers(); } - - /** - * Performs being logic. - */ - void logic() restrict2 override; - - void botLogic() restrict2; - - /** - * Draws the speech text above the being. - */ - void drawSpeech(const int offsetX, - const int offsetY) restrict2; - - /** - * Draws the emotion picture above the being. - */ - void drawEmotion(Graphics *restrict const graphics, - const int offsetX, - const int offsetY) const restrict2 A_NONNULL(2); - - BeingTypeId getSubType() const restrict2 noexcept2 A_WARN_UNUSED - { return mSubType; } - - /** - * Set Being's subtype (mostly for view for monsters and NPCs) - */ - void setSubtype(const BeingTypeId subtype, - const uint16_t look) restrict2; - - const BeingInfo *getInfo() const restrict2 noexcept2 A_WARN_UNUSED - { return mInfo; } - - TargetCursorSizeT getTargetCursorSize() const restrict2 override final - A_WARN_UNUSED; - - int getTargetOffsetX() const restrict2 override A_WARN_UNUSED - { - if (mInfo == nullptr) - return 0; - return mInfo->getTargetOffsetX(); - } - - int getTargetOffsetY() const restrict2 override A_WARN_UNUSED - { - if (mInfo == nullptr) - return 0; - return mInfo->getTargetOffsetY(); - } - - /** - * Gets the way the object is blocked by other objects. - */ - virtual unsigned char getBlockWalkMask() const restrict2 A_WARN_UNUSED - { - if (mInfo == nullptr) - return 0; - return mInfo->getBlockWalkMask(); - } - - /** - * Gets the way the monster blocks pathfinding for other objects - */ - BlockTypeT getBlockType() const restrict2 override A_WARN_UNUSED - { - if (mInfo == nullptr) - return BlockType::NONE; - return mInfo->getBlockType(); - } - - /** - * Sets the walk speed in pixels per second. - */ - void setWalkSpeed(const int speed) restrict2 - { mWalkSpeed = speed; mSpeed = speed; } - - /** - * Gets the walk speed in pixels per second. - */ - int getWalkSpeed() const restrict2 noexcept2 A_WARN_UNUSED - { return mWalkSpeed; } - - /** - * Sets the attack speed. - */ - void setAttackSpeed(const int speed) restrict2 noexcept2 - { mAttackSpeed = speed; } - - /** - * Gets the attack speed. - */ - int getAttackSpeed() const restrict2 noexcept2 A_WARN_UNUSED - { return mAttackSpeed; } - - /** - * Sets the current action. - */ - virtual void setAction(const BeingActionT &restrict action, - const int attackId) restrict2; - - /** - * Get the being's action currently performed. - */ - BeingActionT getCurrentAction() const restrict2 noexcept2 A_WARN_UNUSED - { return mAction; } - - /** - * Returns whether this being is still alive. - */ - bool isAlive() const restrict2 noexcept2 A_WARN_UNUSED - { return mAction != BeingAction::DEAD; } - - /** - * Returns the current direction. - */ - uint8_t getDirection() const restrict2 noexcept2 A_WARN_UNUSED - { return mDirection; } - - /** - * Sets the current direction. - */ - virtual void setDirection(const uint8_t direction) restrict2; - - void setDirectionDelayed(const uint8_t direction) restrict2 noexcept2 - { mDirectionDelayed = direction; } - - uint8_t getDirectionDelayed() const restrict2 noexcept2 A_WARN_UNUSED - { return mDirectionDelayed; } - - /** - * Returns the direction the being is facing. - */ - SpriteDirection::Type getSpriteDirection() const restrict2 noexcept2 - A_WARN_UNUSED - { return mSpriteDirection; } - - void setPixelPositionF(const Vector &restrict pos) restrict2 override; - - /** - * Overloaded method provided for convenience. - * - * @see setPosition(const Vector &pos) - */ - inline void setPixelPositionF(const float x, - const float y, - const float z = 0.0F) restrict2 A_INLINE - { setPixelPositionF(Vector(x, y, z)); } - - /** - * Returns the horizontal size of the current base sprite of the being. - */ - int getWidth() const restrict2 override final A_WARN_UNUSED - { return std::max(CompoundSprite::getWidth(), DEFAULT_BEING_WIDTH); } - - /** - * Returns the vertical size of the current base sprite of the being. - */ - int getHeight() const restrict2 override final A_WARN_UNUSED - { return std::max(CompoundSprite::getHeight(), DEFAULT_BEING_HEIGHT); } - - /** - * Shoots a missile particle from this being, to target being - */ - void fireMissile(Being *restrict const victim, - const MissileInfo &restrict missile) const restrict2; - - /** - * Returns the path this being is following. An empty path is returned - * when this being isn't following any path currently. - */ - const Path &getPath() const restrict2 noexcept2 A_WARN_UNUSED - { return mPath; } - - int getDistance() const restrict2 noexcept2 A_WARN_UNUSED - { return mDistance; } - - void setDistance(const int n) restrict2 noexcept2 - { mDistance = n; } - - /** - * Set the Emoticon type and time displayed above - * the being. - */ - void setEmote(const uint8_t emotion, - const int emote_time) restrict2; - - void setState(const uint8_t state) restrict2; - - void drawPlayerSprites(Graphics *restrict const graphics, - const int posX, - const int posY) const - restrict2 A_NONNULL(2); - - void drawSpritesSDL(Graphics *restrict const graphics, - const int posX, - const int posY) const - restrict2 override final A_NONNULL(2); - - void drawHpBar(Graphics *restrict const graphics, - const int maxHP, - const int hp, - const int damage, - const UserColorIdT color1, - const UserColorIdT color2, - const int x, - const int y, - const int width, - const int height) const restrict2 A_NONNULL(2); - - void optionChanged(const std::string &restrict value) - restrict2 override; - - void flashName(const int time) restrict2; - - int getDamageTaken() const restrict2 noexcept2 A_WARN_UNUSED - { return mDamageTaken; } - - void setDamageTaken(const int damage) restrict2 noexcept2 - { mDamageTaken = damage; } - - void updateName() restrict2; - - void setLevel(const int n) restrict2 noexcept2 - { mLevel = n; } - - virtual int getLevel() const restrict2 A_WARN_UNUSED - { return mLevel; } - - void setReachable(const ReachableT n) restrict2 noexcept2 - { mReachable = n; } - - ReachableT getReachable() const restrict2 noexcept2 A_WARN_UNUSED - { return mReachable; } - - static void reReadConfig(); - - static BeingCacheEntry* getCacheEntry(const BeingId id) A_WARN_UNUSED; - - void addToCache() const restrict2; - - bool updateFromCache() restrict2; - - /** - * Sets the gender of this being. - */ - virtual void setGender(const GenderT gender) restrict2; - - GenderT getGender() const restrict2 noexcept2 A_WARN_UNUSED - { return mGender; } - - /** - * Return sprite sit action for current environment. - */ - std::string getSitAction() const restrict2 A_WARN_UNUSED; - - std::string getCastAction() const restrict2 A_WARN_UNUSED; - - std::string getCastAction(const SkillInfo *restrict const skill) const - restrict2 A_WARN_UNUSED; - - std::string getMoveAction() const restrict2 A_WARN_UNUSED; - - std::string getDeadAction() const restrict2 A_WARN_UNUSED; - - std::string getStandAction() const restrict2 A_WARN_UNUSED; - - std::string getSpawnAction() const restrict2 A_WARN_UNUSED; - - std::string getWeaponAttackAction(const ItemInfo *restrict const - weapon) const - restrict2 A_WARN_UNUSED; - - std::string getAttackAction() const restrict2 A_WARN_UNUSED; - - std::string getAttackAction(const Attack *restrict const attack1) const - restrict2 A_WARN_UNUSED; - - /** - * Whether or not this player is a GM. - */ - bool isGM() const restrict2 noexcept2 A_WARN_UNUSED - { return mIsGM; } - - /** - * Triggers whether or not to show the name as a GM name. - */ - void setGM(const bool gm) restrict2; - - bool canTalk() const restrict2 noexcept2 A_WARN_UNUSED - { return mType == ActorType::Npc; } - - void talkTo() const restrict2; - - void draw(Graphics *restrict const graphics, - const int offsetX, - const int offsetY) const - restrict2 override final A_NONNULL(2); - - void drawPlayer(Graphics *restrict const graphics, - const int offsetX, - const int offsetY) const - restrict2 A_NONNULL(2); - - void drawOther(Graphics *restrict const graphics, - const int offsetX, - const int offsetY) const - restrict2 A_NONNULL(2); - - void drawMonster(Graphics *restrict const graphics, - const int offsetX, - const int offsetY) const - restrict2 A_NONNULL(2); - - void drawPortal(Graphics *restrict const graphics, - const int offsetX, - const int offsetY) const - restrict2 A_NONNULL(2); - - void drawBasic(Graphics *restrict const graphics, - const int x, - const int y) const restrict2 A_NONNULL(2); - - void setMoveTime() restrict2 noexcept2 - { mMoveTime = cur_time; } - - void setAttackTime() restrict2 noexcept2 - { mAttackTime = cur_time; } - - void setTalkTime() restrict2 noexcept2 - { mTalkTime = cur_time; } - - void setTestTime() restrict2 noexcept2 - { mTestTime = cur_time; } - - void setOtherTime() restrict2 noexcept2 - { mOtherTime = cur_time; } - - time_t getMoveTime() const restrict2 noexcept2 - { return mMoveTime; } - - time_t getAttackTime() const restrict2 noexcept2 - { return mAttackTime; } - - time_t getTalkTime() const restrict2 noexcept2 - { return mTalkTime; } - - time_t getTestTime() const restrict2 noexcept2 - { return mTestTime; } - - time_t getOtherTime() const restrict2 noexcept2 - { return mOtherTime; } - - void resetCounters() restrict2; - - void updateColors() restrict2; - - void setEnemy(const bool n) restrict2 noexcept2 - { mEnemy = n; } - - const std::string &getIp() const restrict2 noexcept2 A_WARN_UNUSED - { return mIp; } - - void setIp(const std::string &restrict ip) restrict2 noexcept2 - { mIp = ip; } - - unsigned int getPvpRank() const restrict2 noexcept2 A_WARN_UNUSED - { return mPvpRank; } - - void setPvpRank(const unsigned int rank) restrict2 noexcept2 - { mPvpRank = rank; } - - void setHP(const int hp) restrict2; - - void setMaxHP(const int hp) restrict2; - - int getHP() const restrict2 noexcept2 A_WARN_UNUSED - { return mHP; } - - int getMaxHP() const restrict2 noexcept2 A_WARN_UNUSED - { return mMaxHP; } - - uint8_t calcDirection(const int dstX, - const int dstY) const restrict2 A_WARN_UNUSED; - - uint8_t calcDirection() const restrict2 A_WARN_UNUSED; - - void setAttackDelay(const int n) restrict2 noexcept2 - { mAttackDelay = n; } - - int getAttackDelay() const restrict2 noexcept2 A_WARN_UNUSED - { return mAttackDelay; } - - int getMinHit() const restrict2 noexcept2 A_WARN_UNUSED - { return mMinHit; } - - void setMinHit(const int n) restrict2 noexcept2 - { mMinHit = n; } - - int getMaxHit() const restrict2 noexcept2 A_WARN_UNUSED - { return mMaxHit; } - - void setMaxHit(const int n) restrict2 noexcept2 - { mMaxHit = n; } - - int getCriticalHit() const restrict2 A_WARN_UNUSED - { return mCriticalHit; } - - void setCriticalHit(const int n) restrict2 noexcept2 - { mCriticalHit = n; } - - void updateHit(const int amount) restrict2; - - Equipment *getEquipment() restrict2 A_WARN_UNUSED; - - void undressItemById(const int id) restrict2; - - int getGoodStatus() const restrict2 noexcept2 A_WARN_UNUSED - { return mGoodStatus; } - - void setGoodStatus(const int n) restrict2 noexcept2 - { mGoodStatus = n; } - - std::string getGenderSign() const restrict2 A_WARN_UNUSED; - - std::string getGenderSignWithSpace() const restrict2 A_WARN_UNUSED; - - void updateComment() restrict2; - - const std::string getComment() const restrict2 noexcept2 A_WARN_UNUSED - { return mComment; } - - void setComment(const std::string &restrict n) restrict2 noexcept2 - { mComment = n; } - - static void clearCache(); - - static std::string loadComment(const std::string &restrict name, - const ActorTypeT &restrict type) - A_WARN_UNUSED; - - static void saveComment(const std::string &restrict name, - const std::string &restrict comment, - const ActorTypeT &restrict type); - - bool isAdvanced() const restrict2 noexcept2 A_WARN_UNUSED - { return mAdvanced; } - - void setAdvanced(const bool n) restrict2 - { mAdvanced = n; addToCache(); } - - bool isBuyShopEnabled() const restrict2 A_WARN_UNUSED; - - bool isSellShopEnabled() const restrict2 A_WARN_UNUSED; - - void enableShop(const bool b) restrict2; - - /** - * Sets the attack range. - */ - void setAttackRange(const int range) restrict2 noexcept2 - { mAttackRange = range; } - -/* - void attack(Being *restrict target = nullptr, - bool keep = false, - bool dontChangeEquipment = false) restrict2; - - void attack2(Being *restrict target = nullptr, - bool keep = false, - bool dontChangeEquipment = false) restrict2; -*/ - - void updatePercentHP() restrict2; - - void setRaceName(const std::string &restrict name) restrict2 noexcept2 - { mRaceName = name; } - - std::string getRaceName() const restrict2 noexcept2 A_WARN_UNUSED - { return mRaceName; } - - int getSpriteID(const int slot) const restrict2 A_WARN_UNUSED; - - const BeingSlot &getSpriteSlot(const int slot) const - restrict2 A_WARN_UNUSED; - - ItemColor getSpriteColor(const int slot) const restrict2 A_WARN_UNUSED; - - void setHairStyle(const unsigned int slot, - const int id) restrict2; - - void setHairColor(const unsigned int slot, - const ItemColor color) restrict2; - - void setHairColor(const ItemColor color) restrict2 noexcept2 - { mHairColor = color; } - - void setSpriteSlot(const unsigned int slot, - const BeingSlot &beingSlot); - - ItemColor getHairColor() const noexcept2 A_WARN_UNUSED - { return mHairColor; } - - void recalcSpritesOrder() restrict2; - - int getHitEffect(const Being *restrict const attacker, - const AttackTypeT type, - const int attackId, - const int level) const restrict2 A_WARN_UNUSED; - - CursorT getHoverCursor() const restrict2 A_WARN_UNUSED - { - return mInfo != nullptr ? - mInfo->getHoverCursor() : Cursor::CURSOR_POINTER; - } - - void addAfkEffect() restrict2; - - void removeAfkEffect() restrict2; - - void updateAwayEffect() restrict2; - - void addSpecialEffect(const int effect) restrict2; - - void removeSpecialEffect() restrict2; - - void addEffect(const std::string &restrict name) restrict2; - - void setOwner(Being *restrict const owner) restrict2 noexcept2 - { mOwner = owner; } - - Being *getOwner() const restrict2 noexcept2 - { return mOwner; } - - void playSfx(const SoundInfo &sound, - Being *const being, - const bool main, - const int x, const int y) const restrict2; - - uint16_t getLook() const restrict2 noexcept2 - { return mLook; } - - void setLook(const uint16_t look) restrict2; - - constexpr2 static uint8_t genderToInt(const GenderT sex) - A_CONST A_WARN_UNUSED - { - switch (sex) - { - case Gender::FEMALE: - case Gender::UNSPECIFIED: - default: - return 0; - case Gender::MALE: - return 1; - case Gender::OTHER: - return 3; - } - } - - constexpr2 static GenderT intToGender(const uint8_t sex) - A_CONST A_WARN_UNUSED - { - switch (sex) - { - case 0: - default: - return Gender::FEMALE; - case 1: - return Gender::MALE; - case 3: - return Gender::OTHER; - } - } - - NextSoundInfo mNextSound; - - /** - * Sets the new path for this being. - */ - void setPath(const Path &restrict path) restrict2; - - int getSortPixelY() const restrict2 override A_WARN_UNUSED - { return CAST_S32(mPos.y) - mYDiff - mSortOffsetY; } - - void setMap(Map *restrict const map) restrict2 override; - - void recreateItemParticles() restrict2; - - void incUsage() restrict2 noexcept2 - { mUsageCounter ++; } - - int decUsage() restrict2 noexcept2 - { return --mUsageCounter; } - - virtual int getLastAttackX() const restrict2 - { return mLastAttackX; } - - virtual int getLastAttackY() const restrict2 - { return mLastAttackY; } - - void drawHomunculus(Graphics *restrict const graphics, - const int offsetX, - const int offsetY) const - restrict2 A_NONNULL(2); - - void drawMercenary(Graphics *restrict const graphics, - const int offsetX, - const int offsetY) const - restrict2 A_NONNULL(2); - - void drawElemental(Graphics *restrict const graphics, - const int offsetX, - const int offsetY) const - restrict2 A_NONNULL(2); - - void setTrickDead(const bool b) restrict2 override final; - - void setChat(ChatObject *restrict const obj) restrict2; - - ChatObject *getChat() const restrict2 noexcept2 - { return mChat; } - - void setRiding(const bool b) restrict2 override final; - - void setHorse(const int horseId) restrict2; - - void removeHorse() restrict2; - - void setSellBoard(const std::string &restrict text) restrict2; - - std::string getSellBoard() const restrict2 noexcept2 A_WARN_UNUSED - { return mSellBoard; } - - void setBuyBoard(const std::string &restrict text) restrict2; - - std::string getBuyBoard() const restrict2 noexcept2 A_WARN_UNUSED - { return mBuyBoard; } - - void setSpiritBalls(const unsigned int balls) restrict2; - - unsigned int getSpiritBalls() const restrict2 noexcept2 A_WARN_UNUSED - { return mSpiritBalls; } - - void stopCast(const bool b) override final; - - void setCreatorId(const BeingId id) - { mCreatorId = id; } - - BeingId getCreatorId() const noexcept2 A_WARN_UNUSED - { return mCreatorId; } - - void setKarma(const int karma) restrict2 noexcept2 - { mKarma = karma; } - - int getKarma() const restrict2 noexcept2 A_WARN_UNUSED - { return mKarma; } - - void setManner(const int manner) restrict2 noexcept2 - { mManner = manner; } - - int getManner() const restrict2 noexcept2 A_WARN_UNUSED - { return mManner; } - - void disableBotAi() restrict2 noexcept2 - { mBotAi = false; } - - void enableBotAi() restrict2 noexcept2 - { mBotAi = true; } - - int getAreaSize() const restrict2 noexcept2 A_WARN_UNUSED - { return mAreaSize; } - - void setAreaSize(const int areaSize) restrict2 noexcept2 - { mAreaSize = areaSize; } - - void setTeamId(const uint16_t teamId) restrict2; - - void showTeamBadge(const bool show) restrict2; - - void showGuildBadge(const bool show) restrict2; - - void showGmBadge(const bool show) restrict2; - - void showPartyBadge(const bool show) restrict2; - - void showNameBadge(const bool show) restrict2; - - void showShopBadge(const bool show) restrict2; - - void showInactiveBadge(const bool show) restrict2; - - void showAwayBadge(const bool show) restrict2; - - void showBadges(const bool show) restrict2; - - void setLanguageId(const int lang) restrict2 noexcept2; - - int getLanguageId() restrict2 noexcept2 A_WARN_UNUSED - { return mLanguageId; } - - uint16_t getTeamId() const restrict2 noexcept2 A_WARN_UNUSED - { return mTeamId; } - - virtual void setGroupId(const int id) - { mGroupId = id; } - - int getGroupId() const noexcept2 A_WARN_UNUSED - { return mGroupId; } - - void serverRemove() restrict2 noexcept2; - - void addCast(const int dstX, - const int dstY, - const int skillId, - const int skillLevel, - const int range, - const int waitTimeTicks); - - void fixDirectionOffsets(int &offsetX, - int &offsetY) const; - - static Being *createBeing(const BeingId id, - const ActorTypeT type, - const BeingTypeId subtype, - Map *const map); - - protected: - void drawPlayerSpriteAt(Graphics *restrict const graphics, - const int x, - const int y) const restrict2 A_NONNULL(2); - - void drawOtherSpriteAt(Graphics *restrict const graphics, - const int x, - const int y) const restrict2 A_NONNULL(2); - - void drawPortalSpriteAt(Graphics *restrict const graphics, - const int x, - const int y) const restrict2 A_NONNULL(2); - - void drawMonsterSpriteAt(Graphics *restrict const graphics, - const int x, - const int y) const restrict2 A_NONNULL(2); - - void drawHomunculusSpriteAt(Graphics *restrict const graphics, - const int x, - const int y) const restrict2 A_NONNULL(2); - - void drawMercenarySpriteAt(Graphics *restrict const graphics, - const int x, - const int y) const restrict2 A_NONNULL(2); - - void drawElementalSpriteAt(Graphics *restrict const graphics, - const int x, - const int y) const restrict2 A_NONNULL(2); - - void drawCompound(Graphics *const graphics, - const int posX, - const int posY) const A_NONNULL(2); - - /** - * Updates name's location. - */ - virtual void updateCoords() restrict2; - - void showName() restrict2; - - void addItemParticles(const int id, - const SpriteDisplay &restrict display) restrict2; - - void addItemParticlesCards(const int id, - const SpriteDisplay &restrict display, - const CardsList &restrict cards) restrict2; - - void removeAllItemsParticles() restrict2; - - void removeItemParticles(const int id) restrict2; - - void createSpeechBubble() restrict2; - - void setDefaultNameColor(const UserColorIdT defaultColor) restrict2; - - void updateBadgesCount() restrict2; - - static int getDefaultEffectId(const AttackTypeT &restrict type); - - BeingInfo *restrict mInfo; - AnimatedSprite *restrict mEmotionSprite; - AnimatedSprite *restrict mAnimationEffect; - CastingEffect *restrict mCastingEffect; - AnimatedSprite *restrict mBadges[BadgeIndex::BadgeIndexSize]; - - std::string mSpriteAction; - std::string mName; /**< Name of being */ - std::string mExtName; /**< Full name of being */ - std::string mRaceName; - std::string mPartyName; - std::string mGuildName; - std::string mSpeech; - - /** - * Holds a text object when the being displays it's name, 0 otherwise - */ - FlashText *restrict mDispName; - const Color *restrict mNameColor; - - /** Engine-related infos about weapon. */ - const ItemInfo *restrict mEquippedWeapon; - - Path mPath; - Text *restrict mText; - const Color *restrict mTextColor; - - Vector mDest; /**< destination coordinates. */ - - typedef std::map<int, ParticleInfo*> SpriteParticleInfo; - typedef SpriteParticleInfo::iterator SpriteParticleInfoIter; - - STD_VECTOR<BeingSlot> mSlots; - SpriteParticleInfo mSpriteParticles; - - // Character guild information - std::map<int, Guild*> mGuilds; - Party *mParty; - - int mActionTime; /**< Time spent in current action */ - int mEmotionTime; /**< Time until emotion disappears */ - - /** Time until the last speech sentence disappears */ - int mSpeechTime; - int mAttackSpeed; /**< Attack speed */ - - int mLevel; - int mGroupId; - int mAttackRange; - int mLastAttackX; - int mLastAttackY; - - int mPreStandTime; - - GenderT mGender; - BeingActionT mAction; - BeingTypeId mSubType; /**< Subtype (graphical view, basically) */ - uint8_t mDirection; /**< Facing direction */ - uint8_t mDirectionDelayed; /**< Facing direction */ - SpriteDirection::Type mSpriteDirection; /**< Facing direction */ - bool mShowName; - bool mIsGM; - - protected: - void postInit(const BeingTypeId subType, - Map *const map); - - void updateBadgesPosition(); - - /** - * Calculates the offset in the given directions. - * If walking in direction 'neg' the value is negated. - */ - template<signed char pos, signed char neg> - int getOffset() const restrict2 A_WARN_UNUSED; - - int searchSlotValue(const STD_VECTOR<int> &restrict slotRemap, - const int val) const restrict2 A_WARN_UNUSED; - - static void searchSlotValueItr(STD_VECTOR<int>::iterator &restrict it, - int &idx, - STD_VECTOR<int> &restrict slotRemap, - const int val); - - void addSpiritBalls(const unsigned int balls, - const int effectId) restrict2; - - void removeSpiritBalls(const unsigned int balls) restrict2; - - void dumpSprites() const restrict2; - - void drawBeingCursor(Graphics *const graphics, - const int offsetX, - const int offsetY) const A_NONNULL(2); - - void drawCasting(Graphics *const graphics, - const int offsetX, - const int offsetY) const A_NONNULL(2); - - void updateBotFollow(int dstX, - int dstY, - const int divX, - const int divY); - - void moveBotTo(int dstX, - int dstY); - - void updateBotDirection(const int dstX, - const int dstY); - - void botFixOffset(int &restrict dstX, - int &restrict dstY) const; - - const ActorTypeT mType; - - /** Speech Bubble components */ - SpeechBubble *restrict mSpeechBubble; - - /** - * Walk speed for x and y movement values. - * In pixels per second. - * @see MILLISECONDS_IN_A_TICK - */ - int mWalkSpeed; - int mSpeed; - std::string mIp; - int *restrict mSpriteRemap A_NONNULLPOINTER; - int *restrict mSpriteHide A_NONNULLPOINTER; - int *restrict mSpriteDraw A_NONNULLPOINTER; - std::string mComment; - std::string mBuyBoard; - std::string mSellBoard; - Being *restrict mOwner; - Particle *restrict mSpecialParticle; - ChatObject *restrict mChat; - HorseInfo *restrict mHorseInfo; - STD_VECTOR<AnimatedSprite*> mDownHorseSprites; - STD_VECTOR<AnimatedSprite*> mUpHorseSprites; - STD_VECTOR<Particle*> mSpiritParticles; - - int mX; // position in tiles - int mY; // position in tiles - int mCachedX; - int mCachedY; - int mSortOffsetY; // caculated offset in pixels based on mPixelOffsetY - int mPixelOffsetY; // tile height offset in pixels - // calculated between tiles - int mFixedOffsetY; // fixed tile height offset in pixels for tile - uint8_t mOldHeight; - - int mDamageTaken; - int mHP; - int mMaxHP; - int mDistance; - ReachableT mReachable; - int mGoodStatus; - - static time_t mUpdateConfigTime; - static unsigned int mConfLineLim; - static int mSpeechType; - static bool mHighlightMapPortals; - static bool mHighlightMonsterAttackRange; - static bool mLowTraffic; - static bool mDrawHotKeys; - static bool mShowBattleEvents; - static bool mShowMobHP; - static bool mShowOwnHP; - static bool mShowGender; - static bool mShowLevel; - static bool mShowPlayersStatus; - static bool mEnableReorderSprites; - static bool mHideErased; - static Move mMoveNames; - static bool mUseDiagonal; - static BadgeDrawType::Type mShowBadges; - static int mAwayEffect; - static VisibleNamePos::Type mVisibleNamePos; - - time_t mMoveTime; - time_t mAttackTime; - time_t mTalkTime; - time_t mOtherTime; - time_t mTestTime; - int mAttackDelay; - int mMinHit; - int mMaxHit; - int mCriticalHit; - unsigned int mPvpRank; - unsigned int mNumber; - unsigned int mSpiritBalls; - int mUsageCounter; - int mKarma; - int mManner; - int mAreaSize; - int mCastEndTime; - int mLanguageId; - int mBadgesX; - int mBadgesY; - BeingId mCreatorId; - uint16_t mTeamId; - uint16_t mLook; - uint16_t mBadgesCount; - ItemColor mHairColor; - bool mErased; - bool mEnemy; - bool mGotComment; - bool mAdvanced; - bool mShop; - bool mAway; - bool mInactive; - bool mNeedPosUpdate; - bool mBotAi; -}; - -extern std::list<BeingCacheEntry*> beingInfoCache; - -#endif // BEING_BEING_H |