-/*
- * Trigger.h
- *
- * Created on: Oct 3, 2012
- * Author: holy
- */
-
#ifndef MAP_TRIGGER_H_
#define MAP_TRIGGER_H_
-#include "fwd.h"
-#include "../geometry/Vector.h"
+namespace common {
+ class Script;
+}
+
+#include "Entity.h"
+#include "../math/Vector.h"
namespace map {
class Trigger {
+public:
+ static const int TYPE_ID = 604;
+
public:
Trigger();
~Trigger() { }
+ enum Type {
+ TYPE_NORTH = Entity::ORIENTATION_NORTH,
+ TYPE_EAST = Entity::ORIENTATION_EAST,
+ TYPE_SOUTH = Entity::ORIENTATION_SOUTH,
+ TYPE_WEST = Entity::ORIENTATION_WEST,
+ TYPE_CONTACT = 4,
+ };
+
public:
- const geometry::Vector<int> &TilePosition() const { return tilePosition; }
+ const math::Vector<int> &TilePosition() const { return tilePosition; }
+ Type GetType() const { return Type(type); }
+ bool HasScript() const { return script; }
+ common::Script &GetScript() { return *script; }
+ const common::Script &GetScript() const { return *script; }
+
+ static void CreateTypeDescription();
+ static void Construct(void *);
// temporary setters
public:
- void SetTilePosition(const geometry::Vector<int> &p) { tilePosition = p; }
+ void SetTilePosition(const math::Vector<int> &p) { tilePosition = p; }
+ void SetType(Type t) { type = t; }
+ void SetScript(common::Script *s) { script = s; }
private:
- geometry::Vector<int> tilePosition;
-
-// temporary members until scripting is implemented
-public:
- Map *map;
- geometry::Vector<int> target;
+ common::Script *script;
+ math::Vector<int> tilePosition;
+ int type;
};
}
-#endif /* MAP_TRIGGER_H_ */
+#endif