(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.

-Codechange: remove all BindCString and related functions and replace it by RAW_STRING which prints the C-string raw pointer that is on the 'print stack'.
This commit is contained in:
rubidium 2008-07-17 13:47:04 +00:00
parent c913be73d8
commit ab234cf90c
51 changed files with 125 additions and 176 deletions

View File

@ -332,7 +332,7 @@ struct GenerateLandscapeWindow : public QueryStringBaseWindow {
DrawString( 12, 91, STR_HEIGHTMAP_NAME, TC_BLACK);
SetDParamStr(0, this->name);
DrawStringTruncated(114, 91, STR_ORANGE, TC_BLACK, 326 - 114 - GetStringBoundingBox(buffer).width - 5);
DrawStringTruncated(114, 91, STR_JUST_RAW_STRING, TC_ORANGE, 326 - 114 - GetStringBoundingBox(buffer).width - 5);
}
}

View File

@ -1350,7 +1350,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Kliente
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Kliente oplyn / Kliente maks{}Maatskappye oplyn / Maatskappye maks
STR_NETWORK_GAME_INFO :{SILVER}SPEL INFORMASIE
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Kliente: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Taal: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Blokkiestel: {WHITE}{STRING}

View File

@ -1385,7 +1385,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clientes
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clientes ligados / max. clientes{}Empresas ligados / max, empresas
STR_NETWORK_GAME_INFO :{SILVER}INFORMAÇÃO DO JOGO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clientes: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}

View File

@ -1410,7 +1410,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Играчи
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Онлайн играчи / макс. брой играчи{}Онлайн компании / макс. компании
STR_NETWORK_GAME_INFO :{SILVER}ИНФО ЗА ИГРАТА
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Играчи: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Език: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Терен: {WHITE}{STRING}

View File

@ -1384,7 +1384,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients en línia / clients màxim
STR_NETWORK_GAME_INFO :{SILVER}INFORMACIÓ DEL JOC
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Grup de cel·les: {WHITE}{STRING}

View File

@ -1372,7 +1372,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klijenti
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klijenata online / klijenata maks{}Tvrtki online / tvrki maks.
STR_NETWORK_GAME_INFO :{SILVER}INFO O IGRI
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klijenti: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Jezik: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Set pločica: {WHITE}{STRING}

View File

@ -1442,7 +1442,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Hráčů
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Hráčů online / maximálně
STR_NETWORK_GAME_INFO :{SILVER}INFO O HŘE
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klientů: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Jazyk: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Prostředí: {WHITE}{STRING}

View File

@ -1377,7 +1377,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klienter
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klienter online / maks. klienter{}Selskaber online / maks. selskaber
STR_NETWORK_GAME_INFO :{SILVER}SPIL INFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klienter: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Sprog: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Klima: {WHITE}{STRING}

View File

@ -1384,7 +1384,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Spelers
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Spelers online / spelers maximaal
STR_NETWORK_GAME_INFO :{SILVER}SPEL INFORMATIE
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Spelers: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Taal: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Klimaat: {WHITE}{STRING}

View File

@ -862,13 +862,14 @@ STR_0313_FUND_NEW_INDUSTRY :Fund new indust
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fund new industry
STR_JUST_STRING :{STRING}
STR_JUST_RAW_STRING :{RAW_STRING}
STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...can only be built in towns
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...can only be built in rainforest areas
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...can only be built in desert areas
STR_0319_PAUSED :{YELLOW}* * PAUSED * *
STR_031B_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot successfully saved as '{STRING}'
STR_031B_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot successfully saved as '{RAW_STRING}'
STR_031C_SCREENSHOT_FAILED :{WHITE}Screenshot failed!
STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Purchase land for future use
@ -1296,7 +1297,7 @@ STR_LANDINFO_RIVER :River
STR_BUOY_IS_IN_USE :{WHITE}...buoy is in use!
STR_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
STR_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUM}x{NUM}x{NUM} ({RAW_STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
STR_CANT_CONVERT_RAIL :{WHITE}Can't convert railtype here...
@ -1384,13 +1385,12 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients online / clients max{}Companies online / companies max
STR_NETWORK_GAME_INFO :{SILVER}GAME INFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Language: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Map size: {WHITE}{COMMA}x{COMMA}
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING} : {NUM}
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{RAW_STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{RAW_STRING} : {NUM}
STR_NETWORK_START_DATE :{SILVER}Start date: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Current date: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Password protected!
@ -1474,7 +1474,7 @@ STR_NETWORK_LANG_LATVIAN :Latvian
STR_NETWORK_GAME_LOBBY :{WHITE}Multiplayer game lobby
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Preparing to join: {ORANGE}{STRING}
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Preparing to join: {ORANGE}{RAW_STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}A list of all companies currently in this game. You can either join one or start a new one if there is a free company slot
STR_NETWORK_NEW_COMPANY :{BLACK}New company
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Create a new company
@ -1487,7 +1487,7 @@ STR_NETWORK_REFRESH_TIP :{BLACK}Refresh
STR_NETWORK_COMPANY_INFO :{SILVER}COMPANY INFO
STR_NETWORK_COMPANY_NAME :{SILVER}Company name: {WHITE}{STRING}
STR_NETWORK_COMPANY_NAME :{SILVER}Company name: {WHITE}{RAW_STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inauguration: {WHITE}{NUM}
STR_NETWORK_VALUE :{SILVER}Company value: {WHITE}{CURRENCY}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Current balance: {WHITE}{CURRENCY}
@ -1496,7 +1496,7 @@ STR_NETWORK_PERFORMANCE :{SILVER}Perform
STR_NETWORK_VEHICLES :{SILVER}Vehicles: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stations: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Players: {WHITE}{STRING}
STR_NETWORK_PLAYERS :{SILVER}Players: {WHITE}{RAW_STRING}
STR_NETWORK_CONNECTING :{WHITE}Connecting...
@ -1559,15 +1559,15 @@ STR_NETWORK_ERR_CLIENT_SERVER_FULL :server full
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :has joined the game
STR_NETWORK_GIVE_MONEY :gave your company some money ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :you gave {STRING} some money ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :you gave {RAW_STRING} some money ({CURRENCY})
STR_NETWORK_CHAT_COMPANY_CAPTION :[Team] :
STR_NETWORK_CHAT_COMPANY :[Team] {STRING}: {GRAY}{STRING}
STR_NETWORK_CHAT_TO_COMPANY :[Team] To {STRING}: {GRAY}{STRING}
STR_NETWORK_CHAT_COMPANY :[Team] {RAW_STRING}: {GRAY}{RAW_STRING}
STR_NETWORK_CHAT_TO_COMPANY :[Team] To {RAW_STRING}: {GRAY}{RAW_STRING}
STR_NETWORK_CHAT_CLIENT_CAPTION :[Private] :
STR_NETWORK_CHAT_CLIENT :[Private] {STRING}: {GRAY}{STRING}
STR_NETWORK_CHAT_TO_CLIENT :[Private] To {STRING}: {GRAY}{STRING}
STR_NETWORK_CHAT_CLIENT :[Private] {RAW_STRING}: {GRAY}{RAW_STRING}
STR_NETWORK_CHAT_TO_CLIENT :[Private] To {RAW_STRING}: {GRAY}{RAW_STRING}
STR_NETWORK_CHAT_ALL_CAPTION :[All] :
STR_NETWORK_CHAT_ALL :[All] {STRING}: {GRAY}{STRING}
STR_NETWORK_CHAT_ALL :[All] {RAW_STRING}: {GRAY}{RAW_STRING}
STR_NETWORK_CHAT_OSKTITLE :{BLACK}Enter text for network chat
STR_NETWORK_NAME_CHANGE :has changed his/her name to
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} The server closed the session
@ -1958,11 +1958,11 @@ STR_4003_DELETE :{BLACK}Delete
STR_4004 :{COMPANY}, {DATE_LONG}
STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte{P "" s} free
STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive
STR_4007_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING}
STR_4007_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{RAW_STRING}
STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file
STR_4009_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {STRING}
STR_4009_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{RAW_STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {RAW_STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {RAW_STRING}
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :File not readable
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :File not writeable
@ -3150,25 +3150,25 @@ STR_NEWGRF_APPLY_CHANGES :{BLACK}Apply ch
STR_NEWGRF_SET_PARAMETERS :{BLACK}Set parameters
STR_NEWGRF_TIP :{BLACK}A list of all the Newgrf sets that you have installed. Click a set to change the settings
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}There are currently no newgrf files installed! Please refer to the manual for instructions on installing new graphics
STR_NEWGRF_FILENAME :{BLACK}Filename: {SILVER}{STRING}
STR_NEWGRF_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING}
STR_NEWGRF_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING}
STR_NEWGRF_FILENAME :{BLACK}Filename: {SILVER}{RAW_STRING}
STR_NEWGRF_GRF_ID :{BLACK}GRF ID: {SILVER}{RAW_STRING}
STR_NEWGRF_MD5SUM :{BLACK}MD5sum: {SILVER}{RAW_STRING}
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}You are about to make changes to a running game; this can crash OpenTTD.{}Are you absolutely sure about this?
STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING}
STR_NEWGRF_ERROR_MSG_WARNING :{RED}Warning: {SILVER}{STRING}
STR_NEWGRF_ERROR_MSG_ERROR :{RED}Error: {SILVER}{STRING}
STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{STRING}
STR_NEWGRF_ERROR_VERSION_NUMBER :{STRING} will not work with the TTDPatch version reported by OpenTTD.
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{STRING} is for the {STRING} version of TTD.
STR_NEWGRF_ERROR_UNSET_SWITCH :{STRING} is designed to be used with {STRING}
STR_NEWGRF_ERROR_INVALID_PARAMETER :Invalid parameter for {STRING}: parameter {STRING} ({NUM})
STR_NEWGRF_ERROR_LOAD_BEFORE :{STRING} must be loaded before {STRING}.
STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} must be loaded after {STRING}.
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} requires OpenTTD version {STRING} or better.
STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{RAW_STRING}
STR_NEWGRF_ERROR_MSG_WARNING :{RED}Warning: {SILVER}{RAW_STRING}
STR_NEWGRF_ERROR_MSG_ERROR :{RED}Error: {SILVER}{RAW_STRING}
STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{RAW_STRING}
STR_NEWGRF_ERROR_VERSION_NUMBER :{RAW_STRING} will not work with the TTDPatch version reported by OpenTTD.
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{RAW_STRING} is for the {RAW_STRING} version of TTD.
STR_NEWGRF_ERROR_UNSET_SWITCH :{RAW_STRING} is designed to be used with {RAW_STRING}
STR_NEWGRF_ERROR_INVALID_PARAMETER :Invalid parameter for {RAW_STRING}: parameter {RAW_STRING} ({NUM})
STR_NEWGRF_ERROR_LOAD_BEFORE :{RAW_STRING} must be loaded before {RAW_STRING}.
STR_NEWGRF_ERROR_LOAD_AFTER :{RAW_STRING} must be loaded after {RAW_STRING}.
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{RAW_STRING} requires OpenTTD version {RAW_STRING} or better.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :the GRF file it was designed to translate
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Too many NewGRFs are loaded.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Loading {STRING} as static NewGRF with {STRING} could cause desyncs.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Loading {RAW_STRING} as static NewGRF with {RAW_STRING} could cause desyncs.
STR_NEWGRF_ADD :{BLACK}Add
STR_NEWGRF_ADD_TIP :{BLACK}Add a NewGRF file to the list
@ -3179,7 +3179,7 @@ STR_NEWGRF_MOVEUP_TIP :{BLACK}Move the
STR_NEWGRF_MOVEDOWN :{BLACK}Move Down
STR_NEWGRF_MOVEDOWN_TIP :{BLACK}Move the selected NewGRF file down the list
STR_NEWGRF_FILE_TIP :{BLACK}A list of the NewGRF files that are installed. Click a file to change its parameters
STR_NEWGRF_PARAMETER :{BLACK}Parameters: {SILVER}{STRING}
STR_NEWGRF_PARAMETER :{BLACK}Parameters: {SILVER}{STRING1}
STR_NEWGRF_PARAMETER_QUERY :{BLACK}Enter NewGRF parameters
STR_NEWGRF_NO_INFO :{BLACK}No information available
@ -3412,7 +3412,7 @@ STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Length:
STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {NUM} x {NUM}{}Height difference: {NUM} m
############ Date formatting
STR_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_DATE_TINY :{RAW_STRING}-{RAW_STRING}-{NUM}
STR_DATE_SHORT :{STRING} {NUM}
STR_DATE_LONG :{STRING} {STRING} {NUM}

View File

@ -1354,7 +1354,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients online / clients max
STR_NETWORK_GAME_INFO :{SILVER}GAME INFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Language: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}

View File

@ -1315,7 +1315,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klientoj
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klientoj surrete / maksimume{}Kompanioj surrete / maksimume
STR_NETWORK_GAME_INFO :{SILVER}LUDINFORMOJ
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klientoj: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Lingvo: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tegolaro: {WHITE}{STRING}

View File

@ -1465,7 +1465,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Kliendid
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Kliente sees / enim kliente{}Ettevõtteid sees / enim ettevõtteid
STR_NETWORK_GAME_INFO :{SILVER}MÄNGU ANDMED
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Kliendid: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Keel: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Ruudustik: {WHITE}{STRING}

View File

@ -1349,7 +1349,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Pelaajia
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Pelaajia pelissä/enintään.
STR_NETWORK_GAME_INFO :{SILVER}PELITIEDOT
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Pelaajat: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Kieli: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Ruudusto: {WHITE}{STRING}

View File

@ -1385,7 +1385,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients en ligne / clients max
STR_NETWORK_GAME_INFO :{SILVER}INFOS SUR LE SERVEUR
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Langue: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Terrain: {WHITE}{STRING}

View File

@ -1250,7 +1250,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clientes
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clientes conectador / clients máximos
STR_NETWORK_GAME_INFO :{SILVER}INFORMACIÓN DA PARTIDA
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clientes: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Set de Terreo: {WHITE}{STRING}

View File

@ -1372,7 +1372,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Teilnehmer
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Teilnehmer anwesend / max.
STR_NETWORK_GAME_INFO :{SILVER}SPIEL-INFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Teilnehmer: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Sprache: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Landschaft: {WHITE}{STRING}

View File

@ -1438,7 +1438,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Kliens
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Kliens online / kliens max
STR_NETWORK_GAME_INFO :{SILVER}JÁTÉK INFÓ
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Játékos: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Nyelv: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tájtípus: {WHITE}{STRING}

View File

@ -1382,7 +1382,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Notendur
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Tengdir notendur / hámarksfjöldi notenda
STR_NETWORK_GAME_INFO :{SILVER}UPPLÝSINGAR UM LEIK
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Notendur: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Tungumál: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Landslag: {WHITE}{STRING}

View File

@ -1386,7 +1386,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Client
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Client online / client max{}Compagnie online / compagnie max
STR_NETWORK_GAME_INFO :{SILVER}INFORMAZIONI PARTITA
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Client: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Lingua: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Paesaggio: {WHITE}{STRING}

View File

@ -1370,7 +1370,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}クライアント
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}オンラインのクライアント人数/最高クライアント人数{}オンラインの会社数/最高会社数
STR_NETWORK_GAME_INFO :{SILVER}ゲーム情報
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}クライアント:{WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}国語:  {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}タイルセット:{WHITE}{STRING}

View File

@ -1384,7 +1384,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}클라이언트
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}클라이언트 온라인 / 최대 접속자수{}회사 온라인 / 최대 회사수
STR_NETWORK_GAME_INFO :{SILVER}게임 정보
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}클라이언트: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}언어: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}기후: {WHITE}{STRING}

View File

@ -1324,7 +1324,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Zaidejai
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Zaidzia / maksimaliai zaideju
STR_NETWORK_GAME_INFO :{SILVER}Zaidimo informacija
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Zaidejai: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Kalba: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Pavadinimas: {WHITE}{STRING}

View File

@ -1356,7 +1356,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klienter
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klienter på nett / maks. antall klienter{}Firmaer på nett / maks. antall firmaer
STR_NETWORK_GAME_INFO :{SILVER}SPILLOVERSIKT
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klienter: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Språk: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Brikkesett: {WHITE}{STRING}

View File

@ -1355,7 +1355,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klientar
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klientar på nett / maks. antal klientar{}Firma på nett / maks. antal firma
STR_NETWORK_GAME_INFO :{SILVER}SPELOVERSIKT
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klientar: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Språk: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Brikkesett: {WHITE}{STRING}

View File

@ -1345,7 +1345,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Ientsclay
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Ientsclay onlineway / ientsclay axmay{}Ompaniescay onlineway / ompaniescay axmay
STR_NETWORK_GAME_INFO :{SILVER}EGAMay INFOWAY
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Ientsclay: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Anguagelay: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Ilesettay: {WHITE}{STRING}

View File

@ -1441,7 +1441,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klientów
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klientów podłączonych / maks.{}Firm podłączonych / maks.
STR_NETWORK_GAME_INFO :{SILVER}INFO O GRZE
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klienci: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Język: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Krajobraz: {WHITE}{STRING}

View File

@ -1371,7 +1371,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clientes
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clientes ligados / max. clientes
STR_NETWORK_GAME_INFO :{SILVER}INFORMAÇÃO DE JOGO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clientes: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Conjunto de blocos: {WHITE}{STRING}

View File

@ -1380,7 +1380,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clienţi
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clienţi online / Nr. max. clienţi{}Companii online / Nr. max. companii
STR_NETWORK_GAME_INFO :{SILVER}INFO JOC
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clienţi: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Limba: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}

View File

@ -1386,7 +1386,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Клиенты
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Клиентов сейчас/макс. {}Компаний сейчас/макс.
STR_NETWORK_GAME_INFO :{SILVER}ИНФОРМАЦИЯ ОБ ИГРЕ
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Клиенты: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Язык: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Климат: {WHITE}{STRING}

View File

@ -1305,7 +1305,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}客户端
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}在线客户端 / 最多 - 在线公司 / 最多
STR_NETWORK_GAME_INFO :{SILVER}游戏信息
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}客 户 端: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}语  言: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}场景类型: {WHITE}{STRING}

View File

@ -1438,7 +1438,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klienti
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klienti online / klienti max
STR_NETWORK_GAME_INFO :{SILVER}INFO O HRE
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klienti: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Jazyk: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Prostredie: {WHITE}{STRING}

View File

@ -1426,7 +1426,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Gosti
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Gosti na zvezi / največ gostov{}Podjetja na zvezi / največ podjetij
STR_NETWORK_GAME_INFO :{SILVER}IGRA - INFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Gosti: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Jezik: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Nabor ploščic: {WHITE}{STRING}

View File

@ -1385,7 +1385,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clientes
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clientes online / máx clientes{}Compañías online / máximo compañías
STR_NETWORK_GAME_INFO :{SILVER}INFO JUEGO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clientes: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Escenario: {WHITE}{STRING}

View File

@ -1384,7 +1384,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klienter
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klienter online / Klienter max
STR_NETWORK_GAME_INFO :{SILVER}SPELINFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klienter: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Språk: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Klimat: {WHITE}{STRING}

View File

@ -1382,7 +1382,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}客戶端
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}線上客戶端 / 客戶端上限{}線上公司 / 公司上限
STR_NETWORK_GAME_INFO :{SILVER}遊戲資訊
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}客戶端:{WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}語言:{WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}網格組:{WHITE}{STRING}

View File

@ -1371,7 +1371,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Oyuncular
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Bağlı oyuncular / en fazla oyuncu
STR_NETWORK_GAME_INFO :{SILVER}OYUN BİLGİSİ
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}İstemciler: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Dil: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Set: {WHITE}{STRING}

View File

@ -1509,7 +1509,6 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Клієнти
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Клієнти в мережі/макс.клієнтів{}Компанії в мережі/макс.компаній
STR_NETWORK_GAME_INFO :{SILVER}Інформація про гру
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Клієнт: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Мова: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Шаблон: {WHITE}{STRING}

View File

@ -96,7 +96,10 @@ public:
y += 6;
if (!StrEmpty(this->landinfo_data[LAND_INFO_MULTICENTER_LINE])) DrawStringMultiCenter(140, y, BindCString(this->landinfo_data[LAND_INFO_MULTICENTER_LINE]), this->width - 4);
if (!StrEmpty(this->landinfo_data[LAND_INFO_MULTICENTER_LINE])) {
SetDParamStr(0, this->landinfo_data[LAND_INFO_MULTICENTER_LINE]);
DrawStringMultiCenter(140, y, STR_JUST_RAW_STRING, this->width - 4);
}
}
LandInfoWindow(TileIndex tile) : Window(&_land_info_desc) {
@ -157,11 +160,12 @@ public:
line_nr++;
/* Location */
snprintf(_userstring, lengthof(_userstring), "0x%.4X", tile);
char tmp[16];
snprintf(tmp, lengthof(tmp), "0x%.4X", tile);
SetDParam(0, TileX(tile));
SetDParam(1, TileY(tile));
SetDParam(2, TileHeight(tile));
SetDParam(3, STR_SPEC_USERSTRING);
SetDParamStr(3, tmp);
GetString(this->landinfo_data[line_nr], STR_LANDINFO_COORDS, lastof(this->landinfo_data[line_nr]));
line_nr++;
@ -652,10 +656,11 @@ static int DrawStationCoverageText(const AcceptedCargo cargo,
{
bool first = true;
char *b = InlineString(_userstring, supplies ? STR_SUPPLIES : STR_000D_ACCEPTS);
char string[512];
char *b = InlineString(string, supplies ? STR_SUPPLIES : STR_000D_ACCEPTS);
for (CargoID i = 0; i < NUM_CARGO; i++) {
if (b >= lastof(_userstring) - (1 + 2 * 4)) break; // ',' or ' ' and two calls to Utf8Encode()
if (b >= lastof(string) - (1 + 2 * 4)) break; // ',' or ' ' and two calls to Utf8Encode()
switch (sct) {
case SCT_PASSENGERS_ONLY: if (!IsCargoInClass(i, CC_PASSENGERS)) continue; break;
case SCT_NON_PASSENGERS_ONLY: if (IsCargoInClass(i, CC_PASSENGERS)) continue; break;
@ -680,9 +685,10 @@ static int DrawStationCoverageText(const AcceptedCargo cargo,
*b = '\0';
/* Make sure we detect any buffer overflow */
assert(b < endof(_userstring));
assert(b < endof(string));
return DrawStringMultiLine(str_x, str_y, STR_SPEC_USERSTRING, 144);
SetDParamStr(0, string);
return DrawStringMultiLine(str_x, str_y, STR_JUST_RAW_STRING, 144);
}
/**

View File

@ -216,7 +216,7 @@ protected:
if (highlight) GfxFillRect(this->widget[NGWW_NAME].left + 1, y - 2, this->widget[NGWW_INFO].right - 1, y + 9, 10);
SetDParamStr(0, cur_item->info.server_name);
DrawStringTruncated(this->widget[NGWW_NAME].left + 5, y, STR_02BD, TC_BLACK, this->widget[NGWW_NAME].right - this->widget[NGWW_NAME].left - 5);
DrawStringTruncated(this->widget[NGWW_NAME].left + 5, y, STR_JUST_RAW_STRING, TC_BLACK, this->widget[NGWW_NAME].right - this->widget[NGWW_NAME].left - 5);
SetDParam(0, cur_item->info.clients_on);
SetDParam(1, cur_item->info.clients_max);
@ -325,7 +325,7 @@ public:
DrawStringCentered(this->widget[NGWW_DETAILS].left + 115, 58, STR_NETWORK_GAME_INFO, TC_FROMSTRING);
} else if (!sel->online) {
SetDParamStr(0, sel->info.server_name);
DrawStringCentered(this->widget[NGWW_DETAILS].left + 115, 68, STR_ORANGE, TC_FROMSTRING); // game name
DrawStringCentered(this->widget[NGWW_DETAILS].left + 115, 68, STR_JUST_RAW_STRING, TC_ORANGE); // game name
DrawStringCentered(this->widget[NGWW_DETAILS].left + 115, 132, STR_NETWORK_SERVER_OFFLINE, TC_FROMSTRING); // server offline
} else { // show game info
@ -336,10 +336,10 @@ public:
SetDParamStr(0, sel->info.server_name);
DrawStringCenteredTruncated(this->widget[NGWW_DETAILS].left, this->widget[NGWW_DETAILS].right, 62, STR_ORANGE, TC_BLACK); // game name
DrawStringCenteredTruncated(this->widget[NGWW_DETAILS].left, this->widget[NGWW_DETAILS].right, 62, STR_JUST_RAW_STRING, TC_ORANGE); // game name
SetDParamStr(0, sel->info.map_name);
DrawStringCenteredTruncated(this->widget[NGWW_DETAILS].left, this->widget[NGWW_DETAILS].right, 74, STR_02BD, TC_BLACK); // map name
DrawStringCenteredTruncated(this->widget[NGWW_DETAILS].left, this->widget[NGWW_DETAILS].right, 74, STR_JUST_RAW_STRING, TC_BLACK); // map name
SetDParam(0, sel->info.clients_on);
SetDParam(1, sel->info.clients_max);
@ -447,8 +447,9 @@ public:
break;
case NGWW_ADD: // Add a server
SetDParamStr(0, _settings_client.network.connect_to_ip);
ShowQueryString(
BindCString(_settings_client.network.connect_to_ip),
STR_JUST_RAW_STRING,
STR_NETWORK_ENTER_IP,
31 | 0x1000, // maximum number of characters OR
250, // characters up to this width pixels, whichever is satisfied first
@ -734,7 +735,8 @@ struct NetworkStartServerWindow : public QueryStringBaseWindow {
case NSSW_SETPWD: // Set password button
this->widget_id = NSSW_SETPWD;
ShowQueryString(BindCString(_settings_client.network.server_password), STR_NETWORK_SET_PASSWORD, 20, 250, this, CS_ALPHANUMERAL);
SetDParamStr(0, _settings_client.network.server_password);
ShowQueryString(STR_JUST_RAW_STRING, STR_NETWORK_SET_PASSWORD, 20, 250, this, CS_ALPHANUMERAL);
break;
case NSSW_SELMAP: { // Select map

View File

@ -50,19 +50,24 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint w, uint bott
char buff[256];
if (c->error != NULL) {
SetDParamStr(0, c->filename);
SetDParamStr(1, c->error->data);
for (uint i = 0; i < c->error->num_params; i++) {
uint32 param = 0;
byte param_number = c->error->param_number[i];
if (param_number < c->num_params) param = c->param[param_number];
SetDParam(2 + i, param);
}
char message[512];
GetString(message, c->error->custom_message != NULL ? BindCString(c->error->custom_message) : c->error->message, lastof(message));
if (c->error->custom_message == NULL) {
SetDParamStr(0, c->filename);
SetDParamStr(1, c->error->data);
for (uint i = 0; i < c->error->num_params; i++) {
uint32 param = 0;
byte param_number = c->error->param_number[i];
if (param_number < c->num_params) param = c->param[param_number];
SetDParam(2 + i, param);
}
GetString(message, c->error->message, lastof(message));
} else {
SetDParamStr(0, c->error->custom_message);
GetString(message, STR_JUST_RAW_STRING, lastof(message));
}
SetDParamStr(0, message);
y += DrawStringMultiLine(x, y, c->error->severity, w, bottom - y);
@ -88,7 +93,8 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint w, uint bott
if (show_params) {
if (c->num_params > 0) {
GRFBuildParamList(buff, c, lastof(buff));
SetDParamStr(0, buff);
SetDParam(0, STR_JUST_RAW_STRING);
SetDParamStr(1, buff);
} else {
SetDParam(0, STR_01A9_NONE);
}
@ -102,7 +108,8 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint w, uint bott
/* Draw GRF info if it exists */
if (c->info != NULL && !StrEmpty(c->info)) {
SetDParamStr(0, c->info);
SetDParam(0, STR_JUST_RAW_STRING);
SetDParamStr(1, c->info);
y += DrawStringMultiLine(x, y, STR_02BD, w, bottom - y);
} else {
y += DrawStringMultiLine(x, y, STR_NEWGRF_NO_INFO, w, bottom - y);
@ -487,9 +494,10 @@ struct NewGRFWindow : public Window {
case SNGRFS_SET_PARAMETERS: { // Edit parameters
if (this->sel == NULL) break;
char buff[512];
static char buff[512];
GRFBuildParamList(buff, this->sel, lastof(buff));
ShowQueryString(BindCString(buff), STR_NEWGRF_PARAMETER_QUERY, 63, 250, this, CS_ALPHANUMERAL);
SetDParamStr(0, buff);
ShowQueryString(STR_JUST_RAW_STRING, STR_NEWGRF_PARAMETER_QUERY, 63, 250, this, CS_ALPHANUMERAL);
break;
}
}

View File

@ -758,7 +758,8 @@ static void StartScenario()
/* invalid type */
if (_file_to_saveload.mode == SL_INVALID) {
DEBUG(sl, 0, "Savegame is obsolete or invalid format: '%s'", _file_to_saveload.name);
SetDParamStr(0, GetSaveLoadErrorString());
SetDParam(0, STR_JUST_RAW_STRING);
SetDParamStr(1, GetSaveLoadErrorString());
ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0);
_game_mode = GM_MENU;
return;
@ -774,7 +775,8 @@ static void StartScenario()
/* Load game */
if (SaveOrLoad(_file_to_saveload.name, _file_to_saveload.mode, SCENARIO_DIR) != SL_OK) {
LoadIntroGame();
SetDParamStr(0, GetSaveLoadErrorString());
SetDParam(0, STR_JUST_RAW_STRING);
SetDParamStr(1, GetSaveLoadErrorString());
ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0);
}
@ -886,7 +888,8 @@ void SwitchMode(int new_mode)
if (!SafeSaveOrLoad(_file_to_saveload.name, _file_to_saveload.mode, GM_NORMAL, NO_DIRECTORY)) {
LoadIntroGame();
SetDParamStr(0, GetSaveLoadErrorString());
SetDParam(0, STR_JUST_RAW_STRING);
SetDParamStr(1, GetSaveLoadErrorString());
ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0);
} else {
if (_saveload_mode == SLD_LOAD_SCENARIO) {
@ -927,7 +930,8 @@ void SwitchMode(int new_mode)
SetLocalPlayer(OWNER_NONE);
_settings_newgame.game_creation.starting_year = _cur_year;
} else {
SetDParamStr(0, GetSaveLoadErrorString());
SetDParam(0, STR_JUST_RAW_STRING);
SetDParamStr(1, GetSaveLoadErrorString());
ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0);
}
break;
@ -941,7 +945,8 @@ void SwitchMode(int new_mode)
/* Make network saved games on pause compatible to singleplayer */
if (_networking && _pause_game == 1) _pause_game = 2;
if (SaveOrLoad(_file_to_saveload.name, SL_SAVE, NO_DIRECTORY) != SL_OK) {
SetDParamStr(0, GetSaveLoadErrorString());
SetDParam(0, STR_JUST_RAW_STRING);
SetDParamStr(1, GetSaveLoadErrorString());
ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0);
} else {
DeleteWindowById(WC_SAVELOAD, 0);

View File

@ -59,7 +59,7 @@ void DrawRoadVehDetails(const Vehicle *v, int x, int y)
}
SetDParamStr(0, capacity);
DrawStringTruncated(x, y + 10 + y_offset, STR_JUST_STRING, TC_BLUE, 380 - x);
DrawStringTruncated(x, y + 10 + y_offset, STR_JUST_RAW_STRING, TC_BLUE, 380 - x);
for (const Vehicle *u = v; u != NULL; u = u->Next()) {
if (u->cargo_cap == 0) continue;

View File

@ -1115,7 +1115,8 @@ struct CustomCurrencyWindow : Window {
if (IsInsideMM(x, 10, 30)) { // clicked button
this->click = 1 << (line * 2 + 1);
}
str = BindCString(this->separator);
SetDParamStr(0, this->separator);
str = STR_JUST_RAW_STRING;
len = 1;
break;
@ -1123,7 +1124,8 @@ struct CustomCurrencyWindow : Window {
if (IsInsideMM(x, 10, 30)) { // clicked button
this->click = 1 << (line * 2 + 1);
}
str = BindCString(_custom_currency.prefix);
SetDParamStr(0, _custom_currency.prefix);
str = STR_JUST_RAW_STRING;
len = 12;
break;
@ -1131,7 +1133,8 @@ struct CustomCurrencyWindow : Window {
if (IsInsideMM(x, 10, 30)) { // clicked button
this->click = 1 << (line * 2 + 1);
}
str = BindCString(_custom_currency.suffix);
SetDParamStr(0, _custom_currency.suffix);
str = STR_JUST_RAW_STRING;
len = 12;
break;

View File

@ -810,13 +810,14 @@ struct StationViewWindow : public Window {
}
if (this->widget[SVW_ACCEPTS].data == STR_3032_RATINGS) { // small window with list of accepted cargo
char *b = _userstring;
char string[512];
char *b = string;
bool first = true;
b = InlineString(b, STR_000C_ACCEPTS);
for (CargoID i = 0; i < NUM_CARGO; i++) {
if (b >= lastof(_userstring) - (1 + 2 * 4)) break; // ',' or ' ' and two calls to Utf8Encode()
if (b >= lastof(string) - (1 + 2 * 4)) break; // ',' or ' ' and two calls to Utf8Encode()
if (HasBit(st->goods[i].acceptance_pickup, GoodsEntry::ACCEPTANCE)) {
if (first) {
first = false;
@ -835,9 +836,10 @@ struct StationViewWindow : public Window {
*b = '\0';
/* Make sure we detect any buffer overflow */
assert(b < endof(_userstring));
assert(b < endof(string));
DrawStringMultiLine(2, this->widget[SVW_ACCEPTLIST].top + 1, STR_SPEC_USERSTRING, this->widget[SVW_ACCEPTLIST].right - this->widget[SVW_ACCEPTLIST].left);
SetDParamStr(0, string);
DrawStringMultiLine(2, this->widget[SVW_ACCEPTLIST].top + 1, STR_JUST_RAW_STRING, this->widget[SVW_ACCEPTLIST].right - this->widget[SVW_ACCEPTLIST].left);
} else { // extended window with list of cargo ratings
y = this->widget[SVW_RATINGLIST].top + 1;

View File

@ -490,6 +490,7 @@ static const CmdStruct _cmd_structs[] = {
{"SKIP", EmitSingleChar, SCC_SKIP, 1, 0},
{"STRING", EmitSingleChar, SCC_STRING, 1, C_CASE},
{"RAW_STRING", EmitSingleChar, SCC_RAW_STRING_POINTER, 1, 0},
// Numbers
{"COMMA", EmitSingleChar, SCC_COMMA, 1, 0}, // Number with comma
@ -717,7 +718,8 @@ static const CmdStruct *TranslateCmdForCompare(const CmdStruct *a)
strcmp(a->cmd, "STRING2") == 0 ||
strcmp(a->cmd, "STRING3") == 0 ||
strcmp(a->cmd, "STRING4") == 0 ||
strcmp(a->cmd, "STRING5") == 0) {
strcmp(a->cmd, "STRING5") == 0 ||
strcmp(a->cmd, "RAW_STRING") == 0){
return FindCmd("STRING", 6);
}

View File

@ -45,7 +45,6 @@
#include "table/control_codes.h"
DynamicLanguages _dynlang;
char _userstring[128];
uint64 _decode_parameters[20];
static char *StationGetSpecialString(char *buff, int x, const char* last);
@ -96,17 +95,6 @@ static inline const int64 *GetArgvPtr(const int64 **argv, int n)
}
#define NUM_BOUND_STRINGS 8
/* Array to hold the bound strings. */
static const char *_bound_strings[NUM_BOUND_STRINGS];
/* This index is used to implement a "round-robin" allocating of
* slots for BindCString. NUM_BOUND_STRINGS slots are reserved.
* Which means that after NUM_BOUND_STRINGS calls to BindCString,
* the indices will be reused. */
static int _bind_index;
const char *GetStringPtr(StringID string)
{
switch (GB(string, 11, 5)) {
@ -167,13 +155,7 @@ static char *GetStringWithArgs(char *buffr, uint string, const int64 *argv, cons
return FormatString(buffr, GetGRFStringPtr(index + 0x1000), argv, 0, last);
case 31:
/* dynamic strings. These are NOT to be passed through the formatter,
* but passed through verbatim. */
if (index < (STR_SPEC_USERSTRING & 0x7FF)) {
return strecpy(buffr, _bound_strings[index], last);
}
return FormatString(buffr, _userstring, NULL, 0, last);
NOT_REACHED();
}
if (index >= _langtab_num[tab]) {
@ -200,32 +182,13 @@ char *InlineString(char *buf, StringID string)
}
/**
* This function takes a C-string and allocates a temporary string ID.
* The StringID of the bound string is valid until BindCString is called
* another NUM_BOUND_STRINGS times. So be careful when using it.
* @param str temp string to add
* @return the id of that temp string
* @note formatting a DATE_TINY calls BindCString twice, thus reduces the
* amount of 'user' bound strings by 2.
* @todo rewrite the BindCString system to make the limit flexible and
* non-round-robin. For example by using smart pointers that free
* the allocated StringID when they go out-of-scope/are freed.
*/
StringID BindCString(const char *str)
{
int idx = (++_bind_index) & (NUM_BOUND_STRINGS - 1);
_bound_strings[idx] = str;
return idx + STR_SPEC_DYNSTRING;
}
/** This function is used to "bind" a C string to a OpenTTD dparam slot.
* @param n slot of the string
* @param str string to bind
*/
void SetDParamStr(uint n, const char *str)
{
SetDParam(n, BindCString(str));
SetDParam(n, (uint64)str);
}
void InjectDParam(int amount)
@ -334,7 +297,7 @@ static char *FormatTinyDate(char *buff, Date date, const char* last)
snprintf(day, lengthof(day), "%02i", ymd.day);
snprintf(month, lengthof(month), "%02i", ymd.month + 1);
int64 args[3] = { BindCString(day), BindCString(month), ymd.year };
int64 args[3] = { (int64)day, (int64)month, ymd.year };
return FormatString(buff, GetStringPtr(STR_DATE_TINY), args, 0, last);
}
@ -592,6 +555,12 @@ static char* FormatString(char* buff, const char* str, const int64* argv, uint c
buff = GetStringWithArgs(buff, Utf8Consume(&str), argv, last);
break;
case SCC_RAW_STRING_POINTER: { // {RAW_STRING}
const char *str = (const char*)GetInt64(&argv);
buff = FormatString(buff, str, argv, casei, last);
break;
}
case SCC_DATE_LONG: // {DATE_LONG}
buff = FormatYmdString(buff, GetInt32(&argv), last);
break;
@ -1519,8 +1488,8 @@ void CheckForMissingGlyphsInLoadedLanguagePack()
*/
static char *err_str = strdup("XXXThe current font is missing some of the characters used in the texts for this language. Read the readme to see how to solve this.");
Utf8Encode(err_str, SCC_YELLOW);
StringID err_msg = BindCString(err_str);
ShowErrorMessage(INVALID_STRING_ID, err_msg, 0, 0);
SetDParamStr(0, err_str);
ShowErrorMessage(INVALID_STRING_ID, STR_JUST_RAW_STRING, 0, 0);
return;
}
}

View File

@ -11,8 +11,6 @@ char *InlineString(char *buf, StringID string);
char *GetString(char *buffr, StringID string, const char *last);
const char *GetStringPtr(StringID string);
extern char _userstring[128];
void InjectDParam(int amount);
static inline void SetDParamX(uint64 *s, uint n, uint64 v)
@ -28,16 +26,8 @@ static inline void SetDParam(uint n, uint64 v)
_decode_parameters[n] = v;
}
/* Used to bind a C string name to a dparam number.
* NOTE: This has a short lifetime. You can't
* use this string much later or it will be gone. */
void SetDParamStr(uint n, const char *str);
/** This function takes a C-string and allocates a temporary string ID.
* The duration of the bound string is valid only until the next call to GetString,
* so be careful. */
StringID BindCString(const char *str);
static inline uint64 GetDParamX(const uint64 *s, uint n)
{
return s[n];

View File

@ -79,10 +79,6 @@ enum SpecialStrings {
// reserve 32 strings for screenshot formats
SPECSTR_SCREENSHOT_START = SPECSTR_RESOLUTION_END + 1,
SPECSTR_SCREENSHOT_END = SPECSTR_SCREENSHOT_START + 0x1F,
// Used to implement SetDParamStr
STR_SPEC_DYNSTRING = 0xF800,
STR_SPEC_USERSTRING = 0xF808,
};
#endif /* STRINGS_TYPE_H */

View File

@ -66,6 +66,7 @@ enum StringControlCode {
SCC_NUM,
SCC_STRING_ID,
SCC_RAW_STRING_POINTER,
SCC_PLURAL_LIST,
SCC_GENDER_LIST,
SCC_GENDER_INDEX,

View File

@ -453,7 +453,8 @@ uint ShowRefitOptionsList(int x, int y, uint w, EngineID engine)
uint32 cmask = EngInfo(engine)->refit_mask;
/* List of cargo types available in this climate */
uint32 lmask = _cargo_mask;
char *b = _userstring;
char string[512];
char *b = string;
/* Draw nothing if the engine is not refittable */
if (CountBits(cmask) <= 1) return 0;
@ -477,9 +478,9 @@ uint ShowRefitOptionsList(int x, int y, uint w, EngineID engine)
for (CargoID cid = 0; cid < NUM_CARGO; cid++) {
if (!HasBit(cmask, cid)) continue;
if (b >= lastof(_userstring) - (2 + 2 * 4)) break; // ", " and two calls to Utf8Encode()
if (b >= lastof(string) - (2 + 2 * 4)) break; // ", " and two calls to Utf8Encode()
if (!first) b = strecpy(b, ", ", lastof(_userstring));
if (!first) b = strecpy(b, ", ", lastof(string));
first = false;
b = InlineString(b, GetCargo(cid)->name);
@ -490,9 +491,9 @@ uint ShowRefitOptionsList(int x, int y, uint w, EngineID engine)
*b = '\0';
/* Make sure we detect any buffer overflow */
assert(b < endof(_userstring));
assert(b < endof(string));
return DrawStringMultiLine(x, y, STR_SPEC_USERSTRING, w);
return DrawStringMultiLine(x, y, STR_JUST_RAW_STRING, w);
}