[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3250 - in trunk/pingus/src: display editor gui
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3250 - in trunk/pingus/src: display editor gui |
Date: |
Thu, 27 Sep 2007 05:12:37 +0200 |
Author: grumbel
Date: 2007-09-27 05:12:35 +0200 (Thu, 27 Sep 2007)
New Revision: 3250
Modified:
trunk/pingus/src/display/drawing_request.hpp
trunk/pingus/src/editor/editor_screen.cpp
trunk/pingus/src/editor/editor_screen.hpp
trunk/pingus/src/editor/editor_viewport.cpp
trunk/pingus/src/gui/gui_manager.cpp
trunk/pingus/src/gui/screen.hpp
trunk/pingus/src/gui/screen_manager.cpp
Log:
- implemented editor window resize a bit more
Modified: trunk/pingus/src/display/drawing_request.hpp
===================================================================
--- trunk/pingus/src/display/drawing_request.hpp 2007-09-26 23:00:03 UTC
(rev 3249)
+++ trunk/pingus/src/display/drawing_request.hpp 2007-09-27 03:12:35 UTC
(rev 3250)
@@ -30,12 +30,17 @@
{
protected:
Vector3f pos;
+ bool valid;
+ std::vector<Rect> dirty_rects;
+
public:
- DrawingRequest(const Vector3f& pos_) : pos(pos_) {}
+ DrawingRequest(const Vector3f& pos_) : pos(pos_), valid(true) {}
virtual ~DrawingRequest() {};
virtual void render(SDL_Surface* gc, const Rect& rect) = 0;
+
+ virtual void mark(const Rect& r) { dirty_rects.push_back(r); }
/** Returns true if the request contains an alpha channel and needs
to be drawn in order */
@@ -43,6 +48,9 @@
/** Returns the position at which the request should be drawn */
virtual float get_z_pos() { return pos.z; }
+
+ virtual void set_valid(bool v) { valid = v; }
+ virtual bool is_valid() const { return valid; }
private:
DrawingRequest (const DrawingRequest&);
DrawingRequest& operator= (const DrawingRequest&);
Modified: trunk/pingus/src/editor/editor_screen.cpp
===================================================================
--- trunk/pingus/src/editor/editor_screen.cpp 2007-09-26 23:00:03 UTC (rev
3249)
+++ trunk/pingus/src/editor/editor_screen.cpp 2007-09-27 03:12:35 UTC (rev
3250)
@@ -47,7 +47,7 @@
#include "level_properties.hpp"
namespace Editor {
-
+
// Default constructor
EditorScreen::EditorScreen()
: plf(new EditorLevel(this)),
@@ -449,6 +449,21 @@
ScreenManager::instance()->pop_screen();
}
+void
+EditorScreen::resize(const Size& size)
+{
+ gui_manager->set_rect(Rect(Vector2i(0, 0), size));
+
+ object_selector->set_rect(Rect(size.width-244, 38, size.width, size.height));
+
+ if (object_selector->is_visible())
+ viewport->set_rect(Rect(0, 38, size.width - 244, size.height));
+ else
+ viewport->set_rect(Rect(0, 38, size.width, size.height));
+
+ object_properties->set_rect(Rect(Vector2i(0, size.height-150), Size(200,
150)));
+}
+
} // namespace Editor
/* EOF */
Modified: trunk/pingus/src/editor/editor_screen.hpp
===================================================================
--- trunk/pingus/src/editor/editor_screen.hpp 2007-09-26 23:00:03 UTC (rev
3249)
+++ trunk/pingus/src/editor/editor_screen.hpp 2007-09-27 03:12:35 UTC (rev
3250)
@@ -137,6 +137,8 @@
void exit();
+ void resize(const Size&);
+
private:
EditorScreen (const EditorScreen&);
EditorScreen& operator= (const EditorScreen&);
Modified: trunk/pingus/src/editor/editor_viewport.cpp
===================================================================
--- trunk/pingus/src/editor/editor_viewport.cpp 2007-09-26 23:00:03 UTC (rev
3249)
+++ trunk/pingus/src/editor/editor_viewport.cpp 2007-09-27 03:12:35 UTC (rev
3250)
@@ -573,6 +573,7 @@
void
EditorViewport::update_layout()
{
+ std::cout << "Viewport: Rect: " << rect.get_width() << " " <<
rect.get_height() << std::endl;
state.set_size(rect.get_width(), rect.get_height());
drawing_context->set_rect(rect);
}
Modified: trunk/pingus/src/gui/gui_manager.cpp
===================================================================
--- trunk/pingus/src/gui/gui_manager.cpp 2007-09-26 23:00:03 UTC (rev
3249)
+++ trunk/pingus/src/gui/gui_manager.cpp 2007-09-27 03:12:35 UTC (rev
3250)
@@ -30,7 +30,7 @@
namespace GUI {
GUIManager::GUIManager ()
- : GroupComponent(Rect(0, 0, Display::get_width(), Display::get_height())),
+ : GroupComponent(Rect(0, 0, Display::get_width(), Display::get_height()),
false),
mouse_pos(400,300)
{
}
Modified: trunk/pingus/src/gui/screen.hpp
===================================================================
--- trunk/pingus/src/gui/screen.hpp 2007-09-26 23:00:03 UTC (rev 3249)
+++ trunk/pingus/src/gui/screen.hpp 2007-09-27 03:12:35 UTC (rev 3250)
@@ -23,6 +23,7 @@
#include "SDL.h"
#include "game_delta.hpp"
+class Size;
class DrawingContext;
/** A interface for screens. A screen is a Pingus 'thing' which gets
@@ -53,6 +54,8 @@
newly pushed screen */
virtual void on_shutdown () {}
+ virtual void resize(const Size&) {}
+
private:
Screen (const Screen&);
Screen& operator= (const Screen&);
Modified: trunk/pingus/src/gui/screen_manager.cpp
===================================================================
--- trunk/pingus/src/gui/screen_manager.cpp 2007-09-26 23:00:03 UTC (rev
3249)
+++ trunk/pingus/src/gui/screen_manager.cpp 2007-09-27 03:12:35 UTC (rev
3250)
@@ -221,7 +221,7 @@
if (!screens.empty ())
{
- screens.back ()->on_startup ();
+ screens.back()->on_startup ();
}
}
@@ -294,6 +294,12 @@
ScreenManager::resize(const Size& size)
{
std::cout << "Resize: " << size.width << "x" << size.height << std::endl;
+
+ // FIXME: Calling this causes horrible flicker, any better way to resize the
screen?
+ Display::set_video_mode(size.width, size.height);
+
+ get_current_screen()->resize(size);
+
}
void
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3250 - in trunk/pingus/src: display editor gui,
grumbel at BerliOS <=