diff -r 106aaf6eadfe -r 721c60072091 src/Graphics/GameView.cc --- 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())); }