Merge branch 'master' into jgrpp

# Conflicts:
#	src/animated_tile.cpp
#	src/cargopacket.h
#	src/cheat_gui.cpp
#	src/company_cmd.cpp
#	src/company_gui.cpp
#	src/date.cpp
#	src/disaster_vehicle.cpp
#	src/dock_gui.cpp
#	src/economy.cpp
#	src/engine.cpp
#	src/error_gui.cpp
#	src/fontcache/spritefontcache.cpp
#	src/game/game_gui.cpp
#	src/game/game_text.cpp
#	src/gfx.cpp
#	src/graph_gui.cpp
#	src/highscore_gui.cpp
#	src/industry_cmd.cpp
#	src/lang/dutch.txt
#	src/lang/english_AU.txt
#	src/lang/english_US.txt
#	src/lang/finnish.txt
#	src/lang/french.txt
#	src/lang/italian.txt
#	src/lang/portuguese.txt
#	src/lang/russian.txt
#	src/lang/turkish.txt
#	src/lang/vietnamese.txt
#	src/main_gui.cpp
#	src/misc_gui.cpp
#	src/network/network_gui.cpp
#	src/network/network_server.cpp
#	src/newgrf.cpp
#	src/newgrf.h
#	src/newgrf_generic.cpp
#	src/news_gui.cpp
#	src/openttd.cpp
#	src/os/unix/unix.cpp
#	src/os/windows/font_win32.cpp
#	src/os/windows/win32.cpp
#	src/rail_gui.cpp
#	src/road_gui.cpp
#	src/saveload/afterload.cpp
#	src/saveload/misc_sl.cpp
#	src/saveload/oldloader_sl.cpp
#	src/saveload/saveload.cpp
#	src/saveload/saveload.h
#	src/script/script_gui.cpp
#	src/settings_table.cpp
#	src/signs_gui.cpp
#	src/smallmap_gui.cpp
#	src/smallmap_gui.h
#	src/spritecache.cpp
#	src/spritecache.h
#	src/spriteloader/grf.cpp
#	src/station_cmd.cpp
#	src/statusbar_gui.cpp
#	src/stdafx.h
#	src/strgen/strgen_base.cpp
#	src/subsidy.cpp
#	src/table/settings/difficulty_settings.ini
#	src/texteff.cpp
#	src/timetable_cmd.cpp
#	src/timetable_gui.cpp
#	src/toolbar_gui.cpp
#	src/town_cmd.cpp
#	src/town_gui.cpp
#	src/townname.cpp
#	src/vehicle.cpp
#	src/waypoint_cmd.cpp
#	src/widgets/dropdown.cpp
#	src/window.cpp
This commit is contained in:
Jonathan G Rennison
2023-05-26 19:36:48 +01:00
170 changed files with 1526 additions and 1238 deletions

View File

@@ -24,6 +24,7 @@ add_subdirectory(sound)
add_subdirectory(spriteloader)
add_subdirectory(table)
add_subdirectory(tests)
add_subdirectory(timer)
add_subdirectory(video)
add_subdirectory(widgets)

View File

@@ -19,18 +19,6 @@
*/
class AI {
public:
/**
* The default months AIs start after each other.
*/
enum StartNext {
START_NEXT_EASY = DAYS_IN_YEAR * 2,
START_NEXT_MEDIUM = DAYS_IN_YEAR,
START_NEXT_HARD = DAYS_IN_YEAR / 2,
START_NEXT_MIN = 0,
START_NEXT_MAX = 3600,
START_NEXT_DEVIATION = 60,
};
/**
* Is it possible to start a new AI company?
* @return True if a new AI company can be started.
@@ -124,11 +112,6 @@ public:
*/
static void Save(CompanyID company);
/**
* Get the number of days before the next AI should start.
*/
static int GetStartNextTime();
/** Wrapper function for AIScanner::GetAIConsoleList */
static std::string GetConsoleList(bool newest_only = false);
/** Wrapper function for AIScanner::GetAIConsoleLibraryList */

View File

@@ -16,32 +16,6 @@
#include "../safeguards.h"
/** Configuration for AI start date, every AI has this setting. */
ScriptConfigItem _start_date_config = {
"start_date",
"", // STR_AI_SETTINGS_START_DELAY
AI::START_NEXT_MIN,
AI::START_NEXT_MAX,
AI::START_NEXT_MEDIUM,
AI::START_NEXT_EASY,
AI::START_NEXT_MEDIUM,
AI::START_NEXT_HARD,
AI::START_NEXT_DEVIATION,
30,
SCRIPTCONFIG_NONE,
nullptr,
false
};
AIConfig::AIConfig(const AIConfig *config) : ScriptConfig(config)
{
/* Override start_date as per AIConfig::AddRandomDeviation().
* This is necessary because the ScriptConfig constructor will instead call
* ScriptConfig::AddRandomDeviation(). */
int start_date = config->GetSetting("start_date");
this->SetSetting("start_date", start_date != 0 ? std::max(1, this->GetSetting("start_date")) : 0);
}
/* static */ AIConfig *AIConfig::GetConfig(CompanyID company, ScriptSettingSource source)
{
AIConfig **config;
@@ -69,70 +43,3 @@ bool AIConfig::ResetInfo(bool force_exact_match)
this->info = (ScriptInfo *)AI::FindInfo(this->name, force_exact_match ? this->version : -1, force_exact_match);
return this->info != nullptr;
}
void AIConfig::PushExtraConfigList()
{
this->config_list->push_back(_start_date_config);
}
void AIConfig::ClearConfigList()
{
/* The special casing for start_date is here to ensure that the
* start_date setting won't change even if you chose another Script. */
int start_date = this->GetSetting("start_date");
ScriptConfig::ClearConfigList();
this->SetSetting("start_date", start_date);
}
int AIConfig::GetSetting(const char *name) const
{
if (this->info == nullptr) {
SettingValueList::const_iterator it = this->settings.find(name);
if (it == this->settings.end()) {
assert(strcmp("start_date", name) == 0);
switch (GetGameSettings().script.settings_profile) {
case SP_EASY: return AI::START_NEXT_EASY;
case SP_MEDIUM: return AI::START_NEXT_MEDIUM;
case SP_HARD: return AI::START_NEXT_HARD;
case SP_CUSTOM: return AI::START_NEXT_MEDIUM;
default: NOT_REACHED();
}
}
return (*it).second;
}
return ScriptConfig::GetSetting(name);
}
void AIConfig::SetSetting(const char *name, int value)
{
if (this->info == nullptr) {
if (strcmp("start_date", name) != 0) return;
value = Clamp(value, AI::START_NEXT_MIN, AI::START_NEXT_MAX);
SettingValueList::iterator it = this->settings.find(name);
if (it != this->settings.end()) {
(*it).second = value;
} else {
this->settings[stredup(name)] = value;
}
return;
}
ScriptConfig::SetSetting(name, value);
}
void AIConfig::AddRandomDeviation()
{
int start_date = this->GetSetting("start_date");
ScriptConfig::AddRandomDeviation();
/* start_date = 0 is a special case, where random deviation does not occur.
* If start_date was not already 0, then a minimum value of 1 must apply. */
this->SetSetting("start_date", start_date != 0 ? std::max(1, this->GetSetting("start_date")) : 0);
}

View File

@@ -24,14 +24,12 @@ public:
ScriptConfig()
{}
AIConfig(const AIConfig *config);
AIConfig(const AIConfig *config) :
ScriptConfig(config)
{}
class AIInfo *GetInfo() const;
int GetSetting(const char *name) const override;
void SetSetting(const char *name, int value) override;
void AddRandomDeviation() override;
/**
* When ever the AI Scanner is reloaded, all infos become invalid. This
* function tells AIConfig about this.
@@ -43,8 +41,6 @@ public:
bool ResetInfo(bool force_exact_match);
protected:
void PushExtraConfigList() override;
void ClearConfigList() override;
ScriptInfo *FindInfo(const char *name, int version, bool force_exact_match) override;
};

View File

@@ -287,17 +287,6 @@
}
}
/* static */ int AI::GetStartNextTime()
{
/* Find the first company which doesn't exist yet */
for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
if (!Company::IsValidID(c)) return AIConfig::GetConfig(c, AIConfig::SSS_FORCE_GAME)->GetSetting("start_date");
}
/* Currently no AI can be started, check again in a year. */
return DAYS_IN_YEAR;
}
/* static */ std::string AI::GetConsoleList(bool newest_only)
{
return AI::scanner_info->GetConsoleList(newest_only);

View File

@@ -34,11 +34,17 @@ static const NWidgetPart _nested_ai_config_widgets[] = {
NWidget(WWT_PANEL, COLOUR_MAUVE, WID_AIC_BACKGROUND),
NWidget(NWID_VERTICAL), SetPIP(4, 4, 4),
NWidget(NWID_HORIZONTAL), SetPIP(7, 0, 7),
NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_DECREASE), SetDataTip(AWV_DECREASE, STR_NULL),
NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_INCREASE), SetDataTip(AWV_INCREASE, STR_NULL),
NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_DECREASE_NUMBER), SetDataTip(AWV_DECREASE, STR_NULL),
NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_INCREASE_NUMBER), SetDataTip(AWV_INCREASE, STR_NULL),
NWidget(NWID_SPACER), SetMinimalSize(6, 0),
NWidget(WWT_TEXT, COLOUR_MAUVE, WID_AIC_NUMBER), SetDataTip(STR_AI_CONFIG_MAX_COMPETITORS, STR_NULL), SetFill(1, 0),
EndContainer(),
NWidget(NWID_HORIZONTAL), SetPIP(7, 0, 7),
NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_DECREASE_INTERVAL), SetDataTip(AWV_DECREASE, STR_NULL),
NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_INCREASE_INTERVAL), SetDataTip(AWV_INCREASE, STR_NULL),
NWidget(NWID_SPACER), SetMinimalSize(6, 0),
NWidget(WWT_TEXT, COLOUR_MAUVE, WID_AIC_INTERVAL), SetDataTip(STR_AI_CONFIG_COMPETITORS_INTERVAL, STR_NULL), SetFill(1, 0),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_MOVE_UP), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_CONFIG_MOVE_UP, STR_AI_CONFIG_MOVE_UP_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_MOVE_DOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_CONFIG_MOVE_DOWN, STR_AI_CONFIG_MOVE_DOWN_TOOLTIP),
@@ -104,14 +110,20 @@ struct AIConfigWindow : public Window {
case WID_AIC_NUMBER:
SetDParam(0, GetGameSettings().difficulty.max_no_competitors);
break;
case WID_AIC_INTERVAL:
SetDParam(0, GetGameSettings().difficulty.competitors_interval);
break;
}
}
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
{
switch (widget) {
case WID_AIC_DECREASE:
case WID_AIC_INCREASE:
case WID_AIC_DECREASE_NUMBER:
case WID_AIC_INCREASE_NUMBER:
case WID_AIC_DECREASE_INTERVAL:
case WID_AIC_INCREASE_INTERVAL:
*size = maxdim(*size, NWidgetScrollbar::GetHorizontalDimension());
break;
@@ -177,10 +189,10 @@ struct AIConfigWindow : public Window {
}
switch (widget) {
case WID_AIC_DECREASE:
case WID_AIC_INCREASE: {
case WID_AIC_DECREASE_NUMBER:
case WID_AIC_INCREASE_NUMBER: {
int new_value;
if (widget == WID_AIC_DECREASE) {
if (widget == WID_AIC_DECREASE_NUMBER) {
new_value = std::max(0, GetGameSettings().difficulty.max_no_competitors - 1);
} else {
new_value = std::min(MAX_COMPANIES - 1, GetGameSettings().difficulty.max_no_competitors + 1);
@@ -189,6 +201,18 @@ struct AIConfigWindow : public Window {
break;
}
case WID_AIC_DECREASE_INTERVAL:
case WID_AIC_INCREASE_INTERVAL: {
int new_value;
if (widget == WID_AIC_DECREASE_INTERVAL) {
new_value = std::max(static_cast<int>(MIN_COMPETITORS_INTERVAL), GetGameSettings().difficulty.competitors_interval - 1);
} else {
new_value = std::min(static_cast<int>(MAX_COMPETITORS_INTERVAL), GetGameSettings().difficulty.competitors_interval + 1);
}
IConsoleSetSetting("difficulty.competitors_interval", new_value);
break;
}
case WID_AIC_LIST: { // Select a slot
this->selected_slot = (CompanyID)this->vscroll->GetScrolledRowFromWidget(pt.y, this, widget);
this->InvalidateData();
@@ -249,8 +273,10 @@ struct AIConfigWindow : public Window {
if (!gui_scope) return;
this->SetWidgetDisabledState(WID_AIC_DECREASE, GetGameSettings().difficulty.max_no_competitors == 0);
this->SetWidgetDisabledState(WID_AIC_INCREASE, GetGameSettings().difficulty.max_no_competitors == MAX_COMPANIES - 1);
this->SetWidgetDisabledState(WID_AIC_DECREASE_NUMBER, GetGameSettings().difficulty.max_no_competitors == 0);
this->SetWidgetDisabledState(WID_AIC_INCREASE_NUMBER, GetGameSettings().difficulty.max_no_competitors == MAX_COMPANIES - 1);
this->SetWidgetDisabledState(WID_AIC_DECREASE_INTERVAL, GetGameSettings().difficulty.competitors_interval == MIN_COMPETITORS_INTERVAL);
this->SetWidgetDisabledState(WID_AIC_INCREASE_INTERVAL, GetGameSettings().difficulty.competitors_interval == MAX_COMPETITORS_INTERVAL);
this->SetWidgetDisabledState(WID_AIC_CHANGE, this->selected_slot == INVALID_COMPANY);
this->SetWidgetDisabledState(WID_AIC_CONFIGURE, this->selected_slot == INVALID_COMPANY || AIConfig::GetConfig(this->selected_slot)->GetConfigList()->size() == 0);
this->SetWidgetDisabledState(WID_AIC_MOVE_UP, this->selected_slot == INVALID_COMPANY || !IsEditable((CompanyID)(this->selected_slot - 1)));

View File

@@ -32,12 +32,12 @@ static bool CheckAPIVersion(const char *api_version)
#if defined(_WIN32)
#undef GetClassName
#endif /* _WIN32 */
template <> const char *GetClassName<AIInfo, ST_AI>() { return "AIInfo"; }
template <> const char *GetClassName<AIInfo, ScriptType::AI>() { return "AIInfo"; }
/* static */ void AIInfo::RegisterAPI(Squirrel *engine)
{
/* Create the AIInfo class, and add the RegisterAI function */
DefSQClass<AIInfo, ST_AI> SQAIInfo("AIInfo");
DefSQClass<AIInfo, ScriptType::AI> SQAIInfo("AIInfo");
SQAIInfo.PreRegister(engine);
SQAIInfo.AddConstructor<void (AIInfo::*)(), 1>(engine, "x");
SQAIInfo.DefSQAdvancedMethod(engine, &AIInfo::AddSetting, "AddSetting");
@@ -69,11 +69,6 @@ template <> const char *GetClassName<AIInfo, ST_AI>() { return "AIInfo"; }
SQInteger res = ScriptInfo::Constructor(vm, info);
if (res != 0) return res;
ScriptConfigItem config = _start_date_config;
config.name = stredup(config.name);
config.description = stredup(config.description);
info->config_list.push_front(config);
if (info->engine->MethodExists(*info->SQ_instance, "MinVersionToLoad")) {
if (!info->engine->CallIntegerMethod(*info->SQ_instance, "MinVersionToLoad", &info->min_loadable_version, MAX_GET_OPS)) return SQ_ERROR;
} else {

View File

@@ -33,7 +33,7 @@
#include "../safeguards.h"
AIInstance::AIInstance() :
ScriptInstance("AI", ST_AI)
ScriptInstance("AI", ScriptType::AI)
{}
void AIInstance::Initialize(AIInfo *info)

View File

@@ -304,7 +304,7 @@ template <bool Tpal_to_rgb> Sprite *Blitter_32bppOptimized::EncodeInternal(const
ZoomLevel zoom_min;
ZoomLevel zoom_max;
if (sprite->type == ST_FONT) {
if (sprite->type == SpriteType::Font) {
zoom_min = ZOOM_LVL_NORMAL;
zoom_max = ZOOM_LVL_NORMAL;
} else {

View File

@@ -28,7 +28,7 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, Alloca
*/
ZoomLevel zoom_min = ZOOM_LVL_NORMAL;
ZoomLevel zoom_max = ZOOM_LVL_NORMAL;
if (sprite->type != ST_FONT) {
if (sprite->type != SpriteType::Font) {
zoom_min = _settings_client.gui.zoom_min;
zoom_max = _settings_client.gui.zoom_max;
if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_MAX;

View File

@@ -431,7 +431,7 @@ void Blitter_40bppAnim::DrawColourMappingRect(void *dst, int width, int height,
anim = anim - width + _screen.pitch;
} while (--height);
} else if (pal == PALETTE_NEWSPAPER) {
const uint8 *remap = GetNonSprite(pal, ST_RECOLOUR) + 1;
const uint8 *remap = GetNonSprite(pal, SpriteType::Recolour) + 1;
do {
for (int i = 0; i != width; i++) {
if (*anim == 0) *udst = MakeGrey(*udst);
@@ -443,7 +443,7 @@ void Blitter_40bppAnim::DrawColourMappingRect(void *dst, int width, int height,
anim = anim - width + _screen.pitch;
} while (--height);
} else {
const uint8 *remap = GetNonSprite(pal, ST_RECOLOUR) + 1;
const uint8 *remap = GetNonSprite(pal, SpriteType::Recolour) + 1;
do {
for (int i = 0; i != width; i++) {
*anim = remap[*anim];

View File

@@ -16,7 +16,7 @@
void Blitter_8bppBase::DrawColourMappingRect(void *dst, int width, int height, PaletteID pal)
{
const uint8 *ctab = GetNonSprite(pal, ST_RECOLOUR) + 1;
const uint8 *ctab = GetNonSprite(pal, SpriteType::Recolour) + 1;
do {
for (int i = 0; i != width; i++) *((uint8 *)dst + i) = ctab[((uint8 *)dst)[i]];

View File

@@ -128,7 +128,7 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloca
ZoomLevel zoom_min;
ZoomLevel zoom_max;
if (sprite->type == ST_FONT) {
if (sprite->type == SpriteType::Font) {
zoom_min = ZOOM_LVL_NORMAL;
zoom_max = ZOOM_LVL_NORMAL;
} else {

View File

@@ -144,10 +144,10 @@ public:
/** Types of cargo source and destination */
enum SourceType : byte {
ST_INDUSTRY, ///< Source/destination is an industry
ST_TOWN, ///< Source/destination is a town
ST_HEADQUARTERS, ///< Source/destination are company headquarters
enum class SourceType : byte {
Industry, ///< Source/destination is an industry
Town, ///< Source/destination is a town
Headquarters, ///< Source/destination are company headquarters
};
typedef uint16 SourceID; ///< Contains either industry ID, town ID or company ID (or INVALID_SOURCE)

View File

@@ -123,13 +123,13 @@ void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, Sour
if (src != INVALID_SOURCE) {
/* Handle pickup update. */
switch (src_type) {
case ST_INDUSTRY: {
case SourceType::Industry: {
CargoMonitorID num = EncodeCargoIndustryMonitor(company, cargo_type, src);
CargoMonitorMap::iterator iter = _cargo_pickups.find(num);
if (iter != _cargo_pickups.end()) iter->second += amount;
break;
}
case ST_TOWN: {
case SourceType::Town: {
CargoMonitorID num = EncodeCargoTownMonitor(company, cargo_type, src);
CargoMonitorMap::iterator iter = _cargo_pickups.find(num);
if (iter != _cargo_pickups.end()) iter->second += amount;

View File

@@ -101,7 +101,7 @@ void DumpCargoPacketDeferredPaymentStats(char *buffer, const char *last)
*/
CargoPacket::CargoPacket()
{
this->source_type = ST_INDUSTRY;
this->source_type = SourceType::Industry;
this->source_id = INVALID_SOURCE;
}

View File

@@ -84,7 +84,7 @@ public:
CargoPacket();
CargoPacket(StationID source, TileIndex source_xy, uint16 count, SourceType source_type, SourceID source_id);
CargoPacket(uint16 count, uint16 days_in_transit, StationID source, TileIndex source_xy, TileIndex loaded_at_xy, Money feeder_share = 0, SourceType source_type = ST_INDUSTRY, SourceID source_id = INVALID_SOURCE);
CargoPacket(uint16 count, uint16 days_in_transit, StationID source, TileIndex source_xy, TileIndex loaded_at_xy, Money feeder_share = 0, SourceType source_type = SourceType::Industry, SourceID source_id = INVALID_SOURCE);
~CargoPacket();
CargoPacket *Split(uint new_size);

View File

@@ -181,7 +181,6 @@ struct Company : CompanyPool::PoolItem<&_company_pool>, CompanyProperties {
Money CalculateCompanyValue(const Company *c, bool including_loan = true);
Money CalculateCompanyValueExcludingShares(const Company *c, bool including_loan = true);
extern uint _next_competitor_start;
extern uint _cur_company_tick_index;
#endif /* COMPANY_BASE_H */

View File

@@ -39,6 +39,8 @@
#include "widgets/statusbar_widget.h"
#include "core/backup_type.hpp"
#include "debug_desync.h"
#include "timer/timer.h"
#include "timer/timer_game_tick.h"
#include "table/strings.h"
@@ -54,7 +56,6 @@ CompanyID _current_company; ///< Company currently doing an action.
CompanyID _loaded_local_company; ///< Local company in loaded savegame
Colours _company_colours[MAX_COMPANIES]; ///< NOSAVE: can be determined from company structs.
CompanyManagerFace _company_manager_face; ///< for company manager face storage in openttd.cfg
uint _next_competitor_start; ///< the number of ticks before the next AI is started
uint _cur_company_tick_index; ///< used to generate a name for one company that doesn't have a name yet per tick
CompanyMask _saved_PLYP_invalid_mask;
@@ -622,16 +623,10 @@ Company *DoStartupNewCompany(DoStartupNewCompanyFlag flags, CompanyID company)
return c;
}
/** Start the next competitor now. */
void StartupCompanies()
{
_next_competitor_start = 0;
}
/** Start a new competitor company if possible. */
static bool MaybeStartNewCompany()
{
if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) return false;
TimeoutTimer<TimerGameTick> _new_competitor_timeout(0, []() {
if (_game_mode == GM_MENU || !AI::CanStartNew()) return;
if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) return;
/* count number of competitors */
uint n = 0;
@@ -639,13 +634,26 @@ static bool MaybeStartNewCompany()
if (c->is_ai) n++;
}
if (n < (uint)_settings_game.difficulty.max_no_competitors) {
/* Send a command to all clients to start up a new AI.
* Works fine for Multiplayer and Singleplayer */
return DoCommandP(0, CCA_NEW_AI | INVALID_COMPANY << 16, 0, CMD_COMPANY_CTRL);
}
if (n >= (uint)_settings_game.difficulty.max_no_competitors) return;
return false;
/* Send a command to all clients to start up a new AI.
* Works fine for Multiplayer and Singleplayer */
DoCommandP(0, CCA_NEW_AI | INVALID_COMPANY << 16, 0, CMD_COMPANY_CTRL);
});
/** Start of a new game. */
void StartupCompanies()
{
/* Ensure the timeout is aborted, so it doesn't fire based on information of the last game. */
_new_competitor_timeout.Abort();
/* If there is no delay till the start of the next competitor, start all competitors at the start of the game. */
if (_settings_game.difficulty.competitors_interval == 0 && _game_mode != GM_MENU && AI::CanStartNew()) {
for (auto i = 0; i < _settings_game.difficulty.max_no_competitors; i++) {
if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) break;
DoCommandP(0, CCA_NEW_AI | INVALID_COMPANY << 16, 0, CMD_COMPANY_CTRL);
}
}
}
static void ClearSavedPLYP()
@@ -786,20 +794,15 @@ void OnTick_Companies(bool main_tick)
if (c->bankrupt_asked != 0 && c->bankrupt_timeout == 0) HandleBankruptcyTakeover(c);
}
if (_next_competitor_start == 0) {
/* AI::GetStartNextTime() can return 0. */
_next_competitor_start = std::max(1, AI::GetStartNextTime() * DAY_TICKS);
}
if (_new_competitor_timeout.HasFired() && _game_mode != GM_MENU && AI::CanStartNew()) {
int32 timeout = _settings_game.difficulty.competitors_interval * 60 * TICKS_PER_SECOND;
/* If the interval is zero, check every ~10 minutes if a company went bankrupt and needs replacing. */
if (timeout == 0) timeout = 10 * 60 * TICKS_PER_SECOND;
if (_game_mode != GM_MENU && AI::CanStartNew() && --_next_competitor_start == 0) {
/* Allow multiple AIs to possibly start in the same tick. */
do {
if (!MaybeStartNewCompany()) break;
/* Randomize a bit when the AI is actually going to start; ranges from 87.5% .. 112.5% of indicated value. */
timeout += ScriptObject::GetRandomizer(OWNER_NONE).Next(timeout / 4) - timeout / 8;
/* In networking mode, we can only send a command to start but it
* didn't execute yet, so we cannot loop. */
if (_networking) break;
} while (AI::GetStartNextTime() == 0);
_new_competitor_timeout.Reset(std::max(1, timeout));
}
}

View File

@@ -1235,13 +1235,17 @@ void ShowCompanyLiveryWindow(CompanyID company, GroupID group)
* Draws the face of a company manager's face.
* @param cmf the company manager's face
* @param colour the (background) colour of the gradient
* @param x x-position to draw the face
* @param y y-position to draw the face
* @param r position to draw the face
*/
void DrawCompanyManagerFace(CompanyManagerFace cmf, int colour, int x, int y)
void DrawCompanyManagerFace(CompanyManagerFace cmf, int colour, const Rect &r)
{
GenderEthnicity ge = (GenderEthnicity)GetCompanyManagerFaceBits(cmf, CMFV_GEN_ETHN, GE_WM);
/* Determine offset from centre of drawing rect. */
Dimension d = GetSpriteSize(SPR_GRADIENT);
int x = CenterBounds(r.left, r.right, d.width);
int y = CenterBounds(r.top, r.bottom, d.height);
bool has_moustache = !HasBit(ge, GENDER_FEMALE) && GetCompanyManagerFaceBits(cmf, CMFV_HAS_MOUSTACHE, ge) != 0;
bool has_tie_earring = !HasBit(ge, GENDER_FEMALE) || GetCompanyManagerFaceBits(cmf, CMFV_HAS_TIE_EARRING, ge) != 0;
bool has_glasses = GetCompanyManagerFaceBits(cmf, CMFV_HAS_GLASSES, ge) != 0;
@@ -1544,7 +1548,7 @@ public:
break;
case WID_SCMF_FACE: {
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
Dimension face_size = GetScaledSpriteSize(SPR_GRADIENT);
size->width = std::max(size->width, face_size.width);
size->height = std::max(size->height, face_size.height);
break;
@@ -1696,7 +1700,7 @@ public:
{
switch (widget) {
case WID_SCMF_FACE:
DrawCompanyManagerFace(this->face, Company::Get((CompanyID)this->window_number)->colour, r.left, r.top);
DrawCompanyManagerFace(this->face, Company::Get((CompanyID)this->window_number)->colour, r);
break;
}
}
@@ -2481,7 +2485,7 @@ struct CompanyWindow : Window
{
switch (widget) {
case WID_C_FACE: {
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
Dimension face_size = GetScaledSpriteSize(SPR_GRADIENT);
size->width = std::max(size->width, face_size.width);
size->height = std::max(size->height, face_size.height);
break;
@@ -2618,7 +2622,7 @@ struct CompanyWindow : Window
const Company *c = Company::Get((CompanyID)this->window_number);
switch (widget) {
case WID_C_FACE:
DrawCompanyManagerFace(c->face, c->colour, r.left, r.top);
DrawCompanyManagerFace(c->face, c->colour, r);
break;
case WID_C_FACE_TITLE:
@@ -2910,7 +2914,7 @@ struct BuyCompanyWindow : Window {
{
switch (widget) {
case WID_BC_FACE:
*size = GetSpriteSize(SPR_GRADIENT);
*size = GetScaledSpriteSize(SPR_GRADIENT);
break;
case WID_BC_QUESTION:
@@ -2937,7 +2941,7 @@ struct BuyCompanyWindow : Window {
switch (widget) {
case WID_BC_FACE: {
const Company *c = Company::Get((CompanyID)this->window_number);
DrawCompanyManagerFace(c->face, c->colour, r.left, r.top);
DrawCompanyManagerFace(c->face, c->colour, r);
break;
}

View File

@@ -236,6 +236,6 @@ static inline SpriteID GetCompanyManagerFaceSprite(CompanyManagerFace cmf, Compa
return _cmf_info[cmfv].first_sprite[ge] + GB(cmf, _cmf_info[cmfv].offset, _cmf_info[cmfv].length);
}
void DrawCompanyManagerFace(CompanyManagerFace face, int colour, int x, int y);
void DrawCompanyManagerFace(CompanyManagerFace face, int colour, const Rect &r);
#endif /* COMPANY_MANAGER_FACE_H */

View File

@@ -42,6 +42,9 @@ static const uint MAX_LENGTH_COMPANY_NAME_CHARS = 32; ///< The maximum length
static const uint MAX_HISTORY_QUARTERS = 24; ///< The maximum number of quarters kept as performance's history
static const uint MAX_COMPANY_SHARE_OWNERS = 4; ///< The maximum number of shares of a company that can be owned by another company.
static const uint MIN_COMPETITORS_INTERVAL = 0; ///< The minimum interval (in minutes) between competitors.
static const uint MAX_COMPETITORS_INTERVAL = 500; ///< The maximum interval (in minutes) between competitors.
/** Define basic enum properties */
template <> struct EnumPropsT<Owner> : MakeEnumPropsT<Owner, byte, OWNER_BEGIN, OWNER_END, INVALID_OWNER> {};

View File

@@ -1151,7 +1151,7 @@ uint DeliverGoodsToIndustryNearestFirst(const Station *st, CargoID cargo_type, u
accepted += amount;
/* Update the cargo monitor. */
AddCargoDelivery(cargo_type, company, amount, ST_INDUSTRY, source, st, ind->index);
AddCargoDelivery(cargo_type, company, amount, SourceType::Industry, source, st, ind->index);
return num_pieces != 0;
});
@@ -1192,7 +1192,7 @@ uint DeliverGoodsToIndustryEqually(const Station *st, CargoID cargo_type, uint n
include(_cargo_delivery_destinations, e.ind);
e.ind->incoming_cargo_waiting[e.cargo_index] += e.delivered;
e.ind->last_cargo_accepted_at[e.cargo_index] = _date;
AddCargoDelivery(cargo_type, company, e.delivered, ST_INDUSTRY, source, st, e.ind->index);
AddCargoDelivery(cargo_type, company, e.delivered, SourceType::Industry, source, st, e.ind->index);
};
if (acceptingIndustries.size() == 1) {
@@ -1293,7 +1293,7 @@ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID dest, Ti
Station *st = Station::Get(dest);
/* Give the goods to the industry. */
uint accepted_ind = DeliverGoodsToIndustry(st, cargo_type, num_pieces, src_type == ST_INDUSTRY ? src : INVALID_INDUSTRY, company->index);
uint accepted_ind = DeliverGoodsToIndustry(st, cargo_type, num_pieces, src_type == SourceType::Industry ? src : INVALID_INDUSTRY, company->index);
/* If this cargo type is always accepted, accept all */
uint accepted_total = HasBit(st->always_accepted, cargo_type) ? num_pieces : accepted_ind;

View File

@@ -1339,6 +1339,9 @@ void CheckEngines()
for (const Engine *e : Engine::Iterate()) {
if (!e->IsEnabled()) continue;
/* Don't consider train wagons, we need a powered engine available. */
if (e->type == VEH_TRAIN && e->u.rail.railveh_type == RAILVEH_WAGON) continue;
/* We have an available engine... yay! */
if ((e->flags & ENGINE_AVAILABLE) != 0 && e->company_avail != 0) return;

View File

@@ -214,7 +214,7 @@ public:
break;
}
case WID_EM_FACE: {
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
Dimension face_size = GetScaledSpriteSize(SPR_GRADIENT);
size->width = std::max(size->width, face_size.width);
size->height = std::max(size->height, face_size.height);
break;
@@ -274,7 +274,7 @@ public:
switch (widget) {
case WID_EM_FACE: {
const Company *c = Company::Get(this->face);
DrawCompanyManagerFace(c->face, c->colour, r.left, r.top);
DrawCompanyManagerFace(c->face, c->colour, r);
break;
}

View File

@@ -243,7 +243,7 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
/* FreeType has rendered the glyph, now we allocate a sprite and copy the image into it */
SpriteLoader::Sprite sprite;
sprite.AllocateData(ZOOM_LVL_NORMAL, static_cast<size_t>(width) * height);
sprite.type = ST_FONT;
sprite.type = SpriteType::Font;
sprite.colours = (aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
sprite.width = width;
sprite.height = height;

View File

@@ -124,14 +124,14 @@ const Sprite *SpriteFontCache::GetGlyph(GlyphID key)
{
SpriteID sprite = this->GetUnicodeGlyph(key);
if (sprite == 0) sprite = this->GetUnicodeGlyph('?');
return GetSprite(sprite, ST_FONT);
return GetSprite(sprite, SpriteType::Font);
}
uint SpriteFontCache::GetGlyphWidth(GlyphID key)
{
SpriteID sprite = this->GetUnicodeGlyph(key);
if (sprite == 0) sprite = this->GetUnicodeGlyph('?');
return SpriteExists(sprite) ? GetSprite(sprite, ST_FONT)->width + ScaleFontTrad(this->fs != FS_NORMAL ? 1 : 0) : 0;
return SpriteExists(sprite) ? GetSprite(sprite, SpriteType::Font)->width + ScaleFontTrad(this->fs != FS_NORMAL ? 1 : 0) : 0;
}
bool SpriteFontCache::GetDrawGlyphShadow()

View File

@@ -141,7 +141,7 @@ const Sprite *TrueTypeFontCache::GetGlyph(GlyphID key)
8, // width
0, // x_offs
0, // y_offs
ST_FONT,
SpriteType::Font,
SCC_PAL,
builtin_questionmark_data
};

View File

@@ -30,12 +30,12 @@ static bool CheckAPIVersion(const char *api_version)
#if defined(_WIN32)
#undef GetClassName
#endif /* _WIN32 */
template <> const char *GetClassName<GameInfo, ST_GS>() { return "GSInfo"; }
template <> const char *GetClassName<GameInfo, ScriptType::GS>() { return "GSInfo"; }
/* static */ void GameInfo::RegisterAPI(Squirrel *engine)
{
/* Create the GSInfo class, and add the RegisterGS function */
DefSQClass<GameInfo, ST_GS> SQGSInfo("GSInfo");
DefSQClass<GameInfo, ScriptType::GS> SQGSInfo("GSInfo");
SQGSInfo.PreRegister(engine);
SQGSInfo.AddConstructor<void (GameInfo::*)(), 1>(engine, "x");
SQGSInfo.DefSQAdvancedMethod(engine, &GameInfo::AddSetting, "AddSetting");

View File

@@ -27,7 +27,7 @@
GameInstance::GameInstance() :
ScriptInstance("GS", ST_GS)
ScriptInstance("GS", ScriptType::GS)
{}
void GameInstance::Initialize(GameInfo *info)

View File

@@ -91,7 +91,7 @@ byte _colour_value[COLOUR_END] = {
struct GfxBlitterCtx {
const DrawPixelInfo *dpi;
const byte *colour_remap_ptr = nullptr;
byte string_colourremap[3]; ///< Recoloursprite for stringdrawing. The grf loader ensures that #ST_FONT sprites only use colours 0 to 2.
byte string_colourremap[3]; ///< Recoloursprite for stringdrawing. The grf loader ensures that #SpriteType::Font sprites only use colours 0 to 2.
int sprite_brightness_adjust = 0;
GfxBlitterCtx(const DrawPixelInfo *dpi) : dpi(dpi) {}
@@ -1031,7 +1031,7 @@ void DrawCharCentered(WChar c, const Rect &r, TextColour colour)
*/
Dimension GetSpriteSize(SpriteID sprid, Point *offset, ZoomLevel zoom)
{
const Sprite *sprite = GetSprite(sprid, ST_NORMAL);
const Sprite *sprite = GetSprite(sprid, SpriteType::Normal);
if (offset != nullptr) {
offset->x = UnScaleByZoom(sprite->x_offs, zoom);
@@ -1077,7 +1077,7 @@ void DrawSpriteViewport(const SpritePointerHolder &sprite_store, const DrawPixel
SpriteID real_sprite = GB(img, 0, SPRITE_WIDTH);
if (HasBit(img, PALETTE_MODIFIER_TRANSPARENT)) {
ctx.colour_remap_ptr = sprite_store.GetRecolourSprite(GB(pal, 0, PALETTE_WIDTH)) + 1;
GfxMainBlitterViewport(ctx, sprite_store.GetSprite(real_sprite, ST_NORMAL), x, y, BM_TRANSPARENT, sub, real_sprite);
GfxMainBlitterViewport(ctx, sprite_store.GetSprite(real_sprite, SpriteType::Normal), x, y, BM_TRANSPARENT, sub, real_sprite);
} else if (pal != PAL_NONE) {
if (HasBit(pal, PALETTE_TEXT_RECOLOUR)) {
ctx.SetColourRemap((TextColour)GB(pal, 0, PALETTE_WIDTH));
@@ -1090,21 +1090,21 @@ void DrawSpriteViewport(const SpritePointerHolder &sprite_store, const DrawPixel
int sign_bit = 1 << (PALETTE_BRIGHTNESS_WIDTH - 1);
ctx.sprite_brightness_adjust = (adjust ^ sign_bit) - sign_bit;
}
GfxMainBlitterViewport(ctx, sprite_store.GetSprite(real_sprite, ST_NORMAL), x, y, GetBlitterMode(pal), sub, real_sprite);
GfxMainBlitterViewport(ctx, sprite_store.GetSprite(real_sprite, SpriteType::Normal), x, y, GetBlitterMode(pal), sub, real_sprite);
} else {
GfxMainBlitterViewport(ctx, sprite_store.GetSprite(real_sprite, ST_NORMAL), x, y, BM_NORMAL, sub, real_sprite);
GfxMainBlitterViewport(ctx, sprite_store.GetSprite(real_sprite, SpriteType::Normal), x, y, BM_NORMAL, sub, real_sprite);
}
}
void PrepareDrawSpriteViewportSpriteStore(SpritePointerHolder &sprite_store, SpriteID img, PaletteID pal)
{
SpriteID real_sprite = GB(img, 0, SPRITE_WIDTH);
sprite_store.CacheSprite(real_sprite, ST_NORMAL);
sprite_store.CacheSprite(real_sprite, SpriteType::Normal);
if (HasBit(img, PALETTE_MODIFIER_TRANSPARENT)) {
sprite_store.CacheSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR);
sprite_store.CacheSprite(GB(pal, 0, PALETTE_WIDTH), SpriteType::Recolour);
} else if (pal != PAL_NONE) {
if (!HasBit(pal, PALETTE_TEXT_RECOLOUR) && GB(pal, 0, PALETTE_WIDTH) != PAL_NONE) {
sprite_store.CacheSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR);
sprite_store.CacheSprite(GB(pal, 0, PALETTE_WIDTH), SpriteType::Recolour);
}
}
}
@@ -1123,17 +1123,17 @@ void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub,
GfxBlitterCtx ctx(_cur_dpi);
SpriteID real_sprite = GB(img, 0, SPRITE_WIDTH);
if (HasBit(img, PALETTE_MODIFIER_TRANSPARENT)) {
ctx.colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1;
GfxMainBlitter(ctx, GetSprite(real_sprite, ST_NORMAL), x, y, BM_TRANSPARENT, sub, real_sprite, zoom);
ctx.colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), SpriteType::Recolour) + 1;
GfxMainBlitter(ctx, GetSprite(real_sprite, SpriteType::Normal), x, y, BM_TRANSPARENT, sub, real_sprite, zoom);
} else if (pal != PAL_NONE) {
if (HasBit(pal, PALETTE_TEXT_RECOLOUR)) {
ctx.SetColourRemap((TextColour)GB(pal, 0, PALETTE_WIDTH));
} else {
ctx.colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1;
ctx.colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), SpriteType::Recolour) + 1;
}
GfxMainBlitter(ctx, GetSprite(real_sprite, ST_NORMAL), x, y, GetBlitterMode(pal), sub, real_sprite, zoom);
GfxMainBlitter(ctx, GetSprite(real_sprite, SpriteType::Normal), x, y, GetBlitterMode(pal), sub, real_sprite, zoom);
} else {
GfxMainBlitter(ctx, GetSprite(real_sprite, ST_NORMAL), x, y, BM_NORMAL, sub, real_sprite, zoom);
GfxMainBlitter(ctx, GetSprite(real_sprite, SpriteType::Normal), x, y, BM_NORMAL, sub, real_sprite, zoom);
}
}
@@ -1283,7 +1283,7 @@ std::unique_ptr<uint32[]> DrawSpriteToRgbaBuffer(SpriteID spriteId, ZoomLevel zo
/* Gather information about the sprite to write, reserve memory */
const SpriteID real_sprite = GB(spriteId, 0, SPRITE_WIDTH);
const Sprite *sprite = GetSprite(real_sprite, ST_NORMAL);
const Sprite *sprite = GetSprite(real_sprite, SpriteType::Normal);
Dimension dim = GetSpriteSize(real_sprite, nullptr, zoom);
size_t dim_size = static_cast<size_t>(dim.width) * dim.height;
std::unique_ptr<uint32[]> result(new uint32[dim_size]);
@@ -2155,7 +2155,7 @@ void UpdateCursorSize()
static_assert(lengthof(_cursor.sprite_seq) == lengthof(_cursor.sprite_pos));
assert(_cursor.sprite_count <= lengthof(_cursor.sprite_seq));
for (uint i = 0; i < _cursor.sprite_count; ++i) {
const Sprite *p = GetSprite(GB(_cursor.sprite_seq[i].sprite, 0, SPRITE_WIDTH), ST_NORMAL);
const Sprite *p = GetSprite(GB(_cursor.sprite_seq[i].sprite, 0, SPRITE_WIDTH), SpriteType::Normal);
Point offs, size;
offs.x = UnScaleGUI(p->x_offs) + _cursor.sprite_pos[i].x;
offs.y = UnScaleGUI(p->y_offs) + _cursor.sprite_pos[i].y;

View File

@@ -309,12 +309,12 @@ enum PaletteType {
};
/** Types of sprites that might be loaded */
enum SpriteType : byte {
ST_NORMAL = 0, ///< The most basic (normal) sprite
ST_MAPGEN = 1, ///< Special sprite for the map generator
ST_FONT = 2, ///< A sprite used for fonts
ST_RECOLOUR = 3, ///< Recolour sprite
ST_INVALID = 4, ///< Pseudosprite or other unusable sprite, used only internally
enum class SpriteType : byte {
Normal = 0, ///< The most basic (normal) sprite
MapGen = 1, ///< Special sprite for the map generator
Font = 2, ///< A sprite used for fonts
Recolour = 3, ///< Recolour sprite
Invalid = 4, ///< Pseudosprite or other unusable sprite, used only internally
};
/**

View File

@@ -74,21 +74,16 @@ IndustryBuildData _industry_builder; ///< In-game manager of industries.
*/
void ResetIndustries()
{
for (IndustryType i = 0; i < NUM_INDUSTRYTYPES; i++) {
/* Reset the spec to default */
if (i < lengthof(_origin_industry_specs)) {
_industry_specs[i] = _origin_industry_specs[i];
} else {
_industry_specs[i] = IndustrySpec{};
}
auto industry_insert = std::copy(std::begin(_origin_industry_specs), std::end(_origin_industry_specs), std::begin(_industry_specs));
std::fill(industry_insert, std::end(_industry_specs), IndustrySpec{});
for (IndustryType i = 0; i < lengthof(_origin_industry_specs); i++) {
/* Enable only the current climate industries */
_industry_specs[i].enabled = i < NEW_INDUSTRYOFFSET &&
HasBit(_origin_industry_specs[i].climate_availability, _settings_game.game_creation.landscape);
_industry_specs[i].enabled = HasBit(_industry_specs[i].climate_availability, _settings_game.game_creation.landscape);
}
memset(&_industry_tile_specs, 0, sizeof(_industry_tile_specs));
memcpy(&_industry_tile_specs, &_origin_industry_tile_specs, sizeof(_origin_industry_tile_specs));
auto industry_tile_insert = std::copy(std::begin(_origin_industry_tile_specs), std::end(_origin_industry_tile_specs), std::begin(_industry_tile_specs));
std::fill(industry_tile_insert, std::end(_industry_tile_specs), IndustryTileSpec{});
/* Reset any overrides that have been set. */
_industile_mngr.ResetOverride();
@@ -195,8 +190,8 @@ Industry::~Industry()
DeleteWindowById(WC_INDUSTRY_VIEW, this->index);
DeleteNewGRFInspectWindow(GSF_INDUSTRIES, this->index);
DeleteSubsidyWith(ST_INDUSTRY, this->index);
CargoPacket::InvalidateAllFrom(ST_INDUSTRY, this->index);
DeleteSubsidyWith(SourceType::Industry, this->index);
CargoPacket::InvalidateAllFrom(SourceType::Industry, this->index);
for (Station *st : this->stations_near) {
st->RemoveIndustryToDeliver(this);
@@ -546,7 +541,7 @@ static bool TransportIndustryGoods(TileIndex tile)
i->this_month_production[j] = std::min<uint>(i->this_month_production[j] + cw, 0xFFFF);
uint am = MoveGoodsToStation(i->produced_cargo[j], cw, ST_INDUSTRY, i->index, &i->stations_near, i->exclusive_consumer);
uint am = MoveGoodsToStation(i->produced_cargo[j], cw, SourceType::Industry, i->index, &i->stations_near, i->exclusive_consumer);
i->this_month_transported[j] += am;
moved_cargo |= (am != 0);

View File

@@ -899,7 +899,7 @@ static void GenerateTerrain(int type, uint flag)
uint32 r = Random();
/* Choose one of the templates from the graphics file. */
const Sprite *templ = GetSprite((((r >> 24) * _genterrain_tbl_1[type]) >> 8) + _genterrain_tbl_2[type] + SPR_MAPGEN_BEGIN, ST_MAPGEN);
const Sprite *templ = GetSprite((((r >> 24) * _genterrain_tbl_1[type]) >> 8) + _genterrain_tbl_2[type] + SPR_MAPGEN_BEGIN, SpriteType::MapGen);
if (templ == nullptr) usererror("Map generator sprites could not be loaded");
/* Chose a random location to apply the template to. */

View File

@@ -4287,7 +4287,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}Maak toe
STR_AI_SETTINGS_RESET :{BLACK}Herstel
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Aantal Dae om die AI te begin na die vorige een (omenby): {ORANGE}{STRING}
# Textfile window
@@ -5146,10 +5145,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Company {COMMA})
STR_FORMAT_GROUP_NAME :Groep {COMMA}

View File

@@ -4842,10 +4842,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :باور هيل
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :شركة {COMMA}
STR_FORMAT_GROUP_NAME :مجموعة{COMMA}

View File

@@ -4036,7 +4036,6 @@ STR_AI_SETTINGS_CAPTION_AI :IA
STR_AI_SETTINGS_CLOSE :{BLACK}Itxi
STR_AI_SETTINGS_RESET :{BLACK}Berrabiarazi
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :IA hau abiarazteko pasa beharko diren egunak (gutxi gora behera): {ORANGE}{STRING}
# Textfile window
@@ -4878,10 +4877,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :({COMMA} Konpainia)
STR_FORMAT_GROUP_NAME :Taldea {COMMA}

View File

@@ -4643,7 +4643,6 @@ STR_AI_SETTINGS_CAPTION_AI :ШI
STR_AI_SETTINGS_CLOSE :{BLACK}Закрыць
STR_AI_SETTINGS_RESET :{BLACK}Ськід
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Колькасьць дзён да старту гэтага AI/ШI пасьля папярэдняга: {ORANGE}{STRING}
# Textfile window
@@ -5618,10 +5617,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Шрубалё
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}.{STRING}.{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}.{ZEROFILL_NUM}.{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM} г.
STR_FORMAT_DATE_LONG :{STRING} {STRING.gen} {NUM} г.
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Кампанiя {COMMA})
STR_FORMAT_GROUP_NAME :Група {COMMA}

View File

@@ -4635,7 +4635,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de Jogo
STR_AI_SETTINGS_CLOSE :{BLACK}Fechar
STR_AI_SETTINGS_RESET :{BLACK}Resetar
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Número de dias para começar esta IA após a última: {ORANGE}{STRING}
# Textfile window
@@ -5518,10 +5517,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helicóptero Po
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Companhia {COMMA})
STR_FORMAT_GROUP_NAME :Agrupar {COMMA}

View File

@@ -4114,7 +4114,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}Затвори
STR_AI_SETTINGS_RESET :{BLACK}Рестартиране
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Броят дни докато този ИИ бъде стартиран след предишния (give or take): {ORANGE}{STRING}
# Textfile window
@@ -4967,10 +4966,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Пауерна
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Компания {COMMA})
STR_FORMAT_GROUP_NAME :Група {COMMA}

View File

@@ -4635,7 +4635,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de la pa
STR_AI_SETTINGS_CLOSE :{BLACK}Tanca
STR_AI_SETTINGS_RESET :{BLACK}Restableix
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Dies des de l'inici de la IA prèvia fins que s'inicia aquesta: {ORANGE}{STRING}
# Textfile window
@@ -5518,10 +5517,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :{G=Masculin}Hel
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :{G=Femenin}(Companyia {COMMA})
STR_FORMAT_GROUP_NAME :{G=Masculin}Grup {COMMA}

View File

@@ -1757,10 +1757,10 @@ STR_SV_STNAME_WAYPOINT :{STRING}
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}.{STRING}.{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}.{ZEROFILL_NUM}.{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
###length 2

View File

@@ -4473,7 +4473,6 @@ STR_AI_SETTINGS_CAPTION_AI :UI
STR_AI_SETTINGS_CLOSE :{BLACK}Zatvori
STR_AI_SETTINGS_RESET :{BLACK}Resetiraj
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Broj dana za start ovog UI-ja nakon prethodnog (otprilike): {ORANGE}{STRING}
# Textfile window
@@ -5371,10 +5370,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helikopter Powe
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Tvrtka {COMMA})
STR_FORMAT_GROUP_NAME :Groupa {COMMA}

View File

@@ -4724,7 +4724,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Herní skript
STR_AI_SETTINGS_CLOSE :{BLACK}Zavřít
STR_AI_SETTINGS_RESET :{BLACK}Obnovit nastavení
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Počet dní kdy se spustí tato AI po předchozí (plus/mínus): {ORANGE}{STRING}
# Textfile window
@@ -5725,11 +5724,11 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Vrtulník Power
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_SHORT.gen :{STRING.gen} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(společnost {COMMA})
STR_FORMAT_GROUP_NAME :Skupina {COMMA}

View File

@@ -4634,7 +4634,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spil Script
STR_AI_SETTINGS_CLOSE :{BLACK}Luk
STR_AI_SETTINGS_RESET :{BLACK}Nulstil
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Antal dage denne AI skal starte efter den forrige (plus/minus): {ORANGE}{STRING}
# Textfile window
@@ -5517,10 +5516,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Firma {COMMA})
STR_FORMAT_GROUP_NAME :Gruppe {COMMA}

View File

@@ -1926,6 +1926,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Geen
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Beginfactor voor stadsgroei: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Gemiddelde grootte van steden in vergelijking tot normale steden bij het begin van het spel.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Distributiegrafiek elke {STRING}{NBSP}second{P 0:2 "" en} bijwerken
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :De tijd tussen opeenvolgende herberekeningen van de koppeling-grafiek. Elke berekening berekent de plannen voor één component van de grafiek. Dat betekent dat een waarde X voor deze instelling niet betekent dat de hele grafiek elke X seconden wordt bijgewerkt. Dat geldt alleen voor één component. Hoe korter je deze waarde instelt, hoe meer CPU-tijd er nodig is voor de berekening. Hoe langer je deze waarde instelt, hoe langer het duurt voordat de vrachtdistributie start op nieuwe routes.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Besteed {STRING}{NBSP}second{P 0:2 "" en} per herberekening van de distributiegrafiek
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :De benodigde tijd voor een herbereking van een koppeling-grafiekcomponent. Wanneer een herberekening wordt gestart, start een draad die dit aantal seconden mag lopen. Hoe korter je deze waarde maakt, hoe groter de kans dat de draad is niet op tijd is afgelopen. Het spel stopt dan totdat dit alsnog gebeurt (het 'hikt'). Hoe langer je deze waarde maakt, hoe langer het duurt voor de distributie wordt bijgewerkt wanneer een route wijzigt.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distributiemodus voor passagiers: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :'Symmetrisch' betekent dat ongeveer hetzelfde aantal passagiers van station A naar station B gaat als van B naar A. 'Asymmetrisch' betekent dat willekeurige aantallen passagiers reizen in beide richtingen. 'Handmatig' betekent dat er geen automatische distributie plaatsvindt voor passagiers.
@@ -4588,6 +4592,7 @@ STR_AI_CONFIG_RANDOM_AI :Willekeurige AI
STR_AI_CONFIG_NONE :(geen)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Maximaal aantal tegenstanders: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Tijdsduur tussen starts van concurrenten: {ORANGE}{COMMA} minu{P "ut" "ten"}
STR_AI_CONFIG_MOVE_UP :{BLACK}Omhoog verplaatsen
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Geselecteerde AI omhoog verplaatsen in de lijst
@@ -4634,7 +4639,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spelscript
STR_AI_SETTINGS_CLOSE :{BLACK}Sluiten
STR_AI_SETTINGS_RESET :{BLACK}Terugstellen
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Aantal dagen dat deze AI start na de vorige (ongeveer): {ORANGE}{STRING}
# Textfile window
@@ -5517,10 +5521,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut-helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Bedrijf {COMMA})
STR_FORMAT_GROUP_NAME :Groep {COMMA}

View File

@@ -1712,7 +1712,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :How much memory
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Service intervals are in percents: {STRING2}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Choose whether servicing of vehicles is triggered by the time passed since last service or by reliability dropping by a certain percentage of the maximum reliability
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :When enabled, vehicles try to service when their reliability drops by a given percentage of the maximum reliability.{}{}For example, if a vehicle's maximum reliability is 90% and the service interval is 20%, the vehicle will try to service when it reaches 72% reliability.
STR_CONFIG_SETTING_SERVINT_TRAINS :Default service interval for trains: {STRING2}
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Set the default service interval for new rail vehicles, if no explicit service interval is set for the vehicle
@@ -4592,6 +4592,7 @@ STR_AI_CONFIG_RANDOM_AI :Random AI
STR_AI_CONFIG_NONE :(none)
STR_AI_CONFIG_NAME_VERSION :{RAW_STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Maximum no. competitors: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Interval between starting of competitors: {ORANGE}{COMMA} minute{P "" s}
STR_AI_CONFIG_MOVE_UP :{BLACK}Move Up
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Move selected AI up in the list
@@ -4638,7 +4639,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script
STR_AI_SETTINGS_CLOSE :{BLACK}Close
STR_AI_SETTINGS_RESET :{BLACK}Reset
STR_AI_SETTINGS_SETTING :{RAW_STRING}: {ORANGE}{STRING1}
STR_AI_SETTINGS_START_DELAY :Number of days to start this AI after the previous one (give or take): {ORANGE}{STRING1}
# Textfile window
@@ -5110,6 +5110,7 @@ STR_ERROR_NO_BUOY :{WHITE}There is
STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Can't timetable vehicle...
STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vehicles can only wait at stations
STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}This vehicle is not stopping at this station
STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... timetable is incomplete
# Sign related errors
STR_ERROR_TOO_MANY_SIGNS :{WHITE}... too many signs
@@ -5521,10 +5522,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helic
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{RAW_STRING}-{RAW_STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:RAW_STRING}-{0:RAW_STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Company {COMMA})
STR_FORMAT_GROUP_NAME :Group {COMMA}

View File

@@ -1712,7 +1712,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :How much memory
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Service intervals are in percents: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Choose whether servicing of vehicles is triggered by the time passed since last service or by reliability dropping by a certain percentage of the maximum reliability
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :When enabled, vehicles try to service when their reliability drops by a given percentage of the maximum reliability.{}{}For example, if a vehicle's maximum reliability is 90% and the service interval is 20%, the vehicle will try to service when it reaches 72% reliability.
STR_CONFIG_SETTING_SERVINT_TRAINS :Default service interval for trains: {STRING}
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Set the default service interval for new rail vehicles, if no explicit service interval is set for the vehicle
@@ -1926,6 +1926,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :None
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial city size multiplier: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Average size of cities relative to normal towns at start of the game
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Update distribution graph every {STRING}{NBSP}second{P 0:2 "" s}
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X seconds. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Take {STRING}{NBSP}second{P 0:2 "" s} for recalculation of distribution graph
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of seconds. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribution mode for passengers: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetric" means that roughly the same number of passengers will go from a station A to a station B as from B to A. "Asymmetric" means that arbitrary numbers of passengers can go in either direction. "Manual" means that no automatic distribution will take place for passengers.
@@ -4588,6 +4592,7 @@ STR_AI_CONFIG_RANDOM_AI :Random AI
STR_AI_CONFIG_NONE :(none)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Maximum no. competitors: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Interval between starting of competitors: {ORANGE}{COMMA} minute{P "" s}
STR_AI_CONFIG_MOVE_UP :{BLACK}Move Up
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Move selected AI up in the list
@@ -4634,7 +4639,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script
STR_AI_SETTINGS_CLOSE :{BLACK}Close
STR_AI_SETTINGS_RESET :{BLACK}Reset
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Number of days to start this AI after the previous one (give or take): {ORANGE}{STRING}
# Textfile window
@@ -5517,10 +5521,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helic
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Company {COMMA})
STR_FORMAT_GROUP_NAME :Group {COMMA}

View File

@@ -1712,7 +1712,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :How much memory
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Maintenance intervals are in percents: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Choose whether maintenance of vehicles is triggered by the time passed since last maintenance or by reliability dropping by a certain percentage of the maximum reliability
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :When enabled, vehicles try to service when their reliability drops by a given percentage of the maximum reliability.{}{}For example, if a vehicle's maximum reliability is 90% and the service interval is 20%, the vehicle will try to service when it reaches 72% reliability.
STR_CONFIG_SETTING_SERVINT_TRAINS :Default maintenance interval for trains: {STRING}
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Set the default maintenance interval for new rail vehicles, if no explicit maintenance interval is set for the vehicle
@@ -1926,6 +1926,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :None
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial city size multiplier: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Average size of cities relative to normal towns at start of the game
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Update distribution graph every {STRING}{NBSP}second{P 0:2 "" s}
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Time between subsequent recalculations of the link graph. Each recalculation calculates the plans for one component of the graph. That means that a value X for this setting does not mean the whole graph will be updated every X seconds. Only some component will. The shorter you set it the more CPU time will be necessary to calculate it. The longer you set it the longer it will take until the cargo distribution starts on new routes.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Take {STRING}{NBSP}second{P 0:2 "" s} for recalculation of distribution graph
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Time taken for each recalculation of a link graph component. When a recalculation is started, a thread is spawned which is allowed to run for this number of seconds. The shorter you set this the more likely it is that the thread is not finished when it's supposed to. Then the game stops until it is ("lag"). The longer you set it the longer it takes for the distribution to be updated when routes change.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribution mode for passengers: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetric" means that roughly the same number of passengers will go from a station A to a station B as from B to A. "Asymmetric" means that arbitrary numbers of passengers can go in either direction. "Manual" means that no automatic distribution will take place for passengers.
@@ -4588,6 +4592,7 @@ STR_AI_CONFIG_RANDOM_AI :Random AI
STR_AI_CONFIG_NONE :(none)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Maximum no. competitors: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Interval between starting of competitors: {ORANGE}{COMMA} minute{P "" s}
STR_AI_CONFIG_MOVE_UP :{BLACK}Move Up
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Move selected AI up in the list
@@ -4634,7 +4639,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script
STR_AI_SETTINGS_CLOSE :{BLACK}Close
STR_AI_SETTINGS_RESET :{BLACK}Reset
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Number of days to start this AI after the previous one (give or take): {ORANGE}{STRING}
# Textfile window
@@ -5517,10 +5521,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helic
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{1:STRING}/{0:STRING}/{2:NUM}
STR_FORMAT_DATE_TINY :{1:ZEROFILL_NUM}/{0:ZEROFILL_NUM}/{2:NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{1:STRING} {0:STRING}, {2:NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Company {COMMA})
STR_FORMAT_GROUP_NAME :Group {COMMA}

View File

@@ -4378,10 +4378,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helikoptero "Po
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Kompanio {COMMA})
STR_FORMAT_GROUP_NAME :Group {COMMA}

View File

@@ -4684,7 +4684,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :GameScript
STR_AI_SETTINGS_CLOSE :{BLACK}Sulge
STR_AI_SETTINGS_RESET :{BLACK}Nulli
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Päevade arv pärast eelmise AI lõpetamist, millal see AI käivitub (umbkaudselt): {ORANGE}{STRING}
# Textfile window
@@ -5555,10 +5554,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{1:NUM}. {0:STRING}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Ettevõte {COMMA})
STR_FORMAT_GROUP_NAME :Jagu {COMMA}

View File

@@ -3690,7 +3690,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}Lat aftur
STR_AI_SETTINGS_RESET :{BLACK}Endurstilla
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Tali av døgum til hetta AI byrjar aftaná tað fyrra (umleið): {ORANGE}{STRING}
# Textfile window
@@ -4522,10 +4521,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Tyrla
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Fyritøka {COMMA})
STR_FORMAT_GROUP_NAME :Bólkur {COMMA}

View File

@@ -1926,6 +1926,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Ei yhtään
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Kasvukerroin alussa: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Kaupunkien keskimääräinen koko suhteessa muihin kuntiin pelin alussa
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Päivitä yhteyskuvaaja {STRING}{NBSP}sekunnin välein
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Yhteyskuvaajan uudelleenlaskentojen välinen aika. Jokainen uudelleenlaskenta laskee suunnitelmat kuvaajan yhdelle osalle. Tämän asetuksen arvo X ei siis tarkoita, että koko kuvaaja päivittyisi X sekunnin välein, vaan ainoastaan sen yksi osa. Mitä lyhyemmäksi asetat tämän ajan, sitä enemmän suoritinaikaa kuluu laskentaan. Mitä pitemmäksi asetat ajan, sitä pitempään kestää rahdin jakautumisen alkaminen uusille reiteille.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Käytä {STRING}{NBSP}sekunti{P 0:2 "" a} yhteyskuvaajan uudelleenlaskentaan
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Yhteyskuvaajan kunkin osan uudelleenlaskentaan käytettävä aika. Uudelleenlaskennan alkaessa käynnistetään säie, jonka annetaan toimia näin monta sekuntia. Mitä lyhyemmäksi asetat tämän ajan, sitä todennäköisemmin säie ei ehdi päättymään ajoissa, jolloin peli pysähtyy (”jumii”) säikeen valmistumiseen asti. Mitä pitemmäksi asetat ajan, sitä pitempään rahdin jakautumisen päivittyminen kestää reittien muuttuessa.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Matkustajien jakautuminen: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :”Symmetrinen” tarkoittaa, että suunnilleen sama määrä matkustajia kulkee asemalta A asemalle B kuin asemalta B asemalle A. ”Epäsymmetrinen” tarkoittaa, että matkustajia voi kulkea mielivaltainen määrä kumpaankin suuntaan. ”Manuaalinen” tarkoittaa, että automaattista jakautumista ei sovelleta matkustajiin.
@@ -4588,6 +4592,7 @@ STR_AI_CONFIG_RANDOM_AI :Sattumanvaraine
STR_AI_CONFIG_NONE :(ei mitään)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Vastustajien enimmäismäärä: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Kilpailijoiden käynnistämisen välinen aika: {ORANGE}{COMMA} minuutti{P "" a}
STR_AI_CONFIG_MOVE_UP :{BLACK}Siirrä ylöspäin
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Siirrä valittua tekoälyä ylöspäin listalla
@@ -4634,7 +4639,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Peliskripti
STR_AI_SETTINGS_CLOSE :{BLACK}Sulje
STR_AI_SETTINGS_RESET :{BLACK}Palauta
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Päiviä edellisen tekoälyn aloittamisesta tämän tekoälyn aloittamiseen (arvio): {ORANGE}{STRING}
# Textfile window
@@ -5517,10 +5521,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut-helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(yhtiö {COMMA})
STR_FORMAT_GROUP_NAME :Ryhmä {COMMA}

View File

@@ -1927,6 +1927,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Aucune
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicateur initial pour la taille des métropoles{NBSP}: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Taille moyenne des métropoles par rapport aux villes normales au début de la partie
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Mise à jour le graphe de distribution toutes les {STRING}{NBSP}seconde{P 0:2 "" s}
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Intervalle entre les recalculs successifs du graphe de liaison. Chaque recalcul planifie un composant du graphe. Cela signifie qu'une valeur X pour ce paramètre ne signifie pas que l'ensemble du graphe sera mis à jour toutes les X secondes. Seul un composant le sera. Plus vous définissez cet intervalle court, plus le temps de processeur nécessaire pour le calcul sera important. Plus vous définissez cet intervalle long, plus il faudra de temps pour que la distribution de marchandises commence sur de nouveaux itinéraires.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Prend {STRING}{NBSP}seconde{P 0:2 "" s} pour le recalcul du graphe de distribution
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Temps pris pour chaque recalcul d'un composant du graphe de liaison. Lorsqu'un recalcul est lancé, un fil d'exécution est créé et autorisé à fonctionner pendant ce nombre de secondes. Plus vous définissez cette durée courte, plus il est probable que le fil ne soit pas terminé lorsqu'il est censé l'être. Ensuite, le jeu s'arrête jusqu'à ce qu'il le soit ("lag"). Plus vous définissez cette durée longue, plus il faut de temps pour que la distribution soit mise à jour lorsque les itinéraires changent.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Type de distribution pour les passagers{NBSP}: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symétrique" signifie qu'autant de passagers iront d'une station A vers une station B, que de la station B vers la station A. "Asymétrique" signifie qu'un nombre arbitraire de passagers peut être envoyé dans les deux directions. "Manuel" signifie qu'aucune distribution n'est mise en place pour les passagers.
@@ -4589,6 +4593,7 @@ STR_AI_CONFIG_RANDOM_AI :IA aléatoire
STR_AI_CONFIG_NONE :(aucun)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Nombre maximal de concurrents{NBSP}: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Intervalle entre le démarrage des concurrents : {ORANGE}{COMMA} minute{P "" s}
STR_AI_CONFIG_MOVE_UP :{BLACK}Déplacer vers le haut
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Déplacer l'IA sélectionnée vers le haut
@@ -4635,7 +4640,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :du script de je
STR_AI_SETTINGS_CLOSE :{BLACK}Fermer
STR_AI_SETTINGS_RESET :{BLACK}Réinitialiser
STR_AI_SETTINGS_SETTING :{STRING}{NBSP}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Nombre de jours avant de démarrer cette IA après la précédente (approximativement){NBSP}: {ORANGE}{STRING}
# Textfile window
@@ -5518,10 +5522,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Hélicoptère P
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}/{STRING}/{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}/{ZEROFILL_NUM}/{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Compagnie {COMMA})
STR_FORMAT_GROUP_NAME :Groupe {COMMA}

View File

@@ -4714,10 +4714,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Bedriuw {COMMA})
STR_FORMAT_GROUP_NAME :Klobke {COMMA}

View File

@@ -4428,7 +4428,6 @@ STR_AI_SETTINGS_CAPTION_AI :IF
STR_AI_SETTINGS_CLOSE :{BLACK}Dùin
STR_AI_SETTINGS_RESET :{BLACK}Ath-shuidhich
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :An àireamh dhe làithean mus tèid an IF seo a thòiseachadh an dèidh an tè mu dheireadh (mu thimcheall): {ORANGE}{STRING}
# Textfile window
@@ -5428,10 +5427,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :{G=m}Heileacopt
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Companaidh {COMMA})
STR_FORMAT_GROUP_NAME :Buidheann {COMMA}

View File

@@ -4627,7 +4627,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script do xogo
STR_AI_SETTINGS_CLOSE :{BLACK}Pechar
STR_AI_SETTINGS_RESET :{BLACK}Restablecer
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Número de días para iniciar esta IA despois da anterior: {ORANGE}{STRING}
# Textfile window
@@ -5498,10 +5497,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helicóptero Po
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Compañía {COMMA})
STR_FORMAT_GROUP_NAME :Grupo {COMMA}

View File

@@ -4583,6 +4583,7 @@ STR_AI_CONFIG_HUMAN_PLAYER :Menschlicher Sp
STR_AI_CONFIG_RANDOM_AI :Zufällige KI
STR_AI_CONFIG_NONE :-
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Max. Mitbewerber-Zahl: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Intervall zwischen Start von Wettbewerbern: {ORANGE}{COMMA} minute{P "" n}
STR_AI_CONFIG_MOVE_UP :{BLACK}Nach oben verschieben
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Die ausgewählte KI in der Liste nach oben verschieben
@@ -4629,7 +4630,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spielskript
STR_AI_SETTINGS_CLOSE :{BLACK}Schließen
STR_AI_SETTINGS_RESET :{BLACK}Zurücksetzen
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Wartezeit in Tagen zwischen dem Starten dieser KI und dem der vorherigen: {ORANGE}{STRING}
# Textfile window
@@ -5512,10 +5512,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut-Hubsc
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}.{STRING}.{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}.{ZEROFILL_NUM}.{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Firma {COMMA})
STR_FORMAT_GROUP_NAME :Gruppe {COMMA}

View File

@@ -4729,7 +4729,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}Κλείσιμο
STR_AI_SETTINGS_RESET :{BLACK}Επαναφορά
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Αριθμός ημερών για την εκκίνηση της επόμενης AI μετά από τη προηγούμενη (περίπου): {ORANGE}{STRING}
# Textfile window
@@ -5603,10 +5602,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Ελικόπτ
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING.date} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Εταιρία {COMMA})
STR_FORMAT_GROUP_NAME :Ομάδα {COMMA}

View File

@@ -4332,7 +4332,6 @@ STR_AI_SETTINGS_CAPTION_AI :שחקן מחש
STR_AI_SETTINGS_CLOSE :{BLACK}סגור
STR_AI_SETTINGS_RESET :{BLACK}אתחל
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :מספר הימים להתחלת שחקן מחשב זה אחרי הקודם (פחות או יותר): {ORANGE}{STRING}
# Textfile window
@@ -5194,10 +5193,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :הליקופט
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{2:NUM} ב{1:STRING} {LRM}{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :({COMMA} חברה)
STR_FORMAT_GROUP_NAME :{COMMA} קבוצה

View File

@@ -4680,7 +4680,6 @@ STR_AI_SETTINGS_CAPTION_AI :{WHITE}MI param
STR_AI_SETTINGS_CLOSE :{BLACK}Bezárás
STR_AI_SETTINGS_RESET :{BLACK}Visszaállítás
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Az előző MI indításától eltelt napok száma ezen MI indításáig (megközelítőleg): {ORANGE}{STRING}
# Textfile window
@@ -5588,10 +5587,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :SemmiErő Helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :({COMMA}. vállalat)
STR_FORMAT_GROUP_NAME :{COMMA} csoport

View File

@@ -3923,7 +3923,6 @@ STR_AI_SETTINGS_CAPTION_AI :Gervigreindar
STR_AI_SETTINGS_CLOSE :{BLACK}Loka
STR_AI_SETTINGS_RESET :{BLACK}Frumstilla
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Hversu mörgum dögum eftir síðustu gervigreind á að hlaða þessari (sirka): {ORANGE}{STRING}
# Textfile window
@@ -4765,10 +4764,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Þyrl
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Fyrirtæki {COMMA})
STR_FORMAT_GROUP_NAME :Hópur {COMMA}

View File

@@ -1627,10 +1627,10 @@ STR_SV_STNAME_WAYPOINT :{STRING}
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
###length 2

View File

@@ -4616,7 +4616,6 @@ STR_AI_SETTINGS_CAPTION_AI :{WHITE}Paramete
STR_AI_SETTINGS_CLOSE :{BLACK}Tutup
STR_AI_SETTINGS_RESET :{BLACK}Reset
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Jalankan AI setelah berapa hari : {ORANGE}{STRING}
# Textfile window
@@ -5487,10 +5486,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helikopter Powe
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Perusahaan {COMMA})
STR_FORMAT_GROUP_NAME :Kelompok {COMMA}

View File

@@ -4532,7 +4532,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}Dún
STR_AI_SETTINGS_RESET :{BLACK}Athshocraigh
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Líon na laethanta a thógfaidh sé chun an AI seo a thosú tar éis an ceann roimhe (a bheag nó a mhór): {ORANGE}{STRING}
# Textfile window
@@ -5396,10 +5395,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Héileacaptar P
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Cuideachta {COMMA})
STR_FORMAT_GROUP_NAME :Grúpa {COMMA}

View File

@@ -197,6 +197,7 @@ STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mp
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}caselle/giorno
STR_UNITS_VELOCITY_KNOTS :{COMMA}{NBSP}nodi
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp
@@ -345,9 +346,9 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Apri la
###length 31
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausa
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Aumenta la velocità di gioco
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opzioni
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salva la partita, abbandona la partita, esci
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Mostra la mappa, apre una mini visuale extra o mostra l'elenco dei cartelli
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opzioni e impostazioni
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salvare, caricare o abbandonare il gioco, uscire dal programma
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Visualizzazione di una mappa, di una finestra supplementare, di un flusso di carico o di un elenco di segnali.
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Mostra l'elenco delle città
STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Mostra i sussidi
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Mostra l'elenco delle stazioni di una compagnia
@@ -355,9 +356,9 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Mostra i
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Mostra informazioni generali sulle compagnie
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Mostra la storia delle compagnie
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Mostra le liste degli obiettivi
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Mostra i grafici
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Visualizzare i grafici aziendali e i tassi di pagamento del carico
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Mostra la classifica delle compagnie
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finanzia la costruzione di una nuova industria o mostra l'elenco delle industrie
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Esaminare le industrie o finanziare la costruzione di una nuova industria
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Mostra l'elenco dei treni di una compagnia. CTRL+clic non apre la lista gruppi.
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Mostra l'elenco degli automezzi di una compagnia. CTRL+clic non apre la lista gruppi.
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Mostra l'elenco delle navi di una compagnia. CTRL+clic non apre la lista gruppi.
@@ -371,8 +372,8 @@ STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Costruzi
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Costruzione aeroporti
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Apre la barra di modellazione del terreno per alzare/abbassare il terreno, piantare alberi, etc.
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Mostra la finestra suoni/musica
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Mostra l'ultimo messaggio/notizia, mostra le opzioni dei messaggi
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informazioni area terreno, console, debug degli script, screenshot, informazioni su OpenTTD
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Mostra l'ultimo messaggio/notizia, la cronologia dei messaggi o cancella tutti i messaggi
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informazioni sull'area del terreno, screenshot, su OpenTTD e sugli strumenti per gli sviluppatori
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Alterna barre degli strumenti
# Extra tooltips for the scenario editor toolbar
@@ -1746,7 +1747,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Quantità massi
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Gli intervalli di manutenzione sono in percentuale: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Determina se la manutenzione dei veicoli è controllata dal tempo trascorso dall'ultima manutenzione piuttosto che dalla riduzione dell'affidabilità di una certa frazione di quella massima
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Quando è abilitata, i veicoli tentano la manutenzione quando la loro affidabilità scende di una determinata percentuale dell'affidabilità massima.{}{}Ad esempio, se l'affidabilità massima di un veicolo è del 90% e l'intervallo di manutenzione è del 20%, il veicolo tenterà la manutenzione quando raggiunge il 72% di affidabilità.
STR_CONFIG_SETTING_SERVINT_TRAINS :Intervallo manutenzione predefinito treni: {STRING}
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Imposta l'intervallo di manutenzione predefinito per i nuovi veicoli ferroviari, quando non viene impostato nessun intervallo esplicito
@@ -1843,7 +1844,9 @@ STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Se abilitata, c
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Età minima della compagnia per lo scambio delle sue azioni: {STRING}
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Imposta l'età minima di una compagnia affinchè sia possibile acquistarne o venderne le azioni.
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_VALUE :{COMMA} {P "anno" anni}
###setting-zero-is-special
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_NO_MIN :Nessun minimo
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Percentuale profitto da pagare per una tappa di trasferimento: {STRING}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Percentuale di ricavi assegnata ai tratti intermedi di una catena di trasferimenti, in questo si conferisce un maggiore controllo sul reddito.
@@ -1958,6 +1961,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nessuna
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Moltiplicatore iniziale dimensioni metropoli: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Dimensione media delle metropoli in rapporto alle normali città all'inizio della partita.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Aggiornare il grafico di distribuzione ogni {STRING}{NBSP}{P 0:2 "secondo" secondi}
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tempo tra i successivi ricalcoli del grafico dei collegamenti. Ogni ricalcolo calcola i piani per un componente del grafico. Ciò significa che un valore X per questa impostazione non significa che l'intero grafico verrà aggiornato ogni X secondi. Solo alcuni componenti lo saranno. Quanto più breve è l'impostazione, tanto più tempo di CPU sarà necessario per il calcolo. Più lungo è il valore impostato, più tempo ci vorrà prima che la distribuzione del carico inizi su nuove rotte.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Prendere {STRING}{NBSP}{P 0:2 "secondo" secondi} per il ricalcolo del grafico di distribuzione
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tempo necessario per ogni ricalcolo di un componente del grafo dei collegamenti. Quando viene avviato un ricalcolo, viene generato un thread che può essere eseguito per questo numero di secondi. Quanto più breve è il tempo impostato, tanto più è probabile che il thread non finisca quando dovrebbe. In questo caso il gioco si ferma finché non viene terminato ("lag"). Più lungo è il valore impostato, più tempo ci vuole per aggiornare la distribuzione quando i percorsi cambiano.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modalità di distribuzione dei passeggeri: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :In modalità "Simmetrica" il numero di passeggeri che viaggiano da una stazione A ad una stazione B è approssimativamente lo stesso di quelli che viaggiano da B ad A. In modalità "Asimmetrica" è consentito il viaggio di un numero di passeggeri arbitrario in entrambe le direzioni. In modalità "Manuale" non viene effettuata alcuna distribuzione automatica dei passeggeri.
@@ -1983,13 +1990,15 @@ STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Impostarla a me
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturazione dei percorsi corti prima di utilizzare quelli a più alta capacità: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :È frequente che esistano più percorsi fra due stazioni. L'algoritmo Cargodist cercherà di saturare innanzi tutto il percorso più corto, quindi il secondo più corto fino a saturazione e così via. Il grado di saturazione è determinato dalla stima della capacità e dell'utilizo programmato. Se con tutti i percorsi saturi permane ancora domanda, l'algoritmo sovraccaricherà i percorsi indipendentemente dalla lunghezza, preferendo quelli a più alta capacità. Tuttavia, il più delle volte l'algoritmo non stimerà la capacità in modo accurato. Questa impostazione permette di specificare fino a quale percentuale saturare un percorso corto durante il primo passaggio dell'algoritmo prima di sceglierne uno più lungo. Impostarlo a meno di 100% in modo da evitare sovraffollamento delle stazioni in caso di capacità sovrastimata.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unità di velocità: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unità di velocità (terrestre): {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Unità di velocità (nautica): {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Seleziona le unità di misura da utilizzare per mostrare le velocità nell'interfaccia utente
###length 5
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiali (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metriche (km/h)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Unità di gioco (caselle/giorno)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Nodi
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unità di potenza veicoli: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Seleziona le unità di misura da utilizzare per mostrare i valori di potenza dei veicoli nell'interfaccia utente
@@ -4622,7 +4631,9 @@ STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Lista de
STR_AI_CONFIG_HUMAN_PLAYER :Giocatore umano
STR_AI_CONFIG_RANDOM_AI :IA casuale
STR_AI_CONFIG_NONE :(nessuno)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Numero massimo di avversari: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Intervallo tra l'inizio dei concorrenti: {ORANGE}{COMMA} {P minuto minuti}
STR_AI_CONFIG_MOVE_UP :{BLACK}Sposta su
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Sposta l'IA selezionata più in alto nell'elenco
@@ -4635,7 +4646,7 @@ STR_AI_CONFIG_AI :{SILVER}IA
STR_AI_CONFIG_CHANGE_AI :{BLACK}Seleziona IA
STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Seleziona lo script di gioco
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Carica un altro script
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Carica un altro script. Ctrl+clic per visualizzare tutte le versioni disponibili
STR_AI_CONFIG_CONFIGURE :{BLACK}Configura
STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configura i parametri dello script
@@ -4669,7 +4680,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script di gioco
STR_AI_SETTINGS_CLOSE :{BLACK}Chiudi
STR_AI_SETTINGS_RESET :{BLACK}Reimposta
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Giorni da attendere per l'avvio di questa IA dopo la precedente (approssimativo): {ORANGE}{STRING}
# Textfile window
@@ -5552,10 +5562,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Elicottero Powe
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Compagnia {COMMA})
STR_FORMAT_GROUP_NAME :Gruppo {COMMA}

View File

@@ -4628,7 +4628,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :ゲームスク
STR_AI_SETTINGS_CLOSE :{BLACK}閉じる
STR_AI_SETTINGS_RESET :{BLACK}リセット
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :AI企業の設立間隔(倒産/買収後): {ORANGE}{STRING}
# Textfile window
@@ -5511,10 +5510,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :パワーノー
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_TINY :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_DATE_SHORT :{1:NUM}年{0:STRING}月
STR_FORMAT_DATE_LONG :{2:NUM}年{1:STRING}月{0:STRING}日
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(会社{COMMA})
STR_FORMAT_GROUP_NAME :グループ {COMMA}

View File

@@ -4635,7 +4635,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :게임 스크
STR_AI_SETTINGS_CLOSE :{BLACK}닫기
STR_AI_SETTINGS_RESET :{BLACK}초기화
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :이전 인공지능 이후 이 인공지능이 나타나기 위한 날짜수: {ORANGE}약 {STRING}일
# Textfile window
@@ -5518,10 +5517,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut 헬
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{2:NUM}.{1:STRING}.{0:STRING}
STR_FORMAT_DATE_TINY :{2:NUM}.{1:ZEROFILL_NUM}.{0:ZEROFILL_NUM}
STR_FORMAT_DATE_SHORT :{1:NUM}년 {0:STRING}
STR_FORMAT_DATE_LONG :{2:NUM}년 {1:STRING}월 {0:STRING}일
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(회사 {COMMA})
STR_FORMAT_GROUP_NAME :그룹 {COMMA}

View File

@@ -4421,7 +4421,6 @@ STR_AI_SETTINGS_CAPTION_AI :IA
STR_AI_SETTINGS_CLOSE :{BLACK}Claudere
STR_AI_SETTINGS_RESET :{BLACK}Revertere
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Quot dies post IA priorem haec IA incipiet (plus minusve): {ORANGE}{STRING}
# Textfile window
@@ -5385,10 +5384,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helicopterum Po
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Societas {COMMA})
STR_FORMAT_GROUP_NAME :Grex {COMMA}

View File

@@ -4633,7 +4633,6 @@ STR_AI_SETTINGS_CAPTION_AI :{WHITE}MI Param
STR_AI_SETTINGS_CLOSE :{BLACK}Aizvērt
STR_AI_SETTINGS_RESET :{BLACK}Atiestatīt
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Aptuvenais dienu skaits, līdz palaist šo MI pēc iepriekšējā: {ORANGE}{STRING}
# Textfile window
@@ -5504,10 +5503,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :({COMMA}. uzņēmums)
STR_FORMAT_GROUP_NAME :Grupa {COMMA}

View File

@@ -4827,7 +4827,6 @@ STR_AI_SETTINGS_CAPTION_AI :DI
STR_AI_SETTINGS_CLOSE :{BLACK}Uždaryti
STR_AI_SETTINGS_RESET :{BLACK}Atstatyti
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Dienų skaičius po kurio šitas DI bus paleistas po paskutiniojo (maždaug): {ORANGE}{STRING}
# Textfile window
@@ -5955,10 +5954,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut malun
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Kompanija {COMMA})
STR_FORMAT_GROUP_NAME :Grupė {COMMA}

View File

@@ -4626,7 +4626,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spill-Script
STR_AI_SETTINGS_CLOSE :{BLACK}Zoumaachen
STR_AI_SETTINGS_RESET :{BLACK}Reset
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Unzuel un Deeg wou des KI gestart gëtt no der leschter: {ORANGE}{STRING}
# Textfile window
@@ -5497,10 +5496,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Firma {COMMA})
STR_FORMAT_GROUP_NAME :Grupp {COMMA}

View File

@@ -1964,7 +1964,6 @@ STR_AI_LIST_CAPTION_GAMESCRIPT :GameScripts
# Script Parameters
STR_AI_SETTINGS_CAPTION_AI :АИ
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Број на денови за да започнете оваа Пи по претходниот (се дава или зема): {ORANGE}{STRING}
# Textfile window
@@ -2175,10 +2174,10 @@ STR_SV_STNAME_WAYPOINT :{STRING}
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
###length 2

View File

@@ -3833,7 +3833,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}Tutup
STR_AI_SETTINGS_RESET :{BLACK}Semula
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Bilangan hari Kepintaran Tiruan dimulakan selepas yang terdahulu (lebih kurang): {ORANGE}{STRING}
# Textfile window
@@ -4671,10 +4670,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helikopter Powe
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Company {COMMA})
STR_FORMAT_GROUP_NAME :Group {COMMA}

View File

@@ -1671,10 +1671,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Ħelikopter Pow
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}

View File

@@ -2038,10 +2038,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :पॉवरन
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_GROUP_NAME :गट्टा {COMMA}
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}

View File

@@ -4554,7 +4554,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}Lukk
STR_AI_SETTINGS_RESET :{BLACK}Tilbakestill
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Antall dager denne AIen skal starte etter den forrige (ca): {ORANGE}{STRING}
# Textfile window
@@ -5418,10 +5417,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut-helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Firma {COMMA})
STR_FORMAT_GROUP_NAME :Gruppe {COMMA}

View File

@@ -4056,7 +4056,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}Lukk
STR_AI_SETTINGS_RESET :{BLACK}Tilbakestill
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Antall dagar denne AIen skal starte etter den førre (ca): {ORANGE}{STRING}
# Textfile window
@@ -4907,10 +4906,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut-helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Firma {COMMA})
STR_FORMAT_GROUP_NAME :Gruppe {COMMA}

View File

@@ -3480,7 +3480,6 @@ STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}کد ر
STR_AI_SETTINGS_CAPTION_AI :هوش مصنوعی(AI)
STR_AI_SETTINGS_CLOSE :{BLACK}بستن
STR_AI_SETTINGS_RESET :{BLACK}بازنشاندن
STR_AI_SETTINGS_START_DELAY :تعداد روزهایی که این بازیگر هوش مصنوعی پس از بازیگر هوش مصنوعی قبلی قبل از اتصال صبر می کند(کم و بیش): {ORANGE}{STRING}
# Textfile window
@@ -4207,10 +4206,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :هلیکوپت
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(شرکت {COMMA})
STR_FORMAT_GROUP_NAME :گروه {COMMA}

View File

@@ -5020,7 +5020,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script
STR_AI_SETTINGS_CLOSE :{BLACK}Zamknij
STR_AI_SETTINGS_RESET :{BLACK}Resetuj
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Liczba dni do aktywowania tej SI po uruchomieniu poprzedniej (zwiększ lub zmniejsz): {ORANGE}{STRING}
# Textfile window
@@ -5940,10 +5939,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helikopter Powe
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Firma {COMMA})
STR_FORMAT_GROUP_NAME :Grupa {COMMA}

View File

@@ -1713,7 +1713,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Definir o volum
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Os intervalos de serviço são em percentagem: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Escolher se a manutenção de veículos é ativada pelo tempo decorrido deste a última manutenção, ou pela fiabilidade abaixo de uma certa percentagem da fiabilidade máxima
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Quando ativado, os veículos procuram fazer a manutenção quando sua fiabilidade reduz para uma determinada percentagem da fiabilidade máxima.{}{}Por exemplo, se a fiabilidade máxima de um veículo for 90% e o intervalo de manutenção for 20%, o veículo tentará fazer a manutenção quando atinge 72% de fiabilidade.
STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalo de serviço para comboios por omissão: {STRING}
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Definir o intervalo de manutenção por omissão para novos veículos sobre carris, se não for configurado um intervalo de manutenção explícito para o veículo
@@ -1927,6 +1927,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nenhum
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador inicial para a dimensão das metrópoles: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Tamanho relativo das cidades em relação ao tamanho normal das localidades aquando o início do jogo
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Atualizar o gráfico de distribuição a cada {STRING}{NBSP}segundo{P 0:2 "" s}
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tempo de intervalo entre recalculos subsequentes do gráfico de ligações. Cada recalculo calcula os planos para um componente do gráfico. Isso significa que um valor X para esta configuração não significa que todo o gráfico será atualizado a cada X segundos. Apenas algum componente será. Quanto mais curto escolher, mais tempo de CPU será necessário para calcular. Quanto mais tempo for definido, mais tempo levará até que a distribuição de carga inicie nas novas rotas.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Usar {STRING}{NBSP}segundo{P 0:2 "" s} para recalcular o gráfico de distribuição
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tempo gasto para cada recalculo de um componente de gráfico de ligação. Quando um recalculo é iniciado, um encadeamento é gerado e pode ser executado nesse número de segundos. Quanto mais curto você definir, mais provável será que o encadeamento não seja concluído quando deveria. Então o jogo pára até que seja ("lag"). Quanto mais tempo você definir, mais tempo levará para a distribuição ser atualizada quando as rotas mudarem.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modo de distribuição para os passageiros: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simétrico" significa que aproximadamente o mesmo numero de passageiros irá de uma estação A para uma estação B e de B para A. "Assimétrico" significa que um numero arbitrário de passageiros poderá seguir em qualquer direção. "Manual" significa que nenhuma distribuição automática terá lugar para passageiros.
@@ -4589,6 +4593,7 @@ STR_AI_CONFIG_RANDOM_AI :IA aleatória
STR_AI_CONFIG_NONE :(nenhum)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Número máximo de oponentes: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Intervalo entre o arranque dos competidores: {ORANGE}{COMMA} minuto{P "" s}
STR_AI_CONFIG_MOVE_UP :{BLACK}Mover para cima
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Move a IA seleccionada para cima
@@ -4635,7 +4640,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de Jogo
STR_AI_SETTINGS_CLOSE :{BLACK}Fechar
STR_AI_SETTINGS_RESET :{BLACK}Repor
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Número de dias para iniciar esta IA depois da anterior (aproximadamente): {ORANGE}{STRING}
# Textfile window
@@ -5518,10 +5522,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helicóptero Po
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Empresa {COMMA})
STR_FORMAT_GROUP_NAME :Grupo {COMMA}

View File

@@ -4627,7 +4627,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de joc
STR_AI_SETTINGS_CLOSE :{BLACK}Închide
STR_AI_SETTINGS_RESET :{BLACK}Resetează
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Perioada (în zile) după care această librărie IA va fi activată, după cea anterioară (valoare aproximativă): {ORANGE}{STRING}
# Textfile window
@@ -5510,10 +5509,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Elicopter Power
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Companie {COMMA})
STR_FORMAT_GROUP_NAME :Grup {COMMA}

View File

@@ -1863,7 +1863,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Объём па
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} МиБ
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Интервал тех. обслуживания в процентах: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Выберите, должно ли техническое обслуживание транспорта выполняться через определённые промежутки времени, либо при снижении надёжности транспортного средства на определённый процент от максимума
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :При включении транспортные средства будут отправляться на техническое обслуживание после падения надёжности на указанный процент от максимальной.{}Например, при максимальной надёжности 90% и указанном интервале ТО 20% транспортное средство уйдёт на обслуживание при падении надёжности до 72%.
STR_CONFIG_SETTING_SERVINT_TRAINS :Интервал ТО по умолчанию для поездов: {STRING}
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Настройка периодичности технического обслуживания для новых поездов
@@ -2077,6 +2077,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :нет
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Стартовый множитель размера мегаполисов: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Средний размер мегаполисов по сравнению с остальными городами в начале игры
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Обновлять граф распределения кажд{P 0:2 ую ые ые} {STRING}{NBSP}секунд{P 0:2 у ы ""}
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Интервалы между перерасчётами графов распределения грузов. Каждый перерасчёт обновляет один компонент графа. То есть, по истечении указанного здесь времени будет обновлён не весь граф, а только один из его компонентов. Чем ниже значение, тем выше нагрузка на процессор. Чем выше значение, тем дольше не будет работать распределение грузов на новых маршрутах.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Продолжительность перерасчёта графа распределения: {STRING}{NBSP}секунд{P 0:2 а ы ""}
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Время, выделяемое на каждый перерасчёт одного из компонентов графа распределения грузов. Расчёт выполняется в отдельном вычислительном потоке. Чем ниже значение, тем выше вероятность того, что расчёт не будет выполнен за указанное время; в таком случае игра будет приостановлена до завершения расчёта. Чем выше значение, тем медленнее будет обновляться граф распределения в случае изменения маршрутов.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Распределение пассажиров: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :«Симметричное» означает, что примерно одинаковое количество пассажиров будет направляться по прямому и обратному маршрутам.{}«Несимметричное» означает, что пассажиропотоки в любых направлениях не будут зависеть друг от друга.{}«Вручную» - не использовать автоматическое распределение для пассажиров.
@@ -4775,6 +4779,7 @@ STR_AI_CONFIG_RANDOM_AI :Случайн
STR_AI_CONFIG_NONE :(нет)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Максимальное количество конкурентов: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Интервал между запуском конкурентов: {ORANGE}{COMMA} минут{P а ы ""}
STR_AI_CONFIG_MOVE_UP :{BLACK}Вверх
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Переместить этот модуль ИИ вверх по списку
@@ -4821,7 +4826,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :игровых
STR_AI_SETTINGS_CLOSE :{BLACK}Закрыть
STR_AI_SETTINGS_RESET :{BLACK}Сброс
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Запускать этот ИИ через {ORANGE}{STRING} д{P 0:1 ень ня ней} после предыдущего
# Textfile window
@@ -5741,10 +5745,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Вертолё
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}.{STRING}.{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}.{ZEROFILL_NUM}.{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM} г.
STR_FORMAT_DATE_LONG :{STRING} {STRING.gen} {NUM} г.
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Компания {COMMA})
STR_FORMAT_GROUP_NAME :Группа {COMMA}

View File

@@ -4827,7 +4827,6 @@ STR_AI_SETTINGS_CAPTION_AI :{WHITE}Parametr
STR_AI_SETTINGS_CLOSE :{BLACK}Zatvori
STR_AI_SETTINGS_RESET :{BLACK}Poništi
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Broj dana za pokretanje ove VI posle prethodne (otprilike): {ORANGE}{STRING}
# Textfile window
@@ -5698,10 +5697,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Preduzeće {COMMA})
STR_FORMAT_GROUP_NAME :Grupa {COMMA}

View File

@@ -4626,7 +4626,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :游戏脚本
STR_AI_SETTINGS_CLOSE :{BLACK}关闭
STR_AI_SETTINGS_RESET :{BLACK}重设
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :当前AI在前一个AI运行 {ORANGE}{STRING}天之后开始运行
# Textfile window
@@ -5507,10 +5506,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut 直
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(公司 {COMMA})
STR_FORMAT_GROUP_NAME :组 {COMMA}

View File

@@ -259,6 +259,7 @@ STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph
STR_UNITS_VELOCITY_METRIC :{COMMA} km/h
STR_UNITS_VELOCITY_SI :{COMMA} m/s
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}políč{P ko ka ok}/deň
STR_UNITS_VELOCITY_KNOTS :{COMMA}{NBSP}uzlov
STR_UNITS_POWER_IMPERIAL :{COMMA}hp
STR_UNITS_POWER_METRIC :{COMMA}hp
@@ -407,9 +408,9 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Otvoriť
###length 31
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pozastaviť hru
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Zrýchliť priebeh hry
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Nastavenia
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Uložiť hru, opustiť hru, ukončiť
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Zobraziť mapu
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Možnosti a nastavenia
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Uložiť, načítať alebo opustiť hru, ukončiť program
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Zobraziť mapu, extra výrez, tok nákladu alebo zoznam značiek
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Zobraziť zoznam miest
STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Zobraziť dotácie
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Zoznam staníc spoločnosti
@@ -417,9 +418,9 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Finančn
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Informácie o spoločnosti
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Zobraziť knihu príbehov
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Zobraziť zoznam cieľov
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Grafy
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Zobrazte firemné grafy a sadzby platieb za náklad
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Hodnotenie spoločností
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financovať výstavbu nového priemyslu
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Preskúmať odvetvia alebo zafinancovať výstavbu nového odvetvia
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Zoznam vlakov spoločnosti. Ctrl+klik prepína zoznam skupín/vozidiel
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Zoznam cestných vozidiel spoločnosti. Ctrl+klik prepína zoznam skupín/vozidiel
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Zoznam lodí spoločnosti. Ctrl+klik prepína zoznam skupín/vozidiel
@@ -433,8 +434,8 @@ STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Výstavb
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Výstavba letísk
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Otvoriť panel nástrojov pre úpravy terénu, výsadbu stromov, a pod.
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Zobraziť okno zvuku a hudby
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Zobraziť poslednú správu/novinku, nastavenia správ
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informácie o pozemku, konzola, ladenie skriptu, snímky obrazovky, o OpenTTD
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Zobraziť poslednú správu/novinku, históriu správ alebo vymazať všetky správy
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informácie o pozemku, snímka obrazovky, o OpenTTD a nástrojoch pre vývojárov
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Prepnúť panely nástrojov
# Extra tooltips for the scenario editor toolbar
@@ -1876,7 +1877,9 @@ STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Ak je zapnuté,
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Minimálny vek spoločnosti na obchodovanie s podielmi: {STRING}
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Určuje minimálny vek spoločnosti na to, aby od nej mohli ostatné spoločnosti kupovať a predavať podiely.
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_VALUE :{COMMA} rok{P "" "y" "ov"}
###setting-zero-is-special
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_NO_MIN :Žiadne minimum
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Percentáž zisku na zaplatenie podávacieho systému: {STRING}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Percento príjmov dať na strednú ´nohu´ vo feeder systémoch, získate väčšiu kontrolu nad príjmami
@@ -2016,13 +2019,15 @@ STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Nastavením na
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Vyťaženie krátkych ciest pred použitím vysokokapacitných ciest: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Často je viac ciest medzi dvoma stanicami. Cargodist vyťaží najprv najkratšiu cestu, potom využije druhú najkratšiu cestu až kým nebude vyťažená atď. Vyťaženie je určené podľa odhadu kapacity a plánovaného využitia. Ak sú vyťažené všetky trasy a nepostačuje to, preťaží všetky trasy, s preferenciou najkapacitnejšej. Väčšinou algoritmus neodhadne kapacitu presne. Toto nastavenie umožňuje určiť na koľko percent musí byť vyťažená prvá pred výberom nasledujúcej dlhšej. Nastavte na menej ako 100%, aby sa zabránilo preplneniu staníc v prípade nadhodnotenia kapacity.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Jednotky rýchlosti: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Jednotky rýchlosti (pozemné): {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Jednotky rýchlosti (námorné): {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Vždy, keď sa zobrazí rýchlosť v užívateľskom rozhraní, zobrazí sa vo vybraných jednotkách
###length 5
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiálne (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrické (km/h)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Jednotky v hre (políčka/deň)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Uzle
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Jednotky výkonu vozidiel: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Vždy, keď sa zobrazí výkon vozidla v užívateľskom rozhraní, zobrazí sa vo vybraných jednotkách
@@ -4649,6 +4654,7 @@ STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AI, ktor
STR_AI_CONFIG_HUMAN_PLAYER :Človek
STR_AI_CONFIG_RANDOM_AI :Náhodná AI
STR_AI_CONFIG_NONE :(žiadne)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Maximálny počet konkurentov: {ORANGE}{COMMA}
STR_AI_CONFIG_MOVE_UP :{BLACK}Posunúť vyššie
@@ -4662,7 +4668,7 @@ STR_AI_CONFIG_AI :{SILVER}AI (ume
STR_AI_CONFIG_CHANGE_AI :{BLACK}Vyber AI
STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Vyber skript
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Spusti ďalší skript
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Spusti ďalší skript. Ctrl+klik zobrazí všetky dostupné verzie
STR_AI_CONFIG_CONFIGURE :{BLACK}Nastaviť
STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Nastaviť parametre skriptu
@@ -4696,7 +4702,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Herný skript
STR_AI_SETTINGS_CLOSE :{BLACK}Zavrieť
STR_AI_SETTINGS_RESET :{BLACK}Resetovať
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Koľko dní prejde od spustenia predchádzajúcej umelej inteligencie k naštartovaniu novej: {ORANGE}{STRING}
# Textfile window
@@ -5579,10 +5584,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helic
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Spoločnosť {COMMA})
STR_FORMAT_GROUP_NAME :Skupina {COMMA}

View File

@@ -4310,7 +4310,6 @@ STR_AI_SETTINGS_CAPTION_AI :UI
STR_AI_SETTINGS_CLOSE :{BLACK}Zapri
STR_AI_SETTINGS_RESET :{BLACK}Resetiraj
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Število dni zamika med zagonom sledeče po predhodni UI: {ORANGE}{STRING}
# Textfile window
@@ -5207,10 +5206,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Podjetje {COMMA})
STR_FORMAT_GROUP_NAME :Skupina {COMMA}

View File

@@ -4623,7 +4623,6 @@ STR_AI_SETTINGS_CAPTION_AI :{WHITE}Parámet
STR_AI_SETTINGS_CLOSE :{BLACK}Cerrar
STR_AI_SETTINGS_RESET :{BLACK}Reiniciar
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Número de días (aproximados) de espera antes de comenzar esta IA desde el momento en el que empezó la anterior: {ORANGE}{STRING}
# Textfile window
@@ -5494,10 +5493,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helicóptero Po
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Empresa {COMMA})
STR_FORMAT_GROUP_NAME :Grupo {COMMA}

View File

@@ -4624,7 +4624,6 @@ STR_AI_SETTINGS_CAPTION_AI :{WHITE}Parámet
STR_AI_SETTINGS_CLOSE :{BLACK}Cerrar
STR_AI_SETTINGS_RESET :{BLACK}Reiniciar
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Número de días a esperar antes de comenzar esta IA desde el momento en el que empezó la anterior: {ORANGE}{STRING}
# Textfile window
@@ -5497,10 +5496,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helicóptero Po
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{0:STRING}/{1:STRING}/{2:NUM}
STR_FORMAT_DATE_TINY :{0:ZEROFILL_NUM}/{1:ZEROFILL_NUM}/{2:NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{0:STRING} {1:STRING} {2:NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Empresa {COMMA})
STR_FORMAT_GROUP_NAME :Grupo {COMMA}

View File

@@ -4628,7 +4628,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spelskript
STR_AI_SETTINGS_CLOSE :{BLACK}Stäng
STR_AI_SETTINGS_RESET :{BLACK}Återställ
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Ungefärligt antal dagar som denna datorspelare startar efter föregående datorspelare: {ORANGE}{STRING}
# Textfile window
@@ -5511,10 +5510,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Företag {COMMA})
STR_FORMAT_GROUP_NAME :Grupp {COMMA}

View File

@@ -4129,7 +4129,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}மூடு
STR_AI_SETTINGS_RESET :{BLACK}முன்னிருந்தமாதிரி மாற்று
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :இந்த AI-இனை தொடங்குவதற்கான நாட்கள், முந்தின AI-இற்கு பிறகு: {ORANGE}{STRING}
# Textfile window
@@ -4984,10 +4983,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :பவர்ன
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(நிறுவனம் {COMMA})
STR_FORMAT_GROUP_NAME :குழு {COMMA}

View File

@@ -4271,7 +4271,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}ปิด
STR_AI_SETTINGS_RESET :{BLACK}เริ่มใหม่
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :จำนวนที่จะให้เริ่มต้น AI นี้หลังจากที่มีการเริ่มต้น AI ก่อนหน้านี้ไป: {ORANGE}{STRING}
# Textfile window
@@ -5123,10 +5122,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helic
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(บริษัท {COMMA})
STR_FORMAT_GROUP_NAME :กลุ่ม {COMMA}

View File

@@ -4628,7 +4628,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :遊戲腳本
STR_AI_SETTINGS_CLOSE :{BLACK}關閉
STR_AI_SETTINGS_RESET :{BLACK}重設
STR_AI_SETTINGS_SETTING :{STRING}{ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :此 AI 與上一個 AI 的啟動時間相隔天數 (近似值){ORANGE}{STRING}
# Textfile window
@@ -5511,10 +5510,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut 直
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{2:NUM} 年 {1:STRING} 月 {0:STRING} 日
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(公司 {COMMA})
STR_FORMAT_GROUP_NAME :群組 {COMMA}

View File

@@ -157,7 +157,7 @@ STR_ABBREV_COLA :{TINY_FONT}KO
STR_ABBREV_CANDYFLOSS :{TINY_FONT}PŞ
STR_ABBREV_BUBBLES :{TINY_FONT}BA
STR_ABBREV_TOFFEE :{TINY_FONT}ŞL
STR_ABBREV_BATTERIES :{TINY_FONT}Pİ
STR_ABBREV_BATTERIES :{TINY_FONT}PİL
STR_ABBREV_PLASTIC :{TINY_FONT}PL
STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}İÇ
STR_ABBREV_NONE :{TINY_FONT}YO
@@ -196,6 +196,7 @@ STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mi
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/s
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}karo/gün
STR_UNITS_VELOCITY_KNOTS :{COMMA}{NBSP}hava hızı
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}bg
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}bg
@@ -344,9 +345,9 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Emir gö
###length 31
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Oyunu durdur
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Oyunu hızlandır
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Seçenekler
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Kaydet, oyunu terk et, çık
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Haritayı göster
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Seçenekler ve ayarlar
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Kaydet, oyunu yükle veya terk et, program'dan çık
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Haritayı, ekstra vitrini, kargo akşını veya işaret listesini görüntüleyin
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Şehir listesini göster
STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Teşvikleri göster
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Şirkete ait istasyonları listele
@@ -354,9 +355,9 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Şirketi
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Şirketin genel durumunu göster
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Hikaye kitabını görüntüle
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Amaç listesini görüntüle
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Grafikleri göster
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Şirket grafiğini ve kargo ödeme oranlarını görüntüleyin
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Şirketler ligini göster
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Yeni fabrika kur veya tüm fabrikaları listele
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Endüstrileri inceleyin veya yeni endüstri inşasını fonlayın
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Şirkete ait trenleri listele. Ctrl+Sol tıklama ile grup/araç listesini açar veya kapatır
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Şirkete ait karayolu taşıtlarını listele. Ctrl+Sol tıklama ile grup/araç listesini açıp kapatır
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Şirkete ait gemileri listele. Ctrl+Sol tık ile grup/araç listesini açar veya kapatır
@@ -370,8 +371,8 @@ STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Rıhtım
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Havalimanı yapımı
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Arazi düzenleme araç çubuğunu aç (ağaç dikme, alçaltma/yükseltme vb. için).
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Ses/müzik penceresini göster
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Son mesajı/haberi göster, mesaj ayarlarını göster
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Arazi bilgisi, konsol, betik hata ayıklama, ekran görüntüleri, OpenTTD hakkında
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Son mesajı/haberi göster, mesaj geçmişini göster veya tüm mesajları sil
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Arazi bilgisi, ekran görüntü, OpenTTD ve geliştirici araçları hakkında
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Araç çubuklarını değiştir
# Extra tooltips for the scenario editor toolbar
@@ -1712,7 +1713,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Tek bir betiği
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Servis gecikmeleri yüzde ile: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Araçlara bakım yapılmasına bir önceki bakımın üzerinden geçen zamana göre mi, yoksa aracın güvenilirlik değerinin azami güvenilirliğe kıyasla belli bir yüzde oranında düşmesine bağlı olarak mı karar verileceğini seçin
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Etkinleştirildiğinde, araçların güvenilirlik değerinin azami güvenilirliğe kıyasla belli bir yüzde oranında düşmesine bağlı olarak bakım yapar.{}{}Örneğin, eğer aracın azami güvenirliği %90 ve bakım aralığı %20 ise araç %72 güvenilirliğe ulaştığında bakım yapmayı dener.
STR_CONFIG_SETTING_SERVINT_TRAINS :Trenler için varsayılan bakım aralığı: {STRING}
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Yeni tren yolu araçları için varsayılan bakım aralığını ayarlar, eğer araç için özel bir bakım aralığı belirtilmemişse geçerlidir
@@ -1809,7 +1810,9 @@ STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Etkinleştirild
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Hisse satmak için gerekli minimum şirket yaşı: {STRING}
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Bir şirketin hisselerinin satılabileceği ve diğer şirketlerin alabileceği minimum şirket yaşını belirleyin.
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_VALUE :{COMMA} yıl{P ""}
###setting-zero-is-special
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_NO_MIN :Minimum yok
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Besleme sistemlerinde, bölümlerden elde edilen kardan ödenecek yüzde: {STRING}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Besleme sistemlerinde, sistemi oluşturan ara bölümlere verilen kar yüzdesi. Böylece kar miktarı üzerinde daha fazla kontrol elde edilmiş olur
@@ -1924,6 +1927,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Hiçbiri
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Birincil şehir büyüklüğü çarpanı: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Oyun başlangıcında şehirlerin normal kasabalara kıyasla ortalama büyüklüğü
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Dağıtım grafiğini her {STRING}{NBSP}saniyede{P 0:2 ""} güncelle
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Bağlantı grafiğinin sonraki yeniden hesaplamaları arasındaki süre. Her yeniden hesaplama, grafiğin bir bileşeni için planları hesaplar. Bu, bu ayar için bir X değerinin tüm grafiğin her X saniyede bir güncelleneceği anlamına gelmediği anlamına gelir. Sadece bazı bileşenler olacaktır. Ne kadar kısa ayarlarsanız, hesaplamak için o kadar fazla CPU süresi gerekir. Ne kadar uzun ayarlarsanız, kargo dağıtımının yeni rotalarda başlaması o kadar uzun sürer.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Dağıtım grafiğinin yeniden hesaplanması için {STRING}{NBSP}saniye{P 0:2 ""} bekleyin
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Bir bağlantı grafiği bileşeninin her yeniden hesaplanması için geçen süre. Bir yeniden hesaplama başlatıldığında, bu sayıda saniye boyunca çalışmasına izin verilen bir iş parçacığı oluşturulur. Bunu ne kadar kısa ayarlarsanız, iş parçacığının olması gerektiği zamanda bitmemiş olma olasılığı o kadar artar. Ardından oyun ("gecikme") olana kadar durur. Ne kadar uzun ayarlarsanız, rotalar değiştiğinde dağıtımın güncellenmesi o kadar uzun sürer.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Yolcular için dağıtım kipi: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simetrik" seçildiğinde A durağından B durağına taşınan ile B'den A'ya taşınan yolcu miktarı kabaca eşit olur. "Asimetrik" seçildiğinde iki yönde de rastgele miktarda yolcu gönderilebilir. "el ile" seçildiğinde yolcular için otomatik dağıtım yapılmaz.
@@ -1949,13 +1956,15 @@ STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Buraya %100'den
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Yüksek kapasiteli güzergahları kullanmadan önce daha kısa güzergah doygunluğu: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Sıklıkla iki durak arasında birden fazla güzergah bulunur. Kargo dağıtımı önce en kısa güzergahı doygunluğa ulaştırır, ardından ikinci en kısa güzergahı doygunluğa ulaşana kadar kullanır ve böyle devam eder. Doygunluk, kapasite tahmini ve planlanan kullanım miktarına göre hesaplanır. Tüm güzergahlar doygunluğa ulaştığında eğer hala talep varsa, yüksek kapasiteli olan güzergahları tercih ederek tüm güzergahlarıırı yükler. Fakat çoğu zaman algoritma kapasiteyi isabetli olarak hesaplayamaz. Bu değer, daha kısa bir güzergahın yüzde kaç oranında doygunluğa ulaştığı zaman bir sonraki güzergahın seçileceğini ayarlamanızı sağlar. Yanlış (büyük) kapasite tahmini ihtimaline karşıırı dolu durakları önlemek için %100'den daha düşük bir değer seçin.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hız birimi: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hız birimi (kara): {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Hız birimleri (denizcilik): {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kullanıcı arayüzünde hız görüntülendiğinde, bunu seçili birimde göster.
###length 5
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (İngiliz ölçü birimleri) (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrik (km/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (Uluslararası Ölçüm Sistemi) (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Oyun birimleri (karo/gün)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Hava hızı
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Araç gücü ölçü birimi: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Kullanıcı arayüzünde bir aracın gücü görüntülendiğinde, bunu seçili ölçü biriminde göster.
@@ -4582,7 +4591,9 @@ STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Bir sonr
STR_AI_CONFIG_HUMAN_PLAYER :İnsan oyuncu
STR_AI_CONFIG_RANDOM_AI :Rastgele YZ
STR_AI_CONFIG_NONE :(hiçbiri)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}En fazla yarışmacı sayısı: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Yarışmacıların başlama arasındaki aralık: {ORANGE}{COMMA} dakika {P ""}
STR_AI_CONFIG_MOVE_UP :{BLACK}Yukarı taşı
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Seçilen YZ'yi listede yukarı taşı
@@ -4595,7 +4606,7 @@ STR_AI_CONFIG_AI :{SILVER}YZ'ler
STR_AI_CONFIG_CHANGE_AI :{BLACK}YZ Seç
STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Oyun Betiği Seç
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Başka bir betik yükle
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Başka bir betik yükle. Kullanılabilir tüm sürümleri göstermek için Ctrl+Tıkla
STR_AI_CONFIG_CONFIGURE :{BLACK}Yapılandır
STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Betik parametrelerini yapılandır
@@ -4629,7 +4640,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Oyun Betiği
STR_AI_SETTINGS_CLOSE :{BLACK}Kapat
STR_AI_SETTINGS_RESET :{BLACK}Yeniden başlat
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Bu YZ bir öncekinden kaç gün sonra başlayacak (yaklaşık): {ORANGE}{STRING}
# Textfile window
@@ -5084,6 +5094,18 @@ STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... önc
STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... uçağın menzili yeterli değil
# Extra messages which go on the third line of errors, explaining why orders failed
STR_ERROR_NO_RAIL_STATION :{WHITE} Tren istasyonu yok
STR_ERROR_NO_BUS_STATION :{WHITE}Otobüs istasyonu yok
STR_ERROR_NO_TRUCK_STATION :{WHITE} Kamyon istasyonu yok
STR_ERROR_NO_DOCK :{WHITE}Liman yok
STR_ERROR_NO_AIRPORT :{WHITE}Havalimanı/Helikopter pisti yok
STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Uyumlu bir yol tipine sahip durak yok
STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Uyumlu bir tramvay tipine sahip durak yok
STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE} Körüklü karayolu taşıtları için uygun durak yoktur.{}Körüklü karayolu taşıtları üzerinden geçme durağı gerektirir, körfez durağı değil
STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Bu uçak bu helikopter pistine inemez
STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Helikopter bu havalimanı'na inemez
STR_ERROR_NO_RAIL_WAYPOINT :{WHITE} Demiryolu ara noktası yok
STR_ERROR_NO_BUOY :{WHITE}Şamandıra yok
# Timetable related errors
STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Aracın zaman çizelgesi oluşturulamıyor...
@@ -5510,10 +5532,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helik
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Company {COMMA})
STR_FORMAT_GROUP_NAME :Grup {COMMA}

View File

@@ -4749,7 +4749,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Ігровий
STR_AI_SETTINGS_CLOSE :{BLACK}Закрити
STR_AI_SETTINGS_RESET :{BLACK}Скидання
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Кількість днів до запуску цього АІ після запуску попереднього АІ: {ORANGE}{STRING}
# Textfile window
@@ -5657,10 +5656,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Гелікоп
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Компанія {COMMA})
STR_FORMAT_GROUP_NAME :Група {COMMA}

View File

@@ -3099,10 +3099,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut ہی
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(کمپنی {COMMA})
STR_FORMAT_GROUP_NAME :گروہ {COMMA}

View File

@@ -195,6 +195,7 @@ STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mp
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}ô/ngày
STR_UNITS_VELOCITY_KNOTS :{COMMA}{NBSP}hải lý
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp
@@ -343,9 +344,9 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Mở b
###length 31
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Tạm dừng trò chơi
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Tua nhanh trò chơi
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Tùy chọn
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Lưu, bỏ ván chơi, thoát chương trình
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Hiển thị bản đồ
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Tùy chọn và thiết lập
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Lưu, nạp hoặc bỏ ván chơi, thoát chương trình
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Hiển thị bản đồ, khung nhìn bổ sung, dòng chảy hàng hóa hoặc danh sách biển hiệu
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Hiển thị danh sách đô thị
STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Hiện tiền trợ cấp
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Hiển thị danh sách công ty
@@ -353,9 +354,9 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Hiện t
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Hiện thông tin tổng quát của công ty
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Hiển thị tình tiết
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Hiển thị danh sách mục tiêu
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Hiển thị biểu đồ
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Hiển thị biểu đồ của công ty và giá cước hàng hóa
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Hiện bảng tầm cỡ các công ty
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Bỏ vốn cho những ngành mới hoặc hiện tất cả các ngành
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Khảo sát các ngành công nghiệp hoặc bỏ vốn cho những ngành mới
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Hiện danh sách tàu hỏa của công ty. Ctrl+Click vào chốt néo để mở danh sách nhóm/phương tiện
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Hiện danh sách xe cộ của công ty. Ctrl+Click vào chốt néo để mở danh sách nhóm/phương tiện
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Hiện danh sách tàu thủy của công ty. Ctrl+Click vào chốt néo để mở danh sách nhóm/phương tiện
@@ -369,8 +370,8 @@ STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Xây b
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Xây sân bay
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Mở thanh địa hình để nâng cao/hạ thấp ô đất, trồng cây, etc.
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Hiện cửa sổ âm thanh/nhạc
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Hiện thông báo/tin tức cuối cùng, hiện tùy chọn thông báo
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Thông tin vùng đất, bảng lệnh, script debug, ảnh chụp, về OpenTTD
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Hiện thông báo/tin tức cuối cùng, lịch sử thông báo hoặc xóa tất cả thông báo
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Thông tin vùng đất, chụp màng nh, công cụ dành cho nhà phát triển và thông tin về OpenTTD
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Chuyển thanh công cụ
# Extra tooltips for the scenario editor toolbar
@@ -816,7 +817,7 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Thông
STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING}
STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Người dân chào đón . . .{}Tàu hoả đầu tiên đến {STATION}!
STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Người dân chào đón . . .{}Xe bus đầu tiên đến {STATION}!
STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Người dân chào đón . . .{}Xe buýt đầu tiên đến {STATION}!
STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Người dân chào đón . . .{}Xe tải đầu tiên đến {STATION}!
STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Người dân chào đón . . .{}Xe điện chở khách đầu tiên đến {STATION}!
STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Người dân chào đón . . .{}Xe tải điện đầu tiên đến {STATION}!
@@ -1287,7 +1288,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Sự giảm t
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Sự giảm tốc cho ôtô tại một ô dốc. Giá trị càng cao thì càng khó leo dốc
STR_CONFIG_SETTING_FORBID_90_DEG :Ngăn tàu hỏa chuyển hướng 90 độ: {STRING}
STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :quay 90 độ chỉ xảy ra khi một ray ngang nối với một ray dọc ở 2 ô liền kề, khiến cho tàu hỏa cua 90 độ khi đến ô rẽ thay vì 45 độ như bình thường.
STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Chuyển hướng 90 độ chỉ xảy ra khi một ray ngang nối với một ray dọc ở 2 ô liền kề, khiến cho tàu hỏa cua 90 độ khi đến ô rẽ thay vì 45 độ như bình thường.
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Cho phép gộp ga, bến, cảng không sát nhau: {STRING}
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Cho phép thêm đoạn vào ga mà không phải sửa cái hiện có. Phải bấm Ctrl+Click để thêm đoạn vào ga
@@ -1375,9 +1376,9 @@ STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :giảm bớt
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :bình thường
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Cho phép xây điểm dừng xe buýt trên đường của thị trấn: {STRING}
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Cho phép xây dựng điểm dừng xe bus trên đường sở hữu bởi địa phương
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Cho phép xây dựng điểm dừng xe buýt trên đường sở hữu bởi địa phương
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Cho phép xây điểm dừng xe buýt trên đường của đối thủ: {STRING}
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Cho phép xây dựng điểm dừng xe bus trên đường sở hữu bởi công ty khác
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Cho phép xây dựng điểm dừng xe buýt trên đường sở hữu bởi công ty khác
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Không thể đổi thiết đặt này khi vẫn còn các phương tiện giao thông.
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Phí bảo trì cơ sở hạ tầng: {STRING}
@@ -1711,7 +1712,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Số lượng b
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tần suất bảo trì theo đơn vị phần trăm: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Lựa chọn liệu rằng việc bảo trì phương tiện sẽ được tiến hành sau một khoảng thời gian nhất định hay là độ tin cậy bị giảm xuống bao nhiều phần trăm so với mức tối đa
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Khi được bật, việc bảo trì phương tiện sẽ được thực thực hiện khi độ tin cậy của phương tiện giảm xuống so với độ tin cậy tối đa.{}{}Ví dụ, nếu độ tin cậy tối đa của phương tiện là 90% và tần suất bo trì là 20%, phương tiện sẽ được bảo trì khi độ tin cậy giảm xuống 72%.
STR_CONFIG_SETTING_SERVINT_TRAINS :Tần suất bảo trì mặc định đối với tàu hỏa: {STRING}
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Thiết lập khoảng thời gian bảo trì tùy chọn đối với các tàu hỏa, nếu phương tiện không có riêng thời gian bảo trì này
@@ -1808,7 +1809,9 @@ STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Nếu bật, ch
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Tuổi công ty tối thiểu để bán cổ phần: {STRING}
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Đặt số tuổi tối thiểu của công ty để cho các bên khác có thể mua và bán cổ phần
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_VALUE :{COMMA} năm
###setting-zero-is-special
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_NO_MIN :Không có tuổi tối thiểu
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Tỉ lệ lợi tức cổ phiếu chi trả cho môi giới: {STRING}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Tỉ lệ thu nhập cho mỗi trung gian trên hệ thống vận tải, cho phép điều chỉnh thu nhập
@@ -1923,6 +1926,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Không
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Hệ số quy mô đô thị coi là thành phố: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Kích thước trung bình của thành phố tỉ lệ với đô thị lúc bắt đầu trò chơi
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Cập nhật biểu đồ phân phối mỗi {STRING}{NBSP}giây
STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Thời gian giữa các lần tính toán lại tiếp theo của biểu đồ liên kết. Mỗi lần tính toán lại sẽ tính toán các kế hoạch cho một thành phần của biểu đồ. Điều đó có nghĩa là giá trị X cho cài đặt này không có nghĩa là toàn bộ biểu đồ sẽ được cập nhật X giây một lần. Chỉ một số thành phần sẽ làm như vậy. Bạn đặt nó càng ngắn thì càng cần nhiều thời gian CPU để tính toán nó. Bạn đặt càng lâu thì càng mất nhiều thời gian cho đến khi việc phân phối hàng hóa bắt đầu trên các tuyến đường mới.
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Mất {STRING}{NBSP}giây để tính toán lại biểu đồ phân phối
STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Thời gian tiêu tốn cho mỗi lần tính toán lại một thành phần biểu đồ liên kết. Khi bắt đầu tính toán lại, một luồng sẽ được sinh ra và chạy trong số giây được thiết lập. Bạn đặt thông số này càng ngắn thì càng có nhiều khả luồng được tạo chưa hoàn thành công việc của nó. Sau đó, trò chơi dừng lại cho đến khi nó ("lag"). Bạn đặt càng lâu thì biểu đồ phân phối càng mất nhiều thời gian để cập nhật khi các tuyến thay đổi.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Chế độ phân phối đối với hành khách: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Đối xứng" có nghĩa là số lượng hành khách đi từ nhà ga A đến nhà ga B và từ B đến A sẽ tương đương nhau . "Không đối xứng" có nghĩa là số lượng hành khách tùy ý có thể đi theo một trong hai hướng. "Thủ công" có nghĩa là hành khách sẽ không được phân phối tự động.
@@ -1948,13 +1955,15 @@ STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Thiết lập g
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Tỉ lệ bảo hòa (hết tải) của đường tắt trước khi chuyển sang đường khác dài hơn: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Thường sẽ có nhiều con đường giữa 2 ga/bến. Việc vận tải hàng hóa sẽ chọn con đường ngắn nhất trước cho đến khi hết tải. Sau đó chọn con đường ngắn thứ 2, 3... cho đến khi hết tải. Việc hết tải được tính toán bằng khối lượng vận chuyển thực tế so với dự tính. Khi hết tải tất cả các con đường, nếu vẫn còn hàng hóa cần chuyển, thì nó có thể gây quá tải. Dầu vậy thuật toán này không phải lúc nào cũng chính xác trong việc tính toán năng lực vận tải. Thiết lập này cho phép bạn tinh chỉnh tỉ lệ mà một con đường sẽ hết tải trước khi chọn con đường kế tiếp. Nhỏ hơn 100% sẽ giúp tránh việc một ga bến quá đông đúc và bù trừ việc tính toán sai lệch này.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Đơn vị tốc độ: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Đơn vị tốc độ (đất liền): {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Đơn vị tốc độ (hàng hải): {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Khi thể hiện tốc độ trên giao diện, thể hiện nó bằng đơn vị đã chọn.
###length 5
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metric (km/h)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Đơn vị trong trò chơi (ô/ngày)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Hải lý
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Đơn vị công suất phương tiện: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Khi thể hiện công suất phương tiện, thể hiện nó bằng đơn vị đã chọn.
@@ -3938,7 +3947,7 @@ STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Mua tàu
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Mua máy bay đã ấn định. Shift+Click để xem giá mua dự tính
###length VEHICLE_TYPES
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Mua và cải biến toa tu được chọn. Shift+Click để xem giá mua dự tính
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Mua và cải biến toa tàu được chọn. Shift+Click để xem giá mua dự tính
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Mua và cải biến ô-tô đang chọn. Shift+Click để xem giá mua dự tính
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Mua và cải biến tàu thuỷ đã chọn. Shift+Click để dự tính giá mà không mua
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Mua và cải biến máy bay được chọn. Shift+Click để xem chi phí dự tính
@@ -4069,7 +4078,7 @@ STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Bạn
STR_ENGINE_PREVIEW_CAPTION :{WHITE}Thông cáo từ nhà sản xuất phương tiện vận tải
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Chúng tôi vừa thiết kế một {STRING} mới - bạn có muốn mua nó trước khi chúng tôi hoàn thiện 1 năm, để chúng tôi đánh giá nó trước khi bán rộng rãi?
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :đầu máy tu hoả
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :đầu máy tàu hoả
STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :ngành vận tải đường sắt điện lực
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :đầu máy ray đơn
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :đầu máy đệm từ
@@ -4581,7 +4590,9 @@ STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Các AIs
STR_AI_CONFIG_HUMAN_PLAYER :Nhân vật người
STR_AI_CONFIG_RANDOM_AI :AI ngẫu nhiên
STR_AI_CONFIG_NONE :(không)
STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM}
STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Số đối thủ cạnh tranh tối đa: {ORANGE}{COMMA}
STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Khoảng thời gian giữa các lần khởi sự của đối thủ cạnh tranh: {ORANGE}{COMMA} phút
STR_AI_CONFIG_MOVE_UP :{BLACK}Chuyển Lên Trên
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Di chuyển AI lên trên danh sách
@@ -4594,7 +4605,7 @@ STR_AI_CONFIG_AI :{SILVER}AIs
STR_AI_CONFIG_CHANGE_AI :{BLACK}Chọn AI
STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Chọn Game Script
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Chạy tập lệnh khác
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Chạy tập lệnh khác. Ctrl+Click để hiển thị những phiên bản sẵn có
STR_AI_CONFIG_CONFIGURE :{BLACK}Tham Số
STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Cấu hình tham số cho AI
@@ -4628,7 +4639,6 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script
STR_AI_SETTINGS_CLOSE :{BLACK}Đóng
STR_AI_SETTINGS_RESET :{BLACK}Thiết Lập Lại
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Số ngày cần chờ để chạy AI này sau cái trước (sớm hay muộn): {ORANGE}{STRING}
# Textfile window
@@ -5084,7 +5094,16 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... máy
# Extra messages which go on the third line of errors, explaining why orders failed
STR_ERROR_NO_RAIL_STATION :{WHITE}Không có ga xe lửa
STR_ERROR_NO_BUS_STATION :{WHITE}Không có trạm xe buýt
STR_ERROR_NO_TRUCK_STATION :{WHITE}Không có trạm xe tải
STR_ERROR_NO_DOCK :{WHITE}Không có bến cảng
STR_ERROR_NO_AIRPORT :{WHITE}Không có sân bay/bãi đỗ trực thăng
STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Không có điểm dừng nào phù hợp với kiểu đường
STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Không có điểm dừng phù hợp với kiểu tàu điện
STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :Không có điểm dừng phù hợp với ô tô kéo rơ moóc.{}Ô tô kéo rơ moóc cần điểm dừng ngắn trên đường, không phải bến dừng
STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Không thể hạ cánh máy bay tại bãi đỗ trực thăng này
STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Không thể hạ cánh trực thăng ở sân bay này
STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Không có điểm mốc tàu hỏa
STR_ERROR_NO_BUOY :{WHITE}Không có cái phao nào
# Timetable related errors
@@ -5502,10 +5521,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Trực thăng P
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Công ty {COMMA})
STR_FORMAT_GROUP_NAME :Nhóm {COMMA}

View File

@@ -4177,7 +4177,6 @@ STR_AI_SETTINGS_CAPTION_AI :AI
STR_AI_SETTINGS_CLOSE :{BLACK}Cau
STR_AI_SETTINGS_RESET :{BLACK}Ailosod
STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING}
STR_AI_SETTINGS_START_DELAY :Nifer o ddiwrnodau i aros wedi dechrau AI blaenorol cyn dechrau hon (fwy neu lai): {ORANGE}{STRING}
# Textfile window
@@ -5031,10 +5030,10 @@ STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Hofrennydd Powe
##id 0x8800
# Formatting of some strings
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
STR_FORMAT_DATE_TINY :{ZEROFILL_NUM}-{ZEROFILL_NUM}-{NUM}
STR_FORMAT_DATE_SHORT :{STRING} {NUM}
STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM}
STR_FORMAT_COMPANY_NUM :(Cwmni {COMMA})
STR_FORMAT_GROUP_NAME :Grŵp {COMMA}

View File

@@ -625,7 +625,7 @@ void ShowSelectGameWindow();
void SetupColoursAndInitialWindow()
{
for (uint i = 0; i != 16; i++) {
const byte *b = GetNonSprite(PALETTE_RECOLOUR_START + i, ST_RECOLOUR);
const byte *b = GetNonSprite(PALETTE_RECOLOUR_START + i, SpriteType::Recolour);
assert(b);
memcpy(_colour_gradient[i], b + 0xC6, sizeof(_colour_gradient[i]));

View File

@@ -250,7 +250,7 @@ struct GRFTempEngineData {
}
};
static GRFTempEngineData *_gted; ///< Temporary engine data used during NewGRF loading
static std::vector<GRFTempEngineData> _gted; ///< Temporary engine data used during NewGRF loading
/**
* Contains the GRF ID of the owner of a vehicle if it has been reserved.
@@ -590,11 +590,7 @@ static Engine *GetNewEngine(const GRFFile *file, VehicleType type, uint16 intern
if (engine_pool_size != Engine::GetPoolSize()) {
/* Resize temporary engine data ... */
_gted = ReallocT(_gted, Engine::GetPoolSize());
/* and blank the new block. */
size_t len = (Engine::GetPoolSize() - engine_pool_size) * sizeof(*_gted);
memset(_gted + engine_pool_size, 0, len);
_gted.resize(Engine::GetPoolSize());
}
if (type == VEH_TRAIN) {
_gted[e->index].railtypelabel = GetRailTypeInfo(e->u.rail.railtype)->label;
@@ -1869,10 +1865,10 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, cons
}
/* Allocate station specs if necessary */
if (_cur.grffile->stations == nullptr) _cur.grffile->stations = CallocT<StationSpec*>(NUM_STATIONS_PER_GRF);
if (_cur.grffile->stations.size() < stid + numinfo) _cur.grffile->stations.resize(stid + numinfo);
for (int i = 0; i < numinfo; i++) {
StationSpec *statspec = _cur.grffile->stations[stid + i];
StationSpec *statspec = _cur.grffile->stations[stid + i].get();
/* Check that the station we are modifying is defined. */
if (statspec == nullptr && prop != 0x08) {
@@ -1882,14 +1878,15 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, cons
switch (prop) {
case 0x08: { // Class ID
StationSpec **spec = &_cur.grffile->stations[stid + i];
/* Property 0x08 is special; it is where the station is allocated */
if (*spec == nullptr) *spec = new StationSpec();
if (statspec == nullptr) {
_cur.grffile->stations[stid + i] = std::make_unique<StationSpec>();
statspec = _cur.grffile->stations[stid + i].get();
}
/* Swap classid because we read it in BE meaning WAYP or DFLT */
uint32 classid = buf->ReadDWord();
(*spec)->cls_id = StationClass::Allocate(BSWAP32(classid));
statspec->cls_id = StationClass::Allocate(BSWAP32(classid));
break;
}
@@ -1945,7 +1942,7 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, cons
case 0x0A: { // Copy sprite layout
byte srcid = buf->ReadByte();
const StationSpec *srcstatspec = srcid >= NUM_STATIONS_PER_GRF ? nullptr : _cur.grffile->stations[srcid];
const StationSpec *srcstatspec = srcid >= _cur.grffile->stations.size() ? nullptr : _cur.grffile->stations[srcid].get();
if (srcstatspec == nullptr) {
grfmsg(1, "StationChangeInfo: Station %u is not defined, cannot copy sprite layout to %u.", srcid, stid + i);
@@ -1999,7 +1996,7 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, cons
case 0x0F: { // Copy custom layout
byte srcid = buf->ReadByte();
const StationSpec *srcstatspec = srcid >= NUM_STATIONS_PER_GRF ? nullptr : _cur.grffile->stations[srcid];
const StationSpec *srcstatspec = srcid >= _cur.grffile->stations.size() ? nullptr : _cur.grffile->stations[srcid].get();
if (srcstatspec == nullptr) {
grfmsg(1, "StationChangeInfo: Station %u is not defined, cannot copy tile layout to %u.", srcid, stid + i);
@@ -2358,12 +2355,10 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, con
}
/* Allocate house specs if they haven't been allocated already. */
if (_cur.grffile->housespec == nullptr) {
_cur.grffile->housespec = CallocT<HouseSpec*>(NUM_HOUSES_PER_GRF);
}
if (_cur.grffile->housespec.size() < hid + numinfo) _cur.grffile->housespec.resize(hid + numinfo);
for (int i = 0; i < numinfo; i++) {
HouseSpec *housespec = _cur.grffile->housespec[hid + i];
HouseSpec *housespec = _cur.grffile->housespec[hid + i].get();
if (prop != 0x08 && housespec == nullptr) {
/* If the house property 08 is not yet set, ignore this property */
@@ -2374,13 +2369,11 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, con
switch (prop) {
case 0x08: { // Substitute building type, and definition of a new house
HouseSpec **house = &_cur.grffile->housespec[hid + i];
byte subs_id = buf->ReadByte();
if (subs_id == 0xFF) {
/* Instead of defining a new house, a substitute house id
* of 0xFF disables the old house with the current id. */
HouseSpec::Get(hid + i)->enabled = false;
if (hid + i < NEW_HOUSE_OFFSET) HouseSpec::Get(hid + i)->enabled = false;
continue;
} else if (subs_id >= NEW_HOUSE_OFFSET) {
/* The substitute id must be one of the original houses. */
@@ -2389,11 +2382,10 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, con
}
/* Allocate space for this house. */
if (*house == nullptr) *house = CallocT<HouseSpec>(1);
housespec = *house;
MemCpyT(housespec, HouseSpec::Get(subs_id));
if (housespec == nullptr) {
_cur.grffile->housespec[hid + i] = std::make_unique<HouseSpec>(*HouseSpec::Get(subs_id));
housespec = _cur.grffile->housespec[hid + i].get();
}
housespec->enabled = true;
housespec->grf_prop.local_id = hid + i;
@@ -3240,12 +3232,10 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr
}
/* Allocate industry tile specs if they haven't been allocated already. */
if (_cur.grffile->indtspec == nullptr) {
_cur.grffile->indtspec = CallocT<IndustryTileSpec*>(NUM_INDUSTRYTILES_PER_GRF);
}
if (_cur.grffile->indtspec.size() < indtid + numinfo) _cur.grffile->indtspec.resize(indtid + numinfo);
for (int i = 0; i < numinfo; i++) {
IndustryTileSpec *tsp = _cur.grffile->indtspec[indtid + i];
IndustryTileSpec *tsp = _cur.grffile->indtspec[indtid + i].get();
if (prop != 0x08 && tsp == nullptr) {
ChangeInfoResult cir = IgnoreIndustryTileProperty(prop, buf);
@@ -3255,9 +3245,7 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr
switch (prop) {
case 0x08: { // Substitute industry tile type
IndustryTileSpec **tilespec = &_cur.grffile->indtspec[indtid + i];
byte subs_id = buf->ReadByte();
if (subs_id >= NEW_INDUSTRYTILEOFFSET) {
/* The substitute id must be one of the original industry tile. */
grfmsg(2, "IndustryTilesChangeInfo: Attempt to use new industry tile %u as substitute industry tile for %u. Ignoring.", subs_id, indtid + i);
@@ -3265,11 +3253,10 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr
}
/* Allocate space for this industry. */
if (*tilespec == nullptr) {
*tilespec = CallocT<IndustryTileSpec>(1);
tsp = *tilespec;
if (tsp == nullptr) {
_cur.grffile->indtspec[indtid + i] = std::make_unique<IndustryTileSpec>(_industry_tile_specs[subs_id]);
tsp = _cur.grffile->indtspec[indtid + i].get();
memcpy(tsp, &_industry_tile_specs[subs_id], sizeof(_industry_tile_specs[subs_id]));
tsp->enabled = true;
/* A copied tile should not have the animation infos copied too.
@@ -3501,12 +3488,10 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop,
}
/* Allocate industry specs if they haven't been allocated already. */
if (_cur.grffile->industryspec == nullptr) {
_cur.grffile->industryspec = CallocT<IndustrySpec*>(NUM_INDUSTRYTYPES_PER_GRF);
}
if (_cur.grffile->industryspec.size() < indid + numinfo) _cur.grffile->industryspec.resize(indid + numinfo);
for (int i = 0; i < numinfo; i++) {
IndustrySpec *indsp = _cur.grffile->industryspec[indid + i];
IndustrySpec *indsp = _cur.grffile->industryspec[indid + i].get();
if (prop != 0x08 && indsp == nullptr) {
ChangeInfoResult cir = IgnoreIndustryProperty(prop, buf);
@@ -3516,9 +3501,7 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop,
switch (prop) {
case 0x08: { // Substitute industry type
IndustrySpec **indspec = &_cur.grffile->industryspec[indid + i];
byte subs_id = buf->ReadByte();
if (subs_id == 0xFF) {
/* Instead of defining a new industry, a substitute industry id
* of 0xFF disables the old industry with the current id. */
@@ -3533,11 +3516,10 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop,
/* Allocate space for this industry.
* Only need to do it once. If ever it is called again, it should not
* do anything */
if (*indspec == nullptr) {
*indspec = new IndustrySpec;
indsp = *indspec;
if (indsp == nullptr) {
_cur.grffile->industryspec[indid + i] = std::make_unique<IndustrySpec>(_origin_industry_specs[subs_id]);
indsp = _cur.grffile->industryspec[indid + i].get();
*indsp = _origin_industry_specs[subs_id];
indsp->enabled = true;
indsp->grf_prop.local_id = indid + i;
indsp->grf_prop.subst_id = subs_id;
@@ -3913,12 +3895,10 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, c
}
/* Allocate industry specs if they haven't been allocated already. */
if (_cur.grffile->airportspec == nullptr) {
_cur.grffile->airportspec = CallocT<AirportSpec*>(NUM_AIRPORTS_PER_GRF);
}
if (_cur.grffile->airportspec.size() < airport + numinfo) _cur.grffile->airportspec.resize(airport + numinfo);
for (int i = 0; i < numinfo; i++) {
AirportSpec *as = _cur.grffile->airportspec[airport + i];
AirportSpec *as = _cur.grffile->airportspec[airport + i].get();
if (as == nullptr && prop != 0x08 && prop != 0x09) {
grfmsg(2, "AirportChangeInfo: Attempt to modify undefined airport %u, ignoring", airport + i);
@@ -3928,7 +3908,6 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, c
switch (prop) {
case 0x08: { // Modify original airport
byte subs_id = buf->ReadByte();
if (subs_id == 0xFF) {
/* Instead of defining a new airport, an airport id
* of 0xFF disables the old airport with the current id. */
@@ -3940,15 +3919,13 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, c
continue;
}
AirportSpec **spec = &_cur.grffile->airportspec[airport + i];
/* Allocate space for this airport.
* Only need to do it once. If ever it is called again, it should not
* do anything */
if (*spec == nullptr) {
*spec = MallocT<AirportSpec>(1);
as = *spec;
if (as == nullptr) {
_cur.grffile->airportspec[airport + i] = std::make_unique<AirportSpec>(*AirportSpec::GetWithoutOverride(subs_id));
as = _cur.grffile->airportspec[airport + i].get();
memcpy(as, AirportSpec::GetWithoutOverride(subs_id), sizeof(*as));
as->enabled = true;
as->grf_prop.local_id = airport + i;
as->grf_prop.subst_id = subs_id;
@@ -4304,7 +4281,7 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, const G
}
for (int i = 0; i < numinfo; i++) {
ObjectSpec *spec = _cur.grffile->objectspec[id + i];
ObjectSpec *spec = _cur.grffile->objectspec[id + i].get();
if (prop != 0x08 && spec == nullptr) {
/* If the object property 08 is not yet set, ignore this property */
@@ -4315,18 +4292,17 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, const G
switch (prop) {
case 0x08: { // Class ID
ObjectSpec **ospec = &_cur.grffile->objectspec[id + i];
/* Allocate space for this object. */
if (*ospec == nullptr) {
*ospec = CallocT<ObjectSpec>(1);
(*ospec)->views = 1; // Default for NewGRFs that don't set it.
(*ospec)->size = OBJECT_SIZE_1X1; // Default for NewGRFs that manage to not set it (1x1)
if (spec == nullptr) {
_cur.grffile->objectspec[id + i] = std::make_unique<ObjectSpec>();
spec = _cur.grffile->objectspec[id + i].get();
spec->views = 1; // Default for NewGRFs that don't set it.
spec->size = OBJECT_SIZE_1X1; // Default for NewGRFs that manage to not set it (1x1)
}
/* Swap classid because we read it in BE. */
uint32 classid = buf->ReadDWord();
(*ospec)->cls_id = ObjectClass::Allocate(BSWAP32(classid));
spec->cls_id = ObjectClass::Allocate(BSWAP32(classid));
break;
}
@@ -4954,12 +4930,10 @@ static ChangeInfoResult AirportTilesChangeInfo(uint airtid, int numinfo, int pro
}
/* Allocate airport tile specs if they haven't been allocated already. */
if (_cur.grffile->airtspec == nullptr) {
_cur.grffile->airtspec = CallocT<AirportTileSpec*>(NUM_AIRPORTTILES_PER_GRF);
}
if (_cur.grffile->airtspec.size() < airtid + numinfo) _cur.grffile->airtspec.resize(airtid + numinfo);
for (int i = 0; i < numinfo; i++) {
AirportTileSpec *tsp = _cur.grffile->airtspec[airtid + i];
AirportTileSpec *tsp = _cur.grffile->airtspec[airtid + i].get();
if (prop != 0x08 && tsp == nullptr) {
grfmsg(2, "AirportTileChangeInfo: Attempt to modify undefined airport tile %u. Ignoring.", airtid + i);
@@ -4968,9 +4942,7 @@ static ChangeInfoResult AirportTilesChangeInfo(uint airtid, int numinfo, int pro
switch (prop) {
case 0x08: { // Substitute airport tile type
AirportTileSpec **tilespec = &_cur.grffile->airtspec[airtid + i];
byte subs_id = buf->ReadByte();
if (subs_id >= NEW_AIRPORTTILE_OFFSET) {
/* The substitute id must be one of the original airport tiles. */
grfmsg(2, "AirportTileChangeInfo: Attempt to use new airport tile %u as substitute airport tile for %u. Ignoring.", subs_id, airtid + i);
@@ -4978,11 +4950,10 @@ static ChangeInfoResult AirportTilesChangeInfo(uint airtid, int numinfo, int pro
}
/* Allocate space for this airport tile. */
if (*tilespec == nullptr) {
*tilespec = CallocT<AirportTileSpec>(1);
tsp = *tilespec;
if (tsp == nullptr) {
_cur.grffile->airtspec[airtid + i] = std::make_unique<AirportTileSpec>(*AirportTileSpec::Get(subs_id));
tsp = _cur.grffile->airtspec[airtid + i].get();
memcpy(tsp, AirportTileSpec::Get(subs_id), sizeof(AirportTileSpec));
tsp->enabled = true;
tsp->animation.status = ANIM_STATUS_NO_ANIMATION;
@@ -5088,7 +5059,7 @@ static ChangeInfoResult RoadStopChangeInfo(uint id, int numinfo, int prop, const
}
for (int i = 0; i < numinfo; i++) {
RoadStopSpec *rs = _cur.grffile->roadstops[id + i];
RoadStopSpec *rs = _cur.grffile->roadstops[id + i].get();
if (rs == nullptr && prop != 0x08 && prop != A0RPI_ROADSTOP_CLASS_ID) {
grfmsg(1, "RoadStopChangeInfo: Attempt to modify undefined road stop %u, ignoring", id + i);
@@ -5102,16 +5073,14 @@ static ChangeInfoResult RoadStopChangeInfo(uint id, int numinfo, int prop, const
if (MappedPropertyLengthMismatch(buf, 4, mapping_entry)) break;
FALLTHROUGH;
case 0x08: { // Road Stop Class ID
RoadStopSpec **spec = &_cur.grffile->roadstops[id + i];
if (*spec == nullptr) {
*spec = CallocT<RoadStopSpec>(1);
new (*spec) RoadStopSpec();
if (rs == nullptr) {
_cur.grffile->roadstops[id + i] = std::make_unique<RoadStopSpec>();
rs = _cur.grffile->roadstops[id + i].get();
}
uint32 classid = buf->ReadDWord();
(*spec)->cls_id = RoadStopClass::Allocate(BSWAP32(classid));
(*spec)->spec_id = id + i;
rs->cls_id = RoadStopClass::Allocate(BSWAP32(classid));
rs->spec_id = id + i;
break;
}
@@ -6485,7 +6454,7 @@ static void CanalMapSpriteGroup(ByteReader *buf, uint8 idcount)
static void StationMapSpriteGroup(ByteReader *buf, uint8 idcount)
{
if (_cur.grffile->stations == nullptr) {
if (_cur.grffile->stations.empty()) {
grfmsg(1, "StationMapSpriteGroup: No stations defined, skipping");
return;
}
@@ -6505,7 +6474,7 @@ static void StationMapSpriteGroup(ByteReader *buf, uint8 idcount)
if (ctype == CT_INVALID) continue;
for (uint i = 0; i < idcount; i++) {
StationSpec *statspec = stations[i] >= NUM_STATIONS_PER_GRF ? nullptr : _cur.grffile->stations[stations[i]];
StationSpec *statspec = stations[i] >= _cur.grffile->stations.size() ? nullptr : _cur.grffile->stations[stations[i]].get();
if (statspec == nullptr) {
grfmsg(1, "StationMapSpriteGroup: Station with ID 0x%02X does not exist, skipping", stations[i]);
@@ -6520,7 +6489,7 @@ static void StationMapSpriteGroup(ByteReader *buf, uint8 idcount)
if (!IsValidGroupID(groupid, "StationMapSpriteGroup")) return;
for (uint i = 0; i < idcount; i++) {
StationSpec *statspec = stations[i] >= NUM_STATIONS_PER_GRF ? nullptr : _cur.grffile->stations[stations[i]];
StationSpec *statspec = stations[i] >= _cur.grffile->stations.size() ? nullptr : _cur.grffile->stations[stations[i]].get();
if (statspec == nullptr) {
grfmsg(1, "StationMapSpriteGroup: Station with ID 0x%02X does not exist, skipping", stations[i]);
@@ -6542,7 +6511,7 @@ static void StationMapSpriteGroup(ByteReader *buf, uint8 idcount)
static void TownHouseMapSpriteGroup(ByteReader *buf, uint8 idcount)
{
if (_cur.grffile->housespec == nullptr) {
if (_cur.grffile->housespec.empty()) {
grfmsg(1, "TownHouseMapSpriteGroup: No houses defined, skipping");
return;
}
@@ -6560,7 +6529,7 @@ static void TownHouseMapSpriteGroup(ByteReader *buf, uint8 idcount)
if (!IsValidGroupID(groupid, "TownHouseMapSpriteGroup")) return;
for (uint i = 0; i < idcount; i++) {
HouseSpec *hs = houses[i] >= NUM_HOUSES_PER_GRF ? nullptr : _cur.grffile->housespec[houses[i]];
HouseSpec *hs = houses[i] >= _cur.grffile->housespec.size() ? nullptr : _cur.grffile->housespec[houses[i]].get();
if (hs == nullptr) {
grfmsg(1, "TownHouseMapSpriteGroup: House %d undefined, skipping.", houses[i]);
@@ -6573,7 +6542,7 @@ static void TownHouseMapSpriteGroup(ByteReader *buf, uint8 idcount)
static void IndustryMapSpriteGroup(ByteReader *buf, uint8 idcount)
{
if (_cur.grffile->industryspec == nullptr) {
if (_cur.grffile->industryspec.empty()) {
grfmsg(1, "IndustryMapSpriteGroup: No industries defined, skipping");
return;
}
@@ -6591,7 +6560,7 @@ static void IndustryMapSpriteGroup(ByteReader *buf, uint8 idcount)
if (!IsValidGroupID(groupid, "IndustryMapSpriteGroup")) return;
for (uint i = 0; i < idcount; i++) {
IndustrySpec *indsp = industries[i] >= NUM_INDUSTRYTYPES_PER_GRF ? nullptr : _cur.grffile->industryspec[industries[i]];
IndustrySpec *indsp = industries[i] >= _cur.grffile->industryspec.size() ? nullptr : _cur.grffile->industryspec[industries[i]].get();
if (indsp == nullptr) {
grfmsg(1, "IndustryMapSpriteGroup: Industry %d undefined, skipping", industries[i]);
@@ -6604,7 +6573,7 @@ static void IndustryMapSpriteGroup(ByteReader *buf, uint8 idcount)
static void IndustrytileMapSpriteGroup(ByteReader *buf, uint8 idcount)
{
if (_cur.grffile->indtspec == nullptr) {
if (_cur.grffile->indtspec.empty()) {
grfmsg(1, "IndustrytileMapSpriteGroup: No industry tiles defined, skipping");
return;
}
@@ -6622,7 +6591,7 @@ static void IndustrytileMapSpriteGroup(ByteReader *buf, uint8 idcount)
if (!IsValidGroupID(groupid, "IndustrytileMapSpriteGroup")) return;
for (uint i = 0; i < idcount; i++) {
IndustryTileSpec *indtsp = indtiles[i] >= NUM_INDUSTRYTILES_PER_GRF ? nullptr : _cur.grffile->indtspec[indtiles[i]];
IndustryTileSpec *indtsp = indtiles[i] >= _cur.grffile->indtspec.size() ? nullptr : _cur.grffile->indtspec[indtiles[i]].get();
if (indtsp == nullptr) {
grfmsg(1, "IndustrytileMapSpriteGroup: Industry tile %d undefined, skipping", indtiles[i]);
@@ -6716,7 +6685,7 @@ static void ObjectMapSpriteGroup(ByteReader *buf, uint8 idcount)
if (ctype == CT_INVALID) continue;
for (uint i = 0; i < idcount; i++) {
ObjectSpec *spec = (objects[i] >= _cur.grffile->objectspec.size()) ? nullptr : _cur.grffile->objectspec[objects[i]];
ObjectSpec *spec = (objects[i] >= _cur.grffile->objectspec.size()) ? nullptr : _cur.grffile->objectspec[objects[i]].get();
if (spec == nullptr) {
grfmsg(1, "ObjectMapSpriteGroup: Object with ID 0x%02X undefined, skipping", objects[i]);
@@ -6731,7 +6700,7 @@ static void ObjectMapSpriteGroup(ByteReader *buf, uint8 idcount)
if (!IsValidGroupID(groupid, "ObjectMapSpriteGroup")) return;
for (uint i = 0; i < idcount; i++) {
ObjectSpec *spec = (objects[i] >= _cur.grffile->objectspec.size()) ? nullptr : _cur.grffile->objectspec[objects[i]];
ObjectSpec *spec = (objects[i] >= _cur.grffile->objectspec.size()) ? nullptr : _cur.grffile->objectspec[objects[i]].get();
if (spec == nullptr) {
grfmsg(1, "ObjectMapSpriteGroup: Object with ID 0x%02X undefined, skipping", objects[i]);
@@ -6815,7 +6784,7 @@ static void RoadTypeMapSpriteGroup(ByteReader *buf, uint8 idcount, RoadTramType
static void AirportMapSpriteGroup(ByteReader *buf, uint8 idcount)
{
if (_cur.grffile->airportspec == nullptr) {
if (_cur.grffile->airportspec.empty()) {
grfmsg(1, "AirportMapSpriteGroup: No airports defined, skipping");
return;
}
@@ -6833,7 +6802,7 @@ static void AirportMapSpriteGroup(ByteReader *buf, uint8 idcount)
if (!IsValidGroupID(groupid, "AirportMapSpriteGroup")) return;
for (uint i = 0; i < idcount; i++) {
AirportSpec *as = airports[i] >= NUM_AIRPORTS_PER_GRF ? nullptr : _cur.grffile->airportspec[airports[i]];
AirportSpec *as = airports[i] >= _cur.grffile->airportspec.size() ? nullptr : _cur.grffile->airportspec[airports[i]].get();
if (as == nullptr) {
grfmsg(1, "AirportMapSpriteGroup: Airport %d undefined, skipping", airports[i]);
@@ -6846,7 +6815,7 @@ static void AirportMapSpriteGroup(ByteReader *buf, uint8 idcount)
static void AirportTileMapSpriteGroup(ByteReader *buf, uint8 idcount)
{
if (_cur.grffile->airtspec == nullptr) {
if (_cur.grffile->airtspec.empty()) {
grfmsg(1, "AirportTileMapSpriteGroup: No airport tiles defined, skipping");
return;
}
@@ -6864,7 +6833,7 @@ static void AirportTileMapSpriteGroup(ByteReader *buf, uint8 idcount)
if (!IsValidGroupID(groupid, "AirportTileMapSpriteGroup")) return;
for (uint i = 0; i < idcount; i++) {
AirportTileSpec *airtsp = airptiles[i] >= NUM_AIRPORTTILES_PER_GRF ? nullptr : _cur.grffile->airtspec[airptiles[i]];
AirportTileSpec *airtsp = airptiles[i] >= _cur.grffile->airtspec.size() ? nullptr : _cur.grffile->airtspec[airptiles[i]].get();
if (airtsp == nullptr) {
grfmsg(1, "AirportTileMapSpriteGroup: Airport tile %d undefined, skipping", airptiles[i]);
@@ -6892,7 +6861,7 @@ static void RoadStopMapSpriteGroup(ByteReader *buf, uint8 idcount)
if (ctype == CT_INVALID) continue;
for (uint i = 0; i < idcount; i++) {
RoadStopSpec *roadstopspec = (roadstops[i] >= _cur.grffile->roadstops.size()) ? nullptr : _cur.grffile->roadstops[roadstops[i]];
RoadStopSpec *roadstopspec = (roadstops[i] >= _cur.grffile->roadstops.size()) ? nullptr : _cur.grffile->roadstops[roadstops[i]].get();
if (roadstopspec == nullptr) {
grfmsg(1, "RoadStopMapSpriteGroup: Road stop with ID 0x%02X does not exist, skipping", roadstops[i]);
@@ -6912,7 +6881,7 @@ static void RoadStopMapSpriteGroup(ByteReader *buf, uint8 idcount)
}
for (uint i = 0; i < idcount; i++) {
RoadStopSpec *roadstopspec = (roadstops[i] >= _cur.grffile->roadstops.size()) ? nullptr : _cur.grffile->roadstops[roadstops[i]];
RoadStopSpec *roadstopspec = (roadstops[i] >= _cur.grffile->roadstops.size()) ? nullptr : _cur.grffile->roadstops[roadstops[i]].get();
if (roadstopspec == nullptr) {
grfmsg(1, "RoadStopMapSpriteGroup: Road stop with ID 0x%02X does not exist, skipping.", roadstops[i]);
@@ -7156,7 +7125,7 @@ static void FeatureNewName(ByteReader *buf)
switch (GB(id, 8, 8)) {
case 0xC4: // Station class name
if (GB(id, 0, 8) >= NUM_STATIONS_PER_GRF || _cur.grffile->stations == nullptr || _cur.grffile->stations[GB(id, 0, 8)] == nullptr) {
if (GB(id, 0, 8) >= _cur.grffile->stations.size() || _cur.grffile->stations[GB(id, 0, 8)] == nullptr) {
grfmsg(1, "FeatureNewName: Attempt to name undefined station 0x%X, ignoring", GB(id, 0, 8));
} else {
StationClassID cls_id = _cur.grffile->stations[GB(id, 0, 8)]->cls_id;
@@ -7165,7 +7134,7 @@ static void FeatureNewName(ByteReader *buf)
break;
case 0xC5: // Station name
if (GB(id, 0, 8) >= NUM_STATIONS_PER_GRF || _cur.grffile->stations == nullptr || _cur.grffile->stations[GB(id, 0, 8)] == nullptr) {
if (GB(id, 0, 8) >= _cur.grffile->stations.size() || _cur.grffile->stations[GB(id, 0, 8)] == nullptr) {
grfmsg(1, "FeatureNewName: Attempt to name undefined station 0x%X, ignoring", GB(id, 0, 8));
} else {
_cur.grffile->stations[GB(id, 0, 8)]->name = AddGRFString(_cur.grffile->grfid, id, lang, new_scheme, false, name, STR_UNDEFINED);
@@ -7173,7 +7142,7 @@ static void FeatureNewName(ByteReader *buf)
break;
case 0xC7: // Airporttile name
if (GB(id, 0, 8) >= NUM_AIRPORTTILES_PER_GRF || _cur.grffile->airtspec == nullptr || _cur.grffile->airtspec[GB(id, 0, 8)] == nullptr) {
if (GB(id, 0, 8) >= _cur.grffile->airtspec.size() || _cur.grffile->airtspec[GB(id, 0, 8)] == nullptr) {
grfmsg(1, "FeatureNewName: Attempt to name undefined airport tile 0x%X, ignoring", GB(id, 0, 8));
} else {
_cur.grffile->airtspec[GB(id, 0, 8)]->name = AddGRFString(_cur.grffile->grfid, id, lang, new_scheme, false, name, STR_UNDEFINED);
@@ -7181,7 +7150,7 @@ static void FeatureNewName(ByteReader *buf)
break;
case 0xC9: // House name
if (GB(id, 0, 8) >= NUM_HOUSES_PER_GRF || _cur.grffile->housespec == nullptr || _cur.grffile->housespec[GB(id, 0, 8)] == nullptr) {
if (GB(id, 0, 8) >= _cur.grffile->housespec.size() || _cur.grffile->housespec[GB(id, 0, 8)] == nullptr) {
grfmsg(1, "FeatureNewName: Attempt to name undefined house 0x%X, ignoring.", GB(id, 0, 8));
} else {
_cur.grffile->housespec[GB(id, 0, 8)]->building_name = AddGRFString(_cur.grffile->grfid, id, lang, new_scheme, false, name, STR_UNDEFINED);
@@ -8648,8 +8617,8 @@ static void FeatureTownName(ByteReader *buf)
bool new_scheme = _cur.grffile->grf_version >= 7;
byte lang = buf->ReadByte();
StringID style = STR_UNDEFINED;
byte nb_gen = townname->nb_gen;
do {
ClrBit(lang, 7);
@@ -8658,53 +8627,48 @@ static void FeatureTownName(ByteReader *buf)
std::string lang_name = TranslateTTDPatchCodes(grfid, lang, false, name);
grfmsg(6, "FeatureTownName: lang 0x%X -> '%s'", lang, lang_name.c_str());
townname->name[nb_gen] = AddGRFString(grfid, id, lang, new_scheme, false, name, STR_UNDEFINED);
style = AddGRFString(grfid, id, lang, new_scheme, false, name, STR_UNDEFINED);
lang = buf->ReadByte();
} while (lang != 0);
townname->id[nb_gen] = id;
townname->nb_gen++;
townname->styles.emplace_back(style, id);
}
byte nb = buf->ReadByte();
grfmsg(6, "FeatureTownName: %u parts", nb);
uint8 parts = buf->ReadByte();
grfmsg(6, "FeatureTownName: %u parts", parts);
townname->nbparts[id] = nb;
townname->partlist[id] = CallocT<NamePartList>(nb);
townname->partlists[id].reserve(parts);
for (uint partnum = 0; partnum < parts; partnum++) {
NamePartList &partlist = townname->partlists[id].emplace_back();
uint8 texts = buf->ReadByte();
partlist.bitstart = buf->ReadByte();
partlist.bitcount = buf->ReadByte();
partlist.maxprob = 0;
grfmsg(6, "FeatureTownName: part %u contains %u texts and will use GB(seed, %u, %u)", partnum, texts, partlist.bitstart, partlist.bitcount);
for (int i = 0; i < nb; i++) {
byte nbtext = buf->ReadByte();
townname->partlist[id][i].bitstart = buf->ReadByte();
townname->partlist[id][i].bitcount = buf->ReadByte();
townname->partlist[id][i].maxprob = 0;
townname->partlist[id][i].partcount = nbtext;
townname->partlist[id][i].parts = CallocT<NamePart>(nbtext);
grfmsg(6, "FeatureTownName: part %d contains %d texts and will use GB(seed, %d, %d)", i, nbtext, townname->partlist[id][i].bitstart, townname->partlist[id][i].bitcount);
partlist.parts.reserve(texts);
for (uint textnum = 0; textnum < texts; textnum++) {
NamePart &part = partlist.parts.emplace_back();
part.prob = buf->ReadByte();
for (int j = 0; j < nbtext; j++) {
byte prob = buf->ReadByte();
if (HasBit(prob, 7)) {
if (HasBit(part.prob, 7)) {
byte ref_id = buf->ReadByte();
if (townname->nbparts[ref_id] == 0) {
if (ref_id >= GRFTownName::MAX_LISTS || townname->partlists[ref_id].empty()) {
grfmsg(0, "FeatureTownName: definition 0x%02X doesn't exist, deactivating", ref_id);
DelGRFTownName(grfid);
DisableGrf(STR_NEWGRF_ERROR_INVALID_ID);
return;
}
grfmsg(6, "FeatureTownName: part %d, text %d, uses intermediate definition 0x%02X (with probability %d)", i, j, ref_id, prob & 0x7F);
townname->partlist[id][i].parts[j].data.id = ref_id;
part.id = ref_id;
grfmsg(6, "FeatureTownName: part %u, text %u, uses intermediate definition 0x%02X (with probability %u)", partnum, textnum, ref_id, part.prob & 0x7F);
} else {
const char *text = buf->ReadString();
townname->partlist[id][i].parts[j].data.text = stredup(TranslateTTDPatchCodes(grfid, 0, false, text).c_str());
grfmsg(6, "FeatureTownName: part %d, text %d, '%s' (with probability %d)", i, j, townname->partlist[id][i].parts[j].data.text, prob);
part.text = TranslateTTDPatchCodes(grfid, 0, false, text);
grfmsg(6, "FeatureTownName: part %u, text %u, '%s' (with probability %u)", partnum, textnum, part.text.c_str(), part.prob);
}
townname->partlist[id][i].parts[j].prob = prob;
townname->partlist[id][i].maxprob += GB(prob, 0, 7);
partlist.maxprob += GB(part.prob, 0, 7);
}
grfmsg(6, "FeatureTownName: part %d, total probability %d", i, townname->partlist[id][i].maxprob);
grfmsg(6, "FeatureTownName: part %u, total probability %u", partnum, partlist.maxprob);
}
}
@@ -10313,19 +10277,7 @@ bool HasTTDPatchFlagBeenObserved(uint flag)
static void ResetCustomStations()
{
for (GRFFile * const file : _grf_files) {
StationSpec **&stations = file->stations;
if (stations == nullptr) continue;
for (uint i = 0; i < NUM_STATIONS_PER_GRF; i++) {
if (stations[i] == nullptr) continue;
StationSpec *statspec = stations[i];
/* Release this station */
delete statspec;
}
/* Free and reset the station data */
free(stations);
stations = nullptr;
file->stations.clear();
}
}
@@ -10333,14 +10285,7 @@ static void ResetCustomStations()
static void ResetCustomHouses()
{
for (GRFFile * const file : _grf_files) {
HouseSpec **&housespec = file->housespec;
if (housespec == nullptr) continue;
for (uint i = 0; i < NUM_HOUSES_PER_GRF; i++) {
free(housespec[i]);
}
free(housespec);
housespec = nullptr;
file->housespec.clear();
}
}
@@ -10348,36 +10293,20 @@ static void ResetCustomHouses()
static void ResetCustomAirports()
{
for (GRFFile * const file : _grf_files) {
AirportSpec **aslist = file->airportspec;
if (aslist != nullptr) {
for (uint i = 0; i < NUM_AIRPORTS_PER_GRF; i++) {
AirportSpec *as = aslist[i];
if (as != nullptr) {
/* We need to remove the tiles layouts */
for (int j = 0; j < as->num_table; j++) {
/* remove the individual layouts */
free(as->table[j]);
}
free(as->table);
free(as->depot_table);
free(as->rotation);
free(as);
for (auto &as : file->airportspec) {
if (as != nullptr) {
/* We need to remove the tiles layouts */
for (int j = 0; j < as->num_table; j++) {
/* remove the individual layouts */
free(as->table[j]);
}
free(as->table);
free(as->depot_table);
free(as->rotation);
}
free(aslist);
file->airportspec = nullptr;
}
AirportTileSpec **&airporttilespec = file->airtspec;
if (airporttilespec != nullptr) {
for (uint i = 0; i < NUM_AIRPORTTILES_PER_GRF; i++) {
free(airporttilespec[i]);
}
free(airporttilespec);
airporttilespec = nullptr;
}
file->airportspec.clear();
file->airtspec.clear();
}
}
@@ -10385,28 +10314,8 @@ static void ResetCustomAirports()
static void ResetCustomIndustries()
{
for (GRFFile * const file : _grf_files) {
IndustrySpec **&industryspec = file->industryspec;
IndustryTileSpec **&indtspec = file->indtspec;
/* We are verifiying both tiles and industries specs loaded from the grf file
* First, let's deal with industryspec */
if (industryspec != nullptr) {
for (uint i = 0; i < NUM_INDUSTRYTYPES_PER_GRF; i++) {
IndustrySpec *ind = industryspec[i];
delete ind;
}
free(industryspec);
industryspec = nullptr;
}
if (indtspec == nullptr) continue;
for (uint i = 0; i < NUM_INDUSTRYTILES_PER_GRF; i++) {
free(indtspec[i]);
}
free(indtspec);
indtspec = nullptr;
file->industryspec.clear();
file->indtspec.clear();
}
}
@@ -10414,24 +10323,14 @@ static void ResetCustomIndustries()
static void ResetCustomObjects()
{
for (GRFFile * const file : _grf_files) {
std::vector<ObjectSpec *> &objectspec = file->objectspec;
for (ObjectSpec *spec : objectspec) {
free(spec);
}
objectspec.clear();
file->objectspec.clear();
}
}
static void ResetCustomRoadStops()
{
for (auto file : _grf_files) {
std::vector<RoadStopSpec *> &roadstops = file->roadstops;
for (RoadStopSpec *spec : roadstops) {
free(spec);
}
roadstops.clear();
file->roadstops.clear();
}
}
@@ -10482,7 +10381,7 @@ void ResetNewGRFData()
ResetRoadTypes();
/* Allocate temporary refit/cargo class data */
_gted = CallocT<GRFTempEngineData>(Engine::GetPoolSize());
_gted.resize(Engine::GetPoolSize());
/* Fill rail type label temporary data for default trains */
for (const Engine *e : Engine::IterateType(VEH_TRAIN)) {
@@ -11021,17 +10920,17 @@ static void FinaliseHouseArray()
* minimum introduction date to 0.
*/
for (GRFFile * const file : _grf_files) {
HouseSpec **&housespec = file->housespec;
if (housespec == nullptr) continue;
if (file->housespec.empty()) continue;
for (int i = 0; i < NUM_HOUSES_PER_GRF; i++) {
HouseSpec *hs = housespec[i];
size_t num_houses = file->housespec.size();
for (size_t i = 0; i < num_houses; i++) {
HouseSpec *hs = file->housespec[i].get();
if (hs == nullptr) continue;
const HouseSpec *next1 = (i + 1 < NUM_HOUSES_PER_GRF ? housespec[i + 1] : nullptr);
const HouseSpec *next2 = (i + 2 < NUM_HOUSES_PER_GRF ? housespec[i + 2] : nullptr);
const HouseSpec *next3 = (i + 3 < NUM_HOUSES_PER_GRF ? housespec[i + 3] : nullptr);
const HouseSpec *next1 = (i + 1 < num_houses ? file->housespec[i + 1].get() : nullptr);
const HouseSpec *next2 = (i + 2 < num_houses ? file->housespec[i + 2].get() : nullptr);
const HouseSpec *next3 = (i + 3 < num_houses ? file->housespec[i + 3].get() : nullptr);
if (!IsHouseSpecValid(hs, next1, next2, next3, file->filename)) continue;
@@ -11039,7 +10938,7 @@ static void FinaliseHouseArray()
}
}
for (int i = 0; i < NUM_HOUSES; i++) {
for (size_t i = 0; i < NUM_HOUSES; i++) {
HouseSpec *hs = HouseSpec::Get(i);
const HouseSpec *next1 = (i + 1 < NUM_HOUSES ? HouseSpec::Get(i + 1) : nullptr);
const HouseSpec *next2 = (i + 2 < NUM_HOUSES ? HouseSpec::Get(i + 2) : nullptr);
@@ -11083,50 +10982,41 @@ static void FinaliseHouseArray()
static void FinaliseIndustriesArray()
{
for (GRFFile * const file : _grf_files) {
IndustrySpec **&industryspec = file->industryspec;
IndustryTileSpec **&indtspec = file->indtspec;
if (industryspec != nullptr) {
for (int i = 0; i < NUM_INDUSTRYTYPES_PER_GRF; i++) {
IndustrySpec *indsp = industryspec[i];
for (const auto &indsp : file->industryspec) {
if (indsp == nullptr || !indsp->enabled) continue;
if (indsp != nullptr && indsp->enabled) {
StringID strid;
/* process the conversion of text at the end, so to be sure everything will be fine
* and available. Check if it does not return undefind marker, which is a very good sign of a
* substitute industry who has not changed the string been examined, thus using it as such */
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->name);
if (strid != STR_UNDEFINED) indsp->name = strid;
StringID strid;
/* process the conversion of text at the end, so to be sure everything will be fine
* and available. Check if it does not return undefind marker, which is a very good sign of a
* substitute industry who has not changed the string been examined, thus using it as such */
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->name);
if (strid != STR_UNDEFINED) indsp->name = strid;
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->closure_text);
if (strid != STR_UNDEFINED) indsp->closure_text = strid;
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->closure_text);
if (strid != STR_UNDEFINED) indsp->closure_text = strid;
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->production_up_text);
if (strid != STR_UNDEFINED) indsp->production_up_text = strid;
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->production_up_text);
if (strid != STR_UNDEFINED) indsp->production_up_text = strid;
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->production_down_text);
if (strid != STR_UNDEFINED) indsp->production_down_text = strid;
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->production_down_text);
if (strid != STR_UNDEFINED) indsp->production_down_text = strid;
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->new_industry_text);
if (strid != STR_UNDEFINED) indsp->new_industry_text = strid;
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->new_industry_text);
if (strid != STR_UNDEFINED) indsp->new_industry_text = strid;
if (indsp->station_name != STR_NULL) {
/* STR_NULL (0) can be set by grf. It has a meaning regarding assignation of the
* station's name. Don't want to lose the value, therefore, do not process. */
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->station_name);
if (strid != STR_UNDEFINED) indsp->station_name = strid;
}
_industry_mngr.SetEntitySpec(indsp);
}
if (indsp->station_name != STR_NULL) {
/* STR_NULL (0) can be set by grf. It has a meaning regarding assignation of the
* station's name. Don't want to lose the value, therefore, do not process. */
strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->station_name);
if (strid != STR_UNDEFINED) indsp->station_name = strid;
}
_industry_mngr.SetEntitySpec(indsp.get());
}
if (indtspec != nullptr) {
for (int i = 0; i < NUM_INDUSTRYTILES_PER_GRF; i++) {
IndustryTileSpec *indtsp = indtspec[i];
if (indtsp != nullptr) {
_industile_mngr.SetEntitySpec(indtsp);
}
for (const auto &indtsp : file->indtspec) {
if (indtsp != nullptr) {
_industile_mngr.SetEntitySpec(indtsp.get());
}
}
}
@@ -11152,9 +11042,9 @@ static void FinaliseIndustriesArray()
static void FinaliseObjectsArray()
{
for (GRFFile * const file : _grf_files) {
for (ObjectSpec *spec : file->objectspec) {
if (spec != nullptr && spec->grf_prop.grffile != nullptr && spec->IsEnabled()) {
_object_mngr.SetEntitySpec(spec);
for (auto &objectspec : file->objectspec) {
if (objectspec != nullptr && objectspec->grf_prop.grffile != nullptr && objectspec->IsEnabled()) {
_object_mngr.SetEntitySpec(objectspec.get());
}
}
}
@@ -11170,21 +11060,15 @@ static void FinaliseObjectsArray()
static void FinaliseAirportsArray()
{
for (GRFFile * const file : _grf_files) {
AirportSpec **&airportspec = file->airportspec;
if (airportspec != nullptr) {
for (int i = 0; i < NUM_AIRPORTS_PER_GRF; i++) {
if (airportspec[i] != nullptr && airportspec[i]->enabled) {
_airport_mngr.SetEntitySpec(airportspec[i]);
}
for (auto &as : file->airportspec) {
if (as != nullptr && as->enabled) {
_airport_mngr.SetEntitySpec(as.get());
}
}
AirportTileSpec **&airporttilespec = file->airtspec;
if (airporttilespec != nullptr) {
for (uint i = 0; i < NUM_AIRPORTTILES_PER_GRF; i++) {
if (airporttilespec[i] != nullptr && airporttilespec[i]->enabled) {
_airporttile_mngr.SetEntitySpec(airporttilespec[i]);
}
for (auto &ats : file->airtspec) {
if (ats != nullptr && ats->enabled) {
_airporttile_mngr.SetEntitySpec(ats.get());
}
}
}
@@ -11692,7 +11576,7 @@ static void AfterLoadGRFs()
FinalisePriceBaseMultipliers();
/* Deallocate temporary loading data */
free(_gted);
_gted.clear();
_grm_sprites.clear();
}

Some files were not shown because too many files have changed in this diff Show More