changeset 12426:f701d4887357 draft

(svn r16860) -Codechange: introduce a helper to assign a station spec to Waypoints
author rubidium <rubidium@openttd.org>
date Fri, 17 Jul 2009 20:21:24 +0000
parents d9e9b7477507
children 46dfb5184656
files src/saveload/afterload.cpp src/waypoint.cpp src/waypoint.h src/waypoint_cmd.cpp
diffstat 4 files changed, 23 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -997,21 +997,8 @@
 
 		FOR_ALL_WAYPOINTS(wp) {
 			if (wp->delete_ctr == 0) {
-				const StationSpec *statspec = NULL;
-
 				if (HasBit(_m[wp->xy].m3, 4)) {
-					statspec = GetCustomStationSpec(STAT_CLASS_WAYP, _m[wp->xy].m4 + 1);
-				}
-
-				if (statspec != NULL) {
-					wp->spec.spec = statspec;
-					wp->spec.grfid = statspec->grffile->grfid;
-					wp->spec.localidx = statspec->localidx;
-				} else {
-					/* No custom graphics set, so set to default. */
-					wp->spec.spec = NULL;
-					wp->spec.grfid = 0;
-					wp->spec.localidx = 0;
+					wp->AssignStationSpec(_m[wp->xy].m4 + 1);
 				}
 
 				/* Move ground type bits from m2 to m4. */
--- a/src/waypoint.cpp
+++ b/src/waypoint.cpp
@@ -91,6 +91,25 @@
 	this->sign.MarkDirty();
 }
 
+/**
+ * Assign a station spec to this waypoint.
+ * @param index the index of the spec from the waypoint specs
+ */
+void Waypoint::AssignStationSpec(uint index)
+{
+	const StationSpec *statspec = GetCustomStationSpec(STAT_CLASS_WAYP, index);
+
+	if (statspec != NULL) {
+		this->spec.spec = statspec;
+		this->spec.grfid = statspec->grffile->grfid;
+		this->spec.localidx = statspec->localidx;
+	} else {
+		this->spec.spec = NULL;
+		this->spec.grfid = 0;
+		this->spec.localidx = 0;
+	}
+}
+
 void InitializeWaypoints()
 {
 	_waypoint_pool.CleanPool();
--- a/src/waypoint.h
+++ b/src/waypoint.h
@@ -36,6 +36,8 @@
 	~Waypoint();
 
 	void UpdateVirtCoord();
+
+	void AssignStationSpec(uint index);
 };
 
 #define FOR_ALL_WAYPOINTS_FROM(var, start) FOR_ALL_ITEMS_FROM(Waypoint, waypoint_index, var, start)
--- a/src/waypoint_cmd.cpp
+++ b/src/waypoint_cmd.cpp
@@ -190,18 +190,7 @@
 		SetDepotWaypointReservation(tile, reserved);
 		MarkTileDirtyByTile(tile);
 
-		const StationSpec *statspec = GetCustomStationSpec(STAT_CLASS_WAYP, p1);
-
-		if (statspec != NULL) {
-			wp->spec.spec = statspec;
-			wp->spec.grfid = statspec->grffile->grfid;
-			wp->spec.localidx = statspec->localidx;
-		} else {
-			/* Specified custom graphics do not exist, so use default. */
-			wp->spec.spec = NULL;
-			wp->spec.grfid = 0;
-			wp->spec.localidx = 0;
-		}
+		wp->AssignStationSpec(p1);
 
 		wp->delete_ctr = 0;
 		wp->build_date = _date;