diff options
Diffstat (limited to 'LevelVertex.h')
-rw-r--r-- | LevelVertex.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/LevelVertex.h b/LevelVertex.h new file mode 100644 index 0000000..998756f --- /dev/null +++ b/LevelVertex.h @@ -0,0 +1,61 @@ +#ifndef LEVELVERTEX_H_ +#define LEVELVERTEX_H_ + +#include "LevelObject.h" +#include "VertexProvider.h" + + +class LevelVertex : public LevelObject, public VertexProvider { + private: + VertexProvider *provider; + size_t id; + + public: + LevelVertex(VertexProvider *p, size_t i) + : provider(p), id(i) {} + + virtual const char* getType() const { + return "LevelVertex"; + } + + virtual bool hit(const Vertex &v, float scale) const { + return (provider->getVertex(id)->distanceSq(v) < (3.5f*3.5f)/(scale*scale)); + } + + virtual int getPriority() const { + return 1000; + } + + virtual void move(float x, float y) { + provider->moveVertex(id, x, y); + } + + virtual void rotate(float a) { + provider->rotateVertex(id, a); + } + + virtual Vertex getCenter() const { + return *provider->getVertex(id); + } + + virtual const Vertex* getVertex(size_t id) const { + return provider->getVertex(this->id); + } + + virtual size_t getVertexCount() const { + return 1; + } + + virtual void moveVertex(size_t id, float x, float y) { + provider->moveVertex(this->id, x, y); + } + + virtual void rotateVertex(size_t id, float a) { + provider->rotateVertex(this->id, a); + } + + const Vertex* operator->() const {return provider->getVertex(id);} + const Vertex& operator*() const {return *provider->getVertex(id);} +}; + +#endif /*LEVELVERTEX_H_*/ |