Changeset - r14737:40252806a75b
[Not reviewed]
master
0 2 0
alberth - 14 years ago 2010-03-06 12:15:03
alberth@openttd.org
(svn r19335) -Codechange: StationRect::BeforeAddTile() returns a CommandCost.
2 files changed with 13 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/base_station_base.h
Show inline comments
 
@@ -13,6 +13,7 @@
 
#define BASE_STATION_BASE_H
 

	
 
#include "core/pool_type.hpp"
 
#include "command_type.h"
 
#include "viewport_type.h"
 
#include "station_map.h"
 

	
 
@@ -39,7 +40,7 @@ struct StationRect : public Rect {
 
	void MakeEmpty();
 
	bool PtInExtendedRect(int x, int y, int distance = 0) const;
 
	bool IsEmpty() const;
 
	bool BeforeAddTile(TileIndex tile, StationRectMode mode);
 
	CommandCost BeforeAddTile(TileIndex tile, StationRectMode mode);
 
	bool BeforeAddRect(TileIndex tile, int w, int h, StationRectMode mode);
 
	bool AfterRemoveTile(BaseStation *st, TileIndex tile);
 
	bool AfterRemoveRect(BaseStation *st, TileIndex tile, int w, int h);
src/station.cpp
Show inline comments
 
@@ -366,7 +366,7 @@ bool StationRect::IsEmpty() const
 
	return this->left == 0 || this->left > this->right || this->top > this->bottom;
 
}
 

	
 
bool StationRect::BeforeAddTile(TileIndex tile, StationRectMode mode)
 
CommandCost StationRect::BeforeAddTile(TileIndex tile, StationRectMode mode)
 
{
 
	int x = TileX(tile);
 
	int y = TileY(tile);
 
@@ -386,8 +386,7 @@ bool StationRect::BeforeAddTile(TileInde
 
		int h = new_rect.bottom - new_rect.top + 1;
 
		if (mode != ADD_FORCE && (w > _settings_game.station.station_spread || h > _settings_game.station.station_spread)) {
 
			assert(mode != ADD_TRY);
 
			_error_message = STR_ERROR_STATION_TOO_SPREAD_OUT;
 
			return false;
 
			return_cmd_error(STR_ERROR_STATION_TOO_SPREAD_OUT);
 
		}
 

	
 
		/* spread-out ok, return true */
 
@@ -398,13 +397,19 @@ bool StationRect::BeforeAddTile(TileInde
 
	} else {
 
		; // new point is inside the rect, we don't need to do anything
 
	}
 
	return true;
 
	return CommandCost();
 
}
 

	
 
bool StationRect::BeforeAddRect(TileIndex tile, int w, int h, StationRectMode mode)
 
{
 
	return (mode == ADD_FORCE || (w <= _settings_game.station.station_spread && h <= _settings_game.station.station_spread)) && // important when the old rect is completely inside the new rect, resp. the old one was empty
 
			this->BeforeAddTile(tile, mode) && this->BeforeAddTile(TILE_ADDXY(tile, w - 1, h - 1), mode);
 
	if (mode == ADD_FORCE || (w <= _settings_game.station.station_spread && h <= _settings_game.station.station_spread)) {
 
		/* Important when the old rect is completely inside the new rect, resp. the old one was empty. */
 
		CommandCost ret = this->BeforeAddTile(tile, mode);
 
		if (ret.Succeeded()) ret = this->BeforeAddTile(TILE_ADDXY(tile, w - 1, h - 1), mode);
 
		if (ret.Succeeded()) return true;
 
		ret.SetGlobalErrorMessage();
 
	}
 
	return false;
 
}
 

	
 
/**
0 comments (0 inline, 0 general)