changeset 12497:73d75faa3cb0 draft

(svn r16934) -Codechange: introduce a simple helper function to check whether a station is pending deletion or not
author rubidium <rubidium@openttd.org>
date Fri, 24 Jul 2009 07:38:10 +0000
parents 99f1ec9a1940
children aae26c2d92ef
files src/base_station_base.h src/station_cmd.cpp src/terraform_gui.cpp src/viewport.cpp src/waypoint_cmd.cpp src/waypoint_gui.cpp
diffstat 6 files changed, 19 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/base_station_base.h
+++ b/src/base_station_base.h
@@ -94,6 +94,17 @@
 	{
 		return BaseStation::Get(GetStationIndex(tile));
 	}
+
+	/**
+	 * Check whether the base station currently is in use; in use means
+	 * that it is not scheduled for deletion and that it still has some
+	 * facilities left.
+	 * @return true if still in use
+	 */
+	FORCEINLINE bool IsInUse() const
+	{
+		return (this->facilities & ~FACIL_WAYPOINT) != 0;
+	}
 };
 
 #define FOR_ALL_BASE_STATIONS(var) FOR_ALL_ITEMS_FROM(BaseStation, station_index, var, 0)
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2570,7 +2570,7 @@
  */
 static bool StationHandleBigTick(BaseStation *st)
 {
-	if ((st->facilities & ~FACIL_WAYPOINT) == 0 && ++st->delete_ctr >= 8) {
+	if (!st->IsInUse() && ++st->delete_ctr >= 8) {
 		delete st;
 		return false;
 	}
@@ -2698,7 +2698,7 @@
 /* called for every station each tick */
 static void StationHandleSmallTick(BaseStation *st)
 {
-	if ((st->facilities & FACIL_WAYPOINT) != 0 || st->facilities == 0) return;
+	if ((st->facilities & FACIL_WAYPOINT) != 0 || !st->IsInUse()) return;
 
 	byte b = st->delete_ctr + 1;
 	if (b >= 185) b = 0;
--- a/src/terraform_gui.cpp
+++ b/src/terraform_gui.cpp
@@ -638,7 +638,7 @@
 		FOR_ALL_BASE_STATIONS(st) {
 			/* There can be buoys, remove them */
 			if (IsBuoyTile(st->xy)) DoCommand(st->xy, 0, 0, DC_EXEC | DC_BANKRUPT, CMD_LANDSCAPE_CLEAR);
-			if ((st->facilities & ~FACIL_WAYPOINT) == 0) delete st;
+			if (!st->IsInUse()) delete st;
 		}
 
 		MarkWholeScreenDirty();
--- a/src/viewport.cpp
+++ b/src/viewport.cpp
@@ -1220,7 +1220,7 @@
 
 static void AddWaypoint(const Waypoint *wp, StringID str, uint16 width)
 {
-	AddStringToDraw(wp->sign.left + 1, wp->sign.top + 1, str, wp->index, 0, (wp->owner == OWNER_NONE || (wp->facilities & ~FACIL_WAYPOINT) == 0) ? 0xE : _company_colours[wp->owner], width);
+	AddStringToDraw(wp->sign.left + 1, wp->sign.top + 1, str, wp->index, 0, (wp->owner == OWNER_NONE || !wp->IsInUse()) ? 0xE : _company_colours[wp->owner], width);
 }
 
 
--- a/src/waypoint_cmd.cpp
+++ b/src/waypoint_cmd.cpp
@@ -107,7 +107,7 @@
 	uint thres = 8;
 
 	FOR_ALL_WAYPOINTS(wp) {
-		if ((wp->facilities & ~FACIL_WAYPOINT) == 0 && wp->string_id == str && (wp->owner == _current_company || wp->owner == OWNER_NONE)) {
+		if (!wp->IsInUse() && wp->string_id == str && (wp->owner == _current_company || wp->owner == OWNER_NONE)) {
 			uint cur_dist = DistanceManhattan(tile, wp->xy);
 
 			if (cur_dist < thres) {
--- a/src/waypoint_gui.cpp
+++ b/src/waypoint_gui.cpp
@@ -59,9 +59,9 @@
 	virtual void OnPaint()
 	{
 		/* You can only change your own waypoints */
-		this->SetWidgetDisabledState(WAYPVW_RENAME, (this->wp->facilities & ~FACIL_WAYPOINT) == 0 || (this->wp->owner != _local_company && this->wp->owner != OWNER_NONE));
-		/* Disable the widget for waypoints with no owner (after company bankrupt) */
-		this->SetWidgetDisabledState(WAYPVW_SHOW_VEHICLES, (this->wp->facilities & ~FACIL_WAYPOINT) == 0);
+		this->SetWidgetDisabledState(WAYPVW_RENAME, !this->wp->IsInUse() || (this->wp->owner != _local_company && this->wp->owner != OWNER_NONE));
+		/* Disable the widget for waypoints with no use */
+		this->SetWidgetDisabledState(WAYPVW_SHOW_VEHICLES, !this->wp->IsInUse());
 
 		SetDParam(0, this->wp->index);
 		this->DrawWidgets();