mirror of https://github.com/OpenTTD/OpenTTD
(svn r4772) - Newstations: when allocating a custom station (via action 0x03) check if the station has already been allocated. (Fixes duplicate waypoints in newstatsw in non-temperate climate)
parent
8bd664f81f
commit
5c3887cdb4
|
@ -137,6 +137,9 @@ void SetCustomStationSpec(StationSpec *statspec)
|
||||||
StationClass *station_class;
|
StationClass *station_class;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
/* If the station has already been allocated, don't reallocate it. */
|
||||||
|
if (statspec->allocated) return;
|
||||||
|
|
||||||
assert(statspec->sclass < STAT_CLASS_MAX);
|
assert(statspec->sclass < STAT_CLASS_MAX);
|
||||||
station_class = &station_classes[statspec->sclass];
|
station_class = &station_classes[statspec->sclass];
|
||||||
|
|
||||||
|
@ -144,6 +147,7 @@ void SetCustomStationSpec(StationSpec *statspec)
|
||||||
station_class->spec = realloc(station_class->spec, station_class->stations * sizeof(*station_class->spec));
|
station_class->spec = realloc(station_class->spec, station_class->stations * sizeof(*station_class->spec));
|
||||||
|
|
||||||
station_class->spec[i] = statspec;
|
station_class->spec[i] = statspec;
|
||||||
|
statspec->allocated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -21,6 +21,8 @@ typedef struct StationSpec {
|
||||||
uint32 grfid; ///< ID of GRF file station belongs to.
|
uint32 grfid; ///< ID of GRF file station belongs to.
|
||||||
int localidx; ///< Index within GRF file of station.
|
int localidx; ///< Index within GRF file of station.
|
||||||
|
|
||||||
|
bool allocated; ///< Flag whether this station has been added to a station class list
|
||||||
|
|
||||||
StationClassID sclass; ///< The class to which this spec belongs.
|
StationClassID sclass; ///< The class to which this spec belongs.
|
||||||
StringID name; ///< Name of this station.
|
StringID name; ///< Name of this station.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue