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/movingobject.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/movingobject.hpp')
-rw-r--r-- | src/game-server/movingobject.hpp | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/src/game-server/movingobject.hpp b/src/game-server/movingobject.hpp new file mode 100644 index 00000000..99f1caa3 --- /dev/null +++ b/src/game-server/movingobject.hpp @@ -0,0 +1,134 @@ +/* + * The Mana World Server + * 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 _TMWSERV_MOVINGOBJECT_H_ +#define _TMWSERV_MOVINGOBJECT_H_ + +#include "point.h" +#include "game-server/map.hpp" +#include "game-server/object.hpp" + + +/** + * Base class for in-game moving objects. This class adds a sense of direction, + * destination and size. + */ +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(const 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: + /** Object ID sent to clients (unique with respect to the map). */ + unsigned short mPublicID; + + 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. */ +}; + +#endif // _TMWSERV_OBJECT_H_ |