Changeset - r7103:9aee5233118d
[Not reviewed]
master
0 1 0
peter1138 - 17 years ago 2007-06-28 10:50:26
peter1138@openttd.org
(svn r10370) -Fix: Heightmap GUI abused custom name system and used unnecessary globals. All details are now kept within the window's custom data.
1 file changed with 34 insertions and 26 deletions:
0 comments (0 inline, 0 general)
src/genworld_gui.cpp
Show inline comments
 
@@ -36,9 +36,12 @@ enum glwp_modes {
 
	GLWP_END
 
};
 

	
 
static uint _heightmap_x = 0;
 
static uint _heightmap_y = 0;
 
static StringID _heightmap_str = STR_NULL;
 
struct generate_d {
 
	uint widget_id;
 
	uint x;
 
	uint y;
 
	char name[64];
 
};
 

	
 
extern void SwitchMode(int new_mode);
 

	
 
@@ -307,17 +310,17 @@ static void GenerateLandscapeWndProc(Win
 
			char buffer[512];
 

	
 
			if (_patches_newgame.heightmap_rotation == HM_CLOCKWISE) {
 
				SetDParam(0, _heightmap_y);
 
				SetDParam(1, _heightmap_x);
 
				SetDParam(0, WP(w, generate_d).y);
 
				SetDParam(1, WP(w, generate_d).x);
 
			} else {
 
				SetDParam(0, _heightmap_x);
 
				SetDParam(1, _heightmap_y);
 
				SetDParam(0, WP(w, generate_d).x);
 
				SetDParam(1, WP(w, generate_d).y);
 
			}
 
			GetString(buffer, STR_HEIGHTMAP_SIZE, lastof(buffer));
 
			DrawStringRightAligned(326, 91, STR_HEIGHTMAP_SIZE, 0x10);
 

	
 
			DrawString( 12,  91, STR_HEIGHTMAP_NAME, 0x10);
 
			SetDParam(0, _heightmap_str);
 
			SetDParamStr(0, WP(w, generate_d).name);
 
			DrawStringTruncated(114,  91, STR_ORANGE, 0x10, 326 - 114 - GetStringBoundingBox(buffer).width - 5);
 

	
 
			DrawString( 12, 197, STR_TREE_PLACER, 0);
 
@@ -364,10 +367,10 @@ static void GenerateLandscapeWndProc(Win
 
					w,
 
					LandscapeGenerationCallback);
 
			} else if (mode == GLWP_HEIGHTMAP &&
 
					(_heightmap_x * 2 < (1U << _patches_newgame.map_x) ||
 
					_heightmap_x / 2 > (1U << _patches_newgame.map_x) ||
 
					_heightmap_y * 2 < (1U << _patches_newgame.map_y) ||
 
					_heightmap_y / 2 > (1U << _patches_newgame.map_y))) {
 
					(WP(w, generate_d).x * 2 < (1U << _patches_newgame.map_x) ||
 
					WP(w, generate_d).x / 2 > (1U << _patches_newgame.map_x) ||
 
					WP(w, generate_d).y * 2 < (1U << _patches_newgame.map_y) ||
 
					WP(w, generate_d).y / 2 > (1U << _patches_newgame.map_y))) {
 
				ShowQuery(
 
					STR_HEIGHTMAP_SCALE_WARNING_CAPTION,
 
					STR_HEIGHTMAP_SCALE_WARNING_MESSAGE,
 
@@ -389,7 +392,7 @@ static void GenerateLandscapeWndProc(Win
 
			_left_button_clicked = false;
 
			break;
 
		case GLAND_START_DATE_TEXT: // Year text
 
			WP(w, def_d).data_3 = GLAND_START_DATE_TEXT;
 
			WP(w, generate_d).widget_id = GLAND_START_DATE_TEXT;
 
			SetDParam(0, _patches_newgame.starting_year);
 
			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL);
 
			break;
 
@@ -404,7 +407,7 @@ static void GenerateLandscapeWndProc(Win
 
			_left_button_clicked = false;
 
			break;
 
		case GLAND_SNOW_LEVEL_TEXT: // Snow line text
 
			WP(w, def_d).data_3 = GLAND_SNOW_LEVEL_TEXT;
 
			WP(w, generate_d).widget_id = GLAND_SNOW_LEVEL_TEXT;
 
			SetDParam(0, _patches_newgame.snow_line_height);
 
			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_SNOW_LINE_QUERY_CAPT, 3, 100, w, CS_NUMERAL);
 
			break;
 
@@ -488,7 +491,7 @@ static void GenerateLandscapeWndProc(Win
 
		if (e->we.edittext.str != NULL) {
 
			int32 value = atoi(e->we.edittext.str);
 

	
 
			switch (WP(w, def_d).data_3) {
 
			switch (WP(w, generate_d).widget_id) {
 
			case GLAND_START_DATE_TEXT:
 
				InvalidateWidget(w, GLAND_START_DATE_TEXT);
 
				_patches_newgame.starting_year = clamp(value, MIN_YEAR, MAX_YEAR);
 
@@ -524,25 +527,30 @@ static const WindowDesc _heightmap_load_
 

	
 
static void _ShowGenerateLandscape(glwp_modes mode)
 
{
 
	uint x = 0;
 
	uint y = 0;
 

	
 
	DeleteWindowByClass(WC_GENERATE_LANDSCAPE);
 

	
 
	/* Always give a new seed if not editor */
 
	if (_game_mode != GM_EDITOR) _patches_newgame.generation_seed = InteractiveRandom();
 

	
 
	if (mode == GLWP_HEIGHTMAP) {
 
		if (_heightmap_str != STR_NULL) DeleteName(_heightmap_str);
 

	
 
		_heightmap_x = 0;
 
		_heightmap_y = 0;
 
		_heightmap_str = AllocateName(_file_to_saveload.title, 0);
 
		/* If the function returns negative, it means there was a problem loading the heightmap */
 
		if (!GetHeightmapDimensions(_file_to_saveload.name, &_heightmap_x, &_heightmap_y))
 
			return;
 
		if (!GetHeightmapDimensions(_file_to_saveload.name, &x, &y)) return;
 
	}
 

	
 
	Window *w = AllocateWindowDescFront((mode == GLWP_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc, mode);
 

	
 
	if (w != NULL) InvalidateWindow(WC_GENERATE_LANDSCAPE, mode);
 
	if (w == NULL) return;
 

	
 
	if (mode == GLWP_HEIGHTMAP) {
 
		WP(w, generate_d).x = x;
 
		WP(w, generate_d).y = y;
 
		strecpy(WP(w, generate_d).name, _file_to_saveload.title, lastof(WP(w, generate_d).name));
 
	}
 

	
 
	InvalidateWindow(WC_GENERATE_LANDSCAPE, mode);
 
}
 

	
 
void ShowGenerateLandscape()
 
@@ -654,7 +662,7 @@ static void CreateScenarioWndProc(Window
 
			_left_button_clicked = false;
 
			break;
 
		case CSCEN_START_DATE_TEXT: // Year text
 
			WP(w, def_d).data_3 = CSCEN_START_DATE_TEXT;
 
			WP(w, generate_d).widget_id = CSCEN_START_DATE_TEXT;
 
			SetDParam(0, _patches_newgame.starting_year);
 
			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL);
 
			break;
 
@@ -669,7 +677,7 @@ static void CreateScenarioWndProc(Window
 
			_left_button_clicked = false;
 
			break;
 
		case CSCEN_FLAT_LAND_HEIGHT_TEXT: // Height level text
 
			WP(w, def_d).data_3 = CSCEN_FLAT_LAND_HEIGHT_TEXT;
 
			WP(w, generate_d).widget_id = CSCEN_FLAT_LAND_HEIGHT_TEXT;
 
			SetDParam(0, _patches_newgame.se_flat_world_height);
 
			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_FLAT_WORLD_HEIGHT_QUERY_CAPT, 3, 100, w, CS_NUMERAL);
 
			break;
 
@@ -688,7 +696,7 @@ static void CreateScenarioWndProc(Window
 
		if (e->we.edittext.str != NULL) {
 
			int32 value = atoi(e->we.edittext.str);
 

	
 
			switch (WP(w, def_d).data_3) {
 
			switch (WP(w, generate_d).widget_id) {
 
			case CSCEN_START_DATE_TEXT:
 
				InvalidateWidget(w, CSCEN_START_DATE_TEXT);
 
				_patches_newgame.starting_year = clamp(value, MIN_YEAR, MAX_YEAR);
0 comments (0 inline, 0 general)