diff options
Diffstat (limited to 'src/localplayer.h')
-rw-r--r-- | src/localplayer.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/src/localplayer.h b/src/localplayer.h new file mode 100644 index 00000000..9bd0bf37 --- /dev/null +++ b/src/localplayer.h @@ -0,0 +1,149 @@ +/* + * The Mana World + * Copyright 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World 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. + * + * The Mana World 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 The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id$ + */ + +#ifndef _TMW_LOCALPLAYER_H +#define _TMW_LOCALPLAYER_H + +#include "player.h" + +// TODO move into some sane place... +#define MAX_SLOT 2 + +class Equipment; +class FloorItem; +class Inventory; +class Item; +class Network; + +class LocalPlayer : public Player +{ + public: + enum Attribute { + STR = 0, AGI, VIT, INT, DEX, LUK + }; + + LocalPlayer(Uint32 id, Uint16 job, Map *map); + + virtual ~LocalPlayer(); + + void setNetwork(Network *network) { mNetwork = network; } + + virtual void logic(); + + virtual Type getType() const; + + void clearInventory(); + void addInvItem(int id, int quantity, bool equipment); + void addInvItem(int index, int id, int quantity, bool equipment); + Item* getInvItem(int index); + + /** + * Equips an item. + */ + void equipItem(Item *item); + + /** + * Unequips an item. + */ + void unequipItem(Item *item); + + void useItem(Item *item); + void dropItem(Item *item, int quantity); + void pickUp(FloorItem *item); + + /** + * Sents a trade request to the given being. + */ + void trade(Being *being) const; + + /** + * Accept or decline a trade offer + */ + void tradeReply(bool accept); + + /** + * Returns true when the player is ready to accept a trade offer. + * Returns false otherwise. + */ + bool tradeRequestOk() const; + + /** + * Sets the trading state of the player, i.e. whether or not he is + * currently involved into some trade. + */ + void setTrading(bool trading) { mTrading = trading; }; + + void attack(Being *target=NULL, bool keep=false); + void stopAttack(); + Being* getTarget() const; + + void walk(Being::Direction dir); + + /** + * Sets a new destination for this being to walk to. + */ + virtual void setDestination(Uint16 x, Uint16 y); + + void raiseAttribute(Attribute attr); + void raiseSkill(Uint16 skillId); + + void toggleSit(); + void emote(Uint8 emotion); + + void revive(); + + Uint32 mLoginId; + + Uint32 xp, jobXp; + Uint16 lvl; + Uint32 jobLvl; + Uint32 xpForNextLevel, jobXpForNextLevel; + Uint16 hp, maxHp, mp, maxMp; + Uint32 gp; + + Uint32 totalWeight, maxWeight; + + Uint8 ATTR[6]; + Uint8 ATTR_UP[6]; + + Sint16 ATK, MATK, DEF, MDEF, HIT, FLEE; + Sint16 ATK_BONUS, MATK_BONUS, DEF_BONUS, MDEF_BONUS, FLEE_BONUS; + + Uint16 statPoint, skillPoint; + Uint16 statsPointsToAttribute; + + float lastAttackTime; /**< Used to synchronize the charge dialog */ + + Inventory *mInventory; + Equipment *mEquipment; + + protected: + Network *mNetwork; + Being *mTarget; + + bool mTrading; +}; + +extern LocalPlayer *player_node; + +#endif |