zoomedit: Generalized Tool objects.
This commit is contained in:
parent
9a1bbf4b9a
commit
d25becbace
8 changed files with 55 additions and 37 deletions
|
@ -1,21 +1,16 @@
|
||||||
#ifndef LEVELOBJECT_H_
|
#ifndef LEVELOBJECT_H_
|
||||||
#define LEVELOBJECT_H_
|
#define LEVELOBJECT_H_
|
||||||
|
|
||||||
|
#include "Object.h"
|
||||||
#include "Vertex.h"
|
#include "Vertex.h"
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
|
|
||||||
class LevelObject {
|
class LevelObject : public Object {
|
||||||
public:
|
public:
|
||||||
virtual ~LevelObject() {}
|
virtual ~LevelObject() {}
|
||||||
|
|
||||||
virtual const char* getType() const = 0;
|
|
||||||
virtual bool hit(const Vertex &v) const = 0;
|
virtual bool hit(const Vertex &v) const = 0;
|
||||||
virtual int getPriority() const = 0;
|
virtual int getPriority() const = 0;
|
||||||
|
|
||||||
bool isOfType(const char *type) const {
|
|
||||||
return (std::strcmp(getType(), type) == 0);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*LEVELOBJECT_H_*/
|
#endif /*LEVELOBJECT_H_*/
|
||||||
|
|
18
Object.h
Normal file
18
Object.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef OBJECT_H_
|
||||||
|
#define OBJECT_H_
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
|
||||||
|
class Object {
|
||||||
|
public:
|
||||||
|
virtual ~Object() {}
|
||||||
|
|
||||||
|
virtual const char* getType() const = 0;
|
||||||
|
|
||||||
|
bool isOfType(const char *type) const {
|
||||||
|
return (std::strcmp(getType(), type) == 0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*OBJECT_H_*/
|
15
Renderer.cpp
15
Renderer.cpp
|
@ -139,11 +139,18 @@ void Renderer::renderRoom(const Room &room, bool selected, bool hovered, float s
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::renderPlayerStart(const PlayerStart &start, bool selected, bool hovered, float scale) {
|
void Renderer::renderPlayerStart(const PlayerStart &start, bool selected, bool hovered, float scale) {
|
||||||
glLineWidth((hovered || selected) ? 2.0f : 1.0f);
|
if(selected) {
|
||||||
if(selected)
|
glColor4f(1.0f, 1.0f, 1.0f, 0.9f);
|
||||||
glColor4f(1.0f, 1.7f, 1.0f, 1.9f);
|
glLineWidth(2.0f);
|
||||||
else
|
}
|
||||||
|
else if(hovered && editManager->getMode() == EditManager::VIEW) {
|
||||||
glColor4f(0.0f, 0.7f, 0.7f, 0.7f);
|
glColor4f(0.0f, 0.7f, 0.7f, 0.7f);
|
||||||
|
glLineWidth(2.0f);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
glColor4f(0.0f, 0.7f, 0.7f, 0.7f);
|
||||||
|
glLineWidth(1.0f);
|
||||||
|
}
|
||||||
drawCircle(Vertex(start.getX(), start.getZ()), 0.3f, 128);
|
drawCircle(Vertex(start.getX(), start.getZ()), 0.3f, 128);
|
||||||
|
|
||||||
glLineWidth(2.0f);
|
glLineWidth(2.0f);
|
||||||
|
|
8
Tool.h
8
Tool.h
|
@ -1,17 +1,21 @@
|
||||||
#ifndef TOOL_H_
|
#ifndef TOOL_H_
|
||||||
#define TOOL_H_
|
#define TOOL_H_
|
||||||
|
|
||||||
|
#include "Object.h"
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
|
||||||
class Tool {
|
class Tool : public Object {
|
||||||
public:
|
public:
|
||||||
virtual ~Tool() {}
|
virtual ~Tool() {}
|
||||||
|
|
||||||
virtual void activate() {};
|
virtual void activate() {};
|
||||||
virtual void deactivate() {};
|
virtual void deactivate() {};
|
||||||
|
|
||||||
virtual const gchar *getName() = 0;
|
virtual const char *getName() const {
|
||||||
|
return getType();
|
||||||
|
}
|
||||||
|
|
||||||
virtual GtkWidget *getImage() = 0;
|
virtual GtkWidget *getImage() = 0;
|
||||||
virtual bool isSensitive() = 0;
|
virtual bool isSensitive() = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
#include "ToolAddPolygon.h"
|
#include "ToolAddPolygon.h"
|
||||||
|
|
||||||
|
|
||||||
const gchar *ToolAddPolygon::name = (const gchar*)"Add polygonal room";
|
|
||||||
|
|
||||||
|
|
||||||
ToolAddPolygon::ToolAddPolygon(EditManager *editManager) {
|
ToolAddPolygon::ToolAddPolygon(EditManager *editManager) {
|
||||||
this->editManager = editManager;
|
this->editManager = editManager;
|
||||||
|
|
||||||
|
@ -22,7 +19,3 @@ void ToolAddPolygon::activate() {
|
||||||
void ToolAddPolygon::deactivate() {
|
void ToolAddPolygon::deactivate() {
|
||||||
editManager->finishRoom();
|
editManager->finishRoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *ToolAddPolygon::getImage() {
|
|
||||||
return image;
|
|
||||||
}
|
|
||||||
|
|
|
@ -10,8 +10,6 @@ class ToolAddPolygon : public Tool {
|
||||||
|
|
||||||
EditManager *editManager;
|
EditManager *editManager;
|
||||||
|
|
||||||
static const gchar* name;
|
|
||||||
|
|
||||||
// prevent shallow copy
|
// prevent shallow copy
|
||||||
ToolAddPolygon(const ToolAddPolygon &t);
|
ToolAddPolygon(const ToolAddPolygon &t);
|
||||||
const ToolAddPolygon& operator=(const ToolAddPolygon &t);
|
const ToolAddPolygon& operator=(const ToolAddPolygon &t);
|
||||||
|
@ -23,15 +21,21 @@ class ToolAddPolygon : public Tool {
|
||||||
virtual void activate();
|
virtual void activate();
|
||||||
virtual void deactivate();
|
virtual void deactivate();
|
||||||
|
|
||||||
virtual const gchar *getName() {
|
virtual const char *getType() const {
|
||||||
return name;
|
return "ToolAddPolygon";
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual const char *getName() const {
|
||||||
|
return "Add polygonal room";
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isSensitive() {
|
bool isSensitive() {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual GtkWidget *getImage();
|
virtual GtkWidget *getImage() {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*TOOLADDPOLYGON_H_*/
|
#endif /*TOOLADDPOLYGON_H_*/
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
#include "ToolSelector.h"
|
#include "ToolSelector.h"
|
||||||
|
|
||||||
|
|
||||||
const gchar *ToolSelector::name = (const gchar*)"Select";
|
|
||||||
|
|
||||||
|
|
||||||
ToolSelector::ToolSelector(EditManager *editManager) {
|
ToolSelector::ToolSelector(EditManager *editManager) {
|
||||||
this->editManager = editManager;
|
this->editManager = editManager;
|
||||||
|
|
||||||
|
@ -14,7 +11,3 @@ ToolSelector::ToolSelector(EditManager *editManager) {
|
||||||
ToolSelector::~ToolSelector() {
|
ToolSelector::~ToolSelector() {
|
||||||
g_object_unref(G_OBJECT(image));
|
g_object_unref(G_OBJECT(image));
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *ToolSelector::getImage() {
|
|
||||||
return image;
|
|
||||||
}
|
|
||||||
|
|
|
@ -10,8 +10,6 @@ class ToolSelector : public Tool {
|
||||||
|
|
||||||
EditManager *editManager;
|
EditManager *editManager;
|
||||||
|
|
||||||
static const gchar* name;
|
|
||||||
|
|
||||||
// prevent shallow copy
|
// prevent shallow copy
|
||||||
ToolSelector(const ToolSelector &t);
|
ToolSelector(const ToolSelector &t);
|
||||||
const ToolSelector& operator=(const ToolSelector &t);
|
const ToolSelector& operator=(const ToolSelector &t);
|
||||||
|
@ -20,15 +18,21 @@ class ToolSelector : public Tool {
|
||||||
ToolSelector(EditManager *editManager);
|
ToolSelector(EditManager *editManager);
|
||||||
virtual ~ToolSelector();
|
virtual ~ToolSelector();
|
||||||
|
|
||||||
virtual const gchar *getName() {
|
virtual const char *getType() const {
|
||||||
return name;
|
return "ToolSelector";
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual const char *getName() const {
|
||||||
|
return "Select";
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isSensitive() {
|
bool isSensitive() {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual GtkWidget *getImage();
|
virtual GtkWidget *getImage() {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*TOOLSELECTOR_H_*/
|
#endif /*TOOLSELECTOR_H_*/
|
||||||
|
|
Reference in a new issue