src/Graphics.hh
author Tero Marttila <terom@fixme.fi>
Wed, 21 Jan 2009 00:21:42 +0200
changeset 409 1a03ff151abc
parent 408 e6cfc44266af
permissions -rw-r--r--
add --terrain-seed and --terrain-size arguments, plus bugfixes
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     1
#ifndef GRAPHICS_HH
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     2
#define GRAPHICS_HH
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     3
233
ff4ecea83cf5 start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents: 205
diff changeset
     4
#include "GraphicsPointer.hh"
408
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
     5
#include "Types.hh"
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
     6
#include "Config.hh"
408
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
     7
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
     8
/** 
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
     9
 * Parameters used by Graphics
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
    10
 */
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    11
struct GraphicsConfig {
408
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
    12
    /** Initial resolution to use */
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
    13
    PixelCoordinate resolution;
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
    14
    
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
    15
    /* Use fullscreen mode at startup */
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
    16
    bool fullscreen;
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    17
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    18
    /** Defaults */
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    19
    GraphicsConfig (void) : resolution(GRAPHICS_RESOLUTION_WIDTH, GRAPHICS_RESOLUTION_HEIGHT), fullscreen(GRAPHICS_FULLSCREEN) { }
408
e6cfc44266af reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
Tero Marttila <terom@fixme.fi>
parents: 394
diff changeset
    20
}; 
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    21
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    22
#include "GameState.hh"
233
ff4ecea83cf5 start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents: 205
diff changeset
    23
#include "Input.hh"
205
905028e58ed1 implement a new tick-timer that doesn't suck
terom
parents: 185
diff changeset
    24
#include "Timer.hh"
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    25
#include "Engine.hh"
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    26
393
5dd4d782cf3a a basic implementation of game messages, plus some weird GameStateEvent stuff
Tero Marttila <terom@fixme.fi>
parents: 392
diff changeset
    27
#include "GameMessageView.hh"
5dd4d782cf3a a basic implementation of game messages, plus some weird GameStateEvent stuff
Tero Marttila <terom@fixme.fi>
parents: 392
diff changeset
    28
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    29
#include <ClanLib/core.h>
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    30
#include <ClanLib/gl.h>
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    31
#include <ClanLib/display.h>
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    32
283
7540b0859579 start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents: 275
diff changeset
    33
/**
7540b0859579 start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents: 275
diff changeset
    34
 * This handles drawing the GameState with an appropriate camera view each frame, loading fonts, and currently,
7540b0859579 start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents: 275
diff changeset
    35
 * handling the input from Input to GameState.
7540b0859579 start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents: 275
diff changeset
    36
 */
393
5dd4d782cf3a a basic implementation of game messages, plus some weird GameStateEvent stuff
Tero Marttila <terom@fixme.fi>
parents: 392
diff changeset
    37
class Graphics : public GameStateEventHandler, public CL_DisplayWindow {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    38
private:
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    39
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    40
     * Our engine reference
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    41
     */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    42
    Engine &engine;
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    43
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    44
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    45
     * GameState we are associated with
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    46
     */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    47
    GameState &state;
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    48
    
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    49
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    50
     * Current window resolution
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    51
     */
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    52
    PixelCoordinate resolution;
266
ad72d0a0cc02 increase the map size and control the camera to always have the screen full of terrain
terom
parents: 235
diff changeset
    53
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    54
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    55
     * Target resolution in fullscreen/windowed mode
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    56
     */
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    57
    PixelCoordinate fullscreen_resolution, window_resolution;
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    58
    
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    59
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    60
     * ClanLib signal slots
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    61
     */ 
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    62
    CL_SlotContainer slots;
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    63
    
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    64
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    65
     * Our timer that drives redraws
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    66
     */
205
905028e58ed1 implement a new tick-timer that doesn't suck
terom
parents: 185
diff changeset
    67
    Timer update_timer;
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    68
    
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    69
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    70
     * Our input handler for GUI and Player input
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    71
     */
235
0a0c729365ee code cleanup
terom
parents: 233
diff changeset
    72
    Input input;
233
ff4ecea83cf5 start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents: 205
diff changeset
    73
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    74
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    75
     * Current GUI input state
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    76
     */
233
ff4ecea83cf5 start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents: 205
diff changeset
    77
    GuiInput flags;
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    78
    
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    79
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    80
     * A basic font
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    81
     */
233
ff4ecea83cf5 start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents: 205
diff changeset
    82
    CL_Font simple_font;
ff4ecea83cf5 start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents: 205
diff changeset
    83
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    84
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    85
     * View components
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    86
     */
393
5dd4d782cf3a a basic implementation of game messages, plus some weird GameStateEvent stuff
Tero Marttila <terom@fixme.fi>
parents: 392
diff changeset
    87
    GameMessageView message_view;
5dd4d782cf3a a basic implementation of game messages, plus some weird GameStateEvent stuff
Tero Marttila <terom@fixme.fi>
parents: 392
diff changeset
    88
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    89
public:
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    90
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    91
     *
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
    92
     */
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    93
    Graphics (Engine &engine, GameState &state, const GraphicsConfig &config);
392
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    94
    
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    95
    /**
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    96
     * Returns a CL_Font that can be used for drawing text
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    97
     */
233
ff4ecea83cf5 start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents: 205
diff changeset
    98
    CL_Font& getSimpleFont (void) { return simple_font; }
392
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    99
    
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
   100
    /**
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
   101
     * Returns a vector of CL_DisplayModes that lists possible display modes to use for fullscreen mode.
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
   102
     */
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
   103
    static const std::vector<CL_DisplayMode> & getDisplayModes (void);
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 315
diff changeset
   104
392
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
   105
    /**
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
   106
     * Returns the "best" CL_DisplayMode to use for fullscreen mode.
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
   107
     *
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
   108
     * Currently, this just means the largest resolution.
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
   109
     */
6c4dc68360eb remove unused graphics_default, and default to the highest resolution available in fullscreen mode
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
   110
    static const CL_DisplayMode getBestMode (void);
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   111
    
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   112
private:
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 315
diff changeset
   113
    /**
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   114
     * Shift back and forth between fullscreen and windowed mode, retaining resolutions
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   115
     */
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   116
    void toggle_fullscreen (void);
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   117
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   118
    /**
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 315
diff changeset
   119
     * Reads current input events from Input and applies them, using LocalPlayer::handleInput and
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 315
diff changeset
   120
     * Graphics::handle_input.
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 315
diff changeset
   121
     */
311
440763821484 make Input have its own timer, and add key-repeat handling, and fix some warnings
terom
parents: 283
diff changeset
   122
    void check_input (void);
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 315
diff changeset
   123
    
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 315
diff changeset
   124
    /**
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 315
diff changeset
   125
     * Handles GuiInput flags read from Input.
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 315
diff changeset
   126
     */
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 315
diff changeset
   127
    void handle_input (GuiInput flags);
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   128
    
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   129
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   130
     * Redraws entire screen
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   131
     */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   132
    void do_redraw (void);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   133
    
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   134
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   135
     * Handles input and redraws screen
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   136
     */
205
905028e58ed1 implement a new tick-timer that doesn't suck
terom
parents: 185
diff changeset
   137
    void on_update (TimeMS tick_length);
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   138
    
394
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   139
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   140
     * Draws status view
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   141
     */
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   142
    void draw_player_info (CL_GraphicContext *gc, Player *p);
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   143
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   144
    /**
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   145
     * Handles window resize. This just updates resolution
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   146
     */
82def222fe7d try and implement resize in a sane way, but changeing from windowed mode to fullscreen mode is now kind of weird
Tero Marttila <terom@fixme.fi>
parents: 393
diff changeset
   147
    void on_window_resize (int new_x, int new_y);
393
5dd4d782cf3a a basic implementation of game messages, plus some weird GameStateEvent stuff
Tero Marttila <terom@fixme.fi>
parents: 392
diff changeset
   148
        
5dd4d782cf3a a basic implementation of game messages, plus some weird GameStateEvent stuff
Tero Marttila <terom@fixme.fi>
parents: 392
diff changeset
   149
protected:
5dd4d782cf3a a basic implementation of game messages, plus some weird GameStateEvent stuff
Tero Marttila <terom@fixme.fi>
parents: 392
diff changeset
   150
    /* GameStateEventHandler */    
5dd4d782cf3a a basic implementation of game messages, plus some weird GameStateEvent stuff
Tero Marttila <terom@fixme.fi>
parents: 392
diff changeset
   151
    virtual void on_player_joined (Player *p);
5dd4d782cf3a a basic implementation of game messages, plus some weird GameStateEvent stuff
Tero Marttila <terom@fixme.fi>
parents: 392
diff changeset
   152
    virtual void on_player_left (Player *p);
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   153
};
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   154
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   155
#endif /* GRAPHICS_HH */