zoomedit: Fixed some PlayerStart related bugs.

This commit is contained in:
neoraider 2007-12-14 18:22:04 +00:00
parent a8c1d61687
commit 9a1bbf4b9a
8 changed files with 23 additions and 10 deletions

View file

@ -38,8 +38,8 @@ EditManager::EditManager(Window *window) {
hasHoveredVertex = false;
}
void EditManager::update() {
window->update();
void EditManager::redraw() {
window->redraw();
}
void EditManager::addRoom() {
@ -92,8 +92,10 @@ void EditManager::setHoveredVertex(Vertex *v) {
for(Level::iterator object = window->getLevel().begin(); object != window->getLevel().end(); object++) {
if((*object)->hit(*v)) {
if(hoveredObject && (*object)->getPriority() < hoveredObject->getPriority())
continue;
hoveredObject = &**object;
break;
}
}
}

View file

@ -35,7 +35,7 @@ class EditManager {
public:
EditManager(Window *window);
void update();
void redraw();
void addRoom();
void finishRoom();

View file

@ -11,6 +11,7 @@ class LevelObject {
virtual const char* getType() const = 0;
virtual bool hit(const Vertex &v) const = 0;
virtual int getPriority() const = 0;
bool isOfType(const char *type) const {
return (std::strcmp(getType(), type) == 0);

View file

@ -11,6 +11,8 @@ class PlayerStart : public Vertex3d, public LevelObject {
return (v.distanceSq(Vertex(getX(), getZ())) < 0.09);
}
virtual int getPriority() const {return 1;}
virtual const char* getType() const {
return "PlayerStart";
}

View file

@ -139,8 +139,11 @@ void Renderer::renderRoom(const Room &room, bool selected, bool hovered, float s
}
void Renderer::renderPlayerStart(const PlayerStart &start, bool selected, bool hovered, float scale) {
glLineWidth(1.0f);
glColor4f(0.0f, 0.7f, 0.7f, 0.7f);
glLineWidth((hovered || selected) ? 2.0f : 1.0f);
if(selected)
glColor4f(1.0f, 1.7f, 1.0f, 1.9f);
else
glColor4f(0.0f, 0.7f, 0.7f, 0.7f);
drawCircle(Vertex(start.getX(), start.getZ()), 0.3f, 128);
glLineWidth(2.0f);

1
Room.h
View file

@ -23,6 +23,7 @@ class Room : public Polygon, public LevelObject {
void setHeight(float height) {this->height = height;}
virtual bool hit(const Vertex &v) const {return contains(v);}
virtual int getPriority() const {return 0;}
virtual const char* getType() const {
return "Room";

View file

@ -19,7 +19,7 @@ void SidebarView::spinButtonChanged(GtkWidget *spinbutton, SidebarView *view) {
((PlayerStart*)view->editor->getSelectedObject())->setZ(gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbutton)));
}
view->editor->update();
view->editor->redraw();
}
SidebarView::SidebarView(EditManager *editor) {
@ -100,7 +100,7 @@ SidebarView::SidebarView(EditManager *editor) {
gtk_widget_show(labelX);
gtk_table_attach(GTK_TABLE(tablePlayerStart), labelX, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
spinButtonX = gtk_spin_button_new_with_range(-10000, 10000, 0.1f);
spinButtonX = gtk_spin_button_new_with_range(-10000, 10000, 0.01f);
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spinButtonX), 2);
gtk_entry_set_alignment(GTK_ENTRY(spinButtonX), 1.0);
gtk_widget_show(spinButtonX);
@ -114,7 +114,7 @@ SidebarView::SidebarView(EditManager *editor) {
gtk_widget_show(labelY);
gtk_table_attach(GTK_TABLE(tablePlayerStart), labelY, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, 0);
spinButtonY = gtk_spin_button_new_with_range(-10000, 10000, 0.1f);
spinButtonY = gtk_spin_button_new_with_range(-10000, 10000, 0.01f);
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spinButtonY), 2);
gtk_entry_set_alignment(GTK_ENTRY(spinButtonY), 1.0);
gtk_widget_show(spinButtonY);
@ -128,7 +128,7 @@ SidebarView::SidebarView(EditManager *editor) {
gtk_widget_show(labelZ);
gtk_table_attach(GTK_TABLE(tablePlayerStart), labelZ, 0, 1, 3, 4, GTK_FILL, GTK_FILL, 0, 0);
spinButtonZ = gtk_spin_button_new_with_range(-10000, 10000, 0.1f);
spinButtonZ = gtk_spin_button_new_with_range(-10000, 10000, 0.01f);
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spinButtonZ), 2);
gtk_entry_set_alignment(GTK_ENTRY(spinButtonZ), 1.0);
gtk_widget_show(spinButtonZ);

View file

@ -44,6 +44,10 @@ class Window {
void update();
void handleAction(UIManager::Action action);
void redraw() {
drawer.update();
}
EditManager& getEditManager() {
return editor;
}