[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3257 - trunk/pingus/src/editor
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3257 - trunk/pingus/src/editor |
Date: |
Sat, 29 Sep 2007 15:29:04 +0200 |
Author: grumbel
Date: 2007-09-29 15:29:04 +0200 (Sat, 29 Sep 2007)
New Revision: 3257
Modified:
trunk/pingus/src/editor/editor_viewport.cpp
trunk/pingus/src/editor/editor_viewport.hpp
trunk/pingus/src/editor/minimap.cpp
trunk/pingus/src/editor/minimap.hpp
Log:
- added drag&drop of scroll pos to minimap
- changed colors a bit
Modified: trunk/pingus/src/editor/editor_viewport.cpp
===================================================================
--- trunk/pingus/src/editor/editor_viewport.cpp 2007-09-29 13:02:50 UTC (rev
3256)
+++ trunk/pingus/src/editor/editor_viewport.cpp 2007-09-29 13:29:04 UTC (rev
3257)
@@ -605,6 +605,18 @@
objs.clear();
selection_changed(selected_objs);
}
+
+Vector2i
+EditorViewport::get_scroll_pos() const
+{
+ return Vector2i(state.get_pos());
+}
+
+void
+EditorViewport::set_scroll_pos(Vector2i pos)
+{
+ state.set_pos(pos);
+}
} // namespace Editor
Modified: trunk/pingus/src/editor/editor_viewport.hpp
===================================================================
--- trunk/pingus/src/editor/editor_viewport.hpp 2007-09-29 13:02:50 UTC (rev
3256)
+++ trunk/pingus/src/editor/editor_viewport.hpp 2007-09-29 13:29:04 UTC (rev
3257)
@@ -114,6 +114,9 @@
/** Return a pointer to the EditorScreen object */
EditorScreen* get_screen() { return editor; }
+ Vector2i get_scroll_pos() const;
+ void set_scroll_pos(Vector2i pos);
+
/// Mouse actions
void on_primary_button_press(int x, int y);
void on_primary_button_release(int x, int y);
Modified: trunk/pingus/src/editor/minimap.cpp
===================================================================
--- trunk/pingus/src/editor/minimap.cpp 2007-09-29 13:02:50 UTC (rev 3256)
+++ trunk/pingus/src/editor/minimap.cpp 2007-09-29 13:29:04 UTC (rev 3257)
@@ -29,7 +29,8 @@
Minimap::Minimap(EditorScreen* editor_, const Rect& rect)
: RectComponent(rect),
editor(editor_),
- drawing_context(new DrawingContext(rect.grow(-3)))
+ drawing_context(new DrawingContext(rect.grow(-3))),
+ dragging(false)
{
}
@@ -49,9 +50,6 @@
dc.draw_fillrect(Rect(Vector2i(0, 0), Size(minimap_rect.get_width(),
minimap_rect.get_height())),
Color(0,0,0), -100000.0f);
- // FIXME: add current viewport and scrolling
- // editor->get_viewport()->get_rect();
-
std::vector<LevelObj*>& objects = *editor->get_viewport()->get_objects();
Size levelsize = editor->get_level()->get_size();
@@ -79,9 +77,27 @@
else // hotspot, background, etc.
color = Color(255,0,0);
- dc.draw_fillrect(r, color, (*i)->get_pos().z);
+ Color bg_color(int(color.r * 0.75f),
+ int(color.g * 0.75f),
+ int(color.b * 0.75f));
+
+ dc.draw_fillrect(r, bg_color, (*i)->get_pos().z);
+ dc.draw_rect(r, color, (*i)->get_pos().z);
}
+ Vector2i viewport_pos = editor->get_viewport()->get_scroll_pos();
+ Rect viewport_rect = editor->get_viewport()->get_rect();
+
+ viewport_pos.x -= viewport_rect.get_width()/2;
+ viewport_pos.y -= viewport_rect.get_height()/2;
+
+ Rect view(Vector2i(viewport_pos.x * minimap_rect.get_width() /
levelsize.width,
+ viewport_pos.y * minimap_rect.get_height() /
levelsize.height),
+ Size(viewport_rect.get_width() * minimap_rect.get_width() /
levelsize.width,
+ viewport_rect.get_height() * minimap_rect.get_height() /
levelsize.height));
+ dc.draw_fillrect(view, Color(255, 255, 0, 150), 1000000.0f);
+ dc.draw_rect(view, Color(255, 255, 0), 1000000.0f);
+
gc.draw(dc);
}
@@ -92,6 +108,38 @@
}
void
+Minimap::on_pointer_move(int x, int y)
+{
+ if (dragging)
+ {
+ Rect minimap_rect = drawing_context->get_rect();
+ Size levelsize = editor->get_level()->get_size();
+
+ x -= 3 + rect.left; // take border into account
+ y -= 3 + rect.top;
+
+ x = x * levelsize.width / minimap_rect.get_width();
+ y = y * levelsize.height / minimap_rect.get_height();
+
+ editor->get_viewport()->set_scroll_pos(Vector2i(x, y));
+ }
+}
+
+void
+Minimap::on_primary_button_press (int x, int y)
+{
+ dragging = true;
+ on_pointer_move(x, y);
+}
+
+void
+Minimap::on_primary_button_release (int x, int y)
+{
+ on_pointer_move(x, y);
+ dragging = false;
+}
+
+void
Minimap::update_layout()
{
drawing_context->set_rect(rect.grow(-3));
Modified: trunk/pingus/src/editor/minimap.hpp
===================================================================
--- trunk/pingus/src/editor/minimap.hpp 2007-09-29 13:02:50 UTC (rev 3256)
+++ trunk/pingus/src/editor/minimap.hpp 2007-09-29 13:29:04 UTC (rev 3257)
@@ -32,6 +32,7 @@
private:
EditorScreen* editor;
DrawingContext* drawing_context;
+ bool dragging;
public:
Minimap(EditorScreen*, const Rect& );
@@ -40,6 +41,10 @@
void draw (DrawingContext& gc);
void update (float delta);
+ void on_primary_button_press (int x, int y);
+ void on_primary_button_release (int x, int y);
+ void on_pointer_move(int x, int y);
+
void update_layout();
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3257 - trunk/pingus/src/editor,
grumbel at BerliOS <=