1 /* ---------------------------------------------------------------------- * 2 * lin-city.h 3 * This file is part of lincity. 4 * Lincity is copyright (c) I J Peters 1995-1997, (c) Greg Sharp 1997-2001. 5 * ---------------------------------------------------------------------- */ 6 7 #ifndef __lin_city_h__ 8 #define __lin_city_h__ 9 10 #include <stdio.h> 11 12 /* 13 The mouse sensitivity can be an integer such as 1, 2, 3 etc. 14 The higher the number the less you have to move the mouse. 15 It's a bit crude, it just multiples the mouse movement by this 16 amount. IMHO 3 is about the maximum useful value, 2 is quite 17 comfortable. 18 ** This is only relevant for linux-svgalib. ** 19 */ 20 #define MOUSE_SENSITIVITY 1 21 22 /* 23 When your money reaches 1 million or more, to make it easier to 24 read, it is split into two parts; a millions part, and the rest. 25 For example 12,355232 You can choose any character you like, 26 but I have given some other examples. Just comment out the one 27 above, and uncomment one below. IT MUST NOT BE NULL. 28 #define MONEY_SEPARATOR '.' 29 #define MONEY_SEPARATOR ' ' 30 #define MONEY_SEPARATOR ':' 31 */ 32 #define MONEY_SEPARATOR ',' 33 34 /* 35 #define MP_SANITY_CHECK 36 */ 37 38 /* The number of milliseconds between scrolling text on the initial screen */ 39 #define SPLASH_SCROLL_DELAY 30 /* was 30 */ 40 41 /* 42 ************************************************ 43 NO USER CONFIGURABLE OPTIONS BEYOND THIS POINT 44 ************************************************ 45 */ 46 47 /* VERSION_INT is used in the load/save code. All other code uses 48 the symbol VERSION in config.h */ 49 #define VERSION_INT 112 50 51 /* Don't load if < MIN_LOAD_VERSION */ 52 #define MIN_LOAD_VERSION 97 53 54 /* Load corrections if version <= MM_MS_C_VER (max markets/substations) */ 55 #define MM_MS_C_VER 97 56 57 /* Load corrections if version <= MG_C_VER (max monthgraph size) */ 58 #define MG_C_VER 111 59 60 #if defined (WIN32) 61 #define PATH_SLASH '\\' 62 #define PATH_SLASH_STRING "\\" 63 #else 64 #define PATH_SLASH '/' 65 #define PATH_SLASH_STRING "/" 66 #endif 67 68 #define USE_X11_PIXMAPS 69 70 #ifndef TRUE 71 #define TRUE 1 72 #endif 73 #ifndef FALSE 74 #define FALSE 0 75 #endif 76 77 /* Used by HandleError () */ 78 #define FATAL -1 79 #define WARNING -2 80 81 #ifndef M_PI 82 #define M_PI 3.14159265358979323846 83 #endif 84 85 86 /* comment out the the next three lines for _slightly_ faster X drawing. */ 87 #ifdef LC_X11 88 #define ALLOW_PIX_DOUBLING 89 #endif 90 91 /* 92 Gamma correction. The numbers GAMMA_CORRECT_X are between 0.0 and 1.0 93 The following values are enabled with the -w option. This seems quite 94 good for 'washed out' monitors that lack red. 95 You can also set the values from the command line. 96 [x]lincity -R 1.0 -G 0.0 -B 0.4 is the same as [x]lincity -w 97 */ 98 #define GAMMA_CORRECT_RED 1.0 99 #define GAMMA_CORRECT_GREEN 0.0 100 #define GAMMA_CORRECT_BLUE 0.4 101 102 #define PROFILE_COUNTDOWN 10000 103 104 /* hof is 70 from 28/12 */ 105 106 #define DEBUG 107 108 /* 109 #define DEBUG_ENGINE 1 110 #define ALLOW_TCORE_DUMP 111 #define DEBUG_ROCKETS 112 #define DEBUGMOUSE 113 #define DEBUG_MOUSE 114 #define DEBUG_MAIN_SCREEN 115 #define DEBUG_GET_POWER 116 if DEBUG_KEYS is defined, pressing certain keys add money, tech points etc. 117 #define DEBUG_KEYS 1 118 */ 119 /* 120 #define CS_PROFILE 121 */ 122 123 #if defined (LC_X11) || defined (WIN32) 124 #define BORDERX 30 125 #define BORDERY 30 126 #endif 127 128 #define TEXT_FG_COLOUR (white(24)) 129 #define TEXT_BG_COLOUR 105 130 #define YN_DIALBOX_BG_COLOUR (red(10)) 131 #define LOAD_BG_COLOUR (cyan(10)) 132 #define SAVE_BG_COLOUR (magenta(10)) 133 #define NW_BG_COLOUR (green(10)) 134 135 /* GCS: We are about to run out of bits on the flags, so in the future we 136 might need to implement compression. For example, FLAG_IS_RIVER is 137 only used for GROUP_WATER, FLAG_MB_COAL for GROUP_MARKET, and so on. */ 138 /* WCK: Compression would work, but that's complicated. I would rather move 139 FLAG_M?_* into an int_? variable. And add more int_? variables. That keeps 140 it simple and squeezes some life out of 32 bits. I don't think we need to 141 hurry. I'd rather replace the whole scheme. */ 142 #define FLAG_LEFT (1) 143 #define FLAG_UP (2) 144 #define FLAG_RIGHT (4) 145 #define FLAG_DOWN (8) 146 #define FLAG_POWERED (0x10) 147 #define FLAG_FED (0x20) 148 #define FLAG_EMPLOYED (0x40) 149 #define FLAG_IS_TRANSPORT (0x80) 150 #define FLAG_MB_FOOD (0x100) 151 #define FLAG_MS_FOOD (0x200) 152 #define FLAG_MB_JOBS (0x400) 153 #define FLAG_MS_JOBS (0x800) 154 #define FLAG_MB_COAL (0x1000) 155 #define FLAG_MS_COAL (0x2000) 156 #define FLAG_MB_ORE (0x4000) 157 #define FLAG_MS_ORE (0x8000) 158 #define FLAG_MB_GOODS (0x10000) 159 #define FLAG_MS_GOODS (0x20000) 160 #define FLAG_MB_STEEL (0x40000) 161 #define FLAG_MS_STEEL (0x80000) 162 #define FLAG_FIRE_COVER (0x100000) 163 #define FLAG_HEALTH_COVER (0x200000) 164 #define FLAG_CRICKET_COVER (0x400000) 165 #define FLAG_IS_RIVER (0x800000) 166 #define FLAG_HAD_POWER (0x1000000) 167 #define FLAG_MULTI_TRANSPORT (0x2000000) /* Is it a multitransport? */ 168 #define FLAG_MULTI_TRANS_PREV (0x4000000) 169 #define FLAG_POWER_LINE (0x8000000) 170 171 #define T_FOOD 0 172 #define T_JOBS 1 173 #define T_COAL 2 174 #define T_GOODS 3 175 #define T_ORE 4 176 #define T_STEEL 5 177 #define T_WASTE 6 178 179 #define MT_FAIL 0 180 #define MT_START 1 181 #define MT_CONTINUE 2 182 #define MT_SUCCESS 3 183 184 #define HOF_START 845830134 185 #define HOF_STOP 857843038 186 187 #define MINI_SCREEN_NORMAL_FLAG (0) 188 #define MINI_SCREEN_POL_FLAG (1) 189 #define MINI_SCREEN_UB40_FLAG (2) 190 #define MINI_SCREEN_STARVE_FLAG (3) 191 #define MINI_SCREEN_PORT_FLAG (4) 192 #define MINI_SCREEN_POWER_FLAG (5) 193 #define MINI_SCREEN_FIRE_COVER (6) 194 #define MINI_SCREEN_CRICKET_COVER (7) 195 #define MINI_SCREEN_HEALTH_COVER (8) 196 #define MINI_SCREEN_COAL_FLAG (9) 197 198 #define MAIN_SCREEN_NORMAL_FLAG (1) 199 #define MAIN_SCREEN_EQUALS_MINI (2) 200 201 #define SEED_RAND 202 #define OLD_LC_SAVE_DIR "Lin-city" 203 #if defined (WIN32) 204 #define LC_SAVE_DIR "SAVED_GAMES" 205 #define LINCITYRC_FILENAME "lincity.ini" 206 #else 207 /* GCS: Changed for 1.12 */ 208 /* #define LC_SAVE_DIR ".Lin-city" */ 209 #define LC_SAVE_DIR ".lincity" 210 #define LINCITYRC_FILENAME ".lincityrc" 211 #endif 212 #define RESULTS_FILENAME "results" 213 214 #define MAX_ICON_LEN 4096 215 #define WORLD_SIDE_LEN 100 216 #define NUMOF_DAYS_IN_MONTH 100 217 #define NUMOF_DAYS_IN_YEAR (NUMOF_DAYS_IN_MONTH*12) 218 #define FAST_TIME_FOR_YEAR 1 219 #define MED_TIME_FOR_YEAR 20 220 #define SLOW_TIME_FOR_YEAR 60 221 222 /* interest rate *10 ie 10 is 1% */ 223 #define INTEREST_RATE 15 224 225 #if defined (commentout) 226 #define HELP_BUTTON_X 608 227 #define HELP_BUTTON_Y 448 228 #define HELP_BUTTON_W 32 229 #define HELP_BUTTON_H 32 230 #define QUIT_BUTTON_X 608 231 #define QUIT_BUTTON_Y 416 232 #define QUIT_BUTTON_W 32 233 #define QUIT_BUTTON_H 32 234 #define LOAD_BUTTON_X 576 235 #define LOAD_BUTTON_Y 416 236 #define LOAD_BUTTON_W 32 237 #define LOAD_BUTTON_H 32 238 #define SAVE_BUTTON_X 576 239 #define SAVE_BUTTON_Y 448 240 #define SAVE_BUTTON_W 32 241 #define SAVE_BUTTON_H 32 242 #endif 243 244 #define HELPERRORPAGE "error.hlp" 245 #define HELPBACKGROUNDCOLOUR (white(8)) 246 #define HELPBUTTON_COLOUR (white(25)) 247 #define MAX_NUMOF_HELP_BUTTONS 40 248 #define MAX_LENOF_HELP_FILENAME 40 249 #define MAX_HELP_HISTORY 20 250 #define CS_MOUSE_BUTTON_DELAY 5 251 #define RIGHT_MOUSE_MOVE_VAL 5 252 253 #define GOOD 1 254 #define BAD (-1) 255 #define RESULTS 0 256 257 #define PROGBOXX 170 258 #define PROGBOXY 180 259 #define PROGBOXW 300 260 #define PROGBOXH 120 261 #define PROGBOX_BG_COLOUR 114 262 #define PROGBOX_DONE_COL 4 263 #define PROGBOX_NOTDONE_COL 2 264 265 #define POWER_LINE_CAPACITY 1000000 266 #define POWERS_SOLAR_OUTPUT 1800 267 #define WINDMILL_POWER 450 268 #define WINDMILL_JOBS 10 269 /* WINDMILL_RCOST is days per quid */ 270 #define WINDMILL_RCOST 3 271 #define ANTIQUE_WINDMILL_ANIM_SPEED 160 272 #define MODERN_WINDMILL_ANIM_SPEED 120 273 274 #define OLD_MAX_NUMOF_SUBSTATIONS 100 275 #define MAX_NUMOF_SUBSTATIONS 512 276 #define SUBSTATION_RANGE 10 277 #define POWER_USE_PER_PERSON 3 278 #define POWER_RES_OVERHEAD 30 279 #define POWERS_COAL_OUTPUT 22000 280 #define MAX_COAL_AT_POWER_STATION 100000 281 #define MAX_ORE_AT_INDUSTRY_L 20000 282 #define MAX_JOBS_AT_INDUSTRY_L 500 283 #define MAX_GOODS_AT_INDUSTRY_L 65000 284 #define INDUSTRY_L_GET_JOBS 120 285 #define INDUSTRY_L_GET_ORE 600 286 #define INDUSTRY_L_GET_STEEL 60 287 #define INDUSTRY_L_JOBS_LOAD_ORE 1 288 #define INDUSTRY_L_JOBS_LOAD_STEEL 4 289 #define INDUSTRY_L_ORE_USED 125 290 #define INDUSTRY_L_STEEL_USED 12 291 #define INDUSTRY_L_JOBS_USED 30 292 #define INDUSTRY_L_MAKE_GOODS 225 293 #define MAX_STEEL_AT_INDUSTRY_L 2000 294 #define MIN_JOBS_AT_INDUSTRY_L (INDUSTRY_L_JOBS_LOAD_ORE\ 295 +INDUSTRY_L_JOBS_LOAD_STEEL+INDUSTRY_L_JOBS_USED) 296 #define INDUSTRY_L_ANIM_SPEED 290 297 298 #define MAX_ORE_AT_INDUSTRY_H 10000 299 #define MAX_COAL_AT_INDUSTRY_H 1000 300 #define MAX_MADE_AT_INDUSTRY_H MAX_ORE_AT_INDUSTRY_H/16 301 #define POWER_MAKE_STEEL 200 302 #define INDUSTRY_H_ANIM_SPEED 290 303 304 #define DAYS_PER_POLLUTION 14 305 #define POWERS_COAL_POLLUTION 20 306 #define INDUSTRY_L_POLLUTION 10 307 #define INDUSTRY_H_POLLUTION 10 308 #define COALMINE_POLLUTION 3 309 #define PORT_POLLUTION 1 310 #define RAIL_POLLUTION 1 311 #define DAYS_PER_RAIL_POLLUTION 30 312 #define ROAD_POLLUTION 1 313 #define DAYS_PER_ROAD_POLLUTION 20 314 #define UNNAT_DEATHS_COST 500 315 #define POL_DIV 64 /* GCS -- from engine.c */ 316 317 #define FINANCE_X 91 318 #define FINANCE_W 120 319 #define FINANCE_Y 200 320 #define FINANCE_H 56 321 #define INCOME_TAX_RATE 8 322 #define COAL_TAX_RATE 20 323 #define GOODS_TAX_RATE 1 324 #define DOLE_RATE 15 325 #define TRANSPORT_COST_RATE 14 326 #define IM_PORT_COST_RATE 1 327 #define PORT_FOOD_RATE 1 328 #define PORT_JOBS_RATE 5 329 #define PORT_COAL_RATE 50 330 #define PORT_ORE_RATE 1 331 #define PORT_GOODS_RATE 3 332 #define PORT_STEEL_RATE 100 333 /* 334 These next two control the stuff bought or sold as a % of what's on the 335 transport. 1000=100% 500=50% etc. 336 */ 337 #define PORT_EXPORT_RATE 500 338 #define PORT_IMPORT_RATE 500 339 340 #define NUMOF_DISCOUNT_TRIGGERS 6 341 #define EX_DISCOUNT_TRIGGER_1 25000 342 #define EX_DISCOUNT_TRIGGER_2 50000 343 #define EX_DISCOUNT_TRIGGER_3 100000 344 #define EX_DISCOUNT_TRIGGER_4 200000 345 #define EX_DISCOUNT_TRIGGER_5 400000 346 #define EX_DISCOUNT_TRIGGER_6 800000 347 348 #define MIN_RES_POPULATION 10 349 #define MAX_TECH_LEVEL 1000000 350 #define TECH_LEVEL_LOSS_START 11000 351 /* 352 tech-level/TECH_LEVEL_LOSS is lost every month when 353 above TECH_LEVEL_LOSS_START 354 */ 355 #define TECH_LEVEL_LOSS 500 356 #define TECH_LEVEL_UNAIDED 2 357 #define MODERN_WINDMILL_TECH 450000 358 359 #define BUILD_MONUMENT_JOBS 350000 360 #define MONUMENT_GET_JOBS 100 361 #define MONUMENT_DAYS_PER_TECH 3 362 #define MONUMENT_TECH_EXPIRE 400 363 #define MONUMENT_ANIM_SPEED 300 364 365 #define BLACKSMITH_JOBS 35 366 #define BLACKSMITH_GET_COAL 6 367 #define MAX_GOODS_AT_BLACKSMITH 200 368 #define MAX_COAL_AT_BLACKSMITH 100 369 #define BLACKSMITH_STEEL_USED 1 370 #define BLACKSMITH_COAL_USED 1 371 #define GOODS_MADE_BY_BLACKSMITH 50 372 #define BLACKSMITH_BATCH (GOODS_MADE_BY_BLACKSMITH*100) 373 #define BLACKSMITH_ANIM_THRESHOLD 10 374 #define BLACKSMITH_ANIM_SPEED 200 375 376 #define MILL_JOBS 35 377 #define MAX_GOODS_AT_MILL 200 378 #define MAX_FOOD_AT_MILL 500 379 #define MAX_COAL_AT_MILL 50 380 #define GOODS_MADE_BY_MILL 75 381 #define MILL_GET_FOOD 51 382 #define MILL_GET_COAL 4 383 #define MILL_POWER_PER_COAL 60 384 #define FOOD_USED_BY_MILL (GOODS_MADE_BY_MILL/2) 385 #define COAL_USED_BY_MILL 1 386 #define MILL_ANIM_THRESHOLD 10 387 #define MILL_ANIM_SPEED 300 388 389 #define SCHOOL_JOBS 50 390 #define SCHOOL_GOODS 75 391 #define JOBS_MAKE_TECH_SCHOOL 200 392 #define GOODS_MAKE_TECH_SCHOOL 75 393 #define TECH_MADE_BY_SCHOOL 2 394 #define MAX_JOBS_AT_SCHOOL 400 395 #define MAX_GOODS_AT_SCHOOL 200 396 #define SCHOOL_RUNNING_COST 2 397 398 #define DAYS_BETWEEN_COVER (NUMOF_DAYS_IN_MONTH*3) 399 #define DAYS_BETWEEN_FIRES (NUMOF_DAYS_IN_YEAR*2) 400 #define FIRESTATION_JOBS 6 401 #define FIRESTATION_GET_JOBS 7 402 #define MAX_JOBS_AT_FIRESTATION (FIRESTATION_JOBS*NUMOF_DAYS_IN_YEAR) 403 #define FIRESTATION_GOODS 2 404 #define FIRESTATION_GET_GOODS 3 405 #define MAX_GOODS_AT_FIRESTATION (FIRESTATION_GOODS*NUMOF_DAYS_IN_YEAR) 406 #define FIRESTATION_RANGE 18 407 #define FIRESTATION_RUNNING_COST 1 408 #define FIRESTATION_RUNNING_COST_MUL 6 409 #define FIRESTATION_ANIMATION_SPEED 250 410 #define FIRE_ANIMATION_SPEED 350 411 #define FIRE_DAYS_PER_SPREAD (NUMOF_DAYS_IN_YEAR/8) 412 #define FIRE_LENGTH (NUMOF_DAYS_IN_YEAR*5) 413 #define AFTER_FIRE_LENGTH (NUMOF_DAYS_IN_YEAR*10) 414 415 #define CRICKET_JOBS 8 416 #define CRICKET_GET_JOBS 9 417 #define MAX_JOBS_AT_CRICKET (CRICKET_JOBS*NUMOF_DAYS_IN_YEAR) 418 #define CRICKET_GOODS 2 419 #define CRICKET_GET_GOODS 3 420 #define MAX_GOODS_AT_CRICKET (CRICKET_GOODS*NUMOF_DAYS_IN_YEAR) 421 #define CRICKET_RANGE 10 422 #define CRICKET_RUNNING_COST 1 423 #define CRICKET_ANIMATION_SPEED 750 424 425 #define MAX_GOODS_AT_POTTERY 200 426 #define POTTERY_ORE_MAKE_GOODS 11 427 #define POTTERY_COAL_MAKE_GOODS 2 428 #define POTTERY_JOBS 35 429 #define MAX_ORE_AT_POTTERY (POTTERY_ORE_MAKE_GOODS*60) 430 #define POTTERY_GET_ORE (POTTERY_ORE_MAKE_GOODS*20) 431 #define MAX_COAL_AT_POTTERY (POTTERY_COAL_MAKE_GOODS*60) 432 #define POTTERY_GET_COAL (POTTERY_COAL_MAKE_GOODS*21) 433 #define MAX_JOBS_AT_POTTERY (POTTERY_JOBS*20) 434 #define POTTERY_GET_JOBS (POTTERY_JOBS*2) 435 #define POTTERY_MADE_GOODS 35 436 #define POTTERY_ANIM_SPEED 280 437 #define POTTERY_CLOSE_TIME 20 438 439 #define UNIVERSITY_JOBS 250 440 #define UNIVERSITY_JOBS_STORE 5000 441 #define UNIVERSITY_GOODS 750 442 #define UNIVERSITY_GOODS_STORE 7000 443 #define UNIVERSITY_RUNNING_COST 23 444 #define UNIVERSITY_TECH_MADE 4 445 446 #define ROCKET_PAD_JOBS 1000 447 #define ROCKET_PAD_JOBS_STORE 10000 448 #define ROCKET_PAD_GOODS 10000 449 #define ROCKET_PAD_GOODS_STORE 500000 450 #define ROCKET_PAD_STEEL 500 451 #define ROCKET_PAD_STEEL_STORE 12000 452 #define ROCKET_PAD_RUNNING_COST 200 453 #define ROCKET_PAD_LAUNCH 100 454 #define ROCKET_ANIMATION_SPEED 450 455 #define ROCKET_LAUNCH_BAD 1 456 #define ROCKET_LAUNCH_GOOD 2 457 #define ROCKET_LAUNCH_EVAC 3 458 459 #define TIP_DEGRADE_TIME 200 * NUMOF_DAYS_IN_YEAR 460 461 #define MAX_WASTE_AT_RECYCLE 20000 462 #define BURN_WASTE_AT_RECYCLE (MAX_WASTE_AT_RECYCLE/200) 463 #define MAX_ORE_AT_RECYCLE (MAX_ORE_ON_RAIL*2) 464 #define GOODS_RECYCLED 500 465 #define RECYCLE_GOODS_JOBS (GOODS_RECYCLED/50) 466 #define RECYCLE_RUNNING_COST 3 467 468 #define HEALTH_CENTRE_JOBS 6 469 #define HEALTH_CENTRE_GET_JOBS 7 470 #define MAX_JOBS_AT_HEALTH_CENTRE (HEALTH_CENTRE_JOBS*NUMOF_DAYS_IN_YEAR) 471 #define HEALTH_CENTRE_GOODS 40 472 #define HEALTH_CENTRE_GET_GOODS 41 473 #define MAX_GOODS_AT_HEALTH_CENTRE (HEALTH_CENTRE_GOODS*NUMOF_DAYS_IN_YEAR) 474 #define HEALTH_RUNNING_COST 2 475 #define HEALTH_RUNNING_COST_MUL 9 476 #define HEALTH_CENTRE_RANGE 15 477 478 #define OLD_MAX_NUMOF_MARKETS 100 479 #define MAX_NUMOF_MARKETS 512 480 #define MARKET_RANGE 10 481 #define MAX_FOOD_ON_TRACK 2048 482 #define MAX_FOOD_ON_RIVER (MAX_FOOD_ON_TRACK*2) 483 #define MAX_FOOD_ON_ROAD (MAX_FOOD_ON_TRACK*4) 484 #define MAX_FOOD_ON_RAIL (MAX_FOOD_ON_ROAD*4) 485 #define MAX_FOOD_IN_MARKET (MAX_FOOD_ON_RAIL*8) 486 #define MARKET_FOOD_SEARCH_TRIGGER (MAX_FOOD_IN_MARKET/5) 487 #define MAX_JOBS_ON_TRACK 1024 488 #define MAX_JOBS_ON_RIVER (MAX_JOBS_ON_TRACK*2) 489 #define MAX_JOBS_ON_ROAD (MAX_JOBS_ON_TRACK*5) 490 #define MAX_JOBS_ON_RAIL (MAX_JOBS_ON_ROAD*5) 491 #define MAX_JOBS_IN_MARKET (MAX_JOBS_ON_RAIL*3) 492 #define MARKET_JOBS_SEARCH_TRIGGER (MAX_JOBS_IN_MARKET/5) 493 #define MARKET_ANIM_SPEED 750 494 #define EMPLOYER_RANGE 10 495 #define WORKING_POP_PERCENT 45 496 #define JOB_SWING 15 497 #define HC_JOB_SWING 10 498 #define CRICKET_JOB_SWING 4 499 500 #define ORGANIC_FARM_FOOD_OUTPUT 550 501 #define ORGANIC_FARM_ANIM_SPEED 3000 502 #define FARM_JOBS_USED 13 503 #define ORG_FARM_RANGE 10 504 #define ORG_FARM_POWER_REC 50 505 /* gets waste only when powered */ 506 #define ORG_FARM_WASTE_GET 6 507 #define MIN_FOOD_SOLD_FOR_ANIM 200 508 #define DAYS_PER_STARVE 20 509 510 #define MAX_WASTE_ON_TRACK 1024 511 #define MAX_WASTE_ON_ROAD (MAX_WASTE_ON_TRACK*5) 512 #define MAX_WASTE_ON_RAIL (MAX_WASTE_ON_ROAD*5) 513 #define MAX_WASTE_IN_MARKET (MAX_WASTE_ON_RAIL*3) 514 #define MARKET_WASTE_SEARCH_TRIGGER (MAX_WASTE_IN_MARKET/5) 515 #define MAX_WASTE_AT_TIP 10000000 516 #define WASTE_BURN_ON_TRANSPORT 20 517 #define TRANSPORT_BURN_WASTE_COUNT 75000 518 519 #define NUMOF_COAL_RESERVES 100 520 #define COAL_RESERVE_SIZE 10000 521 #define ORE_RESERVE 1000 522 #define MIN_ORE_RESERVE_FOR_MINE (ORE_RESERVE) 523 #define MAX_COAL_AT_MINE 100000 524 #define MAX_ORE_AT_MINE 100000 525 /* COAL_RESERVE_SEARCH_LEN acts in both directions, so 5 is 10*10 */ 526 #define COAL_RESERVE_SEARCH_LEN 8 527 #define JOBS_DIG_COAL 900 528 #define JOBS_DIG_ORE 200 529 #define JOBS_COALPS_GENERATE 100 530 #define MAX_JOBS_AT_COALPS 2000 531 #define JOBS_LOAD_COAL 18 532 #define JOBS_LOAD_ORE 9 533 #define JOBS_LOAD_STEEL 15 534 #define JOBS_AT_COMMUNE_GATE 4 535 #define COMMUNE_ANIM_SPEED 750 536 #define COMMUNE_POP 5 537 538 #define DIG_MORE_COAL_TRIGGER (MAX_COAL_AT_MINE) 539 #define DIG_MORE_ORE_TRIGGER (MAX_ORE_AT_MINE) 540 #define MAX_COAL_ON_TRACK 64 541 #define MAX_COAL_ON_RIVER (MAX_COAL_ON_TRACK*2) 542 #define MAX_COAL_ON_ROAD (MAX_COAL_ON_TRACK*8) 543 #define MAX_COAL_ON_RAIL (MAX_COAL_ON_ROAD*8) 544 #define MAX_COAL_IN_MARKET (MAX_COAL_ON_RAIL*2) 545 #define MARKET_COAL_SEARCH_TRIGGER (MAX_COAL_IN_MARKET/5) 546 547 #define MAX_GOODS_ON_TRACK 2048 548 #define MAX_GOODS_ON_RIVER (MAX_GOODS_ON_TRACK*2) 549 #define MAX_GOODS_ON_ROAD (MAX_GOODS_ON_TRACK*5) 550 #define ROAD_GOODS_USED_MASK 0x1f 551 #define MAX_GOODS_ON_RAIL (MAX_GOODS_ON_ROAD*5) 552 #define RAIL_GOODS_USED_MASK 0xf 553 #define MAX_GOODS_IN_MARKET (MAX_GOODS_ON_RAIL*4) 554 #define MARKET_GOODS_SEARCH_TRIGGER (MAX_GOODS_IN_MARKET/5) 555 #define MAX_ORE_ON_TRACK 4096 556 #define MAX_ORE_ON_RIVER (MAX_ORE_ON_TRACK*2) 557 #define MAX_ORE_ON_ROAD (MAX_ORE_ON_TRACK*4) 558 #define MAX_ORE_ON_RAIL (MAX_ORE_ON_ROAD*4) 559 #define MAX_ORE_IN_MARKET (MAX_ORE_ON_RAIL*2) 560 #define MARKET_ORE_SEARCH_TRIGGER (MAX_ORE_IN_MARKET/5) 561 562 563 #define MAX_STEEL_ON_TRACK 128 564 #define MAX_STEEL_ON_RIVER (MAX_STEEL_ON_TRACK*2) 565 #define MAX_STEEL_ON_ROAD (MAX_STEEL_ON_TRACK*4) 566 #define MAX_STEEL_ON_RAIL (MAX_STEEL_ON_ROAD*4) 567 #define RAIL_STEEL_USED_MASK 0x7f 568 #define MAX_STEEL_AT_INDUSTRY_H (MAX_STEEL_ON_RAIL*10) 569 /* 570 JOBS_MAKE_STEEL is the steel made per job at the steel works 571 what's it doing here? 572 */ 573 #define JOBS_MAKE_STEEL 70 574 /* 575 ORE_MAKE_STEEL is the ore used per unit of STEEL at a steel works 576 what's it doing here? 577 */ 578 #define ORE_MAKE_STEEL 17 579 #define MAX_STEEL_IN_MARKET (MAX_STEEL_ON_RAIL*2) 580 #define MARKET_STEEL_SEARCH_TRIGGER (MAX_STEEL_IN_MARKET/5) 581 582 #if defined (commentout) 583 #define MAIN_WIN_W 448 584 #define MAIN_WIN_X (640-MAIN_WIN_W-8) 585 #define MAIN_WIN_Y 8 586 #define MAIN_WIN_H 400 587 #endif 588 589 #define SUST_ORE_COAL_COL 34 590 #define SUST_PORT_COL white(24) 591 #define SUST_MONEY_COL green(26) 592 #define SUST_POP_COL cyan(24) 593 #define SUST_TECH_COL yellow(26) 594 #define SUST_FIRE_COL red(26) 595 #define SUST_ORE_COAL_YEARS_NEEDED 180 596 #define SUST_PORT_YEARS_NEEDED 180 597 #define SUST_MONEY_YEARS_NEEDED 60 598 #define SUST_POP_YEARS_NEEDED 60 599 #define SUST_TECH_YEARS_NEEDED 120 600 #define SUST_FIRE_YEARS_NEEDED 60 601 602 #define SUST_MIN_POPULATION 5000 603 #define SUST_MIN_TECH_LEVEL (MAX_TECH_LEVEL/2) 604 605 #define STATS_X 232 606 #define STATS_Y 428 607 #define STATS_W 304 608 #define STATS_H 32 609 610 /* GCS FIX: This is still used in static data structure for size 611 of monthgraph. Fix by encapsulating the monthgraph and dynamically 612 allocating. */ 613 #if defined (commentout) 614 #ifndef MONTHGRAPH_W 615 #define MONTHGRAPH_X 91 616 #define MONTHGRAPH_W 120 617 #define MONTHGRAPH_Y 116 618 #define MONTHGRAPH_H 64 619 #endif 620 #define DIFFGRAPH_POWER_COLOUR (yellow(28)) 621 #define DIFFGRAPH_COAL_COLOUR (white(18)) 622 #define DIFFGRAPH_GOODS_COLOUR (cyan(24)) 623 #define DIFFGRAPH_ORE_COLOUR (red(22)) 624 #define DIFFGRAPH_POPULATION_COLOUR 7 625 #endif 626 627 #define GRAPHS_B_COLOUR (white(6)) 628 629 /* These constants are still used by save-under buffer */ 630 #if defined (commentout) 631 #define MARKET_CB_X (79) 632 #define MARKET_CB_Y 0 633 #endif 634 //#define MARKET_CB_W (18*8) 635 #define MARKET_CB_W (17*8 - 2) 636 #define MARKET_CB_H (23*8) 637 638 #define SCROLL_LONG_COUNT 5 639 #define SCROLL_RIGHT_BUTTON_X 100 640 #define SCROLL_RIGHT_BUTTON_W 32 641 #define SCROLL_RIGHT_BUTTON_Y 100 642 #define SCROLL_RIGHT_BUTTON_H 32 643 #define SCROLL_LEFT_BUTTON_X 100 644 #define SCROLL_LEFT_BUTTON_W 32 645 #define SCROLL_LEFT_BUTTON_Y 132 646 #define SCROLL_LEFT_BUTTON_H 32 647 #define SCROLL_DOWN_BUTTON_X 100 648 #define SCROLL_DOWN_BUTTON_W 32 649 #define SCROLL_DOWN_BUTTON_Y 164 650 #define SCROLL_DOWN_BUTTON_H 32 651 #define SCROLL_UP_BUTTON_X 100 652 #define SCROLL_UP_BUTTON_W 32 653 #define SCROLL_UP_BUTTON_Y 196 654 #define SCROLL_UP_BUTTON_H 32 655 656 #define SHUFFLE_MAPPOINT_COUNT 4 657 658 #if defined (commentout) 659 #define MAPPOINT_STATS_X 91 660 /* MAPPOINT_STATS_W must be == MONTHGRAPH_W because of the graph drawing. */ 661 #define MAPPOINT_STATS_W MONTHGRAPH_W 662 #define MAPPOINT_STATS_Y 8 663 #define MAPPOINT_STATS_H (11*8) 664 #endif 665 666 #define GROUP_BARE 0 667 #define GROUP_BARE_COLOUR (green(12)) 668 #define GROUP_BARE_COST 0 669 #define GROUP_BARE_COST_MUL 1 670 #define GROUP_BARE_BUL_COST 1 671 #define GROUP_BARE_TECH 0 672 #define GROUP_BARE_FIREC 0 673 674 #define GROUP_POWER_LINE 1 675 #define GROUP_POWER_LINE_COLOUR (yellow(26)) 676 #define GROUP_POWER_LINE_COST 100 677 #define GROUP_POWER_LINE_COST_MUL 2 678 #define GROUP_POWER_LINE_BUL_COST 100 679 #define GROUP_POWER_LINE_TECH 200 680 #define GROUP_POWER_LINE_FIREC 0 681 682 #if defined (commentout) 683 /* GROUP_POWER_SOURCE is a solar ps - change the names - real soon */ 684 #define GROUP_POWER_SOURCE 2 685 #define GROUP_POWER_SOURCE_COLOUR (yellow(22)) 686 #define GROUP_POWER_SOURCE_COST 500000 687 #define GROUP_POWER_SOURCE_COST_MUL 5 688 #define GROUP_POWER_SOURCE_BUL_COST 100000 689 #define GROUP_POWER_SOURCE_TECH 500 690 #define GROUP_POWER_SOURCE_NO_CREDIT 691 #define GROUP_POWER_SOURCE_FIREC 33 692 #endif 693 694 #define GROUP_SOLAR_POWER 2 695 #define GROUP_SOLAR_POWER_COLOUR (yellow(22)) 696 #define GROUP_SOLAR_POWER_COST 500000 697 #define GROUP_SOLAR_POWER_COST_MUL 5 698 #define GROUP_SOLAR_POWER_BUL_COST 100000 699 #define GROUP_SOLAR_POWER_TECH 500 700 #define GROUP_SOLAR_POWER_NO_CREDIT 701 #define GROUP_SOLAR_POWER_FIREC 33 702 703 #define GROUP_SUBSTATION 3 704 #define GROUP_SUBSTATION_COLOUR (yellow(18)) 705 #define GROUP_SUBSTATION_COST 500 706 #define GROUP_SUBSTATION_COST_MUL 2 707 #define GROUP_SUBSTATION_BUL_COST 100 708 #define GROUP_SUBSTATION_TECH 200 709 #define GROUP_SUBSTATION_FIREC 50 710 711 #define GROUP_RESIDENCE_LL 4 712 #define GROUP_RESIDENCE_LL_COLOUR (cyan(24)) 713 #define GROUP_RESIDENCE_LL_COST 1000 714 #define GROUP_RESIDENCE_LL_COST_MUL 25 715 #define GROUP_RESIDENCE_LL_BUL_COST 1000 716 #define GROUP_RESIDENCE_LL_TECH 0 717 #define GROUP_RESIDENCE_LL_FIREC 75 718 719 #if defined (commentout) 720 #define RESIDENCE_BASE_BR 100 721 #define RESIDENCE_BRM_HEALTH 5 722 #define RESIDENCE_BASE_DR (68*12) 723 #define GROUP_RESIDENCE 4 724 #define GROUP_RESIDENCE_COLOUR (cyan(24)) 725 #define GROUP_RESIDENCE_COST 0 726 #define GROUP_RESIDENCE_COST1 1000 727 #define RESIDENCE1_BRM (RESIDENCE_BASE_BR*12) 728 #define RESIDENCE1_DRM ((RESIDENCE_BASE_DR*3)/4) 729 #define GROUP_RESIDENCE_COST2 2000 730 #define RESIDENCE2_BRM 0 731 #define RESIDENCE2_DRM 0 732 #define GROUP_RESIDENCE_COST3 4000 733 #define RESIDENCE3_BRM (RESIDENCE_BASE_BR+RESIDENCE_BASE_BR/4) 734 #define RESIDENCE3_DRM ((RESIDENCE_BASE_DR)/2) 735 #define GROUP_RESIDENCE_COST4 800 736 #define RESIDENCE4_BRM (RESIDENCE_BASE_BR*18) 737 #define RESIDENCE4_DRM ((RESIDENCE_BASE_DR*3)/4) 738 #define GROUP_RESIDENCE_COST5 1600 739 #define RESIDENCE5_BRM (RESIDENCE_BASE_BR/2) 740 #define RESIDENCE5_DRM ((RESIDENCE_BASE_DR)/4) 741 #define GROUP_RESIDENCE_COST6 3200 742 #define RESIDENCE6_BRM 0 743 #define RESIDENCE6_DRM ((RESIDENCE_BASE_DR)/4) 744 #define GROUP_RESIDENCE_COST_MUL 25 745 #define GROUP_RESIDENCE_BUL_COST 1000 746 #define GROUP_RESIDENCE_TECH 0 747 #define GROUP_RESIDENCE_FIREC 75 748 /* RESIDENCE_PPM is the people_pool mobitily. Higher number=less mobile. */ 749 #define RESIDENCE_PPM 20 750 #endif 751 752 /* RESIDENCE?_BRM is the birth rate modifier */ 753 /* RESIDENCE?_DRM is the death rate modifier */ 754 #define RESIDENCE_BASE_BR 100 755 #define RESIDENCE_BASE_DR (68*12) 756 #define RESIDENCE_BRM_HEALTH 5 757 #define RESIDENCE1_BRM (RESIDENCE_BASE_BR*12) 758 #define RESIDENCE1_DRM ((RESIDENCE_BASE_DR*3)/4) 759 #define RESIDENCE2_BRM 0 760 #define RESIDENCE2_DRM 0 761 #define RESIDENCE3_BRM (RESIDENCE_BASE_BR+RESIDENCE_BASE_BR/4) 762 #define RESIDENCE3_DRM ((RESIDENCE_BASE_DR)/2) 763 #define RESIDENCE4_BRM (RESIDENCE_BASE_BR*18) 764 #define RESIDENCE4_DRM ((RESIDENCE_BASE_DR*3)/4) 765 #define RESIDENCE5_BRM (RESIDENCE_BASE_BR/2) 766 #define RESIDENCE5_DRM ((RESIDENCE_BASE_DR)/4) 767 #define RESIDENCE6_BRM 0 768 #define RESIDENCE6_DRM ((RESIDENCE_BASE_DR)/4) 769 /* RESIDENCE_PPM is the people_pool mobitily. Higher number=less mobile. */ 770 #define RESIDENCE_PPM 20 771 772 #define GROUP_ORGANIC_FARM 5 773 #define GROUP_ORGANIC_FARM_COLOUR (green(30)) 774 #define GROUP_ORGANIC_FARM_COST 1000 775 #define GROUP_ORGANIC_FARM_COST_MUL 20 776 #define GROUP_ORGANIC_FARM_BUL_COST 100 777 #define GROUP_ORGANIC_FARM_TECH 0 778 #define GROUP_ORGANIC_FARM_FIREC 20 779 780 #define GROUP_MARKET 6 781 #define GROUP_MARKET_COLOUR (blue(28)) 782 #define GROUP_MARKET_COST 100 783 #define GROUP_MARKET_COST_MUL 25 784 #define GROUP_MARKET_BUL_COST 100 785 #define GROUP_MARKET_TECH 0 786 #define GROUP_MARKET_FIREC 80 787 788 #define GROUP_TRACK 7 789 #define GROUP_TRACK_COLOUR 32 /* 32 is a brown */ 790 #define GROUP_TRACK_COST 1 791 #define GROUP_TRACK_COST_MUL 25 792 #define GROUP_TRACK_BUL_COST 10 793 #define GROUP_TRACK_TECH 0 794 #define GROUP_TRACK_FIREC 4 795 796 #define GROUP_COALMINE 8 797 #define GROUP_COALMINE_COLOUR 0 798 #define GROUP_COALMINE_COST 10000 799 #define GROUP_COALMINE_COST_MUL 25 800 #define GROUP_COALMINE_BUL_COST 10000 801 #define GROUP_COALMINE_TECH 85 802 #define GROUP_COALMINE_FIREC 85 803 804 #define GROUP_RAIL 9 805 #define GROUP_RAIL_COLOUR (magenta(18)) 806 #define GROUP_RAIL_COST 500 807 #define GROUP_RAIL_COST_MUL 10 808 #define GROUP_RAIL_BUL_COST 1000 809 #define GROUP_RAIL_TECH 180 810 #define GROUP_RAIL_FIREC 6 811 812 #define GROUP_COAL_POWER 10 813 #define GROUP_COAL_POWER_COLOUR 0 814 #define GROUP_COAL_POWER_COST 100000 815 #define GROUP_COAL_POWER_COST_MUL 5 816 #define GROUP_COAL_POWER_BUL_COST 200000 817 #define GROUP_COAL_POWER_TECH 200 818 #define GROUP_COAL_POWER_FIREC 80 819 820 #define GROUP_ROAD 11 821 #define GROUP_ROAD_COLOUR (white(18)) 822 #define GROUP_ROAD_COST 100 823 #define GROUP_ROAD_COST_MUL 25 824 #define GROUP_ROAD_BUL_COST 50 825 #define GROUP_ROAD_TECH 50 826 #define GROUP_ROAD_FIREC 4 827 828 #define GROUP_INDUSTRY_L 12 829 #define GROUP_INDUSTRY_L_COLOUR (cyan(18)) 830 #define GROUP_INDUSTRY_L_COST 20000 831 #define GROUP_INDUSTRY_L_COST_MUL 25 832 #define GROUP_INDUSTRY_L_BUL_COST 20000 833 #define GROUP_INDUSTRY_L_TECH 160 834 #define GROUP_INDUSTRY_L_FIREC 70 835 836 #define GROUP_UNIVERSITY 13 837 #define GROUP_UNIVERSITY_COLOUR (blue(22)) 838 #define GROUP_UNIVERSITY_COST 20000 839 #define GROUP_UNIVERSITY_COST_MUL 25 840 #define GROUP_UNIVERSITY_BUL_COST 20000 841 #define GROUP_UNIVERSITY_TECH 150 842 #define GROUP_UNIVERSITY_NO_CREDIT 843 #define GROUP_UNIVERSITY_FIREC 40 844 845 #define GROUP_COMMUNE 14 846 #define GROUP_COMMUNE_COLOUR (green(30)) 847 #define GROUP_COMMUNE_COST 1 848 #define GROUP_COMMUNE_COST_MUL 2 849 #define GROUP_COMMUNE_BUL_COST 1000 850 #define GROUP_COMMUNE_TECH 0 851 #define GROUP_COMMUNE_FIREC 30 852 853 #define GROUP_OREMINE 15 854 #define GROUP_OREMINE_COLOUR (red(18)) 855 #define GROUP_OREMINE_COST 500 856 #define GROUP_OREMINE_COST_MUL 10 857 #define GROUP_OREMINE_BUL_COST 500000 858 #define GROUP_OREMINE_TECH 0 859 #define GROUP_OREMINE_FIREC 0 860 861 #define GROUP_TIP 16 862 #define GROUP_TIP_COLOUR (white(16)) 863 #define GROUP_TIP_COST 10000 864 #define GROUP_TIP_COST_MUL 25 865 #define GROUP_TIP_BUL_COST 1000000 866 #define GROUP_TIP_TECH 0 867 #define GROUP_TIP_FIREC 50 868 869 #define GROUP_PORT 17 870 #define GROUP_PORT_COLOUR (blue(28)) 871 #define GROUP_PORT_COST 100000 872 #define GROUP_PORT_COST_MUL 2 873 #define GROUP_PORT_BUL_COST 1000 874 #define GROUP_PORT_TECH 35 875 #define GROUP_PORT_FIREC 50 876 877 #define GROUP_INDUSTRY_H 18 878 #define GROUP_INDUSTRY_H_COLOUR (7) /* colour 7 is an orange, sort of */ 879 #define GROUP_INDUSTRY_H_COST 50000 880 #define GROUP_INDUSTRY_H_COST_MUL 20 881 #define GROUP_INDUSTRY_H_BUL_COST 70000 882 #define GROUP_INDUSTRY_H_TECH 170 883 #define GROUP_INDUSTRY_H_FIREC 80 884 885 #define GROUP_PARKLAND 19 886 #define GROUP_PARKLAND_COLOUR (green(31)) 887 #define GROUP_PARKLAND_COST 1000 888 #define GROUP_PARKLAND_COST_MUL 25 889 #define GROUP_PARKLAND_BUL_COST 1000 890 #define GROUP_PARKLAND_TECH 2 891 #define GROUP_PARKLAND_NO_CREDIT 892 #define GROUP_PARKLAND_FIREC 1 893 894 #define GROUP_RECYCLE 20 895 #define GROUP_RECYCLE_COLOUR (green(28)) 896 #define GROUP_RECYCLE_COST 100000 897 #define GROUP_RECYCLE_COST_MUL 5 898 #define GROUP_RECYCLE_BUL_COST 1000 899 #define GROUP_RECYCLE_TECH 232 900 #define GROUP_RECYCLE_NO_CREDIT 901 #define GROUP_RECYCLE_FIREC 10 902 903 #define GROUP_WATER 21 904 #define GROUP_WATER_COLOUR (blue(31)) 905 #define GROUP_WATER_COST 1000000 906 #define GROUP_WATER_COST_MUL 2 907 #define GROUP_WATER_BUL_COST 1000000 908 #define GROUP_WATER_TECH 0 909 #define GROUP_RIVER (GROUP_WATER) /* oops -- GCS: Why oops? */ 910 #define GROUP_WATER_FIREC 0 911 912 #define GROUP_HEALTH 22 913 #define GROUP_HEALTH_COLOUR (green(24)) 914 #define GROUP_HEALTH_COST 100000 915 #define GROUP_HEALTH_COST_MUL 2 916 #define GROUP_HEALTH_BUL_COST 1000 917 #define GROUP_HEALTH_TECH 110 918 #define GROUP_HEALTH_FIREC 2 919 920 #define GROUP_ROCKET 23 921 #define GROUP_ROCKET_COLOUR (magenta(20)) 922 #define GROUP_ROCKET_COST 700000 923 #define GROUP_ROCKET_COST_MUL 2 924 #define GROUP_ROCKET_BUL_COST 1 925 #define GROUP_ROCKET_TECH 750 926 #define GROUP_ROCKET_NO_CREDIT 927 #define GROUP_ROCKET_FIREC 0 928 929 #define GROUP_WINDMILL 24 930 #define GROUP_WINDMILL_COLOUR (green(25)) 931 #define GROUP_WINDMILL_COST 20000 932 #define GROUP_WINDMILL_COST_MUL 25 933 #define GROUP_WINDMILL_BUL_COST 1000 934 #define GROUP_WINDMILL_TECH 30 935 #define GROUP_WINDMILL_FIREC 10 936 937 #define GROUP_MONUMENT 25 938 #define GROUP_MONUMENT_COLOUR (white(15)) 939 #define GROUP_MONUMENT_COST 10000 940 #define GROUP_MONUMENT_COST_MUL 25 941 #define GROUP_MONUMENT_BUL_COST 1000000 942 #define GROUP_MONUMENT_TECH 0 943 #define GROUP_MONUMENT_FIREC 0 944 945 #define GROUP_SCHOOL 26 946 #define GROUP_SCHOOL_COLOUR (white(15)) 947 #define GROUP_SCHOOL_COST 10000 948 #define GROUP_SCHOOL_COST_MUL 25 949 #define GROUP_SCHOOL_BUL_COST 10000 950 #define GROUP_SCHOOL_TECH 1 951 #define GROUP_SCHOOL_FIREC 40 952 953 #define GROUP_BLACKSMITH 27 954 #define GROUP_BLACKSMITH_COLOUR (white(15)) 955 #define GROUP_BLACKSMITH_COST 5000 956 #define GROUP_BLACKSMITH_COST_MUL 25 957 #define GROUP_BLACKSMITH_BUL_COST 1000 958 #define GROUP_BLACKSMITH_TECH 3 959 #define GROUP_BLACKSMITH_FIREC 60 960 961 #define GROUP_MILL 28 962 #define GROUP_MILL_COLOUR (white(15)) 963 #define GROUP_MILL_COST 10000 964 #define GROUP_MILL_COST_MUL 25 965 #define GROUP_MILL_BUL_COST 1000 966 #define GROUP_MILL_TECH 25 967 #define GROUP_MILL_FIREC 60 968 969 #define GROUP_POTTERY 29 970 #define GROUP_POTTERY_COLOUR (red(12)) 971 #define GROUP_POTTERY_COST 1000 972 #define GROUP_POTTERY_COST_MUL 25 973 #define GROUP_POTTERY_BUL_COST 1000 974 #define GROUP_POTTERY_TECH 0 975 #define GROUP_POTTERY_FIREC 50 976 977 #define GROUP_FIRESTATION 30 978 #define GROUP_FIRESTATION_COLOUR (red(20)) 979 #define GROUP_FIRESTATION_COST 20000 980 #define GROUP_FIRESTATION_COST_MUL 10 981 #define GROUP_FIRESTATION_BUL_COST 1000 982 #define GROUP_FIRESTATION_TECH 22 983 #define GROUP_FIRESTATION_FIREC 0 984 985 #define GROUP_CRICKET 31 986 #define GROUP_CRICKET_COLOUR (white(20)) 987 #define GROUP_CRICKET_COST 2000 988 #define GROUP_CRICKET_COST_MUL 3 989 #define GROUP_CRICKET_BUL_COST 1000 990 #define GROUP_CRICKET_TECH 12 991 #define GROUP_CRICKET_FIREC 20 992 993 #define GROUP_BURNT 32 994 #define GROUP_BURNT_COLOUR (red(30)) 995 #define GROUP_BURNT_COST 0 /* Unused */ 996 #define GROUP_BURNT_COST_MUL 1 /* Unused */ 997 #define GROUP_BURNT_BUL_COST 1000 998 #define GROUP_BURNT_TECH 0 /* Unused */ 999 #define GROUP_BURNT_FIREC 0 1000 1001 #define GROUP_SHANTY 33 1002 #define GROUP_SHANTY_COLOUR (red(22)) 1003 #define GROUP_SHANTY_COST 0 /* Unused */ 1004 #define GROUP_SHANTY_COST_MUL 1 /* Unused */ 1005 #define GROUP_SHANTY_BUL_COST 100000 1006 #define GROUP_SHANTY_TECH 0 /* Unused */ 1007 #define GROUP_SHANTY_FIREC 25 1008 1009 #define SHANTY_MIN_PP 150 1010 #define SHANTY_POP 50 1011 #define DAYS_BETWEEN_SHANTY (NUMOF_DAYS_IN_MONTH*5) 1012 #define SHANTY_GET_FOOD 50 1013 #define SHANTY_GET_JOBS 5 1014 #define SHANTY_GET_GOODS 50 1015 #define SHANTY_GET_COAL 1 1016 #define SHANTY_GET_ORE 10 1017 #define SHANTY_GET_STEEL 1 1018 1019 #define GROUP_FIRE 34 1020 #define GROUP_FIRE_COLOUR (red(30)) 1021 #define GROUP_FIRE_COST 0 /* Unused */ 1022 #define GROUP_FIRE_COST_MUL 1 /* Unused */ 1023 #define GROUP_FIRE_BUL_COST 1000 1024 #define GROUP_FIRE_TECH 0 /* Unused */ 1025 #define GROUP_FIRE_FIREC 0 1026 1027 #define GROUP_USED 35 1028 #define GROUP_USED_COLOUR (green(12)) /* Unused */ 1029 #define GROUP_USED_COST 0 /* Unused */ 1030 #define GROUP_USED_COST_MUL 1 /* Unused */ 1031 #define GROUP_USED_BUL_COST 0 /* Unused */ 1032 #define GROUP_USED_TECH 0 /* Unused */ 1033 #define GROUP_USED_FIREC 0 /* Unused */ 1034 1035 #define GROUP_RESIDENCE_ML 36 1036 #define GROUP_RESIDENCE_ML_COLOUR (cyan(24)) 1037 #define GROUP_RESIDENCE_ML_COST 2000 1038 #define GROUP_RESIDENCE_ML_COST_MUL 25 1039 #define GROUP_RESIDENCE_ML_BUL_COST 1000 1040 #define GROUP_RESIDENCE_ML_TECH 0 1041 #define GROUP_RESIDENCE_ML_FIREC 75 1042 1043 #define GROUP_RESIDENCE_HL 37 1044 #define GROUP_RESIDENCE_HL_COLOUR (cyan(24)) 1045 #define GROUP_RESIDENCE_HL_COST 4000 1046 #define GROUP_RESIDENCE_HL_COST_MUL 25 1047 #define GROUP_RESIDENCE_HL_BUL_COST 1000 1048 #define GROUP_RESIDENCE_HL_TECH 0 1049 #define GROUP_RESIDENCE_HL_FIREC 75 1050 1051 #define GROUP_RESIDENCE_LH 38 1052 #define GROUP_RESIDENCE_LH_COLOUR (cyan(24)) 1053 #define GROUP_RESIDENCE_LH_COST 800 1054 #define GROUP_RESIDENCE_LH_COST_MUL 25 1055 #define GROUP_RESIDENCE_LH_BUL_COST 1000 1056 #define GROUP_RESIDENCE_LH_TECH 0 /* ?? */ 1057 #define GROUP_RESIDENCE_LH_FIREC 75 1058 1059 #define GROUP_RESIDENCE_MH 39 1060 #define GROUP_RESIDENCE_MH_COLOUR (cyan(24)) 1061 #define GROUP_RESIDENCE_MH_COST 1600 1062 #define GROUP_RESIDENCE_MH_COST_MUL 25 1063 #define GROUP_RESIDENCE_MH_BUL_COST 1000 1064 #define GROUP_RESIDENCE_MH_TECH 0 1065 #define GROUP_RESIDENCE_MH_FIREC 75 1066 1067 #define GROUP_RESIDENCE_HH 40 1068 #define GROUP_RESIDENCE_HH_COLOUR (cyan(24)) 1069 #define GROUP_RESIDENCE_HH_COST 3200 1070 #define GROUP_RESIDENCE_HH_COST_MUL 25 1071 #define GROUP_RESIDENCE_HH_BUL_COST 1000 1072 #define GROUP_RESIDENCE_HH_TECH 0 1073 #define GROUP_RESIDENCE_HH_FIREC 75 1074 1075 #define GROUP_IS_TRANSPORT(group) \ 1076 ((group == GROUP_TRACK) || \ 1077 (group == GROUP_ROAD) || \ 1078 (group == GROUP_RAIL) || \ 1079 (group == GROUP_POWER_LINE)) 1080 1081 #define GROUP_IS_RESIDENCE(group) \ 1082 ((group == GROUP_RESIDENCE_LL) || \ 1083 (group == GROUP_RESIDENCE_ML) || \ 1084 (group == GROUP_RESIDENCE_HL) || \ 1085 (group == GROUP_RESIDENCE_LH) || \ 1086 (group == GROUP_RESIDENCE_MH) || \ 1087 (group == GROUP_RESIDENCE_HH)) 1088 1089 #define GROUP_RESIDENCE_LL 4 1090 #define GROUP_RESIDENCE_LL_COLOUR (cyan(24)) 1091 #define GROUP_RESIDENCE_LL_COST 1000 1092 #define GROUP_RESIDENCE_LL_COST_MUL 25 1093 #define GROUP_RESIDENCE_LL_BUL_COST 1000 1094 #define GROUP_RESIDENCE_LL_TECH 0 1095 #define GROUP_RESIDENCE_LL_FIREC 75 1096 1097 1098 #define MOUSE_TYPE_NORMAL 1 1099 #define MOUSE_TYPE_SQUARE 2 1100 #define MOUSE_BUTTON_REPEAT 4 1101 1102 #define red(x) (32 + x) 1103 #define green(x) (64 + x) 1104 #define yellow(x) (96 + x) 1105 #define blue(x) (128 + x) 1106 #define magenta(x) (160 + x) 1107 #define cyan(x) (192 + x) 1108 #define white(x) (224 + x) 1109 1110 1111 struct map_point_info_struct 1112 { 1113 int population; 1114 int flags; 1115 unsigned short coal_reserve; 1116 unsigned short ore_reserve; 1117 int int_1; 1118 int int_2; 1119 int int_3; 1120 int int_4; 1121 int int_5; 1122 int int_6; 1123 int int_7; 1124 }; 1125 typedef struct map_point_info_struct Map_Point_Info; 1126 1127 1128 /* Set these flags to true when they need to be updated on the screen */ 1129 struct update_scoreboard_struct 1130 { 1131 int mps; 1132 int mini; 1133 int date; 1134 int money; 1135 int monthly; 1136 int yearly_1; 1137 int yearly_2; 1138 long int message_area; 1139 }; 1140 typedef struct update_scoreboard_struct Update_Scoreboard; 1141 1142 1143 /* 1144 main functions 1145 ************** 1146 */ 1147 extern int lincity_main (int, char **); 1148 extern void client_main_loop (void); 1149 extern void do_error (char *); 1150 extern void do_save_city (void); 1151 extern void remove_scene (char *); 1152 extern void save_city (char *); 1153 extern void do_load_city (void); 1154 extern void load_opening_city (char *); 1155 extern void load_city (char *); 1156 extern void reset_animation_times (void); 1157 extern void coal_reserve_setup (void); 1158 extern void ore_reserve_setup (void); 1159 extern void setup_river (void); 1160 extern void setup_river2 (int, int, int); 1161 extern void check_savedir (void); 1162 extern void make_savedir (void); 1163 extern void draw_save_dir (int); 1164 extern void input_save_filename (char *); 1165 extern void load_start_image (void); 1166 extern void start_image_text (void); 1167 extern void si_scroll_text (void); 1168 extern char si_next_char (FILE *); 1169 extern void get_real_time (void); 1170 extern void debug_writeval (int); 1171 extern int cheat (void); 1172 extern void print_cheat (void); 1173 extern void unprint_cheat (void); 1174 extern void order_select_buttons (void); 1175 extern void lincityrc (void); 1176 extern void check_for_old_save_dir (void); 1177 extern int count_groups (int); 1178 extern int compile_results (void); 1179 extern void print_results (void); 1180 extern void mail_results (void); 1181 extern void window_results (void); 1182 extern void init_path_strings (void); 1183 extern void lc_usleep (unsigned long); 1184 extern void dump_tcore (void); 1185 #ifndef LC_X11 1186 extern void parse_args (int, char **); 1187 #endif 1188 extern void sustainability_test (void); 1189 extern int sust_fire_cover (void); 1190 extern void check_endian (void); 1191 extern void eswap32 (int *); 1192 extern void eswap16 (unsigned short *); 1193 extern void malloc_failure (void); 1194 1195 /* 1196 fileutil 1197 ******** 1198 */ 1199 void malloc_failure (void); 1200 FILE* fopen_read_gzipped (char* fn); 1201 void fclose_read_gzipped (FILE* fp); 1202 void verify_package (void); 1203 1204 /* 1205 ldsvgui 1206 ******* 1207 */ 1208 void load_opening_city (char *s); 1209 void check_savedir (void); 1210 1211 /* 1212 opening 1213 ******* 1214 */ 1215 void load_start_image (void); 1216 1217 1218 /* 1219 type init functions 1220 ******************* 1221 */ 1222 extern void init_types (void); 1223 extern void init_type_graphics (void); 1224 void init_costs (void); 1225 int get_selected_type_cost (short selected_type); 1226 extern char *load_graphic (char *); 1227 1228 /* 1229 screen functions 1230 **************** 1231 */ 1232 #ifdef CS_PROFILE 1233 extern void FPgl_write (int, int, char *); 1234 extern void FPgl_getbox (int, int, int, int, void *); 1235 extern void FPgl_putbox (int, int, int, int, void *); 1236 extern void FPgl_fillbox (int, int, int, int, int); 1237 extern void FPgl_hline (int, int, int, int); 1238 extern void FPgl_line (int, int, int, int, int); 1239 extern void FPgl_setpixel (int, int, int); 1240 #endif 1241 extern void check_power_line_graphics (void); 1242 extern void check_water_graphics (void); 1243 extern void check_track_graphics (void); 1244 extern void check_rail_graphics (void); 1245 extern void check_road_graphics (void); 1246 extern int select_power_line_type (int, int, int, int); 1247 extern int select_water_type (int, int, int, int); 1248 extern int select_track_type (int, int, int, int); 1249 extern int select_rail_type (int, int, int, int); 1250 extern int select_road_type (int, int, int, int); 1251 extern void update_select_buttons (void); 1252 extern void draw_main_window_box (int); 1253 extern void draw_select_button_graphic (int, char *); 1254 extern void setcustompalette (void); 1255 extern void clip_main_window (void); 1256 extern void unclip_main_window (void); 1257 extern void initfont (void); 1258 extern void load_scroll_buttons (void); 1259 extern void draw_scroll_buttons (void); 1260 extern void update_mini_screen (void); 1261 extern void draw_mini_screen (void); 1262 extern void draw_big_mini_screen (void); 1263 extern void draw_mini_screen_pollution (void); 1264 extern void draw_mini_screen_fire_cover (void); 1265 extern void draw_mini_screen_cricket_cover (void); 1266 extern void draw_mini_screen_health_cover (void); 1267 extern void draw_mini_screen_ub40 (void); 1268 extern void draw_mini_screen_starve (void); 1269 extern void draw_mini_screen_coal (void); 1270 extern void draw_mini_screen_power (void); 1271 extern void draw_mini_screen_ocost (void); 1272 extern void draw_mini_screen_port (void); 1273 extern void draw_mini_screen_cursor (void); 1274 extern void print_stats (void); 1275 extern void print_total_money (void); 1276 int ask_launch_rocket_now (int x, int y); 1277 void print_date (void); 1278 extern void draw_market_cb (void); 1279 extern void clicked_market_cb (int, int); 1280 extern void close_market_cb (void); 1281 extern void draw_port_cb (void); 1282 extern void clicked_port_cb (int, int); 1283 extern void close_port_cb (void); 1284 extern int yn_dial_box (char *, char *, char *, char *); 1285 extern void ok_dial_box (char *, int, char *); 1286 extern int inv_sbut (int); 1287 extern void call_select_change_up (int); 1288 extern void beg_space_pad (char *, int); 1289 extern void draw_up_pbar (int, int, int, int); 1290 extern void draw_down_pbar (int, int, int, int); 1291 extern void do_pbar_population (int); 1292 extern void do_pbar_tech (int); 1293 extern void do_pbar_food (int); 1294 extern void do_pbar_jobs (int); 1295 extern void do_pbar_coal (int); 1296 extern void do_pbar_goods (int); 1297 extern void do_pbar_ore (int); 1298 extern void do_pbar_steel (int); 1299 extern void do_pbar_money (int); 1300 extern void prog_box (char *, int); 1301 /* 1302 mouse functions -- are now in mouse.h, where they should be! 1303 *************** 1304 */ 1305 1306 /* 1307 engine functions 1308 **************** 1309 */ 1310 void initialize_tax_rates (void); 1311 void set_mappoint (int x, int y, short selected_type); 1312 void set_mappoint_used (int, int, int, int); 1313 int no_credit_build (int selected_type); 1314 void set_mappoint_ints (int fromx, int fromy, int x, int y); 1315 void new_city (int* originx, int* originy, int random_village); 1316 extern void engine_do_time_step (void); 1317 extern void do_residence (int, int); 1318 extern void debug_print (int); 1319 extern void do_power_source (int, int); 1320 extern void do_power_source_coal (int, int); 1321 extern void do_industry_l (int, int); 1322 extern void do_industry_h (int, int); 1323 extern void do_power_substation (int, int); 1324 extern int get_power (int, int, int, int); 1325 extern int add_a_substation (int, int); 1326 extern void remove_a_substation (int, int); 1327 extern void do_organic_farm (int, int); 1328 void init_mappoint_array (void); 1329 extern void shuffle_mappoint_array (void); 1330 extern void shuffle_substations (void); 1331 extern void do_coalmine (int, int); 1332 extern void do_oremine (int, int); 1333 extern void do_commune (int, int); 1334 extern void do_port (int, int); 1335 extern int buy_food (int, int); 1336 extern int buy_jobs (int, int); 1337 extern int buy_coal (int, int); 1338 extern int buy_ore (int, int); 1339 extern int buy_goods (int, int); 1340 extern int buy_steel (int, int); 1341 extern int sell_food (int, int); 1342 extern int sell_jobs (int, int); 1343 extern int sell_coal (int, int); 1344 extern int sell_ore (int, int); 1345 extern int sell_goods (int, int); 1346 extern int sell_steel (int, int); 1347 1348 extern void do_pollution (void); 1349 extern void do_parkland (int, int); 1350 extern void do_university (int, int); 1351 extern void do_recycle (int, int); 1352 extern void do_health_centre (int, int); 1353 extern void do_rocket_pad (int, int); 1354 extern void launch_rocket (int x, int y); 1355 extern void remove_people (int); 1356 extern void do_windmill (int, int); 1357 extern void do_monument (int, int); 1358 extern void do_school (int, int); 1359 extern void do_blacksmith (int, int); 1360 extern void do_mill (int, int); 1361 extern void do_pottery (int, int); 1362 extern void do_firestation (int, int); 1363 extern void do_cricket (int, int); 1364 extern void clear_fire_health_and_cricket_cover (void); 1365 extern void do_fire_health_and_cricket_cover (void); 1366 extern void do_fire_cover (int, int); 1367 extern void do_health_cover (int, int); 1368 extern void do_cricket_cover (int, int); 1369 extern void do_random_fire (int, int, int); 1370 extern void do_fire (int, int); 1371 extern int spiral_find_group (int, int, int); 1372 extern int spiral_find_2x2 (int, int); 1373 extern void add_a_shanty (void); 1374 extern void remove_a_shanty (void); 1375 extern void update_shanty (void); 1376 extern void do_shanty (int, int); 1377 extern void do_tip (int, int); 1378 extern void update_tech_dep (int, int); 1379 /* 1380 transport functions 1381 ******************* 1382 */ 1383 void connect_transport (int originx, int originy, int w, int h); 1384 extern void do_power_line (int, int); 1385 extern void do_track (int, int); 1386 extern void do_rail (int, int); 1387 extern void do_road (int, int); 1388 extern void general_transport (Map_Point_Info *, int *, int, int *); 1389 1390 /* 1391 market functions 1392 **************** 1393 */ 1394 extern int get_food (int, int, int); 1395 extern int put_food (int, int, int); 1396 extern int get_jobs (int, int, int); 1397 extern int put_jobs (int, int, int); 1398 extern int get_goods (int, int, int); 1399 extern int put_goods (int, int, int); 1400 extern int get_ore (int, int, int); 1401 extern int put_ore (int, int, int); 1402 extern int get_coal (int, int, int); 1403 extern int put_coal (int, int, int); 1404 extern int add_a_market (int, int); 1405 extern void remove_a_market (int, int); 1406 extern void do_market (int, int); 1407 extern void shuffle_markets (void); 1408 extern int deal_with_transport (int, int, int, int); 1409 extern int get_steel (int, int, int); 1410 extern int put_steel (int, int, int); 1411 extern int get_waste (int, int, int); 1412 extern int put_waste (int, int, int); 1413 extern int get_stuff (int, int, int, int); 1414 extern int get_stuff2 (Map_Point_Info *, int, int); 1415 extern int get_stuff3 (Map_Point_Info *, int, int); 1416 extern int get_stuff4 (Map_Point_Info *, int, int); 1417 extern int put_stuff (int, int, int, int); 1418 extern int put_stuff2 (Map_Point_Info *, short *, int, int); 1419 extern int put_stuff3 (Map_Point_Info *, short *, int, int); 1420 extern int put_stuff4 (Map_Point_Info *, short *, int, int); 1421 1422 #ifdef LC_X11 1423 /* ----- X11 functions ----- */ 1424 extern void Fgl_write (int, int, char *); 1425 extern void open_write (int, int, char *); 1426 extern void Fgl_getbox (int, int, int, int, void *); 1427 extern void Fgl_putbox (int, int, int, int, void *); 1428 extern void Fgl_fillbox (int, int, int, int, int); 1429 extern void Fgl_hline (int, int, int, int); 1430 extern void Fgl_line (int, int, int, int, int); 1431 extern void Fgl_setpixel (int, int, int); 1432 extern void Fgl_setfontcolors (int, int); 1433 extern void Fgl_setfont (int, int, void*); 1434 extern void Fgl_enableclipping (void); 1435 extern void Fgl_setclippingwindow (int, int, int, int); 1436 extern void Fgl_disableclipping (void); 1437 #ifdef USE_X11_PIXMAPS 1438 #define USE_PIXMAPS 1439 extern void init_pixmaps (void); 1440 extern void init_icon_pixmap (short); 1441 extern void update_pixmap (int, int, int, int, int, int, int, char *); 1442 #endif 1443 1444 #elif defined (WIN32) 1445 /* ----- Win32 functions ----- */ 1446 extern void gl_setpalettecolor (long, long, long, long); 1447 extern void Fgl_write (int, int, char *); 1448 extern void open_write (int, int, char *); 1449 extern void Fgl_getbox (int, int, int, int, void *); 1450 extern void Fgl_putbox (int, int, int, int, void *); 1451 extern void Fgl_fillbox (int, int, int, int, int); 1452 extern void Fgl_hline (int, int, int, int); 1453 extern void Fgl_line (int, int, int, int, int); 1454 extern void Fgl_setpixel (int, int, int); 1455 extern void Fgl_setfontcolors (int, int); 1456 extern void Fgl_setfont (int, int, void*); 1457 extern void Fgl_enableclipping (void); 1458 extern void Fgl_setclippingwindow (int, int, int, int); 1459 extern void Fgl_disableclipping (void); 1460 #define USE_PIXMAPS /* Always */ 1461 extern void init_pixmaps (void); 1462 extern void init_icon_pixmap (short); 1463 extern void update_pixmap (int, int, int, int, int, int, int, char *); 1464 1465 #else 1466 /* ----- SVGALIB functions ----- */ 1467 /* profiling */ 1468 #ifdef CS_PROFILE 1469 #define Fgl_write(a,b,c) FPgl_write(a,b,c) 1470 #define Fgl_getbox(a,b,c,d,e) FPgl_getbox(a,b,c,d,e) 1471 #define Fgl_putbox(a,b,c,d,e) FPgl_putbox(a,b,c,d,e) 1472 #define Fgl_fillbox(a,b,c,d,e) FPgl_fillbox(a,b,c,d,e) 1473 #define Fgl_hline(a,b,c,d) FPgl_hline(a,b,c,d) 1474 #define Fgl_line(a,b,c,d,e) FPgl_line(a,b,c,d,e) 1475 #define Fgl_setpixel(a,b,c) FPgl_setpixel(a,b,c) 1476 #define Fgl_setfontcolors(a,b) gl_setfontcolors(a,b) 1477 #define Fgl_setfont(a,b,c) gl_setfont(a,b,c) 1478 #define Fgl_enableclipping() gl_enableclipping() 1479 #define Fgl_setclippingwindow(a,b,c,d) gl_setclippingwindow(a,b,c,d) 1480 #define Fgl_disableclipping() gl_disableclipping() 1481 #else 1482 #define Fgl_write(a,b,c) gl_write(a,b,c) 1483 #define Fgl_getbox(a,b,c,d,e) gl_getbox(a,b,c,d,e) 1484 #define Fgl_putbox(a,b,c,d,e) gl_putbox(a,b,c,d,e) 1485 #define Fgl_fillbox(a,b,c,d,e) gl_fillbox(a,b,c,d,e) 1486 #define Fgl_hline(a,b,c,d) gl_hline(a,b,c,d) 1487 #define Fgl_line(a,b,c,d,e) gl_line(a,b,c,d,e) 1488 #define Fgl_setpixel(a,b,c) gl_setpixel(a,b,c) 1489 #define Fgl_setfontcolors(a,b) gl_setfontcolors(a,b) 1490 #define Fgl_setfont(a,b,c) gl_setfont(a,b,c) 1491 #define Fgl_enableclipping() gl_enableclipping() 1492 #define Fgl_setclippingwindow(a,b,c,d) gl_setclippingwindow(a,b,c,d) 1493 #define Fgl_disableclipping() gl_disableclipping() 1494 #endif 1495 1496 #endif 1497 /* 1498 ******* end of lin-city.h *********** 1499 ***************************************** 1500 */ 1501 1502 #include "lintypes.h" 1503 1504 #endif /* __lin_city_h__ */ 1505