Mercurial > hg > openttd
changeset 16928:32a83472793d draft
(svn r21663) -Add: [NoAI]: AIRail::GetName() to get the name of a railtype
author | yexo <yexo@openttd.org> |
---|---|
date | Wed, 29 Dec 2010 23:20:12 +0000 |
parents | 2c02697644fd |
children | 9345826dd1fd |
files | bin/ai/regression/regression.nut bin/ai/regression/regression.txt src/ai/api/ai_changelog.hpp src/ai/api/ai_rail.cpp src/ai/api/ai_rail.hpp src/ai/api/ai_rail.hpp.sq |
diffstat | 6 files changed, 28 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/bin/ai/regression/regression.nut +++ b/bin/ai/regression/regression.nut @@ -1028,6 +1028,7 @@ print(" ListDump:"); for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" RailType: " + i); + print(" GetName(): " + AIRail.GetName(i)); print(" IsRailTypeAvailable(): " + AIRail.IsRailTypeAvailable(i)); print(" GetMaxSpeed(): " + AIRail.GetMaxSpeed(i)); }
--- a/bin/ai/regression/regression.txt +++ b/bin/ai/regression/regression.txt @@ -7209,6 +7209,7 @@ Count(): 1 ListDump: RailType: 0 + GetName(): Railway construction IsRailTypeAvailable(): true GetMaxSpeed(): 0
--- a/src/ai/api/ai_changelog.hpp +++ b/src/ai/api/ai_changelog.hpp @@ -25,6 +25,7 @@ * \li AIIndustryType::INDUSTRYTYPE_TOWN * \li AIIndustryType::INDUSTRYTYPE_UNKNOWN * \li AIOrder::IsVoidOrder + * \li AIRail::GetName * \li AITown::IsCity * * API removals:
--- a/src/ai/api/ai_rail.cpp +++ b/src/ai/api/ai_rail.cpp @@ -19,6 +19,18 @@ #include "../../newgrf.h" #include "../../newgrf_generic.h" #include "../../newgrf_station.h" +#include "../../strings_func.h" + +/* static */ char *AIRail::GetName(RailType rail_type) +{ + if (!IsRailTypeAvailable(rail_type)) return NULL; + + static const int len = 64; + char *railtype_name = MallocT<char>(len); + + ::GetString(railtype_name, GetRailTypeInfo((::RailType)rail_type)->strings.menu_text, &railtype_name[len - 1]); + return railtype_name; +} /* static */ bool AIRail::IsRailTile(TileIndex tile) {
--- a/src/ai/api/ai_rail.hpp +++ b/src/ai/api/ai_rail.hpp @@ -97,6 +97,18 @@ }; /** + * Get the name of a rail type. + * @param rail_type The rail type to get the name of. + * @pre IsRailTypeAvailable(rail_type). + * @return The name the rail type has. + * @note Since there is no string with only the name of the track, the text which + * is shown in the dropdown where you can chose a track type is returned. This + * means that the name could be something like "Maglev construction" instead + * of just "Maglev". + */ + static char *GetName(RailType rail_type); + + /** * Checks whether the given tile is actually a tile with rail that can be * used to traverse a tile. This excludes rail depots but includes * stations and waypoints.
--- a/src/ai/api/ai_rail.hpp.sq +++ b/src/ai/api/ai_rail.hpp.sq @@ -79,6 +79,7 @@ AIError::RegisterErrorMapString(AIRail::ERR_NONUNIFORM_STATIONS_DISABLED, "ERR_NONUNIFORM_STATIONS_DISABLED"); AIError::RegisterErrorMapString(AIRail::ERR_RAILTYPE_DISALLOWS_CROSSING, "ERR_RAILTYPE_DISALLOWS_CROSSING"); + SQAIRail.DefSQStaticMethod(engine, &AIRail::GetName, "GetName", 2, ".i"); SQAIRail.DefSQStaticMethod(engine, &AIRail::IsRailTile, "IsRailTile", 2, ".i"); SQAIRail.DefSQStaticMethod(engine, &AIRail::IsLevelCrossingTile, "IsLevelCrossingTile", 2, ".i"); SQAIRail.DefSQStaticMethod(engine, &AIRail::IsRailDepotTile, "IsRailDepotTile", 2, ".i");