From 5b25e620dd747d35b024d6d244be9fc7002e38b0 Mon Sep 17 00:00:00 2001 From: yexo Date: Wed, 29 Dec 2010 23:20:12 +0000 Subject: (svn r21663) -Add: [NoAI]: AIRail::GetName() to get the name of a railtype --- src/ai/api/ai_changelog.hpp | 1 + src/ai/api/ai_rail.cpp | 12 ++++++++++++ src/ai/api/ai_rail.hpp | 12 ++++++++++++ src/ai/api/ai_rail.hpp.sq | 1 + 4 files changed, 26 insertions(+) (limited to 'src/ai') diff --git a/src/ai/api/ai_changelog.hpp b/src/ai/api/ai_changelog.hpp index fe3748a32..19e6de8fa 100644 --- 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: diff --git a/src/ai/api/ai_rail.cpp b/src/ai/api/ai_rail.cpp index 45cc78a3a..4f6c41376 100644 --- 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(len); + + ::GetString(railtype_name, GetRailTypeInfo((::RailType)rail_type)->strings.menu_text, &railtype_name[len - 1]); + return railtype_name; +} /* static */ bool AIRail::IsRailTile(TileIndex tile) { diff --git a/src/ai/api/ai_rail.hpp b/src/ai/api/ai_rail.hpp index 8b858c0ad..688377f8a 100644 --- a/src/ai/api/ai_rail.hpp +++ b/src/ai/api/ai_rail.hpp @@ -96,6 +96,18 @@ public: BT_WAYPOINT, ///< Build a rail waypoint }; + /** + * 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 diff --git a/src/ai/api/ai_rail.hpp.sq b/src/ai/api/ai_rail.hpp.sq index 04ddfb1a0..a21bfcfa5 100644 --- a/src/ai/api/ai_rail.hpp.sq +++ b/src/ai/api/ai_rail.hpp.sq @@ -79,6 +79,7 @@ void SQAIRail_Register(Squirrel *engine) 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"); -- cgit v1.2.3-70-g09d2