diff options
Diffstat (limited to 'src/localplayer.h')
-rw-r--r-- | src/localplayer.h | 76 |
1 files changed, 70 insertions, 6 deletions
diff --git a/src/localplayer.h b/src/localplayer.h index 6b6486e5..c128f4a4 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -22,6 +22,7 @@ #ifndef LOCALPLAYER_H #define LOCALPLAYER_H +#include <memory> #include <vector> #include "player.h" @@ -29,10 +30,17 @@ // TODO move into some sane place... #define MAX_SLOT 2 +#define INVENTORY_SIZE 102 +#define STORAGE_SIZE 301 + +class Equipment; class FloorItem; +class ImageSet; class Inventory; class Item; +class Map; class Network; +class SimpleAnimation; /** * The local player character. @@ -40,7 +48,8 @@ class Network; class LocalPlayer : public Player { public: - enum Attribute { + enum Attribute + { STR = 0, AGI, VIT, INT, DEX, LUK }; @@ -54,7 +63,7 @@ class LocalPlayer : public Player */ ~LocalPlayer(); - void setName(const std::string &name) {Being::setName(name); } + virtual void setName(const std::string &name); void setNetwork(Network *network) { mNetwork = network; } Network *getNetwork() {return mNetwork; } virtual void logic(); @@ -71,6 +80,11 @@ class LocalPlayer : public Player Inventory* getInventory() const { return mInventory; } /** + * Returns the player's storage + */ + Inventory* getStorage() const { return mStorage; } + + /** * Equips an item. */ void equipItem(Item *item); @@ -118,6 +132,14 @@ class LocalPlayer : public Player void attack(Being *target = NULL, bool keep = false); + /** + * Triggers whether or not to show the name as a GM name. + * NOTE: This doesn't mean that just anyone can use this. + * If the server doesn't acknowlege you, you won't be shown + * as a GM on other people's clients. + */ + virtual void setGM(); + void stopAttack(); Being* getTarget() const; @@ -166,6 +188,12 @@ class LocalPlayer : public Player void revive(); /** + * Accessors for mInStorage + */ + bool getInStorage() { return mInStorage; } + void setInStorage(bool inStorage) { mInStorage = inStorage; } + + /** * Sets the amount of XP. Shows XP gaining effect if the player is on * a map. */ @@ -198,6 +226,22 @@ class LocalPlayer : public Player Uint16 mStatPoint, mSkillPoint; Uint16 mStatsPointsToAttribute; + bool mUpdateName; /** Whether or not the name settings have changed */ + + bool mMapInitialized; /** Whether or not the map is available yet */ + + float mLastAttackTime; /**< Used to synchronize the charge dialog */ + + void drawTargetCursor(Graphics *graphics, int offsetX, int offsetY); + + /** Animated in range target cursor. */ + SimpleAnimation *mTargetCursorInRange[NUM_TC]; + + /** Animated out of range target cursor. */ + SimpleAnimation *mTargetCursorOutRange[NUM_TC]; + + const std::auto_ptr<Equipment> mEquipment; + protected: virtual void handleStatusEffect(StatusEffect *effect, int effectId); @@ -211,15 +255,35 @@ class LocalPlayer : public Player FloorItem *mPickUpTarget; bool mTrading; + bool mInStorage; /**< Whether storage is currently accessible */ bool mGoingToTarget; - int mLastAction; /**< Time stamp of the last action, -1 if none. */ - int mWalkingDir; /**< The direction the player is walking in. */ - int mDestX; /**< X coordinate of destination. */ - int mDestY; /**< Y coordinate of destination. */ + bool mKeepAttacking; /** Whether or not to continue to attack */ + int mTargetTime; /** How long the being has been targeted **/ + int mLastAction; /**< Time stamp of the last action, -1 if none. */ + int mLastTarget; /** Time stamp of last targeting action, -1 if none. */ + int mWalkingDir; /**< The direction the player is walking in. */ + int mDestX; /**< X coordinate of destination. */ + int mDestY; /**< Y coordinate of destination. */ std::vector<int> mStatusEffectIcons; Inventory *mInventory; + Inventory *mStorage; + + /** + * Helper function for loading target cursors + */ + void loadTargetCursor(std::string filename, int width, int height, + bool outRange, Being::TargetCursorSize size); + + /** Images of in range target cursor. */ + ImageSet *mInRangeImages[NUM_TC]; + + /** Images of out of range target cursor. */ + ImageSet *mOutRangeImages[NUM_TC]; + + // Load the target cursors into memory + void initTargetCursor(); }; extern LocalPlayer *player_node; |