src/Graphics/GameView.cc
branchnew_graphics
changeset 412 721c60072091
parent 411 106aaf6eadfe
child 414 cede5463b845
--- a/src/Graphics/GameView.cc	Wed Jan 21 03:33:35 2009 +0200
+++ b/src/Graphics/GameView.cc	Wed Jan 21 23:07:22 2009 +0200
@@ -8,15 +8,16 @@
 {
 
 GameView::GameView (GameState &state, LocalPlayer *player) :
-    View(PixelArea(0, 0, graphics->display.get_width, graphics->display.get_height)),
-    state(state), player(NULL), info_view(NULL), message_view(getMessageViewArea())
+    View(PixelArea(0, 0, graphics->display.get_width(), graphics->display.get_height())),
+    state(state), player(NULL), info_view(NULL), message_view(getMessageViewArea()),
+    flags(0)
 {
     // have player?
     if (player)
         setPlayer(player);
 
     // insert message
-    message_view.add_message("Hello World!");
+    message_view.add_message(CL_Color::white, "Hello World!");
 }
 
 void GameView::setPlayer (LocalPlayer *player) {
@@ -29,9 +30,25 @@
     info_view = new PlayerInfoView(getInfoViewArea(), player);
 }
 
+/*
+ * Helper function for Camera
+ */
+static PixelDimension value_between (PixelDimension low, PixelDimension value, PixelDimension high) {
+        if (high < low)
+            return (high + low) / 2;
 
-void GameView::draw (Display *display) {
-    CL_GraphicContext *gc = display->get_gc();
+        else if (value < low)
+            return low;
+
+        else if (value > high)
+            return high;
+
+        else
+            return value;
+}
+
+void GameView::draw (Display &display) {
+    CL_GraphicContext *gc = display.get_gc();
 
     // calculate camera
     PixelCoordinate camera(0, 0);
@@ -39,7 +56,7 @@
     // ...to track our local player
     if (player != NULL) {
         // display resolution
-        PixelCoordinate resolution = display->getResolution();
+        PixelCoordinate resolution = display.getResolution();
 
         // try and center the screen on the player
         PixelCoordinate target = player->getCoordinate() - PixelCoordinate(resolution.x / 2, (resolution.y - 100) / 2);
@@ -58,14 +75,14 @@
     gc->clear(CL_Color::black);
 
     // Draw the game
-    state.draw(this, camera, flags & GUI_INPUT_DISPLAY_WEAPON);
+    state.draw(display, camera, flags & GUI_INPUT_DISPLAY_WEAPON);
     
     // draw info view?
     if (info_view)
         info_view->draw(display);
 
     // draw messages
-    message_view.draw(this);
+    message_view.draw(display);
 }
 
 void GameView::resize (const PixelArea &new_area) {
@@ -78,7 +95,7 @@
     message_view.resize(getMessageViewArea());
 
     // log message
-    message_view.add_message(CL_Color::yellow, CL_String::format("[ Resized window to %1 x %2 ]", getWidth(), getHeight()));
+    message_view.add_message(CL_Color::yellow, CL_String::format("[ Resized window to %1 x %2 ]", (int) getWidth(), (int) getHeight()));
 }