src/Application.hh
author Tero Marttila <terom@fixme.fi>
Wed, 21 Jan 2009 00:21:42 +0200
changeset 409 1a03ff151abc
parent 408 e6cfc44266af
child 411 106aaf6eadfe
permissions -rw-r--r--
add --terrain-seed and --terrain-size arguments, plus bugfixes
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
         */
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    26
        bool graphics_enabled;
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    27
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    28
        /**
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    29
         * --fullscreen and --resolution
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    30
         */
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    31
        GraphicsConfig graphics;
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    32
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    33
        /**
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    34
         * --terrain-seed and --terrain-size
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    35
         */
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    36
        TerrainConfig terrain;
358
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
         * --port
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    40
         */
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    41
        std::string net_port;
358
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    42
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    43
        /**
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    44
         * --server
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    45
         */
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    46
        bool net_server;
358
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    47
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    48
        /**
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    49
         * --connect
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    50
         */
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    51
        std::string net_connect;
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    52
        
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    53
        
389
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
         * Set the arg_* members
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    56
         *
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    57
         * @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
    58
         */
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    59
        bool parse_args (int argc, char **argv);
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    60
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    61
        /**
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    62
         * Parse signed integer argument
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    63
         */
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    64
        int parse_arg_int (const std::string &arg_val, const char *arg_name);
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    65
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    66
        /**
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    67
         * Parse unsigned WIDTHxHEIGHT argument
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    68
         */
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    69
        PixelCoordinate parse_arg_dimensions (const std::string &arg_val, const char *arg_name);
358
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    70
        
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    71
        /**
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    72
         * Print out a list of display modes
358
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    73
         */
389
e74c1820fbd2 implement --help, --fullscreen, --resolution and --list-modes
Tero Marttila <terom@fixme.fi>
parents: 358
diff changeset
    74
        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
    75
        
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    76
        /**
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    77
         * 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
    78
         */
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 389
diff changeset
    79
        void dump_version (void);
358
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    80
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    81
    public:
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    82
        /**
409
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    83
         * Setup default values
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    84
         */
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    85
        Main (void);
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    86
1a03ff151abc add --terrain-seed and --terrain-size arguments, plus bugfixes
Tero Marttila <terom@fixme.fi>
parents: 408
diff changeset
    87
        /**
358
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    88
         * IT BEGAN IN AFRIKA
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    89
         */
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    90
        virtual int main (int argc, char **argv);
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    91
} app;
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    92
37b18b779ffb PIMP MAH DOXYGEN
terom
parents:
diff changeset
    93
#endif