src/Graphics/GameView.cc
author Tero Marttila <terom@fixme.fi>
Wed, 21 Jan 2009 01:57:24 +0200
branchnew_graphics
changeset 410 41fd46cffc52
child 411 106aaf6eadfe
permissions -rw-r--r--
start working out the Graphics/* code, this is a long way from compiling, let alone working

#include "GameView.hh"

namespace graphics
{


void GameView::draw (Display *display) {
    CL_GraphicContext *gc = display->get_gc();

    // calculate camera
    PixelCoordinate camera(0, 0);
    
    // ...to track our local player
    if (player != NULL) {
        // display resolution
        PixelCoordinate resolution = display->getResolution();

        // try and center the screen on the player
        PixelCoordinate target = player->getCoordinate() - PixelCoordinate(resolution.x / 2, (resolution.y - 100) / 2);

        // ...but keep the world in view
        PixelCoordinate max = state.terrain.getDimensions() - resolution + PixelCoordinate(0, 100);
        
        // ...by limiting the value to 0...max
        camera = PixelCoordinate(
            value_between(0, target.x, max.x),
            value_between(0, target.y, max.y)
        );
    }
    
    // Black background
    gc->clear(CL_Color::black);

    // Draw the game
    state.draw(this, camera, flags & GUI_INPUT_DISPLAY_WEAPON);
    
    // draw player info box
    if (player != NULL) {
        draw_player_info(gc, player);
    }
    
    // draw messages
    message_view.draw(this);
}


};