diff --git a/src/lang/english.txt b/src/lang/english.txt --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1681,7 +1681,7 @@ STR_TOWN_LABEL_POP STR_TOWN_LABEL :{WHITE}{TOWN} STR_TOWN_LABEL_TINY_BLACK :{TINYFONT}{BLACK}{TOWN} STR_TOWN_LABEL_TINY_WHITE :{TINYFONT}{WHITE}{TOWN} -STR_2002 :{TINYFONT}{BLACK}{STRING1} +STR_2002 :{TINYFONT}{BLACK}{SIGN} STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Building must be demolished first STR_2005 :{WHITE}{TOWN} STR_2006_POPULATION :{BLACK}Population: {ORANGE}{COMMA}{BLACK} Houses: {ORANGE}{COMMA} @@ -1785,7 +1785,7 @@ STR_2802_TREES STR_2803_TREE_ALREADY_HERE :{WHITE}...tree already here STR_2804_SITE_UNSUITABLE :{WHITE}...site unsuitable STR_2805_CAN_T_PLANT_TREE_HERE :{WHITE}Can't plant tree here... -STR_2806 :{WHITE}{STRING} +STR_2806 :{WHITE}{SIGN} STR_2808_TOO_MANY_SIGNS :{WHITE}...too many signs STR_2809_CAN_T_PLACE_SIGN_HERE :{WHITE}Can't place sign here... STR_280A_SIGN :Sign @@ -3340,6 +3340,7 @@ STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Profit this year: {RED}{CURRENCY} {BLACK}(last year: {RED}{CURRENCY}{BLACK}) STR_GROUP_NAME :{GROUP} +STR_SIGN_NAME :{SIGN} STR_VEHICLE_NAME :{VEHICLE} ######## diff --git a/src/main_gui.cpp b/src/main_gui.cpp --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -346,7 +346,8 @@ void ShowRenameSignWindow(const Sign *si { _rename_id = si->index; _rename_what = 0; - ShowQueryString(si->str, STR_280B_EDIT_SIGN_TEXT, 30, 180, NULL, CS_ALPHANUMERAL); + SetDParam(0, si->index); + ShowQueryString(STR_SIGN_NAME, STR_280B_EDIT_SIGN_TEXT, 30, 180, NULL, CS_ALPHANUMERAL); } void ShowRenameWaypointWindow(const Waypoint *wp) diff --git a/src/signs.cpp b/src/signs.cpp --- a/src/signs.cpp +++ b/src/signs.cpp @@ -39,7 +39,7 @@ DEFINE_OLD_POOL(Sign, Sign, SignPoolNewB static void UpdateSignVirtCoords(Sign *si) { Point pt = RemapCoords(si->x, si->y, si->z); - SetDParam(0, si->str); + SetDParam(0, si->index); UpdateViewportSignPos(&si->sign, pt.x, pt.y - 6, STR_2806); } diff --git a/src/signs_gui.cpp b/src/signs_gui.cpp --- a/src/signs_gui.cpp +++ b/src/signs_gui.cpp @@ -88,7 +88,8 @@ static void SignListWndProc(Window *w, W if (si->owner != OWNER_NONE) DrawPlayerIcon(si->owner, 4, y + 1); - DrawString(22, y, si->str, 8); + SetDParam(0, si->index); + DrawString(22, y, STR_SIGN_NAME, 8); y += 10; } } diff --git a/src/strgen/strgen.cpp b/src/strgen/strgen.cpp --- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -504,6 +504,7 @@ static const CmdStruct _cmd_structs[] = {"STATION", EmitSingleChar, SCC_STATION_NAME, 1, 0}, {"TOWN", EmitSingleChar, SCC_TOWN_NAME, 1, 0}, {"GROUP", EmitSingleChar, SCC_GROUP_NAME, 1, 0}, + {"SIGN", EmitSingleChar, SCC_SIGN_NAME, 1, 0}, {"VEHICLE", EmitSingleChar, SCC_VEHICLE_NAME, 1, 0}, // 0x9D is used for the pseudo command SETCASE diff --git a/src/strings.cpp b/src/strings.cpp --- a/src/strings.cpp +++ b/src/strings.cpp @@ -29,6 +29,7 @@ #include "group.h" #include "debug.h" #include "newgrf_townname.h" +#include "signs.h" #include "vehicle.h" /* for opendir/readdir/closedir */ @@ -873,6 +874,12 @@ static char* FormatString(char* buff, co break; } + case SCC_SIGN_NAME: { // {SIGN} + const Sign *si = GetSign(GetInt32(&argv)); + buff = GetString(buff, si->str, last); + break; + } + case SCC_SETCASE: { // {SETCASE} /* This is a pseudo command, it's outputted when someone does {STRING.ack} * The modifier is added to all subsequent GetStringWithArgs that accept the modifier. */ diff --git a/src/table/control_codes.h b/src/table/control_codes.h --- a/src/table/control_codes.h +++ b/src/table/control_codes.h @@ -28,6 +28,7 @@ enum { SCC_TOWN_NAME, SCC_GROUP_NAME, SCC_VEHICLE_NAME, + SCC_SIGN_NAME, SCC_CURRENCY_COMPACT, SCC_CURRENCY, diff --git a/src/viewport.cpp b/src/viewport.cpp --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -939,7 +939,7 @@ static void AddSign(const Sign *si, Stri { StringSpriteToDraw *sstd; - sstd = (StringSpriteToDraw*)AddStringToDraw(si->sign.left + 1, si->sign.top + 1, str, si->str, 0); + sstd = (StringSpriteToDraw*)AddStringToDraw(si->sign.left + 1, si->sign.top + 1, str, si->index, 0); if (sstd != NULL) { sstd->color = (si->owner == OWNER_NONE) ? 14 : _player_colors[si->owner]; sstd->width = width;