Mercurial > hg > openttd
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;