drawing the GameView works new_graphics
authorTero Marttila <terom@fixme.fi>
Wed, 21 Jan 2009 23:25:29 +0200
branchnew_graphics
changeset 413 7dddc163489a
parent 412 721c60072091
child 414 cede5463b845
drawing the GameView works
src/Engine.cc
src/Graphics/Display.cc
src/Graphics/Display.hh
src/Graphics/Graphics.hh
src/Graphics/PlayerInfoView.cc
src/Graphics/View.hh
--- a/src/Engine.cc	Wed Jan 21 23:07:22 2009 +0200
+++ b/src/Engine.cc	Wed Jan 21 23:25:29 2009 +0200
@@ -75,7 +75,7 @@
 
     // put graphics into GameView mode
     if (graphics)
-        graphics->displayGameView(*game_state, game_state->getLocalPlayer());
+        graphics->displayGameView(*game_state, lp);
  
 }
 
--- a/src/Graphics/Display.cc	Wed Jan 21 23:07:22 2009 +0200
+++ b/src/Graphics/Display.cc	Wed Jan 21 23:25:29 2009 +0200
@@ -10,12 +10,15 @@
     config(config), 
     fullscreen_resolution(0, 0),
     update_timer(GRAPHICS_UPDATE_INTERVAL_MS), 
-    target(NULL)
+    current_view(NULL)
 {
     // connect timer signal
     slots.connect(update_timer.sig_tick(), this, &Display::on_update);
     slots.connect(this->sig_resize(), this, &Display::on_window_resize);
 
+    // enable timer
+    update_timer.start();
+
     // set correct fullscreen resolution
     if (config.fullscreen) {
         fullscreen_resolution = config.resolution;
@@ -49,6 +52,14 @@
     return *best_mode;
 }
 
+void Display::setView (View *view) {
+    this->current_view = view;
+    
+    // resize to fill display
+    if (view)
+        view->resize(PixelArea(0, 0, get_width(), get_height()));
+}
+
 void Display::toggle_fullscreen (void) {
     if (is_fullscreen()) {
         // enter windowed mode
@@ -64,9 +75,9 @@
     (void) dt;
 
     // do we have something to draw?
-    if (target) {
+    if (current_view) {
         // draw it
-        target->draw(*this);
+        current_view->draw(*this);
 
         // flip buffers, sync
         flip(1);
@@ -80,6 +91,10 @@
     // ignore resize in fullscreen mode
     if (is_fullscreen())
         return;
+
+    // resize view
+    if (current_view)
+        current_view->resize(PixelArea(0, 0, new_x, new_y));
 }
 
 
--- a/src/Graphics/Display.hh	Wed Jan 21 23:07:22 2009 +0200
+++ b/src/Graphics/Display.hh	Wed Jan 21 23:25:29 2009 +0200
@@ -22,7 +22,7 @@
 
 }
 
-#include "Drawable.hh"
+#include "View.hh"
 #include "../Timer.hh"
 
 #include <ClanLib/display.h>
@@ -53,7 +53,7 @@
     /**
      * What we draw
      */
-    Drawable *target;
+    View *current_view;
 
     CL_SlotContainer slots;
 
@@ -85,11 +85,9 @@
     }
 
     /**
-     * Set draw target
+     * Display the given view, this will initialize resize it to the right size
      */
-    void setTarget (Drawable *target) {
-        this->target = target;
-    }
+    void setView (View *view);
 
     /**
      * Shift back and forth between fullscreen and windowed mode, retaining resolutions
--- a/src/Graphics/Graphics.hh	Wed Jan 21 23:07:22 2009 +0200
+++ b/src/Graphics/Graphics.hh	Wed Jan 21 23:25:29 2009 +0200
@@ -49,7 +49,7 @@
         GameView *view = new GameView(state, player);
 
         // assign it to the display
-        display.setTarget(view);
+        display.setView(view);
     }
 
 };
--- a/src/Graphics/PlayerInfoView.cc	Wed Jan 21 23:07:22 2009 +0200
+++ b/src/Graphics/PlayerInfoView.cc	Wed Jan 21 23:25:29 2009 +0200
@@ -59,7 +59,7 @@
         area.left + 20 + 100 * bar_length,
         area.top + 10,
         sskills.str(),
-        display.get_gc()
+        gc
     );
     
     // stats - deaths
@@ -69,7 +69,7 @@
         area.left + 20 + 100 * bar_length,
         area.top + 30,
         ssdeaths.str(),
-        display.get_gc()
+        gc
     );
     
     // stats - ratio
@@ -79,7 +79,7 @@
         area.left + 20 + 100 * bar_length,
         area.top + 50,
         ssratio.str(),
-        display.get_gc()
+        gc
     );
     
 
@@ -116,7 +116,7 @@
         area.left + 20 + 100 * bar_length,
         area.top + 70,
         player->getCurrentWeapon()->getName(),
-        display.get_gc()
+        gc
     );
 }
 
--- a/src/Graphics/View.hh	Wed Jan 21 23:07:22 2009 +0200
+++ b/src/Graphics/View.hh	Wed Jan 21 23:25:29 2009 +0200
@@ -1,7 +1,15 @@
 #ifndef GRAPHICS_VIEW_HH
 #define GRAPHICS_VIEW_HH
 
+namespace graphics
+{
+
+class View;
+
+}
+
 #include "Drawable.hh"
+#include "Display.hh"
 #include "../Types.hh"
 
 namespace graphics
@@ -10,7 +18,7 @@
 /**
  * A view is some area of the display that displays something
  */
-class View : public Drawable {
+class View /* : public Drawable */ {
 protected:
     /**
      * The area of the screen that is ours to draw on
@@ -28,6 +36,11 @@
     }
 
     /**
+     * Draw into the view area
+     */
+    virtual void draw (Display &display) = 0;
+
+    /**
      * Update the view area
      */
     virtual void resize (const PixelArea &new_area) {