1 /*************************************************************************** 2 main.h - description 3 ------------------- 4 begin : may 28th, 2003 5 copyright : (C) 2003-2008 by Duong Khang NGUYEN 6 email : neoneurone @ gmail com 7 8 $Id: main.h 467 2014-04-18 17:25:19Z neoneurone $ 9 ***************************************************************************/ 10 11 /*************************************************************************** 12 * * 13 * This program is free software; you can redistribute it and/or modify * 14 * it under the terms of the GNU General Public License as published by * 15 * the Free Software Foundation; either version 2 of the License, or * 16 * any later version. * 17 * * 18 ***************************************************************************/ 19 20 21 #ifndef _OPENCITY_MAIN_H_ 22 #define _OPENCITY_MAIN_H_ 1 23 24 #ifndef __WIN32__ 25 #ifdef HAVE_CONFIG_H 26 #include "config.h" // Checks for headers generated by configure 27 #endif 28 #else 29 #include "../win32/config.h" 30 #endif 31 32 /* for reference, included by "SDL_opengl.h" 33 #include <GL/gl.h> // OpenGL 34 #include <GL/glu.h> 35 *--- 36 Under Windows, OpenGL 1.2 & 1.3 functionalities are not defined. 37 They are treated as extensions, that's why we have the following lines 38 Without this, glEnable( GL_RESCALE_NORMAL ) doesn't work under win32 39 ----* 40 #ifdef __WIN32__ 41 #include <GL/glext.h> 42 #endif 43 44 // Use glext prototypes from SDL library 45 #if defined(__WIN32__) && !defined(GL_GLEXT_PROTOTYPES) 46 #define GL_GLEXT_PROTOTYPES 1 47 #endif 48 */ 49 50 /* for reference, included by GCC's option "-ansi" 51 #ifndef __STRICT_ANSI__ 52 #define __STRICT_ANSI__ 1 // Let's stay with the standard 53 // This avoids "long long" from SDL.h 54 #endif 55 */ 56 57 #include "SDL.h" // Simple Directmedia Library 58 #include "SDL_thread.h" // Portable thread 59 #include "SDL_opengl.h" // Portable OpenGL headers 60 61 #include <string> // New standard not something.h ok ? 62 using std::string; 63 64 #include "macros.h" // Our macros 65 #include "enum.h" // Our enums 66 67 class UI; 68 69 70 // OpenCity's types --> for future releases and porting work 71 #define OC_SHORT short int 72 #define OC_USHORT short unsigned int 73 74 #define OC_INT int 75 #define OC_UINT unsigned int 76 77 #define OC_LINT long int 78 #define OC_ULINT unsigned long int 79 80 #define OC_CHAR char 81 #define OC_UCHAR unsigned char 82 #define OC_BYTE unsigned char 83 84 #define OC_FLOAT float 85 86 #define OC_DATE int 87 88 // game default parameters 89 #define OC_FUND_START 15000 90 #define OC_R_INCOME_TAX 8 91 #define OC_C_INCOME_TAX 8 92 #define OC_I_INCOME_TAX 9 93 #define OC_INCOME_HELP 10 // let's say this is government help ;) 94 95 #define OC_MAP_HEIGHT_MAX 10 96 #define OC_MAP_HEIGHT_MIN -10 97 98 #define OC_CITY_W 100 // Watch out ! if you change this you must change 99 #define OC_CITY_L 100 // the value of OC_SIMULATOR_LAG* too, 100 // It's dangerous ! 101 // Don't touch it if you don't know what you do 102 103 #define OC_CHANCE_COUNTER_MAX 300 // help the random method to find a structure 104 // should be equal to 3% of city surface 105 106 // Sound & Music list file's name 107 #define OC_MUSIC_LIST_FILENAME "music/music.m3u" 108 #define OC_SOUND_LIST_FILENAME "sound/sound.m3u" 109 110 // OpenCity's config file 111 #define OC_GRAPHISM_FILE_FILENAME "config/graphism.conf" 112 113 // Simulators' defines. 114 // Bad values can block your system, don't change them ! 115 #define OC_MS_PER_FRAME 10 // Milliseconds delay per frame 116 #define OC_MS_PER_DAY 1750 // Milliseconds delay per day 117 #define OC_MS_GLOBAL_LOG_FACTOR 500 118 #define OC_MS_STRUCTURE_LOG_FACTOR 400 119 120 // Color defines 121 #define OC_CLEAR_COLOR .0, .0, 0.25, 1.0 122 #define OC_RED_COLOR 255, 0, 0 123 #define OC_GREEN_COLOR 0, 255, 0 124 #define OC_BLUE_COLOR 0, 0, 255 125 #define OC_YELLOW_COLOR 255, 255, 0 126 #define OC_PINK_COLOR 255, 0, 255 127 #define OC_WHITE_COLOR 255, 255, 255 128 #define OC_BLACK_COLOR 0, 0, 0 129 130 #define OC_LIGHT_MODEL_AMBIENT 0.7, 0.7, 0.7, 1.0 131 132 133 134 /*=====================================================================*/ 135 /* GLOBAL FUNCTIONS */ 136 /*=====================================================================*/ 137 138 //======================================================================== 139 /** Prefix the specified path "s" with the data home directory 140 \param s The path to be prefixed 141 \return The modified path 142 */ 143 string ocDataDirPrefix( const string& s ); 144 145 string ocConfigDirPrefix( const string& s ); 146 147 148 //======================================================================== 149 /** Prefix the specified path "s" with the save directory 150 \param s The path to be prefixed 151 \return The modified path 152 */ 153 string ocSaveDirPrefix( const string& s ); 154 155 156 //======================================================================== 157 /** Get the current version of the application as a string value. 158 \return The string value of the current version. 159 */ 160 string ocStrVersion(); 161 162 163 //======================================================================== 164 /** Get the current version of the application as a long value. 165 \return The long value of the current version. 166 */ 167 long ocLongVersion(); 168 169 170 /*=====================================================================*/ 171 /* MAIN FUNCTIONS */ 172 /*=====================================================================*/ 173 void ocRestart(); 174 void ocQuit( const int = 0 ); 175 void ocSetNewUI( UI* ); 176 177 178 #endif 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207