author | Tero Marttila <terom@fixme.fi> |
Fri, 18 Jul 2008 21:28:42 +0300 | |
changeset 11175 | 020c61e39c94 |
parent 10866 | 242436c016b8 |
permissions | -rw-r--r-- |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
1 |
/* $Id$ */ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
2 |
|
10429
1b99254f9607
(svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents:
10223
diff
changeset
|
3 |
/** @file genworld.cpp Functions to generate a map. */ |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6144
diff
changeset
|
4 |
|
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
5 |
#include "stdafx.h" |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
6 |
#include "openttd.h" |
6949
72d11a1e1e60
(svn r9609) -Codechange: Move some function prototypes out of functions.h and into landscape.h, and add a few where they didn't exist.
maedhros
parents:
6573
diff
changeset
|
7 |
#include "landscape.h" |
8750
fdd6054e7bae
(svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents:
8721
diff
changeset
|
8 |
#include "player_func.h" |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
9 |
#include "variables.h" |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
10 |
#include "thread.h" |
8612
6414fc21c2f3
(svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium
parents:
8603
diff
changeset
|
11 |
#include "command_func.h" |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
12 |
#include "genworld.h" |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
13 |
#include "gfxinit.h" |
8603
88c5ce6a5215
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8385
diff
changeset
|
14 |
#include "window_func.h" |
5720
cc0ceeafaa55
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5568
diff
changeset
|
15 |
#include "network/network.h" |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
16 |
#include "debug.h" |
8704
2857ec554839
(svn r11771) -Codechange: split settings.h into better separated headers.
rubidium
parents:
8638
diff
changeset
|
17 |
#include "settings_func.h" |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
18 |
#include "heightmap.h" |
8721
b7971ad9bdd9
(svn r11788) -Fix (11787): makedepend doesn't mark delete files as changed...
rubidium
parents:
8704
diff
changeset
|
19 |
#include "viewport_func.h" |
b7971ad9bdd9
(svn r11788) -Fix (11787): makedepend doesn't mark delete files as changed...
rubidium
parents:
8704
diff
changeset
|
20 |
#include "gfx_func.h" |
8635
3bbb6f87fced
(svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents:
8634
diff
changeset
|
21 |
#include "map_func.h" |
8636
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
8635
diff
changeset
|
22 |
#include "date_func.h" |
8638
d997e3a75b36
(svn r11704) -Codechange: remove another bunch of useless includes.
rubidium
parents:
8636
diff
changeset
|
23 |
#include "core/random_func.hpp" |
9282
2bb9703aeb39
(svn r12490) -Codechange: rename engine.h to engine_func.h and remove unneeded inclusions of engine.h and/or replace them with engine_type.h.
rubidium
parents:
8930
diff
changeset
|
24 |
#include "engine_func.h" |
8766
c86cfa3a7580
(svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents:
8760
diff
changeset
|
25 |
#include "settings_type.h" |
8799
e0867e763d41
(svn r11867) -Fix: do not reset changes to persistent storages during world generation.
rubidium
parents:
8766
diff
changeset
|
26 |
#include "newgrf_storage.h" |
8876
a0b7938c6082
(svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents:
8799
diff
changeset
|
27 |
#include "water.h" |
10445
2dd7d9d0a957
(svn r12987) -Codechange: split viewport and tile selection.
rubidium
parents:
10429
diff
changeset
|
28 |
#include "tilehighlight_func.h" |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
29 |
|
8760
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
30 |
#include "table/sprites.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
31 |
|
6573 | 32 |
void GenerateClearTile(); |
33 |
void GenerateIndustries(); |
|
34 |
void GenerateUnmovables(); |
|
35 |
bool GenerateTowns(); |
|
36 |
void GenerateTrees(); |
|
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
37 |
|
6573 | 38 |
void StartupEconomy(); |
39 |
void StartupPlayers(); |
|
40 |
void StartupDisasters(); |
|
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
41 |
|
10770
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10703
diff
changeset
|
42 |
void InitializeGame(uint size_x, uint size_y, bool reset_date); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
43 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
44 |
/* Please only use this variable in genworld.h and genworld.c and |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
45 |
* nowhere else. For speed improvements we need it to be global, but |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
46 |
* in no way the meaning of it is to use it anywhere else besides |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
47 |
* in the genworld.h and genworld.c! -- TrueLight */ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
48 |
gw_info _gw; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
49 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
50 |
/** |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
51 |
* Set the status of the Paint flag. |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
52 |
* If it is true, the thread will hold with any futher generating till |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
53 |
* the drawing of the screen is done. This is handled by |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
54 |
* SetGeneratingWorldProgress(), so calling that function will stall |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
55 |
* from time to time. |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
56 |
*/ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
57 |
void SetGeneratingWorldPaintStatus(bool status) |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
58 |
{ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
59 |
_gw.wait_for_draw = status; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
60 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
61 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
62 |
/** |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
63 |
* Returns true if the thread wants the main program to do a (full) paint. |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
64 |
* If this returns false, please do not update the screen. Because we are |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
65 |
* writing in a thread, it can cause damaged data (reading and writing the |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
66 |
* same tile at the same time). |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
67 |
*/ |
6573 | 68 |
bool IsGeneratingWorldReadyForPaint() |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
69 |
{ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
70 |
/* If we are in quit_thread mode, ignore this and always return false. This |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
71 |
* forces the screen to not be drawn, and the GUI not to wait for a draw. */ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
72 |
if (!_gw.active || _gw.quit_thread || !_gw.threaded) return false; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
73 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
74 |
return _gw.wait_for_draw; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
75 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
76 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
77 |
/** |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
78 |
* Tells if the world generation is done in a thread or not. |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
79 |
*/ |
6573 | 80 |
bool IsGenerateWorldThreaded() |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
81 |
{ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
82 |
return _gw.threaded && !_gw.quit_thread; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
83 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
84 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
85 |
/** |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
86 |
* The internal, real, generate function. |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
87 |
*/ |
10860
ae89867701fe
(svn r13411) -Codechange: remove the return value from the thread procs because it is never used.
rubidium
parents:
10775
diff
changeset
|
88 |
static void _GenerateWorld(void *arg) |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
89 |
{ |
10223
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
90 |
try { |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
91 |
_generating_world = true; |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
92 |
if (_network_dedicated) DEBUG(net, 0, "Generating map, please wait..."); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
93 |
/* Set the Random() seed to generation_seed so we produce the same map with the same seed */ |
10775
7061477bfbcf
(svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents:
10770
diff
changeset
|
94 |
if (_settings_game.game_creation.generation_seed == GENERATE_NEW_SEED) _settings_game.game_creation.generation_seed = _settings_newgame.game_creation.generation_seed = InteractiveRandom(); |
7061477bfbcf
(svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents:
10770
diff
changeset
|
95 |
_random.SetSeed(_settings_game.game_creation.generation_seed); |
10223
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
96 |
SetGeneratingWorldProgress(GWP_MAP_INIT, 2); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
97 |
SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, VHM_NONE, WC_MAIN_WINDOW, 0); |
8799
e0867e763d41
(svn r11867) -Fix: do not reset changes to persistent storages during world generation.
rubidium
parents:
8766
diff
changeset
|
98 |
|
10223
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
99 |
IncreaseGeneratingWorldProgress(GWP_MAP_INIT); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
100 |
/* Must start economy early because of the costs. */ |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
101 |
StartupEconomy(); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
102 |
|
10223
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
103 |
/* Don't generate landscape items when in the scenario editor. */ |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
104 |
if (_gw.mode == GW_EMPTY) { |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
105 |
SetGeneratingWorldProgress(GWP_UNMOVABLE, 1); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
106 |
|
10223
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
107 |
/* Make the map the height of the patch setting */ |
10775
7061477bfbcf
(svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents:
10770
diff
changeset
|
108 |
if (_game_mode != GM_MENU) FlatEmptyWorld(_settings_game.game_creation.se_flat_world_height); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
109 |
|
10223
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
110 |
ConvertGroundTilesIntoWaterTiles(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
111 |
IncreaseGeneratingWorldProgress(GWP_UNMOVABLE); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
112 |
} else { |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
113 |
GenerateLandscape(_gw.mode); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
114 |
GenerateClearTile(); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
115 |
|
10223
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
116 |
/* only generate towns, tree and industries in newgame mode. */ |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
117 |
if (_game_mode != GM_EDITOR) { |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
118 |
GenerateTowns(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
119 |
GenerateIndustries(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
120 |
GenerateUnmovables(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
121 |
GenerateTrees(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
122 |
} |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
123 |
} |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
124 |
|
10223
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
125 |
ClearStorageChanges(true); |
7039
a20ddaf4dc97
(svn r9734) -Feature: Add an option to automatically pause when starting a new game.
maedhros
parents:
6949
diff
changeset
|
126 |
|
10223
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
127 |
/* These are probably pointless when inside the scenario editor. */ |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
128 |
SetGeneratingWorldProgress(GWP_GAME_INIT, 3); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
129 |
StartupPlayers(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
130 |
IncreaseGeneratingWorldProgress(GWP_GAME_INIT); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
131 |
StartupEngines(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
132 |
IncreaseGeneratingWorldProgress(GWP_GAME_INIT); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
133 |
StartupDisasters(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
134 |
_generating_world = false; |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
135 |
|
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
136 |
/* No need to run the tile loop in the scenario editor. */ |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
137 |
if (_gw.mode != GW_EMPTY) { |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
138 |
uint i; |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
139 |
|
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
140 |
SetGeneratingWorldProgress(GWP_RUNTILELOOP, 0x500); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
141 |
for (i = 0; i < 0x500; i++) { |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
142 |
RunTileLoop(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
143 |
IncreaseGeneratingWorldProgress(GWP_RUNTILELOOP); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
144 |
} |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
145 |
} |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
146 |
|
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
147 |
ResetObjectToPlace(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
148 |
SetLocalPlayer(_gw.lp); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
149 |
|
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
150 |
SetGeneratingWorldProgress(GWP_GAME_START, 1); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
151 |
/* Call any callback */ |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
152 |
if (_gw.proc != NULL) _gw.proc(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
153 |
IncreaseGeneratingWorldProgress(GWP_GAME_START); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
154 |
|
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
155 |
if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
156 |
/* Show all vital windows again, because we have hidden them */ |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
157 |
if (_gw.threaded && _game_mode != GM_MENU) ShowVitalWindows(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
158 |
_gw.active = false; |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
159 |
_gw.proc = NULL; |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
160 |
_gw.threaded = false; |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
161 |
|
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
162 |
DeleteWindowById(WC_GENERATE_PROGRESS_WINDOW, 0); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
163 |
MarkWholeScreenDirty(); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
164 |
|
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
165 |
if (_network_dedicated) DEBUG(net, 0, "Map generated, starting game"); |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
166 |
|
10775
7061477bfbcf
(svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents:
10770
diff
changeset
|
167 |
if (_settings_client.gui.pause_on_newgame && _game_mode == GM_NORMAL) DoCommandP(0, 1, 0, NULL, CMD_PAUSE); |
10223
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
168 |
} catch (...) { |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
169 |
_generating_world = false; |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
170 |
throw; |
eba00e1551eb
(svn r12755) -Fix (r12706): aborting map generation was not properly handled
glx
parents:
10175
diff
changeset
|
171 |
} |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
172 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
173 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
174 |
/** |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
175 |
* Set here the function, if any, that you want to be called when landscape |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
176 |
* generation is done. |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
177 |
*/ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
178 |
void GenerateWorldSetCallback(gw_done_proc *proc) |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
179 |
{ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
180 |
_gw.proc = proc; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
181 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
182 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
183 |
/** |
5145
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
184 |
* Set here the function, if any, that you want to be called when landscape |
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
185 |
* generation is aborted. |
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
186 |
*/ |
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
187 |
void GenerateWorldSetAbortCallback(gw_abort_proc *proc) |
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
188 |
{ |
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
189 |
_gw.abortp = proc; |
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
190 |
} |
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
191 |
|
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
192 |
/** |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
193 |
* This will wait for the thread to finish up his work. It will not continue |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
194 |
* till the work is done. |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
195 |
*/ |
6573 | 196 |
void WaitTillGeneratedWorld() |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
197 |
{ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
198 |
if (_gw.thread == NULL) return; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
199 |
_gw.quit_thread = true; |
10175
1119f6640ee6
(svn r12706) -Merge: the thread rewrite from NoAI. The rewrite makes the threading we have better extendable.
rubidium
parents:
9282
diff
changeset
|
200 |
_gw.thread->Join(); |
10866
242436c016b8
(svn r13417) -Fix (r12945, r13413): freeing the ThreadObjects in a manner that hopefully doesn't cause crashes.
rubidium
parents:
10861
diff
changeset
|
201 |
delete _gw.thread; |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
202 |
_gw.thread = NULL; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
203 |
_gw.threaded = false; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
204 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
205 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
206 |
/** |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
207 |
* Initializes the abortion process |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
208 |
*/ |
6573 | 209 |
void AbortGeneratingWorld() |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
210 |
{ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
211 |
_gw.abort = true; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
212 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
213 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
214 |
/** |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
215 |
* Is the generation being aborted? |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
216 |
*/ |
6573 | 217 |
bool IsGeneratingWorldAborted() |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
218 |
{ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
219 |
return _gw.abort; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
220 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
221 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
222 |
/** |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
223 |
* Really handle the abortion, i.e. clean up some of the mess |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
224 |
*/ |
6573 | 225 |
void HandleGeneratingWorldAbortion() |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
226 |
{ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
227 |
/* Clean up - in SE create an empty map, otherwise, go to intro menu */ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
228 |
_switch_mode = (_game_mode == GM_EDITOR) ? SM_EDITOR : SM_MENU; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
229 |
|
5145
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
230 |
if (_gw.abortp != NULL) _gw.abortp(); |
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
231 |
|
5919
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5838
diff
changeset
|
232 |
if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
233 |
/* Show all vital windows again, because we have hidden them */ |
4303
491076cb1ce6
(svn r5950) -Fix: don't show Vital Windows EVER if you go to GM_MENU (tnx Darkvater)
truelight
parents:
4300
diff
changeset
|
234 |
if (_gw.threaded && _game_mode != GM_MENU) ShowVitalWindows(); |
10175
1119f6640ee6
(svn r12706) -Merge: the thread rewrite from NoAI. The rewrite makes the threading we have better extendable.
rubidium
parents:
9282
diff
changeset
|
235 |
|
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
236 |
_gw.active = false; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
237 |
_gw.proc = NULL; |
5145
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
238 |
_gw.abortp = NULL; |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
239 |
_gw.threaded = false; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
240 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
241 |
DeleteWindowById(WC_GENERATE_PROGRESS_WINDOW, 0); |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
242 |
MarkWholeScreenDirty(); |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
243 |
|
10866
242436c016b8
(svn r13417) -Fix (r12945, r13413): freeing the ThreadObjects in a manner that hopefully doesn't cause crashes.
rubidium
parents:
10861
diff
changeset
|
244 |
_gw.thread->Exit(); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
245 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
246 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
247 |
/** |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
248 |
* Generate a world. |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6144
diff
changeset
|
249 |
* @param mode The mode of world generation (see GenerateWorldModes). |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
250 |
* @param size_x The X-size of the map. |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
251 |
* @param size_y The Y-size of the map. |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
252 |
*/ |
10770
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10703
diff
changeset
|
253 |
void GenerateWorld(GenerateWorldMode mode, uint size_x, uint size_y) |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
254 |
{ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
255 |
if (_gw.active) return; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
256 |
_gw.mode = mode; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
257 |
_gw.size_x = size_x; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
258 |
_gw.size_y = size_y; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
259 |
_gw.active = true; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
260 |
_gw.abort = false; |
5145
4c5761bb0176
(svn r7237) -Fix: TGP landscape generation could leak memory if aborted during the generation of the heightmap.
rubidium
parents:
5048
diff
changeset
|
261 |
_gw.abortp = NULL; |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
262 |
_gw.lp = _local_player; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
263 |
_gw.wait_for_draw = false; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
264 |
_gw.quit_thread = false; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
265 |
_gw.threaded = true; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
266 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
267 |
/* This disables some commands and stuff */ |
5564
6e1b3ea1ba7f
(svn r7561) -Fix (FS#431): core and (patches) GUI were not in-sync with respect to autorenew settings. This is only a temporary fix, as the definite fix needs to move the autorenew settings to a per-company settings window.
rubidium
parents:
5340
diff
changeset
|
268 |
SetLocalPlayer(PLAYER_SPECTATOR); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
269 |
/* Make sure everything is done via OWNER_NONE */ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
270 |
_current_player = OWNER_NONE; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
271 |
|
5340
82c981816fcb
(svn r7506) -Codechange: [NewGRF] Add action 7/9/D variable 0x81 (current year)
glx
parents:
5155
diff
changeset
|
272 |
/* Set the date before loading sprites as some newgrfs check it */ |
10775
7061477bfbcf
(svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents:
10770
diff
changeset
|
273 |
SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1)); |
5340
82c981816fcb
(svn r7506) -Codechange: [NewGRF] Add action 7/9/D variable 0x81 (current year)
glx
parents:
5155
diff
changeset
|
274 |
|
5155
64f930853bea
(svn r7250) -Codechange: Shuffle sprite loading and character width caching around a bit. This reduces the number of times the sprites are loaded from 5 to 2, just for the intro game.
peter1138
parents:
5145
diff
changeset
|
275 |
/* Load the right landscape stuff */ |
64f930853bea
(svn r7250) -Codechange: Shuffle sprite loading and character width caching around a bit. This reduces the number of times the sprites are loaded from 5 to 2, just for the intro game.
peter1138
parents:
5145
diff
changeset
|
276 |
GfxLoadSprites(); |
64f930853bea
(svn r7250) -Codechange: Shuffle sprite loading and character width caching around a bit. This reduces the number of times the sprites are loaded from 5 to 2, just for the intro game.
peter1138
parents:
5145
diff
changeset
|
277 |
LoadStringWidthTable(); |
64f930853bea
(svn r7250) -Codechange: Shuffle sprite loading and character width caching around a bit. This reduces the number of times the sprites are loaded from 5 to 2, just for the intro game.
peter1138
parents:
5145
diff
changeset
|
278 |
|
10770
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10703
diff
changeset
|
279 |
InitializeGame(_gw.size_x, _gw.size_y, false); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
280 |
PrepareGenerateWorldProgress(); |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
281 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
282 |
/* Re-init the windowing system */ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
283 |
ResetWindowSystem(); |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
284 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
285 |
/* Create toolbars */ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
286 |
SetupColorsAndInitialWindow(); |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
287 |
|
10866
242436c016b8
(svn r13417) -Fix (r12945, r13413): freeing the ThreadObjects in a manner that hopefully doesn't cause crashes.
rubidium
parents:
10861
diff
changeset
|
288 |
if (_gw.thread != NULL) { |
242436c016b8
(svn r13417) -Fix (r12945, r13413): freeing the ThreadObjects in a manner that hopefully doesn't cause crashes.
rubidium
parents:
10861
diff
changeset
|
289 |
_gw.thread->Join(); |
242436c016b8
(svn r13417) -Fix (r12945, r13413): freeing the ThreadObjects in a manner that hopefully doesn't cause crashes.
rubidium
parents:
10861
diff
changeset
|
290 |
delete _gw.thread; |
242436c016b8
(svn r13417) -Fix (r12945, r13413): freeing the ThreadObjects in a manner that hopefully doesn't cause crashes.
rubidium
parents:
10861
diff
changeset
|
291 |
_gw.thread = NULL; |
242436c016b8
(svn r13417) -Fix (r12945, r13413): freeing the ThreadObjects in a manner that hopefully doesn't cause crashes.
rubidium
parents:
10861
diff
changeset
|
292 |
} |
242436c016b8
(svn r13417) -Fix (r12945, r13413): freeing the ThreadObjects in a manner that hopefully doesn't cause crashes.
rubidium
parents:
10861
diff
changeset
|
293 |
|
5048
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5045
diff
changeset
|
294 |
if (_network_dedicated || |
10866
242436c016b8
(svn r13417) -Fix (r12945, r13413): freeing the ThreadObjects in a manner that hopefully doesn't cause crashes.
rubidium
parents:
10861
diff
changeset
|
295 |
(_gw.thread = ThreadObject::New(&_GenerateWorld, NULL)) == NULL) { |
5568
75f13d7bfaed
(svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents:
5564
diff
changeset
|
296 |
DEBUG(misc, 1, "Cannot create genworld thread, reverting to single-threaded mode"); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
297 |
_gw.threaded = false; |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
298 |
_GenerateWorld(NULL); |
5048
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5045
diff
changeset
|
299 |
return; |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
300 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
301 |
|
5048
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5045
diff
changeset
|
302 |
/* Remove any open window */ |
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5045
diff
changeset
|
303 |
DeleteAllNonVitalWindows(); |
5045
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
4848
diff
changeset
|
304 |
/* Hide vital windows, because we don't allow to use them */ |
5048
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5045
diff
changeset
|
305 |
HideVitalWindows(); |
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5045
diff
changeset
|
306 |
|
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5045
diff
changeset
|
307 |
/* Don't show the dialog if we don't have a thread */ |
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5045
diff
changeset
|
308 |
ShowGenerateWorldProgress(); |
5045
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
4848
diff
changeset
|
309 |
|
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
4848
diff
changeset
|
310 |
/* Centre the view on the map */ |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
311 |
if (FindWindowById(WC_MAIN_WINDOW, 0) != NULL) { |
7256
ec4124cf48d3
(svn r9995) -Fix (r9962): Don't scroll the map at the start of a new game
peter1138
parents:
7074
diff
changeset
|
312 |
ScrollMainWindowToTile(TileXY(MapSizeX() / 2, MapSizeY() / 2), true); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
313 |
} |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
diff
changeset
|
314 |
} |