|
|
/* $Id$ */
|
|
|
|
|
|
/** @file genworld.cpp */
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
#include "openttd.h"
|
|
|
#include "functions.h"
|
|
|
#include "player.h"
|
|
|
#include "table/sprites.h"
|
|
|
#include "variables.h"
|
|
@@ -84,47 +86,47 @@ static void *_GenerateWorld(void *arg)
|
|
|
if (_patches.generation_seed == GENERATE_NEW_SEED) _patches.generation_seed = _patches_newgame.generation_seed = InteractiveRandom();
|
|
|
_random_seeds[0][0] = _random_seeds[0][1] = _patches.generation_seed;
|
|
|
SetGeneratingWorldProgress(GWP_MAP_INIT, 2);
|
|
|
SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, 0, WC_MAIN_WINDOW, 0);
|
|
|
|
|
|
IncreaseGeneratingWorldProgress(GWP_MAP_INIT);
|
|
|
// Must start economy early because of the costs.
|
|
|
/* Must start economy early because of the costs. */
|
|
|
StartupEconomy();
|
|
|
|
|
|
// Don't generate landscape items when in the scenario editor.
|
|
|
/* Don't generate landscape items when in the scenario editor. */
|
|
|
if (_gw.mode == GW_EMPTY) {
|
|
|
SetGeneratingWorldProgress(GWP_UNMOVABLE, 1);
|
|
|
|
|
|
/* Make the map the height of the patch setting */
|
|
|
if (_game_mode != GM_MENU) FlatEmptyWorld(_patches.se_flat_world_height);
|
|
|
|
|
|
ConvertGroundTilesIntoWaterTiles();
|
|
|
IncreaseGeneratingWorldProgress(GWP_UNMOVABLE);
|
|
|
} else {
|
|
|
GenerateLandscape(_gw.mode);
|
|
|
GenerateClearTile();
|
|
|
|
|
|
// only generate towns, tree and industries in newgame mode.
|
|
|
/* only generate towns, tree and industries in newgame mode. */
|
|
|
if (_game_mode != GM_EDITOR) {
|
|
|
GenerateTowns();
|
|
|
GenerateIndustries();
|
|
|
GenerateUnmovables();
|
|
|
GenerateTrees();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// These are probably pointless when inside the scenario editor.
|
|
|
/* These are probably pointless when inside the scenario editor. */
|
|
|
SetGeneratingWorldProgress(GWP_GAME_INIT, 3);
|
|
|
StartupPlayers();
|
|
|
IncreaseGeneratingWorldProgress(GWP_GAME_INIT);
|
|
|
StartupEngines();
|
|
|
IncreaseGeneratingWorldProgress(GWP_GAME_INIT);
|
|
|
StartupDisasters();
|
|
|
_generating_world = false;
|
|
|
|
|
|
// No need to run the tile loop in the scenario editor.
|
|
|
/* No need to run the tile loop in the scenario editor. */
|
|
|
if (_gw.mode != GW_EMPTY) {
|
|
|
uint i;
|
|
|
|
|
|
SetGeneratingWorldProgress(GWP_RUNTILELOOP, 0x500);
|
|
|
for (i = 0; i < 0x500; i++) {
|
|
|
RunTileLoop();
|
|
@@ -227,13 +229,13 @@ void HandleGeneratingWorldAbortion(void)
|
|
|
|
|
|
OTTDExitThread();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Generate a world.
|
|
|
* @param mode The mode of world generation (@see GenerateWorldModes).
|
|
|
* @param mode The mode of world generation (see GenerateWorldModes).
|
|
|
* @param size_x The X-size of the map.
|
|
|
* @param size_y The Y-size of the map.
|
|
|
*/
|
|
|
void GenerateWorld(int mode, uint size_x, uint size_y)
|
|
|
{
|
|
|
if (_gw.active) return;
|