src/Application.hh
author Tero Marttila <terom@fixme.fi>
Tue, 20 Jan 2009 23:30:18 +0200
changeset 408 e6cfc44266af
parent 397 13fa0546ef87
child 409 1a03ff151abc
permissions -rw-r--r--
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
358
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
     1
#ifndef APPLICATION_HH
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
     2
#define APPLIATION_HH
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
     3
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
     4
#include "Engine.hh"
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
     5
#include "Error.hh"
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
     6
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
     7
#include <ClanLib/core.h>
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
     8
#include <ClanLib/application.h>
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
     9
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    10
class ArgumentError : public Error {
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    11
    public:
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    12
        ArgumentError (const std::string &message) : Error(message) { }
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    13
};
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    14
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    15
/**
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    16
 * Our CL_ClanApplication. Provides our main function, handles argument parsing and interacts with Engine
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    17
 */
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    18
class Main : public CL_ClanApplication {
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    19
    private:
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    20
        // arguments
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    21
        CL_CommandLine args;
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    22
        
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    23
        /**
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    24
         * --graphics
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    25
         */
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    26
        bool arg_graphics;
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    27
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    28
        /**
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    29
         * --port
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    30
         */
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    31
        std::string arg_port;
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    32
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    33
        /**
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    34
         * --server
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    35
         */
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    36
        bool arg_server;
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    37
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    38
        /**
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    39
         * --connect
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    40
         */
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    41
        std::string arg_connect;
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    42
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    43
        /**
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: 397
diff changeset
    44
         * --fullscreen and --resolution
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    45
         */
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: 397
diff changeset
    46
        GraphicsConfiguration graphics;
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    47
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    48
        /**
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    49
         * Set the arg_* members
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    50
         *
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    51
         * @return true if execution should proceed, false if execution should stop
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    52
         */
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    53
        bool parse_args (int argc, char **argv);
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    54
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    55
        /**
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    56
         * Parse and set --resolution/arg_resolution WIDTHxHEIGHT
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    57
         */
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    58
        void parse_arg_resolution (const std::string &val);
358
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    59
        
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    60
        /**
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    61
         * Print out a list of display modes
358
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    62
         */
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    63
        void dump_display_modes (void);
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    64
        
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    65
        /**
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    66
         * Print out our project version
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    67
         */
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    68
        void dump_version (void);
358
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    69
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    70
    public:
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    71
        /**
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    72
         * IT BEGAN IN AFRIKA
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    73
         */
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    74
        virtual int main (int argc, char **argv);
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    75
} app;
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    76
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    77
#endif