Merge branch 'master' into jgrpp-nrt

# Conflicts:
#	src/console_cmds.cpp
#	src/script/api/script_order.cpp
#	src/station_cmd.cpp
#	src/statusbar_gui.cpp
#	src/town_gui.cpp
pull/104/head
Jonathan G Rennison 5 years ago
commit 6562937899

@ -48,6 +48,7 @@
#include "town.h"
#include "industry.h"
#include "string_func_extra.h"
#include <time.h>
#include "safeguards.h"
@ -1367,11 +1368,25 @@ DEF_CONSOLE_CMD(ConGetSeed)
DEF_CONSOLE_CMD(ConGetDate)
{
if (argc == 0) {
IConsoleHelp("Returns the current date (day-month-year) of the game. Usage: 'getdate'");
IConsoleHelp("Returns the current date (year-month-day) of the game. Usage: 'getdate'");
return true;
}
IConsolePrintF(CC_DEFAULT, "Date: %d-%d-%d", _cur_date_ymd.day, _cur_date_ymd.month + 1, _cur_date_ymd.year);
IConsolePrintF(CC_DEFAULT, "Date: %04d-%02d-%02d", _cur_date_ymd.year, _cur_date_ymd.month + 1, _cur_date_ymd.day);
return true;
}
DEF_CONSOLE_CMD(ConGetSysDate)
{
if (argc == 0) {
IConsoleHelp("Returns the current date (year-month-day) of your system. Usage: 'getsysdate'");
return true;
}
time_t t;
time(&t);
auto timeinfo = localtime(&t);
IConsolePrintF(CC_DEFAULT, "System Date: %04d-%02d-%02d %02d:%02d:%02d", timeinfo->tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
return true;
}
@ -2303,6 +2318,7 @@ void IConsoleStdLibRegister()
IConsoleCmdRegister("restart", ConRestart);
IConsoleCmdRegister("getseed", ConGetSeed);
IConsoleCmdRegister("getdate", ConGetDate);
IConsoleCmdRegister("getsysdate", ConGetSysDate);
IConsoleCmdRegister("quit", ConExit);
IConsoleCmdRegister("resetengines", ConResetEngines, ConHookNoNetwork);
IConsoleCmdRegister("reset_enginepool", ConResetEnginePool, ConHookNoNetwork);

@ -372,6 +372,17 @@ public:
CheckInvariant();
}
/**
* Clear the tree.
*/
void Clear()
{
this->nodes.clear();
this->free_list.clear();
this->unbalanced = 0;
return;
}
/**
* Reconstruct the tree with the same elements, letting it be fully balanced.
*/

@ -565,18 +565,6 @@ bool AppendPathSeparator(char *buf, const char *last)
return true;
}
/**
* Find the first directory in a tar archive.
* @param tarname the name of the tar archive to look in.
* @param subdir the subdirectory to look in.
*/
const char *FioTarFirstDir(const char *tarname, Subdirectory subdir)
{
TarList::iterator it = _tar_list[subdir].find(tarname);
if (it == _tar_list[subdir].end()) return nullptr;
return (*it).second.dirname;
}
static void TarAddLink(const std::string &srcParam, const std::string &destParam, Subdirectory subdir)
{
std::string src = srcParam;
@ -598,11 +586,6 @@ static void TarAddLink(const std::string &srcParam, const std::string &destParam
}
}
void FioTarAddLink(const char *src, const char *dest, Subdirectory subdir)
{
TarAddLink(src, dest, subdir);
}
/**
* Simplify filenames from tars.
* Replace '/' by #PATHSEPCHAR, and force 'name' to lowercase.

@ -64,8 +64,6 @@ bool AppendPathSeparator(char *buf, const char *last);
void DeterminePaths(const char *exe);
void *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize);
bool FileExists(const char *filename);
const char *FioTarFirstDir(const char *tarname, Subdirectory subdir);
void FioTarAddLink(const char *src, const char *dest, Subdirectory subdir);
bool ExtractTar(const char *tar_filename, Subdirectory subdir);
extern const char *_personal_dir; ///< custom directory for personal settings, saves, newgrf, etc.

@ -618,24 +618,24 @@ public:
this->InvalidateData(SLIWD_RESCAN_FILES);
break;
case WID_SL_LOAD_BUTTON:
if (this->selected != nullptr && !_load_check_data.HasErrors()) {
const char *name = FiosBrowseTo(this->selected);
_file_to_saveload.SetMode(this->selected->type);
_file_to_saveload.SetName(name);
_file_to_saveload.SetTitle(this->selected->title);
if (this->abstract_filetype == FT_HEIGHTMAP) {
delete this;
ShowHeightmapLoad();
} else if (!_load_check_data.HasNewGrfs() || _load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs()) {
_switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD_GAME;
ClearErrorMessages();
delete this;
}
case WID_SL_LOAD_BUTTON: {
if (this->selected == nullptr || _load_check_data.HasErrors()) break;
const char *name = FiosBrowseTo(this->selected);
_file_to_saveload.SetMode(this->selected->type);
_file_to_saveload.SetName(name);
_file_to_saveload.SetTitle(this->selected->title);
if (this->abstract_filetype == FT_HEIGHTMAP) {
delete this;
ShowHeightmapLoad();
} else if (!_load_check_data.HasNewGrfs() || _load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs()) {
_switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD_GAME;
ClearErrorMessages();
delete this;
}
break;
}
case WID_SL_NEWGRF_INFO:
if (_load_check_data.HasNewGrfs()) {
@ -664,43 +664,44 @@ public:
const FiosItem *file = this->fios_items.Get(y);
const char *name = FiosBrowseTo(file);
if (name != nullptr) {
if (click_count == 1) {
if (this->selected != file) {
this->selected = file;
_load_check_data.Clear();
if (GetDetailedFileType(file->type) == DFT_GAME_FILE) {
/* Other detailed file types cannot be checked before. */
SaveOrLoad(name, SLO_CHECK, DFT_GAME_FILE, NO_DIRECTORY, false);
}
if (name == nullptr) {
/* Changed directory, need refresh. */
this->InvalidateData(SLIWD_RESCAN_FILES);
break;
}
this->InvalidateData(SLIWD_SELECTION_CHANGES);
}
if (this->fop == SLO_SAVE) {
/* Copy clicked name to editbox */
this->filename_editbox.text.Assign(file->title);
this->SetWidgetDirty(WID_SL_SAVE_OSK_TITLE);
}
} else if (!_load_check_data.HasErrors()) {
if (click_count == 1) {
if (this->selected != file) {
this->selected = file;
if (this->fop == SLO_LOAD) {
if (this->abstract_filetype == FT_SAVEGAME || this->abstract_filetype == FT_SCENARIO) {
this->OnClick(pt, WID_SL_LOAD_BUTTON, 1);
} else {
assert(this->abstract_filetype == FT_HEIGHTMAP);
_file_to_saveload.SetMode(file->type);
_file_to_saveload.SetName(name);
_file_to_saveload.SetTitle(file->title);
_load_check_data.Clear();
delete this;
ShowHeightmapLoad();
}
if (GetDetailedFileType(file->type) == DFT_GAME_FILE) {
/* Other detailed file types cannot be checked before. */
SaveOrLoad(name, SLO_CHECK, DFT_GAME_FILE, NO_DIRECTORY, false);
}
this->InvalidateData(SLIWD_SELECTION_CHANGES);
}
if (this->fop == SLO_SAVE) {
/* Copy clicked name to editbox */
this->filename_editbox.text.Assign(file->title);
this->SetWidgetDirty(WID_SL_SAVE_OSK_TITLE);
}
} else if (!_load_check_data.HasErrors()) {
this->selected = file;
if (this->fop == SLO_LOAD) {
if (this->abstract_filetype == FT_SAVEGAME || this->abstract_filetype == FT_SCENARIO) {
this->OnClick(pt, WID_SL_LOAD_BUTTON, 1);
} else {
assert(this->abstract_filetype == FT_HEIGHTMAP);
_file_to_saveload.SetMode(file->type);
_file_to_saveload.SetName(name);
_file_to_saveload.SetTitle(file->title);
delete this;
ShowHeightmapLoad();
}
}
} else {
/* Changed directory, need refresh. */
this->InvalidateData(SLIWD_RESCAN_FILES);
}
break;
}

@ -236,10 +236,11 @@ CommandCost CmdSetGoalCompleted(TileIndex tile, DoCommandFlag flags, uint32 p1,
* @param flags type of operation
* @param p1 various bitstuffed elements
* - p1 = (bit 0 - 15) - Unique ID to use for this question.
* - p1 = (bit 16 - 23) - Company or client for which this question is.
* - p1 = (bit 24 - 25) - Question type.
* - p1 = (bit 31) - Question target: 0 - company, 1 - client.
* @param p2 Buttons of the question.
* - p1 = (bit 16 - 31) - Company or client for which this question is.
* @param p2 various bitstuffed elements
* - p2 = (bit 0 - 17) - Buttons of the question.
* - p2 = (bit 29 - 30) - Question type.
* - p2 = (bit 31) - Question target: 0 - company, 1 - client.
* @param text Text of the question.
* @return the cost of this operation or an error
*/
@ -247,29 +248,31 @@ CommandCost CmdGoalQuestion(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
{
uint16 uniqueid = (GoalType)GB(p1, 0, 16);
CompanyID company = (CompanyID)GB(p1, 16, 8);
ClientIndex client = (ClientIndex)GB(p1, 16, 8);
byte type = GB(p1, 24, 2);
bool is_client = HasBit(p1, 31);
ClientID client = (ClientID)GB(p1, 16, 16);
assert_compile(GOAL_QUESTION_BUTTON_COUNT < 29);
uint32 button_mask = GB(p2, 0, GOAL_QUESTION_BUTTON_COUNT);
byte type = GB(p2, 29, 2);
bool is_client = HasBit(p2, 31);
if (_current_company != OWNER_DEITY) return CMD_ERROR;
if (StrEmpty(text)) return CMD_ERROR;
if (is_client) {
if (!NetworkClientInfo::IsValidID(client)) return CMD_ERROR;
if (NetworkClientInfo::GetByClientID(client) == nullptr) return CMD_ERROR;
} else {
if (company != INVALID_COMPANY && !Company::IsValidID(company)) return CMD_ERROR;
}
if (CountBits(p2) < 1 || CountBits(p2) > 3) return CMD_ERROR;
if (p2 >= (1 << GOAL_QUESTION_BUTTON_COUNT)) return CMD_ERROR;
if (CountBits(button_mask) < 1 || CountBits(button_mask) > 3) return CMD_ERROR;
if (type >= GOAL_QUESTION_TYPE_COUNT) return CMD_ERROR;
if (flags & DC_EXEC) {
if (is_client) {
if (NetworkClientInfo::Get(client)->client_id != _network_own_client_id) return CommandCost();
if (client != _network_own_client_id) return CommandCost();
} else {
if (company == INVALID_COMPANY && !Company::IsValidID(_local_company)) return CommandCost();
if (company != INVALID_COMPANY && company != _local_company) return CommandCost();
}
ShowGoalQuestion(uniqueid, type, p2, text);
ShowGoalQuestion(uniqueid, type, button_mask, text);
}
return CommandCost();

@ -1228,6 +1228,29 @@ static CommandCost CheckNewIndustry_Forest(TileIndex tile)
return CommandCost();
}
/**
* Check if a tile is within a distance from map edges, scaled by map dimensions independently.
* Each dimension is checked independently, and dimensions smaller than 256 are not scaled.
* @param tile Which tile to check distance of.
* @param maxdist Normal distance on a 256x256 map.
* @return True if the tile is near the map edge.
*/
static bool CheckScaledDistanceFromEdge(TileIndex tile, uint maxdist)
{
uint maxdist_x = maxdist;
uint maxdist_y = maxdist;
if (MapSizeX() > 256) maxdist_x *= MapSizeX() / 256;
if (MapSizeY() > 256) maxdist_y *= MapSizeY() / 256;
if (DistanceFromEdgeDir(tile, DIAGDIR_NE) < maxdist_x) return true;
if (DistanceFromEdgeDir(tile, DIAGDIR_NW) < maxdist_y) return true;
if (DistanceFromEdgeDir(tile, DIAGDIR_SW) < maxdist_x) return true;
if (DistanceFromEdgeDir(tile, DIAGDIR_SE) < maxdist_y) return true;
return false;
}
/**
* Check the conditions of #CHECK_REFINERY (Industry should be positioned near edge of the map).
* @param tile %Tile to perform the checking.
@ -1236,7 +1259,8 @@ static CommandCost CheckNewIndustry_Forest(TileIndex tile)
static CommandCost CheckNewIndustry_OilRefinery(TileIndex tile)
{
if (_game_mode == GM_EDITOR) return CommandCost();
if (DistanceFromEdge(TILE_ADDXY(tile, 1, 1)) < _settings_game.game_creation.oil_refinery_limit) return CommandCost();
if (CheckScaledDistanceFromEdge(TILE_ADDXY(tile, 1, 1), _settings_game.game_creation.oil_refinery_limit)) return CommandCost();
return_cmd_error(STR_ERROR_CAN_ONLY_BE_POSITIONED);
}
@ -1251,8 +1275,9 @@ extern bool _ignore_restrictions;
static CommandCost CheckNewIndustry_OilRig(TileIndex tile)
{
if (_game_mode == GM_EDITOR && _ignore_restrictions) return CommandCost();
if (TileHeight(tile) == 0 &&
DistanceFromEdge(TILE_ADDXY(tile, 1, 1)) < _settings_game.game_creation.oil_refinery_limit) return CommandCost();
CheckScaledDistanceFromEdge(TILE_ADDXY(tile, 1, 1), _settings_game.game_creation.oil_refinery_limit)) return CommandCost();
return_cmd_error(STR_ERROR_CAN_ONLY_BE_POSITIONED);
}

@ -358,6 +358,7 @@ STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landskab
STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bygenerering
STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industrigenerering
STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Bygning af vej
STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Sporvejskonstruktion
STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plant træer. Shift skifter mellem at bygge og vise prisoverslag.
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Placér skilt
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Placér objekt. Shift viser tidsestimat
@ -2430,6 +2431,7 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Byg en s
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Skift mellem bygning/fjernelse af veje
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Skift mellem bygning/fjernelse af sporveje
STR_ROAD_NAME_TRAM :Sporvej
# Road depot construction window
STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Retning af værksted

@ -3119,6 +3119,8 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Plaats hernoeme
# Town local authority window
STR_LOCAL_AUTHORITY_CAPTION :{WHITE} Gemeenteraad van {TOWN}
STR_LOCAL_AUTHORITY_ZONE :{BLACK}Zone
STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Zone weergeven binnen de gemeentegrenzen
STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Reputatie van transportbedrijven:
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Beschikbare acties:

@ -1176,7 +1176,7 @@ STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount
STR_CONFIG_SETTING_INTEREST_RATE :Interest rate: {STRING2}
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation, if enabled
STR_CONFIG_SETTING_RUNNING_COSTS :Running costs: {STRING2}
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintainance and running costs of vehicles and infrastructure
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintenance and running costs of vehicles and infrastructure
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Construction speed: {STRING2}
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limit the amount of construction actions for AIs
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Vehicle breakdowns: {STRING2}
@ -1383,8 +1383,8 @@ STR_CONFIG_SETTING_TERRAIN_TYPE :Terrain type: {
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Hilliness of the landscape
STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industry density: {STRING2}
STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many industries should be generated and what level should be maintained during the game
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil refineries: {STRING2}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oil refineries are only constructed near the map border, that is at the coast for island maps
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil industries: {STRING2}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how far from the map border oil refineries and oil rigs can be constructed. On island maps this ensures they are near the coast. On maps larger than 256 tiles, this value is scaled up.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING2}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Control at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING2}
@ -3675,6 +3675,8 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Rename Town
# Town local authority window
STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} local authority
STR_LOCAL_AUTHORITY_ZONE :{BLACK}Zone
STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Show zone within local authority boundaries
STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Transport company ratings:
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Actions available:

@ -1167,7 +1167,7 @@ STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount
STR_CONFIG_SETTING_INTEREST_RATE :Interest rate: {STRING}
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation, if enabled
STR_CONFIG_SETTING_RUNNING_COSTS :Running costs: {STRING}
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintainance and running costs of vehicles and infrastructure
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintenance and running costs of vehicles and infrastructure
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Construction speed: {STRING}
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limit the amount of construction actions for AIs
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Vehicle breakdowns: {STRING}
@ -1665,7 +1665,7 @@ STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this
STR_CONFIG_SETTING_DEMAND_SIZE :Amount of returning cargo for symmetric mode: {STRING}
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using high-capacity paths: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, prefering the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, preferring the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Speed units: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Whenever a speed is shown in the user interface, show it in the selected units

@ -363,8 +363,8 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Выбе
STR_BUTTON_SORT_BY :{BLACK}Сортировка
STR_BUTTON_LOCATION :{BLACK}Обзор
STR_BUTTON_RENAME :{BLACK}Переименовать
STR_BUTTON_CATCHMENT :{BLACK}Покрытие
STR_TOOLTIP_CATCHMENT :{BLACK}Переключить видимость области покрытия
STR_BUTTON_CATCHMENT :{BLACK}Охват
STR_TOOLTIP_CATCHMENT :{BLACK}Переключить подсветку участков, находящихся в зонах обслуживания станциями игрока, а также не попадающих в эти зоны.
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Закрыть окно
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Окна можно перетаскивать, схватив за заголовок
@ -1479,8 +1479,8 @@ STR_CONFIG_SETTING_TERRAIN_TYPE :Тип ланд
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Только для TerraGenesis){}Холмистость ландшафта
STR_CONFIG_SETTING_INDUSTRY_DENSITY :Количество предприятий: {STRING}
STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Выберите, сколько предприятий создавать в начале и на каком уровне поддерживать их количество в процессе игры.
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Максимальное расстояние от края карты до нефтезаводов: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Нефтеперерабатывающие заводы всегда строятся у краёв карты или на берегах островов, находящихся недалеко от края
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Макс. расстояние от края карты до предприятий нефтяной индустрии: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Эта настройка ограничивает расстояние от края карты до нефтяных платформ и нефтеперерабатывающих заводов. Таким образом, на краях карты, оканчивающихся водой, они будут строиться у берега. На картах размером более 256 это значение будет соответственно увеличено.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Высота снеговой линии: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Укажите, на какой высоте в субарктическом климате устанавливается снеговой покров. Наличие снега влияет на расстановку предприятий и на условия роста городов.
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Грубость ландшафта: {STRING}
@ -3305,6 +3305,8 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Переиме
# Town local authority window
STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Администрация г.{NBSP}{TOWN}
STR_LOCAL_AUTHORITY_ZONE :{BLACK}Граница
STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Показать область, находящуюся под управлением местной администрации.
STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Рейтинг транспортных компаний
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Доступные действия:
@ -3328,7 +3330,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Про
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Установить статую в честь вашей компании.{}Цена: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Профинансировать строительство новых коммерческих зданий в городе.{}Цена: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Купить годовые эксклюзивные права на транспортные перевозки в городе. Администрация разрешит пользоваться ТОЛЬКО вашими станциями.{}Цена: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Дать взятку городской администрации для повышения рейтинга. Существует риск санкций, если факт взятки раскроется.{}Цена: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Дать взятку городской администрации для повышения рейтинга. Существует риск санкций, если факт подкупа раскроется.{}Цена: {CURRENCY_LONG}
# Goal window
STR_GOALS_CAPTION :{WHITE}Задачи компании «{COMPANY}»

@ -191,6 +191,7 @@ STR_COLOUR_BROWN :Marrón
STR_COLOUR_GREY :Gris
STR_COLOUR_WHITE :Blanco
STR_COLOUR_RANDOM :Aleatorio
STR_COLOUR_DEFAULT :Por Defecto
# Units used in OpenTTD
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
@ -237,6 +238,8 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Seleccio
STR_BUTTON_SORT_BY :{BLACK}Ordenar por
STR_BUTTON_LOCATION :{BLACK}Sitio
STR_BUTTON_RENAME :{BLACK}Renombrar
STR_BUTTON_CATCHMENT :{BLACK}Cobertura
STR_TOOLTIP_CATCHMENT :{BLACK}Mostrar u ocultar área de cobertura
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Cerrar ventana
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Título de la ventana - arrastre para moverla
@ -265,6 +268,7 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Al activ
STR_BUTTON_DEFAULT :{BLACK}Por defecto
STR_BUTTON_CANCEL :{BLACK}Cancelar
STR_BUTTON_OK :{BLACK}OK
STR_WARNING_PASSWORD_SECURITY :{YELLOW}Advertencia: Los administradores del servidor podrían ser capaz de leer cualquier texto introducido aquí.
# On screen keyboard window
STR_OSK_KEYBOARD_LAYOUT :º1234567890'¡\qwertyuiop`+asdfghjklñ´ç<zxcvbnm,.- .
@ -338,6 +342,7 @@ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Acercar
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Alejar vista
STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construir ferrocarril
STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Construir carreteras
STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Construir tranvías
STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construir muelles para barcos
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construir aeropuertos
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Abre la herramienta de terreno para nivelar/elevar terrenos, plantar árboles, etc.
@ -358,6 +363,7 @@ STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Generaci
STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Creación de municipios
STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Generación de industria
STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Construcción de carreteras
STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Construcción de tranvía
STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantar árboles. Shift permite mostrar una estimación del precio
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Colocar cartel
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar objeto. Shift permite mostrar una estimación del precio
@ -466,6 +472,7 @@ STR_TOOLBAR_SOUND_MUSIC :Sonido/música
############ range for message menu starts
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Último mensaje/noticia
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historial de mensajes
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Borrar todos los mensajes
############ range ends here
############ range for about menu starts
@ -932,6 +939,9 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiano
STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraní (IRR)
STR_GAME_OPTIONS_CURRENCY_RUB :Nuevo Rublo Ruso (RUB)
STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicano (MXN)
STR_GAME_OPTIONS_CURRENCY_NTD :Nuevo Dólar de Taiwan (NTD)
STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Chino (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Dólar de Hong Kong (HKD)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vehículos de carretera
@ -994,7 +1004,12 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Tamaño doble
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Tamaño cuádruple
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Tamaño de letra
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Selecciona el tamaño de letra a utilizar en la interfaz
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Tamaño doble
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Tamaño cuádruple
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunto de gráficos base a usar
@ -1178,6 +1193,8 @@ STR_CONFIG_SETTING_AUTOSLOPE :Permitir modifi
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permitir modificar el terreno debajo de edificios y raíles sin eliminarlos
STR_CONFIG_SETTING_CATCHMENT :Tamaño del área de captación realista: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Permite tener diferentes áreas de captación para distintos tipos de estaciones y aeropuertos
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Las estaciones de la compañía pueden servir industrias con las estaciones neutrales adheridas: {STRING}
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Al habilitarse esta opción, las industrias con estaciones anexas (como las Plataformas Petroleras) pueden ser atentidas por estaciones propiedad de una empresa que se construyan en la cercanía. Al deshabilitarse, estas industrias sólo pueden ser atendidas por sus respectivas estaciones anexas. Cualquier estación cercana propiedad de una empresa, no podrá atenderlas y las estaciones anexas podrán servir a la industria solamente
STR_CONFIG_SETTING_EXTRADYNAMITE :Permitir eliminar más propiedades de los municipios: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Hace que sea más fácil eliminar infraestructuras y edificios de los municipios
STR_CONFIG_SETTING_TRAIN_LENGTH :Longitud máxima de trenes: {STRING}
@ -1194,8 +1211,8 @@ STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Pendiente de la
STR_CONFIG_SETTING_PERCENTAGE :{COMMA}%
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Inclinación de cuestas para vehículos de carretera: {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Pendiente de las casillas con cuesta para los vehículos de carretera. Los valores altos hacen que sea más difícil subir las colinas
STR_CONFIG_SETTING_FORBID_90_DEG :Prohibir a trenes y barcos realizar giros de 90 grados: {STRING}
STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Los giros de 90 grados ocurren cuando una vía en sentido horizontal está seguida por una vía en sentido vertical, haciendo que el tren gire 90 grados al pasar de una a otra en lugar de los 45 grados habituales en otras combinaciones. Esto también se aplica al radio de giro de los barcos
STR_CONFIG_SETTING_FORBID_90_DEG :Prohibir a trenes realizar giros de 90°: {STRING}
STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Los giros de 90 grados ocurren cuando una vía en sentido horizontal está seguida por una vía en sentido vertical, haciendo que el tren gire 90 grados al pasar de una a otra en lugar de los 45 grados habituales en otras combinaciones.
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permitir unir estaciones no adyacentes: {STRING}
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite añadir partes a una estación sin tener que estar en contacto directamente con las partes existentes. Necesita pulsar Ctrl+Click al añadir las nuevas partes
STR_CONFIG_SETTING_INFLATION :Inflación: {STRING}
@ -1251,8 +1268,8 @@ STR_CONFIG_SETTING_PLANE_SPEED :Factor de veloc
STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Permite fijar la velocidad relativa de las aeronaves en comparación con otros vehículos, para reducir los beneficios del transporte aéreo
STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA}
STR_CONFIG_SETTING_PLANE_CRASHES :Cantidad de aviones estrellados: {STRING}
STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Fija la probabilidad de que ocurran accidentes aéreos
STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ninguno
STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Fija la probabilidad de que ocurran aleatoriamente accidentes aéreos.{}* Aeronaves grandes siempre corren el riesgo de sufrir un accidente cuando aterrizan en aeropuertos pequeños
STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ninguno*
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reducida
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permitir construir paradas sobre carreteras de los municipios: {STRING}
@ -1263,6 +1280,8 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Cambiar
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Mantenimiento de infraestructuras: {STRING}
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Cuando se activa, las infraestructuras tienen costes de mantenimiento. Los costes de la infraestructura aumentan con el tamaño de la red, con lo cual afectan a compañías grandes en mayor grado que a las pequeñas
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Color inicial de la empresa: {STRING}
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Selecciona el color inicial de la empresa
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aeropuertos nunca caducan: {STRING}
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Permite a todos los aeropuertos estar disponibles permanentemente una vez han sido introducidos
@ -1347,6 +1366,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color a usar pa
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde oscuro
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta
STR_CONFIG_SETTING_SCROLLMODE :Desplazamiento de vista: {STRING}
STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamiento al desplazar el mapa
STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Desplazar la vista con clic derecho, ratón en posición fija
STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Recorrer mapa con clic derecho, ratón en posición fija
STR_CONFIG_SETTING_SCROLLMODE_RMB :Mueve el mapa con el botón derecho del ratón
STR_CONFIG_SETTING_SCROLLMODE_LMB :Mueve el mapa con el botón izquierdo del ratón
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desplazamiento de vista suavizado: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla la forma en la que la vista principal se mueve a una posición específica como resultado de hacer click en el mapa o al enviar la orden de moverse a un objeto determinado del mapa. Si se activa, la vista se mueve de forma suave. Si se desactiva, la vista se mueve directamente al destino
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar medidas usando las herramientas de construcción: {STRING}
@ -1467,6 +1492,9 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permitir IA en
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permite a los jugadores controlados por el ordenador participar en partidas multijugador
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes antes de que los scripts sean suspendidos: {STRING}
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Número máximo de operaciones de computación que un script puede realizar por turno
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Memoria máxima utilizada por script: {STRING}
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Qué tanta memoria puede consumir una secuencia de instrucciones (script) antes de que sea finalizada forzosamente. Puede que necesite ser incrementado para mapas grandes.
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervalo de mantenimiento en porcentajes: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Permite escoger si el mantenimiento de vehículos comenzará debido al tiempo pasado desde el último mantenimiento o por una reducción de la fiabilidad más allá de un porcentaje determinado
@ -1560,7 +1588,7 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :rejilla 3x3
STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatorio
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Permitir que los municipios construyan carreteras: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permite a los municipios construir carreteras para crecer. Si se deshabilita, las autoridades municipales no podrán construir ninguna carretera
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Permitir a las ciudades construir pasos a nivel: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Permitir a los municipios construir pasos a nivel: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Permite a los municipios construir pasos a nivel
STR_CONFIG_SETTING_NOISE_LEVEL :Permitir al municipio controlar el nivel de ruido de los aeropuertos: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Con esta opción desactivada, solamente puede haber dos aeropuertos por municipio. Si se activa, el número de aeropuertos en el municipio depende del nivel de aceptación de ruido del mismo, el cual depende de la población, del tamaño de los aeropuertos y de la distancia a la que estén
@ -1569,6 +1597,10 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Permite a los j
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Prohibido
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permitido
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permitido, patrón de carreteras personalizado
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Generación de cargamento en municipios: {STRING}
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Qué tanta carga es producida por las casas del municipio, en relación a la población general del municipio.{}Crecimiento cuadrático: Un municipio de doble tamaño genera el cuádruple de pasajeros.{}Crecimiento lineal: Un municipio de doble tamaño genera el doble de pasajeros.
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Cuadrático (original)
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineal
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Crecimiento de árboles durante el juego: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controla la aparición aleatoria de árboles durante la partida. Esto puede afectar a industrias que dependen del crecimiento de árboles, como los aserraderos
@ -1606,7 +1638,7 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal
STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rápida
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Muy rápida
STR_CONFIG_SETTING_LARGER_TOWNS :Proporción de municipios que se convertirán en ciudades: {STRING}
STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Número de pueblos que se convertirán en ciudades. Las ciudades comienzan siendo más grandes y crecen más rápido
STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Número de municipios que se convertirán en ciudades. Las ciudades comienzan siendo más grandes y crecen más rápido
STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 de cada {COMMA}
STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Ninguna
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador inicial del tamaño de ciudad: {STRING}
@ -2070,6 +2102,7 @@ STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconec
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Introduzca la contraseña
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa protegida. Introduzca la contraseña
STR_NETWORK_COMPANY_LIST_CLIENT_LIST_CAPTION :{WHITE}Lista de Clientes
# Network company list added strings
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Lista de clientes
@ -2115,7 +2148,7 @@ STR_NETWORK_CHAT_ALL :[Todos] {STRING
STR_NETWORK_CHAT_OSKTITLE :{BLACK}Introduce el texto para el chat en red
# Network messages
STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}No se han encontrado dispositivos de red o juego compilado sin soporte de red
STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}No se han encontrado dispositivos de red
STR_NETWORK_ERROR_NOSERVER :{WHITE}No se pudo encontrar ningún juego en red
STR_NETWORK_ERROR_NOCONNECTION :{WHITE}El servidor no responde a la petición
STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}No se pudo conectar debido a incompatibilidad de NewGRF
@ -2407,7 +2440,11 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Construi
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Construir túnel de tranvía. Shift permite mostrar una estimación del precio
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Cambiar entre construir/retirar carretera
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Activar construir/quitar para construcciones de tranvía
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Convertir/Actualizar tipo de carretera. Shift permite mostrar una estimación del precio
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Convertir/Actualizar tipo de tranvía. Shift permite mostrar una estimación del precio
STR_ROAD_NAME_ROAD :Carretera
STR_ROAD_NAME_TRAM :Tranvía
# Road depot construction window
STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Orientación del depósito
@ -2532,7 +2569,7 @@ STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Grande
STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Aleatorio
STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Seleccione el tamaño del municipio
STR_FOUND_TOWN_CITY :{BLACK}Ciudad
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Las ciudades crecen más rápido que los pueblos{}Dependiendo de los ajustes, son mayores al ser fundadas
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Las ciudades crecen más rápido que los municipios{}Dependiendo de los ajustes, son mayores al ser fundadas
STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Patrón de carretera:
STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Seleccionar patrón de carreteras para este municipio
@ -2592,8 +2629,11 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceptada: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tipo de ferrocarril: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_ROAD_TYPE :{BLACK}Tipo de carretera: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_TRAM_TYPE :{BLACK}Tipo de tranvía: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Límite de velocidad del ferrocarril: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Límite de velocidad de carretera: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}Límite de velocidad del tranvía: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocas
@ -2694,9 +2734,16 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD
# Framerate display window
STR_FRAMERATE_CAPTION :{WHITE}Fotogramas por segundo - FPS
STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Tasa de Simulación: {STRING}
STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Número de ticks de juego simulados por segundo.
STR_FRAMERATE_RATE_BLITTER :{BLACK}FPS de gráficos: {STRING}
STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Número de fotogramas renderizados por segundo.
STR_FRAMERATE_SPEED_FACTOR :{BLACK}Factor de velocidad de juego actual: {DECIMAL}x
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Rapidez actual del juego comparada con la esperada durante una simulación normal.
STR_FRAMERATE_CURRENT :{WHITE}Actual
STR_FRAMERATE_AVERAGE :{WHITE}Medio
STR_FRAMERATE_MEMORYUSE :{WHITE}Memoria
STR_FRAMERATE_DATA_POINTS :{BLACK}Datos basados en {COMMA} medidas
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms
@ -2704,24 +2751,44 @@ STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} frames/s
STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} frames/s
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} frames/s
STR_FRAMERATE_BYTES_GOOD :{LTBLUE}{BYTES}
STR_FRAMERATE_BYTES_WARN :{YELLOW}{BYTES}
STR_FRAMERATE_BYTES_BAD :{RED}{BYTES}
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
############ Leave those lines in this order!!
STR_FRAMERATE_GAMELOOP :{BLACK}Bucles de juego totales:
STR_FRAMERATE_GL_ECONOMY :{BLACK} Manejo de cargamento
STR_FRAMERATE_GL_TRAINS :{BLACK} Ticks de trenes:
STR_FRAMERATE_GL_ROADVEHS :{BLACK} Ticks de vehículos de carretera:
STR_FRAMERATE_GL_SHIPS :{BLACK} Ticks de barcos:
STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Ticks de aeronaves:
STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Ticks de mapa:
STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Retraso del gráfico de distribución:
STR_FRAMERATE_DRAWING :{BLACK}Renderizado gráfico:
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Ventanas de vista generales:
STR_FRAMERATE_VIDEO :{BLACK}Salida de vídeo:
STR_FRAMERATE_SOUND :{BLACK}Mezcla de sonido:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} Total de scripts:
STR_FRAMERATE_GAMESCRIPT :{BLACK} Script de juego:
STR_FRAMERATE_AI :{BLACK} IA {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Bucle de juego
STR_FRAMETIME_CAPTION_GL_ECONOMY :Manejo de cargamento
STR_FRAMETIME_CAPTION_GL_TRAINS :Ticks de trenes
STR_FRAMETIME_CAPTION_GL_ROADVEHS :Ticks de vehículo de carretera
STR_FRAMETIME_CAPTION_GL_SHIPS :Ticks de barcos
STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Ticks de aeronaves
STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Ticks de mapa
STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Retraso del gráfico de distribución
STR_FRAMETIME_CAPTION_DRAWING :Renderizado gráfico
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Representación de la vista del Mundo
STR_FRAMETIME_CAPTION_VIDEO :Salida de vídeo
STR_FRAMETIME_CAPTION_SOUND :Mezcla de sonido
STR_FRAMETIME_CAPTION_ALLSCRIPTS :Scripts de juego e IA en total
STR_FRAMETIME_CAPTION_GAMESCRIPT :Script de juego
STR_FRAMETIME_CAPTION_AI :IA {NUM} {STRING}
############ End of leave-in-this-order
@ -2748,6 +2815,8 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No hay i
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING}
STR_SAVELOAD_FILTER_TITLE :{BLACK}Patrón de filtrado:
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Sobrescribir Archivo
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}¿Está seguro de querer sobrescribir el archivo existente?
STR_SAVELOAD_OSKTITLE :{BLACK}Introduce un nombre para el juego guardado
@ -2867,6 +2936,8 @@ STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum:
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :Por Defecto (D)
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT_32BPP :Por Defecto (D) / 32 bpp
STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Viejo (W)
STR_NEWGRF_SETTINGS_PALETTE_LEGACY_32BPP :Viejo (W) / 32 bpp
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parámetros: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PARAMETER_NONE :Ninguno
@ -2950,6 +3021,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF so
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} fue desactivado por {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de colocación de sprites inválido o desconocido (sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Demasiados elementos en la lista de valores de propiedad (sprite {3:NUM}, propiedad {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Llamada de producción de industria no válida (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}¡Precaución!
@ -2981,6 +3053,7 @@ STR_NEWGRF_BUGGY :{WHITE}El NewGR
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}La información de carga/reforma para '{1:ENGINE}' difiere de la de lista de compra después de la construcción. Esto puede causar que la renovación/reemplazo automático no haga la reforma correcta
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' ha causado un bucle sin fin en la 'callback' de producción
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}'Callback' {1:HEX} devolvió el resultado desconocido o inválido {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' ha retornado tipo de carga inválida en el 'callback' de producción en {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<carga incorrecta>
@ -3075,6 +3148,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Soborna
# Goal window
STR_GOALS_CAPTION :{WHITE}Metas de {COMPANY}
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Metas Globales
STR_GOALS_SPECTATOR :Metas Globales
STR_GOALS_GLOBAL_TITLE :{BLACK}Metas globales:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Ninguna -
@ -3123,6 +3197,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click so
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}Historial de {COMPANY}
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Historial Global
STR_STORY_BOOK_SPECTATOR :Historial Global
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Página {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Permite saltar a una página específica al seleccionarla en esta lista desplegable
@ -3304,6 +3379,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infraest
STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Trozos de ferrocarril:
STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Señales
STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Trozos de carretera:
STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Piezas de tranvía:
STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Casillas de agua:
STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canales
STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Estaciones:
@ -3329,6 +3405,7 @@ STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}La indu
STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING}
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necesita:
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
@ -3382,11 +3459,13 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Vehículos de c
STR_GROUP_DEFAULT_SHIPS :Barcos sin agrupar
STR_GROUP_DEFAULT_AIRCRAFTS :Aeronaves sin agrupar
STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA})
STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos - Click en un grupo para ver la lista de sus vehículos. Es posible arrastrar grupos para modificar su jerarquía.
STR_GROUP_CREATE_TOOLTIP :{BLACK}Click para crear un grupo
STR_GROUP_DELETE_TOOLTIP :{BLACK}Borrar el grupo seleccionado
STR_GROUP_RENAME_TOOLTIP :{BLACK}Renombrar el grupo seleccionado
STR_GROUP_LIVERY_TOOLTIP :{BLACK}Cambiar el color del grupo seleccionado
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click para proteger este grupo del auto reemplazado global
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Borrar Grupo
@ -3409,14 +3488,17 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nuevos Vehícul
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nuevos Vehículos Maglev
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nuevos Vehículos de Carretera
STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Vehículos de Tranvía Nuevos
############ range for vehicle availability starts
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nuevos Vehículos de Ferrocarril
STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Vehículos de Carretera Nuevos
STR_BUY_VEHICLE_SHIP_CAPTION :Nuevos Barcos
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nueva Aeronave
############ range for vehicle availability ends
STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Coste: {GOLD}{CURRENCY_LONG}{BLACK} Peso: {GOLD}{WEIGHT_SHORT}
STR_PURCHASE_INFO_COST_REFIT_WEIGHT :{BLACK}Precio: {GOLD}{CURRENCY_LONG}{BLACK} (Costo de Reforma: {GOLD}{CURRENCY_LONG}{BLACK}) Peso: {GOLD}{WEIGHT_SHORT}
STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Velocidad: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{POWER}
STR_PURCHASE_INFO_SPEED :{BLACK}Velocidad: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Velocidad en el océano: {GOLD}{VELOCITY}
@ -3427,12 +3509,15 @@ STR_PURCHASE_INFO_REFITTABLE :(reformable)
STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Diseñado: {GOLD}{NUM}{BLACK} Vida: {GOLD}{COMMA} año{P "" s}
STR_PURCHASE_INFO_RELIABILITY :{BLACK}Fiabilidad máxima: {GOLD}{COMMA}%
STR_PURCHASE_INFO_COST :{BLACK}Coste: {GOLD}{CURRENCY_LONG}
STR_PURCHASE_INFO_COST_REFIT :{BLACK}Precio: {GOLD}{CURRENCY_LONG}{BLACK} (Costo de Reforma: {GOLD}{CURRENCY_LONG}{BLACK})
STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Peso: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT})
STR_PURCHASE_INFO_COST_SPEED :{BLACK}Coste: {GOLD}{CURRENCY_LONG}{BLACK} Velocidad: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_COST_REFIT_SPEED :{BLACK}Precio: {GOLD}{CURRENCY_LONG}{BLACK} (Costo de Reforma: {GOLD}{CURRENCY_LONG}{BLACK}) Velocidad: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacidad: {GOLD}{CARGO_LONG}, {CARGO_LONG}
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagones con motor: {GOLD}+{POWER}{BLACK} Peso: {GOLD}+{WEIGHT_SHORT}
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Reformable a: {GOLD}{STRING}
STR_PURCHASE_INFO_ALL_TYPES :Todos los tipos de carga
STR_PURCHASE_INFO_NONE :Sin carga
STR_PURCHASE_INFO_ALL_BUT :Todo excepto {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}F.T máxima: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} casillas
@ -3448,12 +3533,20 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Comprar
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Comprar barco
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Comprar aeronave
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar y Reformar Vehículo
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar y Reformar Vehículo
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar y Reformar Barco
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar y Reformar Aeronave
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Compra el vehículo de ferrocarril resaltado. Shift+Click muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el vehículo de carretera resaltado. Shift+Click muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el barco resaltado. Shift+Click muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar la aeronave resaltada. Shift+Click muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar el vehículo de ferrocarril resaltado. Shift+Click muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar el vehículo resaltado. Shift+Click muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar el barco resaltado. Shift+Click muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}}Comprar y reformar la aeronave resaltada. Shift+Click muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Renombrar
STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Renombrar
@ -3565,10 +3658,12 @@ STR_ENGINE_PREVIEW_CAPTION :{WHITE}Mensaje
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Hemos diseñado un{G "" a} nuev{G o a} {STRING} - ¿estaría interesado en el uso exclusivo por un año de este vehículo, para que podamos comprobar cómo rinde antes de que esté universalmente disponible?
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}locomotora
STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :Locomotora de ferrocarril eléctrico
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}locomotora de monorraíl
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}locomotora maglev
STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=m}vehículo de carretera
STR_ENGINE_PREVIEW_TRAM_VEHICLE :vehículo de tranvía
STR_ENGINE_PREVIEW_AIRCRAFT :{G=f}aeronave
STR_ENGINE_PREVIEW_SHIP :{G=m}barco
@ -3610,14 +3705,18 @@ STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Cambia e
STR_REPLACE_ENGINES :Locomotoras
STR_REPLACE_WAGONS :Vagones
STR_REPLACE_ALL_RAILTYPE :Todos los vehículos ferroviarios
STR_REPLACE_ALL_ROADTYPE :Todos los vehículos de carretera
STR_REPLACE_HELP_RAILTYPE :{BLACK}Seleccione tipo de ferrocarril para el que desea reemplazar locomotoras
STR_REPLACE_HELP_ROADTYPE :{BLACK}Selecciona el tipo de carretera para el que se desea reemplazar vehículos
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Muestra con qué vehículo está siendo reemplazado el vehículo de la izquierda
STR_REPLACE_RAIL_VEHICLES :Vehículos de Ferrocarril
STR_REPLACE_ELRAIL_VEHICLES :Vehículos de Ferrocarril Eléctrico
STR_REPLACE_MONORAIL_VEHICLES :Vehículos de Monorraíl
STR_REPLACE_MAGLEV_VEHICLES :Vehículos Maglev
STR_REPLACE_ROAD_VEHICLES :Vehículos Terrestres
STR_REPLACE_TRAM_VEHICLES :Vehículos de Tranvía
STR_REPLACE_REMOVE_WAGON :{BLACK}Retirar vagón: {ORANGE}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Hacer que el reemplazo automático mantenga la longitud del tren quitando vagones (empezando por el frente), si el cambio de locomotora produce un tren más largo
@ -4341,6 +4440,7 @@ STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Tramo de
STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Primero se debe retirar tramo de ferrocarril
STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Carretera de un solo sentido o bloqueada
STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}No se permiten pasos a nivel para este tipo de ferrocarril
STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}No se permiten pasos a nivel para este tipo de carretera
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}No se pueden construir señales aquí...
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}No se pueden construir ferrocarriles aquí...
STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}No se pueden retirar ferrocarriles aquí...
@ -4360,6 +4460,12 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}No se pu
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}No se puede retirar tranvía de aquí...
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... no hay carretera
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... no hay tranvía
STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}No es posible transformar esta carretera...
STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}No se puede convertir el tipo de tranvía aquí...
STR_ERROR_NO_SUITABLE_ROAD :{WHITE}No hay carretera adecuada
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}No hay un tranvía adecuado
STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... carretera incompatible
STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... tranvía incompatible
# Waterway construction errors
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}No pueden construirse canales aquí...
@ -4412,6 +4518,7 @@ STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}No se pu
STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}No se puede borrar grupo...
STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}No se puede renombrar grupo...
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}No se puede establecer la jerarquía de grupos...
STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... No se permiten bucles en la jerarquía del grupo
STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}No se pueden quitar todos los vehículos de este grupo...
STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}No se puede añadir el vehículo a este grupo...
STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}No se pueden añadir vehículos compartidos al grupo...

@ -237,6 +237,7 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Angre kr
STR_BUTTON_SORT_BY :{BLACK}Sortera efter
STR_BUTTON_LOCATION :{BLACK}Plats
STR_BUTTON_RENAME :{BLACK}Byt namn
STR_BUTTON_CATCHMENT :{BLACK}Upptagningsområde
STR_TOOLTIP_CATCHMENT :{BLACK}Växla visning av upptagningsområde
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Stäng fönster
@ -340,6 +341,7 @@ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zooma in
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Zooma ut vyn
STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg järnväg
STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Bygg vägar
STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Bygg spårvagnar
STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bygg hamnar
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bygg flygplatser
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Öppna landskapsarkitektursverktygen för att höja/sänka land, plantera träd, etc.
@ -360,6 +362,7 @@ STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Generera
STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Generera städer
STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Generera industrier
STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Bygg vägar
STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Spårvägskonstruktion
STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantera träd. Shift växlar mellan att bygga/visa beräknad kostnad
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Placera skylt
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Placera objekt. Shift växlar mellan att bygga/visa beräknad kostnad
@ -935,6 +938,9 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgisk lari (
STR_GAME_OPTIONS_CURRENCY_IRR :Iransk rial (IRR)
STR_GAME_OPTIONS_CURRENCY_RUB :Ny rysk rubel (RUB)
STR_GAME_OPTIONS_CURRENCY_MXN :Mexikansk peso (MXN)
STR_GAME_OPTIONS_CURRENCY_NTD :Nya Taiwanesisk dollar (NTD)
STR_GAME_OPTIONS_CURRENCY_CNY :Kinesisk Renminbi (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongdollar (HKD)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vägfordon
@ -1000,7 +1006,9 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Fyrdubbel storl
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Storlek på typsnitt
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Välj vilken storlek som ska användas på gränssnittets typsnitt
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Dubbel storlek
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Kvadrupel storlek
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikpaket som standard
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Välj vilket grafikpaket som ska användas som standard
@ -1184,6 +1192,8 @@ STR_CONFIG_SETTING_AUTOSLOPE :Tillåt landska
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tillåt landskapsarkitektur under byggnader och spår utan att ta bort dem
STR_CONFIG_SETTING_CATCHMENT :Tillåt mer realistiska uppsamlingsområden för stationer: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Ha olika stora uppsamlingsområden för olika typer av stationer och flygplatser
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Företagsstationerna kan betjäna industrier med tillhörande neutrala stationer: {STRING}
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :När aktiverat, kan industrier med tillhörande stationer (t.ex. oljeplattformar) också betjänas av företagsägda stationer som är byggda i närheten. När inaktiverat kan dessa industrier endast betjänas av deras tillhörande stationer. Några närliggande företagsstationer kommer inte att kunna tjäna dem, inte heller kommer den tillhörande stationen att tjäna något annat än industrin
STR_CONFIG_SETTING_EXTRADYNAMITE :Tillåt borttagning av fler stadsägda vägar, broar och tunnlar: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Underlätta borttagning av stadsägd infrastruktur och byggnader
STR_CONFIG_SETTING_TRAIN_LENGTH :Maximal tåglängd: {STRING}
@ -1481,6 +1491,9 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tillåt datorsp
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillåt datorstyrda AI-spelare att delta i spel för flera spelare
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes innan skript sätts i viloläge: {STRING}
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximalt antal beräkningssteg ett skript kan utföra i en omgång
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Maximalt minnesanvändning per skript: {STRING}
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Hur mycket minne ett enda skript kan konsumera innan det tvingas avslutas. Det kan behöva ökas för stora kartor.
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Visa serviceintervall i procent: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Välj om fordonsservice ska triggas av hur lång tid som har gått sedan senaste service eller av att tillförlitligheten faller med en viss procentsats av den maximala tillförlitligheten
@ -1583,6 +1596,9 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Om denna instä
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Förbjuden
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Tillåten
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Tillåten, vanlig stads-layout
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Fraktgods som genereras i staden: {STRING}
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Hur mycket fraktgods produceras av hus i städer, i förhållande till den totala befolkningen i staden.{}Kvadratisk tillväxt: En stad dubbelt så stor genererar fyra gånger så många passagerare.{}Linjär tillväxt: En stad dubbelt så stor genererar dubbelt så många passagerare.
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Kvadratisk (original)
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linjär
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Placering av träd i spelläge: {STRING}
@ -2423,8 +2439,11 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Bygg vä
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Bygg spårvägstunnel. Shift växlar mellan att bygga/visa beräknad kostnad
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Växla mellan att bygga/riva väg
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Växla mellan att bygga/riva spårväg
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Konvertera/Uppgradera vägtyp. Shift växlar mellan att bygga/visa beräknad kostnad
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Konvertera/Uppgradera spårvagnstyp. Shift växlar mellan att bygga/visa beräknad kostnad
STR_ROAD_NAME_ROAD :Väg
STR_ROAD_NAME_TRAM :Spårväg
# Road depot construction window
STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Riktning för vägfordonsdepå
@ -2609,6 +2628,8 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Accepterat gods: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Spårtyp: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_ROAD_TYPE :{BLACK}Vägtyp: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_TRAM_TYPE :{BLACK}Spårvagnstyp: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Hastighetsgräns för järnvägsspår: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Hastighetsbegränsning på väg: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}Hastighetsgräns för spårvagnar: {LTBLUE}{VELOCITY}
@ -2721,6 +2742,7 @@ STR_FRAMERATE_SPEED_FACTOR :{BLACK}Spelets
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Hur snabbt spelet för närvarande körs, jämfört med förväntad hastighet vid normal simulationsfrekvens.
STR_FRAMERATE_CURRENT :{WHITE}Nuvarande
STR_FRAMERATE_AVERAGE :{WHITE}Genomsnittlig
STR_FRAMERATE_MEMORYUSE :{WHITE}Minne
STR_FRAMERATE_DATA_POINTS :{BLACK}Data baseras på {COMMA} mätvärden
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms
@ -2728,6 +2750,9 @@ STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} bildrutor/s
STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} bildrutor/s
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} bildrutor/s
STR_FRAMERATE_BYTES_GOOD :{LTBLUE}{BYTES}
STR_FRAMERATE_BYTES_WARN :{YELLOW}{BYTES}
STR_FRAMERATE_BYTES_BAD :{RED}{BYTES}
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
############ Leave those lines in this order!!
@ -2743,7 +2768,9 @@ STR_FRAMERATE_DRAWING :{BLACK}Grafikå
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Vyfönster:
STR_FRAMERATE_VIDEO :{BLACK}Videoutmatning:
STR_FRAMERATE_SOUND :{BLACK}Ljudmixning:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS/AI totalt:
STR_FRAMERATE_GAMESCRIPT :{BLACK} Spelskript:
STR_FRAMERATE_AI :{BLACK} AI {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Spel-loop
@ -2758,7 +2785,9 @@ STR_FRAMETIME_CAPTION_DRAWING :Grafikåtergivn
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Återgivning av vyer
STR_FRAMETIME_CAPTION_VIDEO :Videoutmatning
STR_FRAMETIME_CAPTION_SOUND :Ljudmixning
STR_FRAMETIME_CAPTION_ALLSCRIPTS :GS/AI skripts totalt
STR_FRAMETIME_CAPTION_GAMESCRIPT :Spelskript
STR_FRAMETIME_CAPTION_AI :AI {NUM} {STRING}
############ End of leave-in-this-order
@ -3023,6 +3052,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Last/återställnings information för '{1:ENGINE}' är skilld ifrån köp lista efter konstruktion. Detta kan leda till att utomatisk förnyelse/uppgradering misslyckas med att anpassa fordonen/vagnarna korrekt
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' skapade en oändlig loop i en produktions-callback-funktion
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback-funktion {1:HEX} returnerade ett okänt/ogiltligt resultat {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' returnerade ogiltig lasttyp i produktions-callback vid {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<invalid cargo>
@ -3166,6 +3196,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klicka f
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} berättelsebok
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global berättelsebok
STR_STORY_BOOK_SPECTATOR :Global berättelsebok
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Sida {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Hoppa till valfri sida genom att välja sidan i denna lista
@ -3347,6 +3378,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastr
STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Järnvägsbitar:
STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signaler
STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Vägbitar:
STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Spårvagnsdelar:
STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Vattenrutor:
STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanaler
STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationer:
@ -3426,6 +3458,7 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Ogrupperade vä
STR_GROUP_DEFAULT_SHIPS :Ogrupperade skepp
STR_GROUP_DEFAULT_AIRCRAFTS :Ogrupperade flygmaskiner
STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA})
STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - klicka på en grupp för att lista alla fordon i gruppen. Dra och släpp grupper för att ordna hierarkin.
STR_GROUP_CREATE_TOOLTIP :{BLACK}Klicka för att skapa en grupp
@ -3454,6 +3487,7 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nytt monorailfo
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nytt maglevfordon
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nytt Vägfordon
STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Nya spårvägsfordon
############ range for vehicle availability starts
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nya rälsfordon
@ -3463,6 +3497,7 @@ STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nytt flygplan
############ range for vehicle availability ends
STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG}{BLACK} Vikt: {GOLD}{WEIGHT_SHORT}
STR_PURCHASE_INFO_COST_REFIT_WEIGHT :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG}{BLACK} (Kostnad för anpassning: {GOLD}{CURRENCY_LONG}{BLACK}) Vikt: {GOLD}{WEIGHT_SHORT}
STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hastighet: {GOLD}{VELOCITY}{BLACK} Kraft: {GOLD}{POWER}
STR_PURCHASE_INFO_SPEED :{BLACK}Hastighet: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Hastighet i hav: {GOLD}{VELOCITY}
@ -3476,6 +3511,7 @@ STR_PURCHASE_INFO_COST :{BLACK}Kostnad:
STR_PURCHASE_INFO_COST_REFIT :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG}{BLACK} (Anpassningskostnad: {GOLD}{CURRENCY_LONG}{BLACK})
STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Vikt: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT})
STR_PURCHASE_INFO_COST_SPEED :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG}{BLACK} Hastighet: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_COST_REFIT_SPEED :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG}{BLACK} (Kostnad för anpassning: {GOLD}{CURRENCY_LONG}{BLACK}) Hastighet: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapacitet: {GOLD}{CARGO_LONG}, {CARGO_LONG}
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Motoriserade vagnar: {GOLD}+{POWER}{BLACK} Vikt: {GOLD}+{WEIGHT_SHORT}
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Anpassningsbar till: {GOLD}{STRING}
@ -3498,6 +3534,7 @@ STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Köp fly
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Köp och anpassa fordon
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Köp och anpassa fordon
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Köp och anpassa skepp
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Köp och anpassa flygplan
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Köp markerad tågvagn. Shift+klick visar kostnad utan att köpa
@ -3505,6 +3542,9 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Köp mar
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Köp markerat skepp. Shift+klick visar kostnad utan att köpa
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Köp markerat flygplan. Shift+klick visar kostnad utan att köpa
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Köp och anpassa markerat tåg. Shift+klick visar kostnad utan att köpa
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Köp och anpassa markerat vägfordon. Shift+klick visar kostnad utan att köpa
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Köp och anpassa markerat skepp. Shift+klick visar kostnad utan att köpa
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Köp och anpassa markerat flygplan. Shift+klick visar kostnad utan att köpa
STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Byt namn på
@ -3622,6 +3662,7 @@ STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monorail-lok
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev-lok
STR_ENGINE_PREVIEW_ROAD_VEHICLE :vägfordon
STR_ENGINE_PREVIEW_TRAM_VEHICLE :spårvägsfordon
STR_ENGINE_PREVIEW_AIRCRAFT :flygplan
STR_ENGINE_PREVIEW_SHIP :skepp
@ -3666,6 +3707,7 @@ STR_REPLACE_ALL_RAILTYPE :Alla järnvägs
STR_REPLACE_ALL_ROADTYPE :Alla vägfordon
STR_REPLACE_HELP_RAILTYPE :{BLACK}Välj vilken järnvägstyp du vill byta ut lok för
STR_REPLACE_HELP_ROADTYPE :{BLACK}Välj vilken vägtyp du vill byta ut motorer för
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Visa vilket fordon det vänstra fordonet byts ut till, om något
STR_REPLACE_RAIL_VEHICLES :Järnvägsfordon
STR_REPLACE_ELRAIL_VEHICLES :Elektriska järnvägsfordon
@ -3673,6 +3715,7 @@ STR_REPLACE_MONORAIL_VEHICLES :Monorail-fordon
STR_REPLACE_MAGLEV_VEHICLES :Maglevfordon
STR_REPLACE_ROAD_VEHICLES :Vägfordon
STR_REPLACE_TRAM_VEHICLES :Spårvägsfordon
STR_REPLACE_REMOVE_WAGON :{BLACK}Vagnborttagning: {ORANGE}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Gör så att automatiskt utbyte behåller ett tågs längd genom att ta bort vagnar (med början längst fram) om utbytandet av loket skulle göra tåget längre
@ -4417,6 +4460,11 @@ STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kan inte
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... det finns ingen väg
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... det finns ingen spårvagnsräls
STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Kan inte konvertera vägtyp här...
STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Kan inte konvertera spårvagnstyp här...
STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Ingen lämplig väg
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Ingen passande spårväg
STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... oförenlig väg
STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... oförenlig spårväg
# Waterway construction errors
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kan inte bygga kanaler här...
@ -4469,6 +4517,7 @@ STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan inte
STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kan inte ta bort denna grupp...
STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kan inte döpa om grupp...
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Kan inte ställa in föräldragrupp ...
STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... loopar i grupphierarkin är inte tillåtna
STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan inte ta bort alla fordon i denna grupp...
STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan inte lägga till fordon i denna grupp...
STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan inte lägga till delade fordon i denna grupp...

@ -674,6 +674,7 @@ STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTB
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Indecs Traciau
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Rhaglen - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Clirio
STR_PLAYLIST_CHANGE_SET :{BLACK}Newid set
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Clirio'r rhaglen gyfredol (Cyfaddas 1 neu Cyfaddas 2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Cliciwch i ychwanegu trac cerddoriaeth i'r rhaglen gyfredol (Cyfaddas 1 Neu Cyfaddas 2 yn unig)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Cliciwch i dynnu trac cerddoriaeth o'r rhaglen gyfredol (Cyfaddas 1 Neu Cyfaddas 2 yn unig)
@ -922,6 +923,8 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :Rand De Affrica
STR_GAME_OPTIONS_CURRENCY_CUSTOM :Addasedig...
STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (GEL)
STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR)
STR_GAME_OPTIONS_CURRENCY_RUB :Rwbl Rwsaidd Newydd (RUB)
STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Tseina (CNY)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cerbydau Ffordd
@ -2683,9 +2686,13 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD
# Framerate display window
STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Nifer o fframiau fideo a lunir bob eiliad.
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Pa mor gyflym mae'r gêm yn rhedeg, o gymharu a'r cyflymder i'w ddisgwyl ar gyfradd efelychu arferol.
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} frâm yr eiliad
############ Leave those lines in this order!!
STR_FRAMERATE_GL_ECONOMY :{BLACK} Trin cargo:
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_VIDEO :Allbwn fideo
############ End of leave-in-this-order
@ -2940,6 +2947,7 @@ STR_NEWGRF_BUGGY :{WHITE}Mae NewG
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Mae'r wybodaeth llwyth/ailffitio ar gyfer '{1:ENGINE}' yn wahanol i'r rhestr brynu wedi'r adeiladu. Gall hyn beri i awtoadnewyddu/-ddisodli fethu ag ailfitio'n gywir
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' wedi creu lŵp diddiwedd yn y system adalw cynhyrchu
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Dychwelodd adalwad {1:HEX} ganlyniad anhysbys/annilys {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' wedi dychwelyd math cargo annilys yn yr adalwad cynhyrchu yn {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<llwyth annilys>
@ -3403,6 +3411,8 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Prynu Ce
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Prynu Llong
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Prynu Awyren
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Prynu ac Ailffitio Cerbyd
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Prynu ac Ailffitio Llong
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Adeiladu'r cerbyd trên sydd wedi'i amlygu. Mae Shift+Clic yn dangos amcangyfrif o'r gost
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Adeiladu'r cerbyd ffordd sydd wedi'i amlygu. Mae Shift+Clic yn dangos amcangyfrif o'r gost
@ -4315,6 +4325,7 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Methu cl
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Methu dileu tramffordd oddi yma...
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... nid oes ffordd yno
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... nid oes tramffordd yno
STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Dim lôn addas
# Waterway construction errors
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Methu adeiladu camlesi yma...
@ -4477,7 +4488,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Effeithiau sain
STR_BASESOUNDS_WIN_DESCRIPTION :Effeithiau sain gwreiddiol fersiwn Windows o Transport Tycoon Deluxe.
STR_BASESOUNDS_NONE_DESCRIPTION :Pecyn sain heb unrhyw effeithiau sain ynddo.
STR_BASEMUSIC_WIN_DESCRIPTION :Cerddoriaeth gwreiddiol fersion Windows o Transport Tycoon Deluxe.
STR_BASEMUSIC_DOS_DESCRIPTION :Cerddoriaeth gwreiddiol Transport Tycoon Deluxe (fersiwn DOS).
STR_BASEMUSIC_DOS_DESCRIPTION :Cerddoriaeth gwreiddiol fersiwn DOS o Transport Tycoon Deluxe.
STR_BASEMUSIC_TTO_DESCRIPTION :Cerddoriaeth gwreiddiol fersion DOS o Transport Tycoon Deluxe (Gwreiddiol/Golygydd Byd).
STR_BASEMUSIC_NONE_DESCRIPTION :Pecyn cerddoriaeth heb unrhyw gerddoriaeth ynddo.
##id 0x2000

@ -54,6 +54,7 @@ void InitializeAirportGui();
void InitializeDockGui();
void InitializeGraphGui();
void InitializeObjectGui();
void InitializeTownGui();
void InitializeIndustries();
void InitializeObjects();
void InitializeTrees();
@ -130,6 +131,7 @@ void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settin
InitializeDockGui();
InitializeGraphGui();
InitializeObjectGui();
InitializeTownGui();
InitializeAIGui();
InitializeTrees();
InitializeIndustries();

@ -593,38 +593,46 @@ void InitNewsItemStructs()
}
/**
* Are we ready to show another news item?
* Only if nothing is in the newsticker and no newspaper is displayed
* Are we ready to show another ticker item?
* Only if nothing is in the newsticker is displayed
*/
static bool ReadyForNextItem()
static bool ReadyForNextTickerItem()
{
const NewsItem *ni = _forced_news == nullptr ? _current_news : _forced_news;
const NewsItem *ni = _statusbar_news_item;
if (ni == nullptr) return true;
/* Ticker message
* Check if the status bar message is still being displayed? */
if (IsNewsTickerShown()) return false;
return true;
}
/**
* Are we ready to show another news item?
* Only if no newspaper is displayed
*/
static bool ReadyForNextNewsItem()
{
const NewsItem *ni = _forced_news == nullptr ? _current_news : _forced_news;
if (ni == nullptr) return true;
/* neither newsticker nor newspaper are running */
return (NewsWindow::duration <= 0 || FindWindowById(WC_NEWS_WINDOW, 0) == nullptr);
}
/** Move to the next news item */
static void MoveToNextItem()
/** Move to the next ticker item */
static void MoveToNextTickerItem()
{
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_NEWS_DELETED); // invalidate the statusbar
DeleteWindowById(WC_NEWS_WINDOW, 0); // close the newspapers window if shown
_forced_news = nullptr;
_statusbar_news_item = nullptr;
/* if we're not at the last item, then move on */
if (_current_news != _latest_news) {
_current_news = (_current_news == nullptr) ? _oldest_news : _current_news->next;
const NewsItem *ni = _current_news;
while (_statusbar_news_item != _latest_news) {
_statusbar_news_item = (_statusbar_news_item == nullptr) ? _oldest_news : _statusbar_news_item->next;
const NewsItem *ni = _statusbar_news_item;
const NewsType type = ni->type;
/* check the date, don't show too old items */
if (_date - _news_type_data[type].age > ni->date) return;
if (_date - _news_type_data[type].age > ni->date) continue;
switch (_news_type_data[type].GetDisplay()) {
default: NOT_REACHED();
@ -636,6 +644,36 @@ static void MoveToNextItem()
ShowTicker(ni);
break;
case ND_FULL: // Full - show newspaper, skipped here
continue;
}
return;
}
}
/** Move to the next news item */
static void MoveToNextNewsItem()
{
DeleteWindowById(WC_NEWS_WINDOW, 0); // close the newspapers window if shown
_forced_news = nullptr;
/* if we're not at the last item, then move on */
while (_current_news != _latest_news) {
_current_news = (_current_news == nullptr) ? _oldest_news : _current_news->next;
const NewsItem *ni = _current_news;
const NewsType type = ni->type;
/* check the date, don't show too old items */
if (_date - _news_type_data[type].age > ni->date) continue;
switch (_news_type_data[type].GetDisplay()) {
default: NOT_REACHED();
case ND_OFF: // Off - show nothing only a small reminder in the status bar, skipped here
continue;
case ND_SUMMARY: // Summary - show ticker, skipped here
continue;
case ND_FULL: // Full - show newspaper
ShowNewspaper(ni);
break;
@ -778,14 +816,23 @@ static void DeleteNewsItem(NewsItem *ni)
_total_news--;
if (_forced_news == ni || _current_news == ni || _statusbar_news_item == ni) {
if (_forced_news == ni || _current_news == ni) {
/* When we're the current news, go to the previous item first;
* we just possibly made that the last news item. */
if (_current_news == ni) _current_news = ni->prev;
/* About to remove the currently forced item (shown as newspapers) ||
* about to remove the currently displayed item (newspapers, ticker, or just a reminder) */
MoveToNextItem();
* about to remove the currently displayed item (newspapers) */
MoveToNextNewsItem();
}
if (_statusbar_news_item == ni) {
/* When we're the current news, go to the previous item first;
* we just possibly made that the last news item. */
_statusbar_news_item = ni->prev;
/* About to remove the currently displayed item (ticker, or just a reminder) */
MoveToNextTickerItem();
}
delete ni;
@ -906,7 +953,8 @@ void NewsLoop()
_last_clean_month = _cur_month;
}
if (ReadyForNextItem()) MoveToNextItem();
if (ReadyForNextTickerItem()) MoveToNextTickerItem();
if (ReadyForNextNewsItem()) MoveToNextNewsItem();
}
/** Do a forced show of a specific message */

@ -1258,6 +1258,7 @@ void SQGSWindow_Register(Squirrel *engine)
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TE_SWITCH_BAR, "WID_TE_SWITCH_BAR");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_SORT_ORDER, "WID_TD_SORT_ORDER");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_SORT_CRITERIA, "WID_TD_SORT_CRITERIA");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_FILTER, "WID_TD_FILTER");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_LIST, "WID_TD_LIST");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_SCROLLBAR, "WID_TD_SCROLLBAR");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_WORLD_POPULATION, "WID_TD_WORLD_POPULATION");

@ -109,7 +109,7 @@
return g != nullptr && g->completed;
}
/* static */ bool ScriptGoal::DoQuestion(uint16 uniqueid, uint8 target, bool is_client, Text *question, QuestionType type, int buttons)
/* static */ bool ScriptGoal::DoQuestion(uint16 uniqueid, uint32 target, bool is_client, Text *question, QuestionType type, uint32 buttons)
{
CCountedPtr<Text> counter(question);
@ -121,7 +121,7 @@
EnforcePrecondition(false, buttons < (1 << ::GOAL_QUESTION_BUTTON_COUNT));
EnforcePrecondition(false, (int)type < ::GOAL_QUESTION_TYPE_COUNT);
return ScriptObject::DoCommand(0, uniqueid | (target << 16) | (type << 24) | (is_client ? (1 << 31) : 0), buttons, CMD_GOAL_QUESTION, text);
return ScriptObject::DoCommand(0, uniqueid | (target << 16), buttons | (type << 29) | (is_client ? (1 << 31) : 0), CMD_GOAL_QUESTION, text);
}
/* static */ bool ScriptGoal::Question(uint16 uniqueid, ScriptCompany::CompanyID company, Text *question, QuestionType type, int buttons)
@ -137,8 +137,9 @@
{
EnforcePrecondition(false, ScriptGame::IsMultiplayer());
EnforcePrecondition(false, ScriptClient::ResolveClientID(client) != ScriptClient::CLIENT_INVALID);
ClientIndex c = NetworkClientInfo::GetByClientID((::ClientID)client)->index;
return DoQuestion(uniqueid, c, true, question, type, buttons);
/* Can only send 16 bits of client_id before proper fix is implemented */
EnforcePrecondition(false, client < (1 << 16));
return DoQuestion(uniqueid, client, true, question, type, buttons);
}
/* static */ bool ScriptGoal::CloseQuestion(uint16 uniqueid)

@ -211,7 +211,7 @@ protected:
/**
* Does common checks and asks the question.
*/
static bool DoQuestion(uint16 uniqueid, uint8 target, bool is_client, Text *question, QuestionType type, int buttons);
static bool DoQuestion(uint16 uniqueid, uint32 target, bool is_client, Text *question, QuestionType type, uint32 buttons);
};
#endif /* SCRIPT_GOAL_HPP */

@ -845,7 +845,7 @@ SQInteger ScriptList::Valuate(HSQUIRRELVM vm)
int nparam = sq_gettop(vm) - 1;
if (nparam < 1) {
return sq_throwerror(vm, "You need to give a least a Valuator as parameter to ScriptList::Valuate");
return sq_throwerror(vm, "You need to give at least a Valuator as parameter to ScriptList::Valuate");
}
/* Make sure the valuator function is really a function, and not any

@ -2528,6 +2528,7 @@ public:
enum TownDirectoryWidgets {
WID_TD_SORT_ORDER = ::WID_TD_SORT_ORDER, ///< Direction of sort dropdown.
WID_TD_SORT_CRITERIA = ::WID_TD_SORT_CRITERIA, ///< Criteria of sort dropdown.
WID_TD_FILTER = ::WID_TD_FILTER, ///< Filter of name.
WID_TD_LIST = ::WID_TD_LIST, ///< List of towns.
WID_TD_SCROLLBAR = ::WID_TD_SCROLLBAR, ///< Scrollbar for the town list.
WID_TD_WORLD_POPULATION = ::WID_TD_WORLD_POPULATION, ///< The world's population.
@ -2536,6 +2537,7 @@ public:
/** Widgets of the #TownAuthorityWindow class. */
enum TownAuthorityWidgets {
WID_TA_CAPTION = ::WID_TA_CAPTION, ///< Caption of window.
WID_TA_ZONE_BUTTON = ::WID_TA_ZONE_BUTTON, ///< Turn on/off showing local authority zone.
WID_TA_RATING_INFO = ::WID_TA_RATING_INFO, ///< Overview with ratings for each company.
WID_TA_COMMAND_LIST = ::WID_TA_COMMAND_LIST, ///< List of commands for the player.
WID_TA_SCROLLBAR = ::WID_TA_SCROLLBAR, ///< Scrollbar of the list of commands.

@ -166,7 +166,7 @@ struct StatusBarWindow : Window {
} else if (_pause_mode != PM_UNPAUSED) {
StringID msg = (_pause_mode & PM_PAUSED_LINK_GRAPH) ? STR_STATUSBAR_PAUSED_LINK_GRAPH : STR_STATUSBAR_PAUSED;
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, msg, TC_FROMSTRING, SA_HOR_CENTER);
} else if (this->ticker_scroll < TICKER_STOP && FindWindowById(WC_NEWS_WINDOW, 0) == nullptr && _statusbar_news_item != nullptr && _statusbar_news_item->string_id != 0) {
} else if (this->ticker_scroll < TICKER_STOP && _statusbar_news_item != nullptr && _statusbar_news_item->string_id != 0) {
/* Draw the scrolling news text */
if (!DrawScrollingStatusText(_statusbar_news_item, ScaleGUITrad(this->ticker_scroll), r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom)) {
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_NEWS_DELETED);

@ -154,7 +154,7 @@ CommandCost CmdCreateStoryPageElement(TileIndex tile, DoCommandFlag flags, uint3
{
if (!StoryPageElement::CanAllocateItem()) return CMD_ERROR;
StoryPageID page_id = (CompanyID)GB(p1, 0, 16);
StoryPageID page_id = (StoryPageID)GB(p1, 0, 16);
StoryPageElementType type = Extract<StoryPageElementType, 16, 8>(p1);
/* Allow at most 128 elements per page. */

@ -1933,7 +1933,7 @@ static char *GetSpecialNameString(char *buff, int ind, StringParameters *args, c
}
/* resolution size? */
if (IsInsideMM(ind, (SPECSTR_RESOLUTION_START - 0x70E4), (SPECSTR_RESOLUTION_END - 0x70E4) + 1)) {
if (IsInsideBS(ind, (SPECSTR_RESOLUTION_START - 0x70E4), _resolutions.size())) {
int i = ind - (SPECSTR_RESOLUTION_START - 0x70E4);
buff += seprintf(
buff, last, "%ux%u", _resolutions[i].width, _resolutions[i].height

@ -93,9 +93,8 @@ enum SpecialStrings {
SPECSTR_LANGUAGE_START = 0x7100,
SPECSTR_LANGUAGE_END = SPECSTR_LANGUAGE_START + MAX_LANG - 1,
/* reserve 32 strings for various screen resolutions */
/* reserve strings for various screen resolutions MUST BE THE LAST VALUE IN THIS ENUM */
SPECSTR_RESOLUTION_START = SPECSTR_LANGUAGE_END + 1,
SPECSTR_RESOLUTION_END = SPECSTR_RESOLUTION_START + 0x1F,
};
#endif /* STRINGS_TYPE_H */

@ -108,6 +108,8 @@ struct Town : TownPool::PoolItem<&_town_pool> {
bool larger_town; ///< if this is a larger town and should grow more quickly
TownLayout layout; ///< town specific road layout
bool show_zone; ///< NOSAVE: mark town to show the local authority zone in the viewports
std::list<PersistentStorage *> psa_list;
/**
@ -200,6 +202,12 @@ enum TownRatingCheckType {
TOWN_RATING_CHECK_TYPE_COUNT, ///< Number of town checking action types.
};
/** Special values for town list window for the data parameter of #InvalidateWindowData. */
enum TownDirectoryInvalidateWindowData {
TDIWD_FORCE_REBUILD,
TDIWD_FILTER_CHANGES, ///< The filename filter has changed (via the editbox)
};
/**
* This enum is used in conjunction with town->flags.
* IT simply states what bit is used for.

@ -232,7 +232,7 @@ void Town::UpdateLabel()
void Town::FillCachedName()
{
char buf[256];
char buf[MAX_LENGTH_TOWN_NAME_CHARS * MAX_CHAR_LENGTH];
char *end = GetTownName(buf, this, lastof(buf));
char *alloced = MallocT<char>(end - buf + 1);
memcpy(alloced, buf, end - buf + 1);
@ -1942,6 +1942,7 @@ static void DoCreateTown(Town *t, TileIndex tile, uint32 townnameparts, TownSize
* similar towns they're unlikely to grow all in one tick */
t->grow_counter = t->index % TOWN_GROWTH_TICKS;
t->growth_rate = TownTicksToGameTicks(250);
t->show_zone = false;
_town_kdtree.Insert(t->index);

@ -31,11 +31,14 @@
#include "townname_func.h"
#include "core/geometry_func.hpp"
#include "genworld.h"
#include "stringfilter_type.h"
#include "widgets/dropdown_func.h"
#include "newgrf_config.h"
#include "newgrf_house.h"
#include "date_func.h"
#include "core/random_func.hpp"
#include "town_kdtree.h"
#include "widgets/town_widget.h"
#include "table/strings.h"
#include "newgrf_debug.h"
@ -43,6 +46,8 @@
#include "safeguards.h"
TownKdtree _town_local_authority_kdtree(&Kdtree_TownXYFunc);
typedef GUIList<const Town*> GUITownList;
static void PlaceProc_House(TileIndex tile);
@ -51,6 +56,7 @@ static const NWidgetPart _nested_town_authority_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
NWidget(WWT_CAPTION, COLOUR_BROWN, WID_TA_CAPTION), SetDataTip(STR_LOCAL_AUTHORITY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_TA_ZONE_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_LOCAL_AUTHORITY_ZONE, STR_LOCAL_AUTHORITY_ZONE_TOOLTIP),
NWidget(WWT_SHADEBOX, COLOUR_BROWN),
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
@ -118,6 +124,7 @@ public:
this->sel_index = -1;
}
this->SetWidgetLoweredState(WID_TA_ZONE_BUTTON, this->town->show_zone);
this->SetWidgetDisabledState(WID_TA_EXECUTE, this->sel_index == -1);
this->DrawWidgets();
@ -263,6 +270,18 @@ public:
void OnClick(Point pt, int widget, int click_count) override
{
switch (widget) {
case WID_TA_ZONE_BUTTON: {
bool new_show_state = !this->town->show_zone;
TownID index = this->town->index;
new_show_state ? _town_local_authority_kdtree.Insert(index) : _town_local_authority_kdtree.Remove(index);
this->town->show_zone = new_show_state;
this->SetWidgetLoweredState(widget, new_show_state);
MarkWholeScreenDirty();
break;
}
case WID_TA_COMMAND_LIST: {
int y = this->GetRowFromWidget(pt.y, WID_TA_COMMAND_LIST, 1, FONT_HEIGHT_NORMAL);
if (!IsInsideMM(y, 0, 5)) return;
@ -651,7 +670,7 @@ static const NWidgetPart _nested_town_directory_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_TD_SORT_ORDER), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER),
NWidget(WWT_DROPDOWN, COLOUR_BROWN, WID_TD_SORT_CRITERIA), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA),
NWidget(WWT_PANEL, COLOUR_BROWN), SetResize(1, 0), EndContainer(),
NWidget(WWT_EDITBOX, COLOUR_BROWN, WID_TD_FILTER), SetFill(35, 12), SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_BROWN, WID_TD_LIST), SetMinimalSize(196, 0), SetDataTip(0x0, STR_TOWN_DIRECTORY_LIST_TOOLTIP),
SetFill(1, 0), SetResize(0, 10), SetScrollbar(WID_TD_SCROLLBAR), EndContainer(),
@ -677,6 +696,9 @@ private:
static const StringID sorter_names[];
static GUITownList::SortFunction * const sorter_funcs[];
StringFilter string_filter; ///< Filter for towns
QueryString townname_editbox; ///< Filter editbox
GUITownList towns;
Scrollbar *vscroll;
@ -739,7 +761,7 @@ private:
}
public:
TownDirectoryWindow(WindowDesc *desc) : Window(desc)
TownDirectoryWindow(WindowDesc *desc) : Window(desc), townname_editbox(MAX_LENGTH_TOWN_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_TOWN_NAME_CHARS)
{
this->CreateNestedTree();
@ -751,6 +773,9 @@ public:
this->BuildSortTownList();
this->FinishInitNested(0);
this->querystrings[WID_TD_FILTER] = &this->townname_editbox;
this->townname_editbox.cancel_button = QueryString::ACTION_CLEAR;
}
void SetStringParameters(int widget) const override
@ -941,6 +966,14 @@ public:
this->vscroll->SetCapacityFromWidget(this, WID_TD_LIST);
}
virtual void OnEditboxChanged(int wid)
{
if (wid == WID_TD_FILTER) {
this->string_filter.SetFilterTerm(this->townname_editbox.text.buf);
this->InvalidateData(TDIWD_FILTER_CHANGES);
}
}
/**
* Some data on this window has become invalid.
* @param data Information about the changed data.
@ -948,11 +981,41 @@ public:
*/
void OnInvalidateData(int data = 0, bool gui_scope = true) override
{
if (data == 0) {
/* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */
this->towns.ForceRebuild();
} else {
this->towns.ForceResort();
char buf[MAX_LENGTH_TOWN_NAME_CHARS * MAX_CHAR_LENGTH];
switch (data) {
case TDIWD_FORCE_REBUILD:
/* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */
this->towns.ForceRebuild();
break;
case TDIWD_FILTER_CHANGES:
if (this->string_filter.IsEmpty()) {
this->towns.ForceRebuild();
} else {
this->towns.clear();
const Town *t;
FOR_ALL_TOWNS(t) {
this->string_filter.ResetState();
SetDParam(0, t->index);
GetString(buf, STR_TOWN_NAME, lastof(buf));
this->string_filter.AddLine(buf);
if (this->string_filter.GetState()) this->towns.push_back(t);
}
this->towns.SetListing(this->last_sorting);
this->towns.ForceResort();
this->towns.Sort();
this->towns.shrink_to_fit();
this->towns.RebuildDone();
this->vscroll->SetCount(this->towns.size()); // Update scrollbar as well.
}
break;
default:
this->towns.ForceResort();
}
}
};
@ -1959,3 +2022,8 @@ static void PlaceProc_House(TileIndex tile)
ShowSelectTownWindow(towns, cmd);
}
}
void InitializeTownGui()
{
_town_local_authority_kdtree.Clear();
}

@ -15,6 +15,8 @@
inline uint16 Kdtree_TownXYFunc(TownID tid, int dim) { return (dim == 0) ? TileX(Town::Get(tid)->xy) : TileY(Town::Get(tid)->xy); }
typedef Kdtree<TownID, decltype(&Kdtree_TownXYFunc), uint16, int> TownKdtree;
extern TownKdtree _town_kdtree;
extern TownKdtree _town_local_authority_kdtree;
#endif

@ -74,7 +74,7 @@ static void DedicatedSignalHandler(int sig)
# include <time.h>
# include <tchar.h>
# include "../os/windows/win32.h"
# include "../thread.h"
static HANDLE _hInputReady, _hWaitForInputHandling;
static HANDLE _hThread; // Thread to close
static char _win_console_thread_buffer[200];

@ -95,6 +95,7 @@
#include "window_gui.h"
#include "linkgraph/linkgraph_gui.h"
#include "viewport_kdtree.h"
#include "town_kdtree.h"
#include "viewport_sprite_sorter.h"
#include "bridge_map.h"
#include "company_base.h"
@ -1166,12 +1167,49 @@ static void DrawTileHighlightType(const TileInfo *ti, TileHighlightType tht)
}
}
/**
* Highlights tiles insede local authority of selected towns.
* @param *ti TileInfo Tile that is being drawn
*/
static void HighlightTownLocalAuthorityTiles(const TileInfo *ti)
{
/* Going through cases in order of computational time. */
if (_town_local_authority_kdtree.Count() == 0) return;
/* Tile belongs to town regardless of distance from town. */
if (GetTileType(ti->tile) == MP_HOUSE) {
if (!Town::GetByTile(ti->tile)->show_zone) return;
DrawTileSelectionRect(ti, PALETTE_CRASH);
return;
}
/* If the closest town in the highlighted list is far, we can stop searching. */
TownID tid = _town_local_authority_kdtree.FindNearest(TileX(ti->tile), TileY(ti->tile));
Town *closest_highlighted_town = Town::Get(tid);
if (DistanceManhattan(ti->tile, closest_highlighted_town->xy) >= _settings_game.economy.dist_local_authority) return;
/* Tile is inside of the local autrhority distance of a highlighted town,
but it is possible that a non-highlighted town is even closer. */
Town *closest_town = ClosestTownFromTile(ti->tile, _settings_game.economy.dist_local_authority);
if (closest_town->show_zone) {
DrawTileSelectionRect(ti, PALETTE_CRASH);
}
}
/**
* Checks if the specified tile is selected and if so draws selection using correct selectionstyle.
* @param *ti TileInfo Tile that is being drawn
*/
static void DrawTileSelection(const TileInfo *ti)
{
/* Highlight tiles insede local authority of selected towns. */
HighlightTownLocalAuthorityTiles(ti);
/* Draw a red error square? */
bool is_redsq = _thd.redsq == ti->tile;
if (is_redsq) DrawTileSelectionRect(ti, PALETTE_TILE_RED_PULSATING);

@ -16,6 +16,7 @@
enum TownDirectoryWidgets {
WID_TD_SORT_ORDER, ///< Direction of sort dropdown.
WID_TD_SORT_CRITERIA, ///< Criteria of sort dropdown.
WID_TD_FILTER, ///< Filter of name.
WID_TD_LIST, ///< List of towns.
WID_TD_SCROLLBAR, ///< Scrollbar for the town list.
WID_TD_WORLD_POPULATION, ///< The world's population.
@ -24,6 +25,7 @@ enum TownDirectoryWidgets {
/** Widgets of the #TownAuthorityWindow class. */
enum TownAuthorityWidgets {
WID_TA_CAPTION, ///< Caption of window.
WID_TA_ZONE_BUTTON, ///< Turn on/off showing local authority zone.
WID_TA_RATING_INFO, ///< Overview with ratings for each company.
WID_TA_COMMAND_LIST, ///< List of commands for the player.
WID_TA_SCROLLBAR, ///< Scrollbar of the list of commands.

Loading…
Cancel
Save