--- 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()));
}