diff options
Diffstat (limited to 'src/strings.cpp')
-rw-r--r-- | src/strings.cpp | 88 |
1 files changed, 65 insertions, 23 deletions
diff --git a/src/strings.cpp b/src/strings.cpp index 053984593..10e921f70 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -138,8 +138,7 @@ static char *GetStringWithArgs(char *buffr, uint string, const int64 *argv, cons break; case 15: - /* User defined name */ - return GetName(buffr, index, last); + error("Boo!"); case 26: /* Include string within newgrf text (format code 81) */ @@ -821,17 +820,20 @@ static char* FormatString(char* buff, const char* str, const int64* argv, uint c break; case SCC_WAYPOINT_NAME: { // {WAYPOINT} - int64 temp[2]; Waypoint *wp = GetWaypoint(GetInt32(&argv)); - StringID str; - if (wp->string != STR_NULL) { - str = wp->string; + + if (!wp->IsValid()) { // waypoint doesn't exist anymore + buff = GetStringWithArgs(buff, STR_UNKNOWN_DESTINATION, NULL, last); + } else if (wp->name != NULL) { + buff = strecpy(buff, wp->name, last); } else { + int64 temp[2]; temp[0] = wp->town_index; temp[1] = wp->town_cn + 1; - str = wp->town_cn == 0 ? STR_WAYPOINTNAME_CITY : STR_WAYPOINTNAME_CITY_SERIAL; + StringID str = wp->town_cn == 0 ? STR_WAYPOINTNAME_CITY : STR_WAYPOINTNAME_CITY_SERIAL; + + buff = GetStringWithArgs(buff, str, temp, last); } - buff = GetStringWithArgs(buff, str, temp, last); break; } @@ -840,6 +842,8 @@ static char* FormatString(char* buff, const char* str, const int64* argv, uint c if (!st->IsValid()) { // station doesn't exist anymore buff = GetStringWithArgs(buff, STR_UNKNOWN_DESTINATION, NULL, last); + } else if (st->name != NULL) { + buff = strecpy(buff, st->name, last); } else { int64 temp[3]; temp[0] = STR_TOWN; @@ -859,7 +863,9 @@ static char* FormatString(char* buff, const char* str, const int64* argv, uint c temp[0] = t->townnameparts; uint32 grfid = t->townnamegrfid; - if (grfid == 0) { + if (t->name != NULL) { + buff = strecpy(buff, t->name, last); + } else if (grfid == 0) { /* Original town name */ buff = GetStringWithArgs(buff, t->townnametype, temp, last); } else { @@ -877,44 +883,75 @@ static char* FormatString(char* buff, const char* str, const int64* argv, uint c case SCC_GROUP_NAME: { // {GROUP} const Group *g = GetGroup(GetInt32(&argv)); - int64 args[1]; assert(g->IsValid()); - args[0] = g->index; - buff = GetStringWithArgs(buff, IsCustomName(g->string_id) ? g->string_id : STR_GROUP_NAME_FORMAT, args, last); + if (g->name != NULL) { + buff = strecpy(buff, g->name, last); + } else { + int64 args[1]; + args[0] = g->index; + buff = GetStringWithArgs(buff, STR_GROUP_NAME_FORMAT, args, last); + } break; } case SCC_ENGINE_NAME: { // {ENGINE} EngineID engine = (EngineID)GetInt32(&argv); + const Engine *e = GetEngine(engine); - buff = GetString(buff, GetCustomEngineName(engine), last); + if (e->name != NULL) { + buff = strecpy(buff, e->name, last); + } else { + buff = GetStringWithArgs(buff, EngInfo(engine)->string_id, NULL, last); + } break; } case SCC_VEHICLE_NAME: { // {VEHICLE} const Vehicle *v = GetVehicle(GetInt32(&argv)); - int64 args[1]; - args[0] = v->unitnumber; + if (v->name != NULL) { + buff = strecpy(buff, v->name, last); + } else { + int64 args[1]; + args[0] = v->unitnumber; + + StringID str; + switch (v->type) { + default: NOT_REACHED(); + case VEH_TRAIN: str = STR_SV_TRAIN_NAME; break; + case VEH_ROAD: str = STR_SV_ROADVEH_NAME; break; + case VEH_SHIP: str = STR_SV_SHIP_NAME; break; + case VEH_AIRCRAFT: str = STR_SV_AIRCRAFT_NAME; break; + } - buff = GetStringWithArgs(buff, v->string_id, args, last); + buff = GetStringWithArgs(buff, str, args, last); + } break; } case SCC_SIGN_NAME: { // {SIGN} const Sign *si = GetSign(GetInt32(&argv)); - buff = GetString(buff, si->str, last); + if (si->name != NULL) { + buff = strecpy(buff, si->name, last); + } else { + buff = GetStringWithArgs(buff, STR_280A_SIGN, NULL, last); + } break; } case SCC_COMPANY_NAME: { // {COMPANY} const Player *p = GetPlayer((PlayerID)GetInt32(&argv)); - int64 args[1]; - args[0] = p->name_2; - buff = GetStringWithArgs(buff, p->name_1, args, last); + + if (p->name != NULL) { + buff = strecpy(buff, p->name, last); + } else { + int64 args[1]; + args[0] = p->name_2; + buff = GetStringWithArgs(buff, p->name_1, args, last); + } break; } @@ -932,9 +969,14 @@ static char* FormatString(char* buff, const char* str, const int64* argv, uint c case SCC_PLAYER_NAME: { // {PLAYERNAME} const Player *p = GetPlayer((PlayerID)GetInt32(&argv)); - int64 args[1]; - args[0] = p->president_name_2; - buff = GetStringWithArgs(buff, p->president_name_1, args, last); + + if (p->president_name != NULL) { + buff = strecpy(buff, p->president_name, last); + } else { + int64 args[1]; + args[0] = p->president_name_2; + buff = GetStringWithArgs(buff, p->president_name_1, args, last); + } break; } |