summaryrefslogtreecommitdiff
path: root/src/game-server/movingobject.hpp
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2007-03-30 21:48:39 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2007-03-30 21:48:39 +0000
commit4684bfb34ca0ed06c998bfe3c1369f94e8532b0d (patch)
tree090c05956c76f1d80273a5f68c80e53a249a922b /src/game-server/movingobject.hpp
parentf2f50428fa1381cb39060b38186c09fc363c5f02 (diff)
downloadmanaserv-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.hpp134
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_