summaryrefslogtreecommitdiff
path: root/src/game-server/thing.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/thing.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/thing.hpp')
-rw-r--r--src/game-server/thing.hpp113
1 files changed, 113 insertions, 0 deletions
diff --git a/src/game-server/thing.hpp b/src/game-server/thing.hpp
new file mode 100644
index 00000000..547885c4
--- /dev/null
+++ b/src/game-server/thing.hpp
@@ -0,0 +1,113 @@
+/*
+ * 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_THING_H_
+#define _TMWSERV_THING_H_
+
+/**
+ * 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. */
+};
+
+/**
+ * Base class for in-game objects. Knows only its type and the map is resides
+ * on.
+ */
+class Thing
+{
+ public:
+ /**
+ * Constructor.
+ */
+ Thing(int type)
+ : mType(type)
+ {}
+
+ /**
+ * Empty virtual destructor.
+ */
+ virtual ~Thing() {}
+
+ /**
+ * Gets type of this thing.
+ *
+ * @return the type of this thing.
+ */
+ 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 this thing is on. */
+ char mType; /**< Type of this thing. */
+};
+
+#endif // _TMWSERV_THING_H_