diff options
author | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2007-03-30 21:48:39 +0000 |
---|---|---|
committer | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2007-03-30 21:48:39 +0000 |
commit | 4684bfb34ca0ed06c998bfe3c1369f94e8532b0d (patch) | |
tree | 090c05956c76f1d80273a5f68c80e53a249a922b /src/game-server/object.hpp | |
parent | f2f50428fa1381cb39060b38186c09fc363c5f02 (diff) | |
download | manaserv-4684bfb34ca0ed06c998bfe3c1369f94e8532b0d.tar.gz manaserv-4684bfb34ca0ed06c998bfe3c1369f94e8532b0d.tar.bz2 manaserv-4684bfb34ca0ed06c998bfe3c1369f94e8532b0d.tar.xz manaserv-4684bfb34ca0ed06c998bfe3c1369f94e8532b0d.zip |
Separated the Thing and MovingObject classes from the Object module.
Diffstat (limited to 'src/game-server/object.hpp')
-rw-r--r-- | src/game-server/object.hpp | 198 |
1 files changed, 10 insertions, 188 deletions
diff --git a/src/game-server/object.hpp b/src/game-server/object.hpp index 3071f710..6c30bb0d 100644 --- a/src/game-server/object.hpp +++ b/src/game-server/object.hpp @@ -20,28 +20,16 @@ * $Id$ */ - #ifndef _TMWSERV_OBJECT_H_ #define _TMWSERV_OBJECT_H_ -#include <vector> - #include "point.h" -#include "game-server/map.hpp" - -// Object type enumeration -enum -{ - OBJECT_ITEM = 0, // A simple item - OBJECT_ACTOR, // An item that toggle map/quest actions (doors, switchs, ...) and can speak (map panels). - OBJECT_NPC, // Non-Playable-Character is an actor capable of movement and maybe actions - OBJECT_MONSTER, // A monster (moving actor with AI. Should be able to toggle map/quest actions, too) - OBJECT_CHARACTER,// A normal being - OBJECT_OTHER // Server-only object -}; - -class MapComposite; +#include "game-server/thing.hpp" +/** + * Flags that are raised as necessary. They trigger messages that are sent to + * the clients. + */ enum { UPDATEFLAG_NEW_ON_MAP = 1, @@ -52,79 +40,10 @@ enum }; /** - * Base class for in-game objects. - */ -class Thing -{ - public: - /** - * Constructor. - */ - Thing(int type) - : mType(type) - {} - - /** - * Empty virtual destructor. - */ - virtual ~Thing() {} - - /** - * Gets type. - * - * @return the type. - */ - int getType() const - { return mType; } - - /** - * Returns whether this thing is visible on the map or not. (Object) - */ - bool isVisible() const - { return mType != OBJECT_OTHER; } - - /** - * Returns whether this thing can move on the map or not. (MovingObject) - */ - bool canMove() const - { return mType == OBJECT_CHARACTER || mType == OBJECT_MONSTER || - mType == OBJECT_NPC; } - - /** - * Returns whether this thing can fight or not. (Being) - */ - bool canFight() const - { return mType == OBJECT_CHARACTER || mType == OBJECT_MONSTER; } - - /** - * Updates the internal status. - */ - virtual void - update() = 0; - - /** - * Gets the map this thing is located on. - * - * @return ID of map. - */ - int getMapId() const - { return mMapId; } - - /** - * Sets the map this thing is located on. - */ - void setMapId(int mapId) - { mMapId = mapId; } - - private: - unsigned short mMapId; /**< id of the map being is on */ - char mType; /**< Object type */ -}; - -/** - * Generic client-visible object definition. + * Generic client-visible object definition. Keeps track of position and what + * to update clients about. */ -class Object: public Thing +class Object : public Thing { public: /** @@ -170,105 +89,8 @@ class Object: public Thing { mUpdateFlags = 0; } private: - char mUpdateFlags; /**< changes in object status */ - Point mPos; /**< coordinates */ -}; - -/** - * Base class for in-game moving objects. - */ -class MovingObject: public Object -{ - public: - /** - * Proxy constructor. - */ - MovingObject(int type, int id) - : Object(type), - mPublicID(id), - mDirection(0), - mActionTime(0) - {} - - /** - * Gets the destination coordinates of the object. - */ - Point const &getDestination() const - { return mDst; } - - /** - * Sets the destination coordinates of the object. - */ - void setDestination(Point dst) - { mDst = dst; raiseUpdateFlags(UPDATEFLAG_NEW_DESTINATION); mPath.clear(); } - - /** - * Gets the old coordinates of the object. - */ - Point getOldPosition() const - { return mOld; } - - /** - * Sets object direction - */ - void setDirection(int direction) - { mDirection = direction; } - - /** - * Gets object direction - */ - unsigned char getDirection() const - { return mDirection; } - - /** - * Sets object speed. - */ - void setSpeed(unsigned s) - { mSpeed = s; } - - /** - * Sets object bounding circle radius - */ - void setSize(unsigned s) - { mSize = s; } - - /** - * Gets object bounding circle radius - */ - unsigned getSize() - { return mSize; } - - /** - * Moves the object toward its destination. - */ - virtual void move(); - - /** - * Get public ID. - * - * @return the public ID, 65535 if none yet. - */ - int getPublicID() const - { return mPublicID; } - - /** - * Set public ID. - * The object shall not have any public ID yet. - */ - void setPublicID(int id) - { mPublicID = id; } - - private: - unsigned short mPublicID; /**< Object ID sent to clients (unique with respect to the map) */ - Point mDst; /**< target coordinates */ - Point mOld; /**< old coordinates */ - unsigned short mSpeed; /**< speed */ - std::list<PATH_NODE> mPath; - - protected: - unsigned char mDirection; /**< Facing direction */ - unsigned short mActionTime; /**< delay until next action */ - unsigned mSize; /**< radius of bounding circle */ + char mUpdateFlags; /**< Changes in object status. */ + Point mPos; /**< Coordinates. */ }; #endif // _TMWSERV_OBJECT_H_ |