# genworld.cpp File Reference

Functions to generate a map. More...

`#include "stdafx.h"`
`#include "openttd.h"`
`#include "landscape.h"`
`#include "company_func.h"`
`#include "variables.h"`
`#include "thread/thread.h"`
`#include "command_func.h"`
`#include "genworld.h"`
`#include "gfxinit.h"`
`#include "window_func.h"`
`#include "network/network.h"`
`#include "heightmap.h"`
`#include "viewport_func.h"`
`#include "gfx_func.h"`
`#include "date_func.h"`
`#include "engine_func.h"`
`#include "newgrf_storage.h"`
`#include "water.h"`
`#include "blitter/factory.hpp"`
`#include "tilehighlight_func.h"`
`#include "saveload/saveload.h"`
`#include "void_map.h"`
`#include "town.h"`
`#include "newgrf.h"`
`#include "core/random_func.hpp"`
`#include "table/sprites.h"`

Go to the source code of this file.

## Functions
void | GenerateClearTile ()
void | GenerateIndustries ()
| This function will create ramdon industries during game creation.
void | GenerateUnmovables ()
void | GenerateTrees ()
| Place new trees.
void | StartupEconomy ()
void | StartupCompanies ()
void | StartupDisasters ()
void | InitializeGame (uint size_x, uint size_y, bool reset_date, bool reset_settings)
bool | IsGenerateWorldThreaded ()
| Tells if the world generation is done in a thread or not.
static void | CleanupGeneration ()
| Clean up the 'mess' of generation.
static void | _GenerateWorld (void *)
| The internal, real, generate function.
void | GenerateWorldSetCallback (GWDoneProc *proc)
| Set here the function, if any, that you want to be called when landscape generation is done.
void | GenerateWorldSetAbortCallback (GWAbortProc *proc)
| Set here the function, if any, that you want to be called when landscape generation is aborted.
void | WaitTillGeneratedWorld ()
| This will wait for the thread to finish up his work.
void | AbortGeneratingWorld ()
| Initializes the abortion process.
bool | IsGeneratingWorldAborted ()
| Is the generation being aborted?
void | HandleGeneratingWorldAbortion ()
| Really handle the abortion, i.e.
void | GenerateWorld (GenWorldMode mode, uint size_x, uint size_y, bool reset_settings)
| Generate a world.
## Variables
GenWorldInfo | _gw
| Please only use this variable in genworld.h and genworld.cpp and nowhere else.
ThreadMutex * | _genworld_mapgen_mutex = ThreadMutex::New()
| Rights for the map generation.
ThreadMutex * | _genworld_paint_mutex = ThreadMutex::New()
| Rights for the painting.

## Detailed Description

Functions to generate a map.

Definition in file genworld.cpp.

## Function Documentation

static void CleanupGeneration | ( |  | ) | `[static]`

Clean up the 'mess' of generation.

That is show windows again, reset thread variables and delete the progress window.

Definition at line 77 of file genworld.cpp.

References GenWorldInfo::abortp, GenWorldInfo::active, DeleteWindowById(), ThreadMutex::EndCritical(), MarkWholeScreenDirty(), GenWorldInfo::proc, CursorVars::sprite, and GenWorldInfo::threaded.

Referenced by _GenerateWorld(), and HandleGeneratingWorldAbortion().

void GenerateIndustries | ( |  | ) |

This function will create ramdon industries during game creation.

It will scale the amount of industries by map size as well as difficulty level

Definition at line 1833 of file industry_cmd.cpp.

References _settings_game, IndustrySpec::appear_creation, IndustrySpec::check_proc, GameSettings::difficulty, IndustrySpec::enabled, GameSettings::game_creation, GetIndustrySpec(), GWP_INDUSTRY, IACT_MAPGENERATION, GameCreationSettings::landscape, NUM_INDUSTRYTYPES, IndustrySpec::num_table, DifficultySettings::number_industries, PlaceInitialIndustry(), ScaleByMapSize(), ScaleByMapSize1D(), and SetGeneratingWorldProgress().

Referenced by _GenerateWorld(), and BuildIndustryWindow::OnClick().

void GenerateTrees | ( |  | ) |

Place new trees.

This function takes care of the selected tree placer algorithm and place randomly the trees for a new game.

Definition at line 312 of file tree_cmd.cpp.

References _settings_game, GameSettings::game_creation, GWP_TREE, GameCreationSettings::landscape, PlaceMoreTrees(), PlaceTreesRandomly(), ScaleByMapSize(), SetGeneratingWorldProgress(), TP_IMPROVED, TP_NONE, TP_ORIGINAL, and GameCreationSettings::tree_placer.

Referenced by _GenerateWorld().

void GenerateWorld | ( | GenWorldMode | mode,
|  | uint | size_x,
|  | uint | size_y,
|  | bool | reset_settings |
| ) |  |  |

Generate a world.

Parameters:

  | mode | The mode of world generation (see GenWorldMode).
  | size_x | The X-size of the map.
  | size_y | The Y-size of the map.
  | reset_settings | Whether to reset the game configuration (used for restart)

Definition at line 275 of file genworld.cpp.

References _GenerateWorld(), _settings_game, GenWorldInfo::abort, GenWorldInfo::abortp, GenWorldInfo::active, ThreadMutex::BeginCritical(), COMPANY_SPECTATOR, ConvertYMDToDate(), DeleteAllNonVitalWindows(), ThreadMutex::EndCritical(), FindWindowById(), GameSettings::game_creation, BlitterFactoryBase::GetCurrentBlitter(), HideVitalWindows(), HT_NONE, ThreadObject::Join(), GenWorldInfo::lc, LoadStringWidthTable(), MapSizeX(), MapSizeY(), GenWorldInfo::mode, ThreadObject::New(), OWNER_NONE, PrepareGenerateWorldProgress(), GenWorldInfo::quit_thread, ResetWindowSystem(), SetLocalCompany(), ShowGenerateWorldProgress(), GenWorldInfo::size_x, GenWorldInfo::size_y, GameCreationSettings::starting_year, GenWorldInfo::thread, GenWorldInfo::threaded, and TileXY().

void GenerateWorldSetAbortCallback | ( | GWAbortProc * | proc | ) |

Set here the function, if any, that you want to be called when landscape generation is aborted.

Parameters:

  | proc | callback procedure

Definition at line 209 of file genworld.cpp.

References GenWorldInfo::abortp.

Referenced by GenerateTerrainPerlin().

void GenerateWorldSetCallback | ( | GWDoneProc * | proc | ) |

Set here the function, if any, that you want to be called when landscape generation is done.

Parameters:

  | proc | callback procedure

Definition at line 199 of file genworld.cpp.

References GenWorldInfo::proc.

void HandleGeneratingWorldAbortion | ( |  | ) |

Really handle the abortion, i.e.

clean up some of the mess

Definition at line 253 of file genworld.cpp.

References _switch_mode, GenWorldInfo::abortp, CleanupGeneration(), ThreadObject::Exit(), and GenWorldInfo::thread.

Referenced by _GenerateWorld().

bool IsGenerateWorldThreaded | ( |  | ) |

Tells if the world generation is done in a thread or not.

Returns:
  the 'threaded' status

Definition at line 68 of file genworld.cpp.

References GenWorldInfo::quit_thread, and GenWorldInfo::threaded.

bool IsGeneratingWorldAborted | ( |  | ) |

Is the generation being aborted?

Returns:
  the 'aborted' status

Definition at line 245 of file genworld.cpp.

References GenWorldInfo::abort.

void WaitTillGeneratedWorld | ( |  | ) |

This will wait for the thread to finish up his work.

It will not continue till the work is done.

Definition at line 218 of file genworld.cpp.

References ThreadMutex::BeginCritical(), ThreadMutex::EndCritical(), ThreadObject::Join(), GenWorldInfo::quit_thread, GenWorldInfo::thread, and GenWorldInfo::threaded.

## Variable Documentation

GenWorldInfo _gw

Please only use this variable in genworld.h and genworld.cpp and nowhere else.

For speed improvements we need it to be global, but in no way the meaning of it is to use it anywhere else besides in the genworld.h and genworld.cpp! -- TrueLight

Definition at line 57 of file genworld.cpp.

Referenced by IsGeneratingWorld().