1
0
Fork 0

Add: Station variable 6B to get extended station id of nearby tiles (#10953)

pull/11963/head
kiwitreekor 2024-02-03 19:17:49 +09:00 committed by GitHub
parent 849fd5ae03
commit 8d62a8f0f0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 35 additions and 0 deletions

View File

@ -171,6 +171,23 @@ uint32_t RoadStopScopeResolver::GetVariable(byte variable, [[maybe_unused]] uint
return ssl.grfid; return ssl.grfid;
} }
/* 16 bit road stop ID of nearby tiles */
case 0x6B: {
TileIndex nearby_tile = GetNearbyTile(parameter, this->tile);
if (!IsRoadStopTile(nearby_tile)) return 0xFFFFFFFF;
if (!IsCustomRoadStopSpecIndex(nearby_tile)) return 0xFFFE;
uint32_t grfid = this->st->roadstop_speclist[GetCustomRoadStopSpecIndex(this->tile)].grfid;
const RoadStopSpecList ssl = BaseStation::GetByTile(nearby_tile)->roadstop_speclist[GetCustomRoadStopSpecIndex(nearby_tile)];
if (ssl.grfid == grfid) {
return ssl.localidx;
}
return 0xFFFE;
}
case 0xF0: return this->st == nullptr ? 0 : this->st->facilities; // facilities case 0xF0: return this->st == nullptr ? 0 : this->st->facilities; // facilities
case 0xFA: return ClampTo<uint16_t>((this->st == nullptr ? TimerGameCalendar::date : this->st->build_date) - CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR); // build date case 0xFA: return ClampTo<uint16_t>((this->st == nullptr ? TimerGameCalendar::date : this->st->build_date) - CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR); // build date

View File

@ -376,6 +376,22 @@ TownScopeResolver *StationResolverObject::GetTown()
return ssl.grfid; return ssl.grfid;
} }
case 0x6B: { // 16 bit Station ID of nearby tiles
TileIndex nearby_tile = GetNearbyTile(parameter, this->tile);
if (!HasStationTileRail(nearby_tile)) return 0xFFFFFFFF;
if (!IsCustomStationSpecIndex(nearby_tile)) return 0xFFFE;
uint32_t grfid = this->st->speclist[GetCustomStationSpecIndex(this->tile)].grfid;
const StationSpecList ssl = BaseStation::GetByTile(nearby_tile)->speclist[GetCustomStationSpecIndex(nearby_tile)];
if (ssl.grfid == grfid) {
return ssl.localidx;
}
return 0xFFFE;
}
/* General station variables */ /* General station variables */
case 0x82: return 50; case 0x82: return 50;
case 0x84: return this->st->string_id; case 0x84: return this->st->string_id;

View File

@ -131,6 +131,7 @@ static const NIVariable _niv_stations[] = {
NIV(0x68, "station info of nearby tiles"), NIV(0x68, "station info of nearby tiles"),
NIV(0x69, "information about cargo accepted in the past"), NIV(0x69, "information about cargo accepted in the past"),
NIV(0x6A, "GRFID of nearby station tiles"), NIV(0x6A, "GRFID of nearby station tiles"),
NIV(0x6B, "station ID of nearby tiles"),
NIV_END() NIV_END()
}; };
@ -689,6 +690,7 @@ static const NIVariable _nif_roadstops[] = {
NIV(0x68, "road stop info of nearby tiles"), NIV(0x68, "road stop info of nearby tiles"),
NIV(0x69, "information about cargo accepted in the past"), NIV(0x69, "information about cargo accepted in the past"),
NIV(0x6A, "GRFID of nearby road stop tiles"), NIV(0x6A, "GRFID of nearby road stop tiles"),
NIV(0x6B, "road stop ID of nearby tiles"),
NIV_END(), NIV_END(),
}; };