# genworld.h File Reference

Functions related to world/map generation. More...

`#include "company_type.h"`

Go to the source code of this file.

## Data Structures
struct | gw_info
## Typedefs
typedef void | gw_done_proc ()
typedef void | gw_abort_proc ()
## Enumerations
enum | { LG_ORIGINAL = 0, LG_TERRAGENESIS = 1, GENERATE_NEW_SEED = UINT_MAX, GENWORLD_REDRAW_TIMEOUT = 200 }
enum | GenerateWorldMode { GW_NEWGAME = 0, GW_EMPTY = 1, GW_RANDOM = 2, GW_HEIGHTMAP = 3 }
enum | gwp_class { GWP_MAP_INIT, GWP_LANDSCAPE, GWP_ROUGH_ROCKY, GWP_TOWN, GWP_INDUSTRY, GWP_UNMOVABLE, GWP_TREE, GWP_GAME_INIT, GWP_RUNTILELOOP, GWP_GAME_START, GWP_CLASS_COUNT }
## Functions
static bool | IsGeneratingWorld ()
| Check if we are currently in the process of generating a world.
bool | IsGenerateWorldThreaded ()
| Tells if the world generation is done in a thread or not.
void | GenerateWorldSetCallback (gw_done_proc *proc)
| Set here the function, if any, that you want to be called when landscape generation is done.
void | GenerateWorldSetAbortCallback (gw_abort_proc *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 | GenerateWorld (GenerateWorldMode mode, uint size_x, uint size_y, bool reset_settings=true)
| Generate a world.
void | AbortGeneratingWorld ()
| Initializes the abortion process.
bool | IsGeneratingWorldAborted ()
| Is the generation being aborted?
void | HandleGeneratingWorldAbortion ()
| Really handle the abortion, i.e.
void | SetGeneratingWorldProgress (gwp_class cls, uint total)
| Set the total of a stage of the world generation.
void | IncreaseGeneratingWorldProgress (gwp_class cls)
| Increases the current stage of the world generation with one.
void | PrepareGenerateWorldProgress ()
| Initializes the progress counters to the starting point.
void | ShowGenerateWorldProgress ()
| Show the window where a user can follow the process of the map generation.
void | StartNewGameWithoutGUI (uint seed)
void | ShowCreateScenario ()
void | StartScenarioEditor ()
## Variables
class ThreadMutex * | _genworld_mapgen_mutex
| Rights for the map generation.
class ThreadMutex * | _genworld_paint_mutex
| Rights for the painting.

## Detailed Description

Functions related to world/map generation.

Definition in file genworld.h.

## Enumeration Type Documentation

anonymous enum

Enumerator:

  LG_ORIGINAL | The original landscape generator.
  LG_TERRAGENESIS | TerraGenesis Perlin landscape generator.
  GENERATE_NEW_SEED | Create a new random seed.
  GENWORLD_REDRAW_TIMEOUT | Timeout between redraws.

Definition at line 14 of file genworld.h.

enum GenerateWorldMode

Enumerator:

  GW_NEWGAME | Generate a map for a new game.
  GW_EMPTY | Generate an empty map (sea-level).
  GW_RANDOM | Generate a random map for SE.
  GW_HEIGHTMAP | Generate a newgame from a heightmap.

Definition at line 24 of file genworld.h.

enum gwp_class

Enumerator:

  GWP_MAP_INIT | Initialize/allocate the map, start economy.
  GWP_LANDSCAPE | Create the landscape.
  GWP_ROUGH_ROCKY | Make rough and rocky areas.
  GWP_TOWN | Generate towns.
  GWP_INDUSTRY | Generate industries.
  GWP_UNMOVABLE | Generate unmovables (radio tower, light houses).
  GWP_TREE | Generate trees.
  GWP_GAME_INIT | Initialize the game.
  GWP_RUNTILELOOP | Runs the tile loop 1280 times to make snow etc.
  GWP_GAME_START | Really prepare to start the game.

Definition at line 48 of file genworld.h.

## Function Documentation

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

Generate a world.

Parameters:

  | mode | The mode of world generation (see GenerateWorldModes).
  | size_x | The X-size of the map.
  | size_y | The Y-size of the map.

Definition at line 260 of file genworld.cpp.

References _GenerateWorld(), _settings_game, ThreadMutex::BeginCritical(), COMPANY_SPECTATOR, ConvertYMDToDate(), DeleteAllNonVitalWindows(), ThreadMutex::EndCritical(), FindWindowById(), GameSettings::game_creation, BlitterFactoryBase::GetCurrentBlitter(), HideVitalWindows(), LoadStringWidthTable(), MapSizeX(), MapSizeY(), ThreadObject::New(), OWNER_NONE, PrepareGenerateWorldProgress(), ResetWindowSystem(), SetLocalCompany(), ShowGenerateWorldProgress(), GameCreationSettings::starting_year, TileXY(), and VHM_NONE.

void HandleGeneratingWorldAbortion | ( |  | ) |

Really handle the abortion, i.e.

clean up some of the mess

Definition at line 239 of file genworld.cpp.

References _switch_mode, and CleanupGeneration().

Referenced by _GenerateWorld().

void IncreaseGeneratingWorldProgress | ( | gwp_class | cls | ) |

Increases the current stage of the world generation with one.

Parameters:

  | cls | the current class we are in.

Warning: this function isn't clever. Don't go from class 4 to 3. Go upwards, always. Also, progress works if total is zero, total works if progress is zero.

Definition at line 1103 of file genworld_gui.cpp.

Referenced by _GenerateWorld(), GenerateTerrainPerlin(), GenerateTowns(), PlaceInitialIndustry(), and PlaceTreesRandomly().

void SetGeneratingWorldProgress | ( | gwp_class | cls,
|  | uint | total |
| ) |  |  |

Set the total of a stage of the world generation.

Parameters:

  | cls | the current class we are in.
  | total | Set the total expected items for this class.

Warning: this function isn't clever. Don't go from class 4 to 3. Go upwards, always. Also, progress works if total is zero, total works if progress is zero.

Definition at line 1089 of file genworld_gui.cpp.

Referenced by _GenerateWorld(), GenerateIndustries(), GenerateTowns(), and GenerateTrees().

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 205 of file genworld.cpp.

References ThreadMutex::BeginCritical(), and ThreadMutex::EndCritical().