Files @ r12162:c4894f5339c3
Branch filter:

Location: cpp/openttd-patchpack/source/src/genworld.h - annotation

rubidium
(svn r16583) -Update: the order of the language files so it's in sync with english.txt. Normally WT2 would do this, but only with activity for those languages. Now we'd like to the order to match so we can more easily spot import bugs while developing WT3.
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r9111:983de9c5a848
r6179:c0508e7aefec
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r10208:ef8fcc3dc4ca
r8254:b96be9ebfc6e
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r6179:c0508e7aefec
r6179:c0508e7aefec
r5475:3f5cd13d1b63
r10236:993bcc06ffa8
r11825:adc3045ab0f2
r11825:adc3045ab0f2
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r9409:e2f52fd75f31
r9409:e2f52fd75f31
r11363:6906c490a00e
r11363:6906c490a00e
r11363:6906c490a00e
r11363:6906c490a00e
r9409:e2f52fd75f31
r9409:e2f52fd75f31
r6247:96e840dbefcc
r6247:96e840dbefcc
r5475:3f5cd13d1b63
r6248:b940b09d7ab8
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r9409:e2f52fd75f31
r10207:a1fc2f2a33db
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r8934:d5858392238b
r6248:b940b09d7ab8
r5475:3f5cd13d1b63
r6248:b940b09d7ab8
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r6179:c0508e7aefec
r5475:3f5cd13d1b63
r6248:b940b09d7ab8
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r6247:96e840dbefcc
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r6179:c0508e7aefec
r6247:96e840dbefcc
r5475:3f5cd13d1b63
r5475:3f5cd13d1b63
r6247:96e840dbefcc
r9409:e2f52fd75f31
r6247:96e840dbefcc
r6247:96e840dbefcc
r6247:96e840dbefcc
r5475:3f5cd13d1b63
r6179:c0508e7aefec
r5587:034e5e185dc2
r5587:034e5e185dc2
r6247:96e840dbefcc
r6247:96e840dbefcc
r5475:3f5cd13d1b63
r6247:96e840dbefcc
r6247:96e840dbefcc
r5475:3f5cd13d1b63
r11825:adc3045ab0f2
r11825:adc3045ab0f2
r11825:adc3045ab0f2
r5475:3f5cd13d1b63
/* $Id$ */

/** @file genworld.h Functions related to world/map generation. */

#ifndef GENWORLD_H
#define GENWORLD_H

#include "company_type.h"

/*
 * Order of these enums has to be the same as in lang/english.txt
 * Otherwise you will get inconsistent behaviour.
 */
enum {
	LG_ORIGINAL     = 0,  ///< The original landscape generator
	LG_TERRAGENESIS = 1,  ///< TerraGenesis Perlin landscape generator

	GENERATE_NEW_SEED = UINT_MAX, ///< Create a new random seed

	GENWORLD_REDRAW_TIMEOUT = 200, ///< Timeout between redraws
};

/* Modes for GenerateWorld */
enum GenerateWorldMode {
	GW_NEWGAME   = 0,    ///< Generate a map for a new game
	GW_EMPTY     = 1,    ///< Generate an empty map (sea-level)
	GW_RANDOM    = 2,    ///< Generate a random map for SE
	GW_HEIGHTMAP = 3,    ///< Generate a newgame from a heightmap
};

typedef void gw_done_proc();
typedef void gw_abort_proc();

struct gw_info {
	bool active;           ///< Is generating world active
	bool abort;            ///< Whether to abort the thread ASAP
	bool quit_thread;      ///< Do we want to quit the active thread
	bool threaded;         ///< Whether we run _GenerateWorld threaded
	GenerateWorldMode mode;///< What mode are we making a world in
	CompanyID lc;          ///< The local_company before generating
	uint size_x;           ///< X-size of the map
	uint size_y;           ///< Y-size of the map
	gw_done_proc *proc;    ///< Proc that is called when done (can be NULL)
	gw_abort_proc *abortp; ///< Proc that is called when aborting (can be NULL)
	class ThreadObject *thread; ///< The thread we are in (can be NULL)
};

enum gwp_class {
	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
	GWP_CLASS_COUNT
};

/**
 * Check if we are currently in the process of generating a world.
 */
static inline bool IsGeneratingWorld()
{
	extern gw_info _gw;

	return _gw.active;
}

/* genworld.cpp */
bool IsGenerateWorldThreaded();
void GenerateWorldSetCallback(gw_done_proc *proc);
void GenerateWorldSetAbortCallback(gw_abort_proc *proc);
void WaitTillGeneratedWorld();
void GenerateWorld(GenerateWorldMode mode, uint size_x, uint size_y);
void AbortGeneratingWorld();
bool IsGeneratingWorldAborted();
void HandleGeneratingWorldAbortion();

/* genworld_gui.cpp */
void SetGeneratingWorldProgress(gwp_class cls, uint total);
void IncreaseGeneratingWorldProgress(gwp_class cls);
void PrepareGenerateWorldProgress();
void ShowGenerateWorldProgress();
void StartNewGameWithoutGUI(uint seed);
void ShowCreateScenario();
void StartScenarioEditor();

extern class ThreadMutex *_genworld_mapgen_mutex;
extern class ThreadMutex *_genworld_paint_mutex;

#endif /* GENWORLD_H */