Changeset - r16110:0eb4e685b16c
[Not reviewed]
master
0 5 0
rubidium - 14 years ago 2010-09-16 16:31:57
rubidium@openttd.org
(svn r20816) -Codechange [FS#3835]: make waypoint default names work like depots, stations and vehicles (Krille)
5 files changed with 20 insertions and 13 deletions:
0 comments (0 inline, 0 general)
src/depot_base.h
Show inline comments
 
@@ -23,7 +23,7 @@ struct Depot : DepotPool::PoolItem<&_dep
 
	char *name;
 

	
 
	TileIndex xy;
 
	uint16 town_cn;    ///< The Nth depot for this town (consecutive number)
 
	uint16 town_cn;    ///< The N-1th depot for this town (consecutive number)
 
	Date build_date;   ///< Date of construction
 

	
 
	Depot(TileIndex xy = INVALID_TILE) : xy(xy) {}
src/saveload/afterload.cpp
Show inline comments
 
@@ -2295,6 +2295,19 @@ bool AfterLoadGame()
 
				SetWaterClass(t, WATER_CLASS_INVALID);
 
			}
 
		}
 

	
 
		/* Waypoints with custom name may have a non-unique town_cn,
 
		 * renumber those. First set all affected waypoints to the
 
		 * highest possible number to get them numbered in the
 
		 * order they have in the pool. */
 
		Waypoint *wp;
 
		FOR_ALL_WAYPOINTS(wp) {
 
			if (wp->name != NULL) wp->town_cn = UINT16_MAX;
 
		}
 

	
 
		FOR_ALL_WAYPOINTS(wp) {
 
			if (wp->name != NULL) MakeDefaultName(wp);
 
		}
 
	}
 

	
 
	/* Road stops is 'only' updating some caches */
src/town.h
Show inline comments
 
@@ -240,8 +240,8 @@ extern TownID _new_town_id;
 
template <class T>
 
void MakeDefaultName(T *obj)
 
{
 
	/* We only want to set names if it hasn't been set before. */
 
	assert(obj->name == NULL);
 
	/* We only want to set names if it hasn't been set before, or when we're calling from afterload. */
 
	assert(obj->name == NULL || obj->town_cn == UINT16_MAX);
 

	
 
	obj->town = ClosestTownFromTile(obj->xy, UINT_MAX);
 

	
 
@@ -266,8 +266,8 @@ void MakeDefaultName(T *obj)
 

	
 
		/* check only valid waypoints... */
 
		if (lobj != NULL && obj != lobj) {
 
			/* only objects with 'generic' name within the same city and with the same type*/
 
			if (lobj->name == NULL && lobj->town == obj->town && lobj->IsOfType(obj)) {
 
			/* only objects within the same city and with the same type */
 
			if (lobj->town == obj->town && lobj->IsOfType(obj)) {
 
				/* if lobj->town_cn < next, uint will overflow to '+inf' */
 
				uint i = (uint)lobj->town_cn - next;
 

	
src/waypoint_base.h
Show inline comments
 
@@ -15,7 +15,7 @@
 
#include "base_station_base.h"
 

	
 
struct Waypoint : SpecializedStation<Waypoint, true> {
 
	uint16 town_cn;    ///< The Nth waypoint for this town (consecutive number)
 
	uint16 town_cn;    ///< The N-1th waypoint for this town (consecutive number)
 

	
 
	Waypoint(TileIndex tile = INVALID_TILE) : SpecializedStation<Waypoint, true>(tile) { }
 
	~Waypoint();
src/waypoint_cmd.cpp
Show inline comments
 
@@ -406,13 +406,7 @@ CommandCost CmdRenameWaypoint(TileIndex 
 

	
 
	if (flags & DC_EXEC) {
 
		free(wp->name);
 

	
 
		if (reset) {
 
			wp->name = NULL;
 
			MakeDefaultName(wp);
 
		} else {
 
			wp->name = strdup(text);
 
		}
 
		wp->name = reset ? NULL : strdup(text);
 

	
 
		wp->UpdateVirtCoord();
 
	}
0 comments (0 inline, 0 general)