Changeset - r11875:48234884f526
[Not reviewed]
master
0 1 0
smatz - 15 years ago 2009-05-11 18:17:21
smatz@openttd.org
(svn r16280) -Fix (r13731): crash after using the 'Reset landscape' function
-Fix: remove all waypoint signs and buoys after resetting landscape
1 file changed with 20 insertions and 8 deletions:
0 comments (0 inline, 0 general)
src/terraform_gui.cpp
Show inline comments
 
@@ -22,9 +22,11 @@
 
#include "textbuf_gui.h"
 
#include "genworld.h"
 
#include "tree_map.h"
 
#include "station_map.h"
 
#include "landscape_type.h"
 
#include "tilehighlight_func.h"
 
#include "settings_type.h"
 
#include "waypoint.h"
 

	
 
#include "table/sprites.h"
 
#include "table/strings.h"
 
@@ -623,24 +625,34 @@ static OnButtonClick * const _editor_ter
 
static void ResetLandscapeConfirmationCallback(Window *w, bool confirmed)
 
{
 
	if (confirmed) {
 
		Company *c;
 

	
 
		/* Set generating_world to true to get instant-green grass after removing
 
		 * company property. */
 
		_generating_world = true;
 

	
 
		/* Delete all stations owned by a company */
 
		Station *st;
 
		FOR_ALL_STATIONS(st) {
 
			if (IsValidCompanyID(st->owner)) delete st;
 
		}
 

	
 
		/* Delete all companies */
 
		Company *c;
 
		FOR_ALL_COMPANIES(c) {
 
			ChangeOwnershipOfCompanyItems(c->index, INVALID_OWNER);
 
			delete c;
 
		}
 

	
 
		_generating_world = false;
 

	
 
		/* Delete all station signs */
 
		Station *st;
 
		FOR_ALL_STATIONS(st) {
 
			/* There can be buoys, remove them */
 
			if (IsBuoyTile(st->xy)) DoCommand(st->xy, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
 
			delete st;
 
		}
 

	
 
		/* The same for waypoints */
 
		Waypoint *wp;
 
		FOR_ALL_WAYPOINTS(wp) {
 
			delete wp;
 
		}
 

	
 
		MarkWholeScreenDirty();
 
	}
 
}
 

	
0 comments (0 inline, 0 general)