Compare commits

...

25 Commits

Author SHA1 Message Date
Peter Nelson 6e2c0d7cd3
Merge f9988abf32 into bf8de188ec 2024-04-27 00:36:35 +02:00
Peter Nelson bf8de188ec
Codechange: Use member initialization of GRFFilePropsBase. (#12581)
Don't blame compilers for our sloppy initialisation.

Removes memset, and lengthof.
2024-04-26 22:58:54 +01:00
Peter Nelson 72c55128d2
Codechange: Remove write-only spec_id from RoadStopSpec. (#12582)
Comment is incorrect about its value too.
2024-04-26 21:56:30 +01:00
Peter Nelson a6d401debf
Fix: Properly test for presence of waypoint in NewGRF resolver. (#12579)
Test whether the BaseStation itself a Station or Waypoint, instead of by the station class ID assigned to it.
2024-04-26 17:47:53 +01:00
translators a60a81f34e Update: Translations from eints
swedish: 7 changes by joeax910
vietnamese: 15 changes by anmatngu
greek: 31 changes by gh658804, 2 changes by KyriakosMich
hungarian: 2 changes by egri-nagy
portuguese (brazilian): 2 changes by pasantoro
2024-04-26 04:41:25 +00:00
Rubidium 0fdabca605 Codechange: use std::span instead of custom span in TGP 2024-04-26 06:15:29 +02:00
Peter Nelson f44d8fa2e4
Codechange: Remove CDECL from filter functions. (#12578)
These functions are not passed to qsort()...
2024-04-25 22:13:23 +01:00
Peter Nelson 0075a95278
Codefix: Make three _filter_funcs definitions distinct. (#12573)
Rename the GUIList function lists defined as the same symbol.
2024-04-25 21:01:15 +01:00
Peter Nelson 5bc9854be2
Codechange: Make sort list function lists safer. (#12574)
GUIList has a pointer only to the start of each sort/filter func list, which has the potential for UB as it is unable to validate that the selected sort or filter type is in range.

Use a std::span instead and check if the selected type is in range before using it.
2024-04-25 21:00:49 +01:00
Jonathan G Rennison 9b747a173d Fix #12509: Maintain timer sort invariants when changing period 2024-04-25 20:08:24 +02:00
Jonathan G Rennison 11ec156b64 Codechange: Add a priority field to TimerGameTick::TPeriod
Use this as the primary sort key for TimerGameTick::TPeriod,
to avoid container sort order changes on timer period saveload.
See: #12509
2024-04-25 20:08:24 +02:00
André Cheng 57f5d27427 Doc: Fix documentation of GetDefaultValueCallback 2024-04-25 20:07:54 +02:00
André Cheng ceb0053dd9 Codechange: Correct return type of GetDefaultValueCallback 2024-04-25 20:07:54 +02:00
André Cheng 339b0ea0ff Change: Show correct default value and unit for vehicle service interval setting 2024-04-25 20:07:54 +02:00
André Cheng fd80a1ec66 Fix #11345: Use correct default button value for vehicle service interval setting 2024-04-25 20:07:54 +02:00
André Cheng a4071b78d7 Codechange: Add callback to IntSettingDesc to support more default values 2024-04-25 20:07:54 +02:00
translators e8d25d68b9 Update: Translations from eints
russian: 2 changes by George-VB
2024-04-25 04:42:18 +00:00
Peter Nelson e8249e9075
Codechange: Pass buffers for TarFile's ExtractString as span. (#12567)
ExtractString does not need to find a string terminator as StrMakeValid already does this, so simply pass the full bounds of the buffer.

Removes lengthof, array indices, and needs only the buffer as a parameter.
2024-04-24 21:34:21 +01:00
Peter Nelson 5159aa81d4
Codechange: Use iterators when enabling industries. (#12569)
Removes lengthof and array indices.
2024-04-24 21:33:49 +01:00
Peter Nelson 26bb87ebf1
Codechange: Replace SaveLoad var length arrays with switch block and sizeof. (#12570)
SlCalcConvMemLen(), SlCalcConfFileLen() and CalcOldVarLen() follow a pattern of looking up part of a value in an array.

These function returns the size of bytes of a variable type, but is not very clear. Replace with a switch block instead.

Removes lengthof, array indices, and magic numbers.
2024-04-24 21:33:29 +01:00
Peter Nelson 1dc94d0670
Codechange: Construct string_view with first+last. (#12568)
Avoids needing to calculate size when we already have last.
2024-04-24 21:29:33 +01:00
Peter Nelson 6a3f50aa72
Codechange: Replace separate EffectVehicle arrays. (#12565)
Combine 3 separate arrays into a single struct. This keeps related data together, and avoids needing to check that each array is same length.

Use of constexpr construct ensures data in the array is not default-initialised.

Removes lengthof.
2024-04-24 21:29:12 +01:00
Peter Nelson e20f48799e
Codechange: Make StringToContentType() clearer. (#12566)
Decouples string to ContentType mapping from position within enum.

Slightly less efficient, but removes lengthof, array indices, and casting.
2024-04-24 21:26:31 +01:00
Peter Nelson 5e689ce25e
Codechange: Store cursor sprites in vector. (#12564)
Combine two separate fixed length arrays to allow simpler iteration.

No need to check that arrays are all the same length.
No need to separately store the number of sprites to draw.
Removes the upper limit of the number of sprites that can be drawn.

Removes lengthof and array indices.
2024-04-24 21:26:07 +01:00
Peter Nelson f9988abf32
Fix #12497: [NewGRF] Increase vehicle motion counter for all parts.
NewGRFs relied on the incorrectly motion counter that was 'fixed' in #12229, so always update v->motion_counter for all vehicle parts.
2024-04-23 20:50:09 +01:00
133 changed files with 685 additions and 457 deletions

View File

@ -76,7 +76,7 @@ private:
/* Constants for sorting the bridges */
static const StringID sorter_names[];
static GUIBridgeList::SortFunction * const sorter_funcs[];
static const std::initializer_list<GUIBridgeList::SortFunction * const> sorter_funcs;
/* Internal variables */
TileIndex start_tile;
@ -298,7 +298,7 @@ public:
Listing BuildBridgeWindow::last_sorting = {true, 2};
/** Available bridge sorting functions. */
GUIBridgeList::SortFunction * const BuildBridgeWindow::sorter_funcs[] = {
const std::initializer_list<GUIBridgeList::SortFunction * const> BuildBridgeWindow::sorter_funcs = {
&BridgeIndexSorter,
&BridgePriceSorter,
&BridgeSpeedSorter

View File

@ -538,7 +538,7 @@ const StringID _engine_sort_listing[][12] = {{
}};
/** Filters vehicles by cargo and engine (in case of rail vehicle). */
static bool CDECL CargoAndEngineFilter(const GUIEngineListItem *item, const CargoID cid)
static bool CargoAndEngineFilter(const GUIEngineListItem *item, const CargoID cid)
{
if (cid == CargoFilterCriteria::CF_ANY) {
return true;
@ -550,7 +550,7 @@ static bool CDECL CargoAndEngineFilter(const GUIEngineListItem *item, const Carg
}
}
static GUIEngineList::FilterFunction * const _filter_funcs[] = {
static GUIEngineList::FilterFunction * const _engine_filter_funcs[] = {
&CargoAndEngineFilter,
};
@ -1312,7 +1312,7 @@ struct BuildVehicleWindow : Window {
this->cargo_filter_criteria = _engine_sort_last_cargo_criteria[this->vehicle_type];
if (this->cargo_filter_criteria < NUM_CARGO && !HasBit(_standard_cargo_mask, this->cargo_filter_criteria)) this->cargo_filter_criteria = CargoFilterCriteria::CF_ANY;
this->eng_list.SetFilterFuncs(_filter_funcs);
this->eng_list.SetFilterFuncs(_engine_filter_funcs);
this->eng_list.SetFilterState(this->cargo_filter_criteria != CargoFilterCriteria::CF_ANY);
}

View File

@ -637,7 +637,7 @@ Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMPANY)
}
/** Start a new competitor company if possible. */
TimeoutTimer<TimerGameTick> _new_competitor_timeout(0, []() {
TimeoutTimer<TimerGameTick> _new_competitor_timeout({ TimerGameTick::Priority::COMPETITOR_TIMEOUT, 0 }, []() {
if (_game_mode == GM_MENU || !AI::CanStartNew()) return;
if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) return;
@ -778,7 +778,7 @@ void OnTick_Companies()
/* 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;
_new_competitor_timeout.Reset(std::max(1, timeout));
_new_competitor_timeout.Reset({ TimerGameTick::Priority::COMPETITOR_TIMEOUT, static_cast<uint>(std::max(1, timeout)) });
}
_cur_company_tick_index = (_cur_company_tick_index + 1) % MAX_COMPANIES;

View File

@ -2049,9 +2049,16 @@ DEF_CONSOLE_CMD(ConNetworkAuthorizedKey)
/** Resolve a string to a content type. */
static ContentType StringToContentType(const char *str)
{
static const char * const inv_lookup[] = { "", "base", "newgrf", "ai", "ailib", "scenario", "heightmap" };
for (uint i = 1 /* there is no type 0 */; i < lengthof(inv_lookup); i++) {
if (StrEqualsIgnoreCase(str, inv_lookup[i])) return (ContentType)i;
static const std::initializer_list<std::pair<std::string_view, ContentType>> content_types = {
{"base", CONTENT_TYPE_BASE_GRAPHICS},
{"newgrf", CONTENT_TYPE_NEWGRF},
{"ai", CONTENT_TYPE_AI},
{"ailib", CONTENT_TYPE_AI_LIBRARY},
{"scenario", CONTENT_TYPE_SCENARIO},
{"heightmap", CONTENT_TYPE_HEIGHTMAP},
};
for (const auto &ct : content_types) {
if (StrEqualsIgnoreCase(str, ct.first)) return ct.second;
}
return CONTENT_TYPE_END;
}

View File

@ -527,61 +527,33 @@ static bool BubbleTick(EffectVehicle *v)
return true;
}
struct EffectProcs {
using InitProc = void(EffectVehicle *);
using TickProc = bool(EffectVehicle *);
typedef void EffectInitProc(EffectVehicle *v);
typedef bool EffectTickProc(EffectVehicle *v);
InitProc *init_proc; ///< Function to initialise an effect vehicle after construction.
TickProc *tick_proc; ///< Functions for controlling effect vehicles at each tick.
TransparencyOption transparency; ///< Transparency option affecting the effect.
/** Functions to initialise an effect vehicle after construction. */
static EffectInitProc * const _effect_init_procs[] = {
ChimneySmokeInit, // EV_CHIMNEY_SMOKE
SteamSmokeInit, // EV_STEAM_SMOKE
DieselSmokeInit, // EV_DIESEL_SMOKE
ElectricSparkInit, // EV_ELECTRIC_SPARK
SmokeInit, // EV_CRASH_SMOKE
ExplosionLargeInit, // EV_EXPLOSION_LARGE
BreakdownSmokeInit, // EV_BREAKDOWN_SMOKE
ExplosionSmallInit, // EV_EXPLOSION_SMALL
BulldozerInit, // EV_BULLDOZER
BubbleInit, // EV_BUBBLE
SmokeInit, // EV_BREAKDOWN_SMOKE_AIRCRAFT
SmokeInit, // EV_COPPER_MINE_SMOKE
constexpr EffectProcs(InitProc *init_proc, TickProc *tick_proc, TransparencyOption transparency)
: init_proc(init_proc), tick_proc(tick_proc), transparency(transparency) {}
};
static_assert(lengthof(_effect_init_procs) == EV_END);
/** Functions for controlling effect vehicles at each tick. */
static EffectTickProc * const _effect_tick_procs[] = {
ChimneySmokeTick, // EV_CHIMNEY_SMOKE
SteamSmokeTick, // EV_STEAM_SMOKE
DieselSmokeTick, // EV_DIESEL_SMOKE
ElectricSparkTick, // EV_ELECTRIC_SPARK
SmokeTick, // EV_CRASH_SMOKE
ExplosionLargeTick, // EV_EXPLOSION_LARGE
BreakdownSmokeTick, // EV_BREAKDOWN_SMOKE
ExplosionSmallTick, // EV_EXPLOSION_SMALL
BulldozerTick, // EV_BULLDOZER
BubbleTick, // EV_BUBBLE
SmokeTick, // EV_BREAKDOWN_SMOKE_AIRCRAFT
SmokeTick, // EV_COPPER_MINE_SMOKE
};
static_assert(lengthof(_effect_tick_procs) == EV_END);
/** Transparency options affecting the effects. */
static const TransparencyOption _effect_transparency_options[] = {
TO_INDUSTRIES, // EV_CHIMNEY_SMOKE
TO_INVALID, // EV_STEAM_SMOKE
TO_INVALID, // EV_DIESEL_SMOKE
TO_INVALID, // EV_ELECTRIC_SPARK
TO_INVALID, // EV_CRASH_SMOKE
TO_INVALID, // EV_EXPLOSION_LARGE
TO_INVALID, // EV_BREAKDOWN_SMOKE
TO_INVALID, // EV_EXPLOSION_SMALL
TO_INVALID, // EV_BULLDOZER
TO_INDUSTRIES, // EV_BUBBLE
TO_INVALID, // EV_BREAKDOWN_SMOKE_AIRCRAFT
TO_INDUSTRIES, // EV_COPPER_MINE_SMOKE
};
static_assert(lengthof(_effect_transparency_options) == EV_END);
/** Per-EffectVehicleType handling. */
static std::array<EffectProcs, EV_END> _effect_procs = {{
{ ChimneySmokeInit, ChimneySmokeTick, TO_INDUSTRIES }, // EV_CHIMNEY_SMOKE
{ SteamSmokeInit, SteamSmokeTick, TO_INVALID }, // EV_STEAM_SMOKE
{ DieselSmokeInit, DieselSmokeTick, TO_INVALID }, // EV_DIESEL_SMOKE
{ ElectricSparkInit, ElectricSparkTick, TO_INVALID }, // EV_ELECTRIC_SPARK
{ SmokeInit, SmokeTick, TO_INVALID }, // EV_CRASH_SMOKE
{ ExplosionLargeInit, ExplosionLargeTick, TO_INVALID }, // EV_EXPLOSION_LARGE
{ BreakdownSmokeInit, BreakdownSmokeTick, TO_INVALID }, // EV_BREAKDOWN_SMOKE
{ ExplosionSmallInit, ExplosionSmallTick, TO_INVALID }, // EV_EXPLOSION_SMALL
{ BulldozerInit, BulldozerTick, TO_INVALID }, // EV_BULLDOZER
{ BubbleInit, BubbleTick, TO_INDUSTRIES }, // EV_BUBBLE
{ SmokeInit, SmokeTick, TO_INVALID }, // EV_BREAKDOWN_SMOKE_AIRCRAFT
{ SmokeInit, SmokeTick, TO_INDUSTRIES }, // EV_COPPER_MINE_SMOKE
}};
/**
* Create an effect vehicle at a particular location.
@ -604,7 +576,7 @@ EffectVehicle *CreateEffectVehicle(int x, int y, int z, EffectVehicleType type)
v->UpdateDeltaXY();
v->vehstatus = VS_UNCLICKABLE;
_effect_init_procs[type](v);
_effect_procs[type].init_proc(v);
v->UpdatePositionAndViewport();
@ -642,7 +614,7 @@ EffectVehicle *CreateEffectVehicleRel(const Vehicle *v, int x, int y, int z, Eff
bool EffectVehicle::Tick()
{
return _effect_tick_procs[this->subtype](this);
return _effect_procs[this->subtype].tick_proc(this);
}
void EffectVehicle::UpdateDeltaXY()
@ -660,5 +632,5 @@ void EffectVehicle::UpdateDeltaXY()
*/
TransparencyOption EffectVehicle::GetTransparencyOption() const
{
return _effect_transparency_options[this->subtype];
return _effect_procs[this->subtype].transparency;
}

View File

@ -473,17 +473,14 @@ bool TarScanner::AddFile(Subdirectory sd, const std::string &filename)
* header contains garbage and is malicious. So, we cannot rely on the string
* being properly terminated.
* As such, do not use strlen to determine the actual length (explicitly or
* implictly via the std::string constructor), but also do not create a string
* of the buffer length as that makes the string contain essentially garbage.
* implictly via the std::string constructor), but pass the buffer bounds
* explicitly.
* @param buffer The buffer to read from.
* @param buffer_length The length of the buffer to read from.
* @return The string data.
*/
static std::string ExtractString(char *buffer, size_t buffer_length)
static std::string ExtractString(std::span<char> buffer)
{
size_t length = 0;
for (; length < buffer_length && buffer[length] != '\0'; length++) {}
return StrMakeValid(std::string_view(buffer, length));
return StrMakeValid(std::string_view(buffer.begin(), buffer.end()));
}
bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] const std::string &tar_filename)
@ -557,15 +554,15 @@ bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] c
/* The prefix contains the directory-name */
if (th.prefix[0] != '\0') {
name = ExtractString(th.prefix, lengthof(th.prefix));
name = ExtractString(th.prefix);
name += PATHSEP;
}
/* Copy the name of the file in a safe way at the end of 'name' */
name += ExtractString(th.name, lengthof(th.name));
name += ExtractString(th.name);
/* The size of the file, for some strange reason, this is stored as a string in octals. */
std::string size = ExtractString(th.size, lengthof(th.size));
std::string size = ExtractString(th.size);
size_t skip = size.empty() ? 0 : std::stoul(size, nullptr, 8);
switch (th.typeflag) {
@ -591,7 +588,7 @@ bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] c
case '1': // hard links
case '2': { // symbolic links
/* Copy the destination of the link in a safe way at the end of 'linkname' */
std::string link = ExtractString(th.linkname, lengthof(th.linkname));
std::string link = ExtractString(th.linkname);
if (name.empty() || link.empty()) break;

View File

@ -1363,8 +1363,8 @@ void DrawMouseCursor()
/* Draw cursor on screen */
_cur_dpi = &_screen;
for (uint i = 0; i < _cursor.sprite_count; ++i) {
DrawSprite(_cursor.sprite_seq[i].sprite, _cursor.sprite_seq[i].pal, _cursor.pos.x + _cursor.sprite_pos[i].x, _cursor.pos.y + _cursor.sprite_pos[i].y);
for (const auto &cs : _cursor.sprites) {
DrawSprite(cs.image.sprite, cs.image.pal, _cursor.pos.x + cs.pos.x, _cursor.pos.y + cs.pos.y);
}
VideoDriver::GetInstance()->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y);
@ -1615,20 +1615,22 @@ void UpdateCursorSize()
/* Ignore setting any cursor before the sprites are loaded. */
if (GetMaxSpriteID() == 0) return;
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), SpriteType::Normal);
bool first = true;
for (const auto &cs : _cursor.sprites) {
const Sprite *p = GetSprite(GB(cs.image.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;
offs.x = UnScaleGUI(p->x_offs) + cs.pos.x;
offs.y = UnScaleGUI(p->y_offs) + cs.pos.y;
size.x = UnScaleGUI(p->width);
size.y = UnScaleGUI(p->height);
if (i == 0) {
if (first) {
/* First sprite sets the total. */
_cursor.total_offs = offs;
_cursor.total_size = size;
first = false;
} else {
/* Additional sprites expand the total. */
int right = std::max(_cursor.total_offs.x + _cursor.total_size.x, offs.x + size.x);
int bottom = std::max(_cursor.total_offs.y + _cursor.total_size.y, offs.y + size.y);
if (offs.x < _cursor.total_offs.x) _cursor.total_offs.x = offs.x;
@ -1648,13 +1650,10 @@ void UpdateCursorSize()
*/
static void SetCursorSprite(CursorID cursor, PaletteID pal)
{
if (_cursor.sprite_count == 1 && _cursor.sprite_seq[0].sprite == cursor && _cursor.sprite_seq[0].pal == pal) return;
if (_cursor.sprites.size() == 1 && _cursor.sprites[0].image.sprite == cursor && _cursor.sprites[0].image.pal == pal) return;
_cursor.sprite_count = 1;
_cursor.sprite_seq[0].sprite = cursor;
_cursor.sprite_seq[0].pal = pal;
_cursor.sprite_pos[0].x = 0;
_cursor.sprite_pos[0].y = 0;
_cursor.sprites.clear();
_cursor.sprites.emplace_back(cursor, pal, 0, 0);
UpdateCursorSize();
}
@ -1665,7 +1664,8 @@ static void SwitchAnimatedCursor()
if (cur == nullptr || cur->sprite == AnimCursor::LAST) cur = _cursor.animate_list;
SetCursorSprite(cur->sprite, _cursor.sprite_seq[0].pal);
assert(!_cursor.sprites.empty());
SetCursorSprite(cur->sprite, _cursor.sprites[0].image.pal);
_cursor.animate_timeout = cur->display_time;
_cursor.animate_cur = cur + 1;
@ -1684,10 +1684,11 @@ void CursorTick()
*/
void SetMouseCursorBusy(bool busy)
{
assert(!_cursor.sprites.empty());
if (busy) {
if (_cursor.sprite_seq[0].sprite == SPR_CURSOR_MOUSE) SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE);
if (_cursor.sprites[0].image.sprite == SPR_CURSOR_MOUSE) SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE);
} else {
if (_cursor.sprite_seq[0].sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
if (_cursor.sprites[0].image.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
}
}
@ -1712,9 +1713,10 @@ void SetMouseCursor(CursorID sprite, PaletteID pal)
*/
void SetAnimatedMouseCursor(const AnimCursor *table)
{
assert(!_cursor.sprites.empty());
_cursor.animate_list = table;
_cursor.animate_cur = nullptr;
_cursor.sprite_seq[0].pal = PAL_NONE;
_cursor.sprites[0].image.pal = PAL_NONE;
SwitchAnimatedCursor();
}

View File

@ -112,6 +112,13 @@ struct AnimCursor {
uint8_t display_time; ///< Amount of ticks this sprite will be shown
};
struct CursorSprite {
PalSpriteID image; ///< Image.
Point pos; ///< Relative position.
constexpr CursorSprite(SpriteID spr, PaletteID pal, int x, int y) : image({spr, pal}), pos({x, y}) {}
};
/** Collection of variables for cursor-display and -animation */
struct CursorVars {
/* Logical mouse position */
@ -126,9 +133,7 @@ struct CursorVars {
int h_wheel;
/* Mouse appearance */
PalSpriteID sprite_seq[16]; ///< current image of cursor
Point sprite_pos[16]; ///< relative position of individual sprites
uint sprite_count; ///< number of sprites to draw
std::vector<CursorSprite> sprites; ///< Sprites comprising cursor.
Point total_offs, total_size; ///< union of sprite properties
Point draw_pos, draw_size; ///< position and size bounding-box for drawing

View File

@ -99,7 +99,7 @@ static uint16_t ParseCode(const char *start, const char *end)
assert(start <= end);
while (start < end && *start == ' ') start++;
while (end > start && *end == ' ') end--;
std::string_view str{start, static_cast<size_t>(end - start)};
std::string_view str{start, end};
for (const auto &kn : _keycode_to_name) {
if (StrEqualsIgnoreCase(str, kn.name)) {
return kn.keycode;

View File

@ -82,9 +82,9 @@ void ResetIndustries()
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 = HasBit(_industry_specs[i].climate_availability, _settings_game.game_creation.landscape);
/* Enable only the current climate industries */
for (auto it = std::begin(_industry_specs); it != industry_insert; ++it) {
it->enabled = HasBit(it->climate_availability, _settings_game.game_creation.landscape);
}
auto industry_tile_insert = std::copy(std::begin(_origin_industry_tile_specs), std::end(_origin_industry_tile_specs), std::begin(_industry_tile_specs));

View File

@ -1270,7 +1270,7 @@ typedef GUIList<const Industry *, const CargoID &, const std::pair<CargoID, Carg
* @param cargoes The accepted and produced cargo pair to look for.
* @return bool Whether the given cargoes accepted and produced by the industry.
*/
static bool CDECL CargoFilter(const Industry * const *industry, const std::pair<CargoID, CargoID> &cargoes)
static bool CargoFilter(const Industry * const *industry, const std::pair<CargoID, CargoID> &cargoes)
{
auto accepted_cargo = cargoes.first;
auto produced_cargo = cargoes.second;
@ -1310,7 +1310,7 @@ static bool CDECL CargoFilter(const Industry * const *industry, const std::pair<
return accepted_cargo_matches && produced_cargo_matches;
}
static GUIIndustryList::FilterFunction * const _filter_funcs[] = { &CargoFilter };
static GUIIndustryList::FilterFunction * const _industry_filter_funcs[] = { &CargoFilter };
/** Enum referring to the Hotkeys in the industry directory window */
enum IndustryDirectoryHotkeys {
@ -1326,7 +1326,7 @@ protected:
/* Constants for sorting industries */
static const StringID sorter_names[];
static GUIIndustryList::SortFunction * const sorter_funcs[];
static const std::initializer_list<GUIIndustryList::SortFunction * const> sorter_funcs;
GUIIndustryList industries{IndustryDirectoryWindow::produced_cargo_filter};
Scrollbar *vscroll;
@ -1398,7 +1398,7 @@ protected:
this->produced_cargo_filter_criteria = CargoFilterCriteria::CF_ANY;
this->accepted_cargo_filter_criteria = CargoFilterCriteria::CF_ANY;
this->industries.SetFilterFuncs(_filter_funcs);
this->industries.SetFilterFuncs(_industry_filter_funcs);
bool is_filtering_necessary = this->produced_cargo_filter_criteria != CargoFilterCriteria::CF_ANY || this->accepted_cargo_filter_criteria != CargoFilterCriteria::CF_ANY;
@ -1902,7 +1902,7 @@ public:
Listing IndustryDirectoryWindow::last_sorting = {false, 0};
/* Available station sorting functions. */
GUIIndustryList::SortFunction * const IndustryDirectoryWindow::sorter_funcs[] = {
const std::initializer_list<GUIIndustryList::SortFunction * const> IndustryDirectoryWindow::sorter_funcs = {
&IndustryNameSorter,
&IndustryTypeSorter,
&IndustryProductionSorter,

View File

@ -1590,7 +1590,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standaard diens
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Kies die standaard diensskedule vir nuwe vliegtuie as geen diensskedule aangedui is nie
STR_CONFIG_SETTING_SERVINT_SHIPS :Standaard diens interval vir bote: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Kies die standaard diensskedule vir nuwe skepe as geen diensskedule aangedui is nie
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}da{P g e}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Gedeaktiveer

View File

@ -1513,6 +1513,8 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT :فترات ال
STR_CONFIG_SETTING_SERVINT_AIRCRAFT :مدة فحص الإفتراضي للطائرة: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS :مدة فحص الإفتراضي للسفن: {STRING}
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :غير مفعل

View File

@ -1522,7 +1522,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Hegazkinen mant
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Ezarri hegazkin berrientzako lehenetsiko diren mantenimendu denbora tarteak, ez bada ezartzen denbora tarte esplizituak ezarriko dira
STR_CONFIG_SETTING_SERVINT_SHIPS :Itsaontzien mantenimendurako lehenetsitako denbora tarteak: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Ezarri itsasontzi berrientzako lehenetsiko diren mantenimendu denbora tarteak, ez bada ezartzen denbora tarte esplizituak ezarriko dira
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}egun{P 0 "" ak}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Desgaitua

View File

@ -2145,7 +2145,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Iнтэрвал
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Усталяваць міжсэрвісны інтэрвал для новых паветраных суднаў, калі пэўны інтэрвал ня вызначаны для канкрэтнага судна.
STR_CONFIG_SETTING_SERVINT_SHIPS :Iнтэрвал абслугоўваньня для караблёў: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Усталяваць міжсэрвісны інтэрвал для новых караблёў, калі пэўны інтэрвал ня вызначаны для канкрэтнага судна.
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P зень днi дзён}/хвілін{P а ы ""}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :адключана

View File

@ -1833,7 +1833,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo padr
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Definir o intervalo padrão de manutenção para novas aeronaves, se um intervalo de manutenção não for explicitamente configurado para o veículo
STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalo padrão de manutenção para embarcações: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Definir o intervalo padrão de manutenção para novas embarcações, se um intervalo de manutenção não for explicitamente configurado para o veículo
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Dia{P 0 "" s}/Minuto{P 0 "" s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Desativado
@ -2373,7 +2374,7 @@ STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nome
STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Nome do jogo
STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA}
STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Clientes
STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clientes conectados / máx. clientes{}Empresas / máx. empresas
STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clientes conectados / máx. clientes{}Empresas ativas / máx. empresas
STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA}
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Tamanho do mapa
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Tamanho do mapa do jogo{}Clique para ordenar por área
@ -3461,7 +3462,7 @@ STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatí
# NewGRF save preset window
STR_SAVE_PRESET_CAPTION :{WHITE}Salvar predefinição
STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista de predefinições disponíveis, selecione uma para copiar o nome e usar na gravação abaixo
STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista de predefinições disponíveis, selecione uma usar o nome na gravação abaixo
STR_SAVE_PRESET_TITLE :{BLACK}Introduza um nome para a predefinição
STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nome que está selecionado para salvar a predefinição
STR_SAVE_PRESET_CANCEL :{BLACK}Cancelar

View File

@ -1665,7 +1665,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Интерва
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Задайте интервала за обслужване на новите въздухоплавателни средства по подразбиране, ако такъв интервал не е зададен за превозното средство
STR_CONFIG_SETTING_SERVINT_SHIPS :Интервал на обслужване за кораби: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Задайте интервала за обслужване на новите кораби по подразбиране, ако такъв интервал не е изрично зададен за превозното средство
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P 0 ен ни}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Изключен

View File

@ -1833,7 +1833,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Interval per de
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Estableix l'interval de revisió predeterminat pels nous avions, si no hi ha un interval de revisió explícit pel vehicle
STR_CONFIG_SETTING_SERVINT_SHIPS :Interval per defecte de servei per als vaixells: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Estableix l'interval de revisió predeterminat pels vaixells que es comprin, si no hi ha un interval de revisió explícit pel vehicle.
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}di{P 0 a es}/minut{P 0 "" s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Desactivat

View File

@ -752,6 +752,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
###length 3
###setting-zero-is-special

View File

@ -1705,7 +1705,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Zadani interval
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Postavi osnovni interval servisa za nove zrakoplove, ako nije postavljen drugi specifični interval za određeno vozilo
STR_CONFIG_SETTING_SERVINT_SHIPS :Zadani interval servisiranja za brodove: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Postavi osnovni interval servisa za nove brodove, ako nije postavljen drugi specifični interval za određeno vozilo
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dan{P 0 "" a a}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Isključeno

View File

@ -1916,7 +1916,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Základní serv
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Nastaví defaultní servisní interval pro letadla, pokud letadlo nemá nastaveno jiný servisní interval
STR_CONFIG_SETTING_SERVINT_SHIPS :Základní servisní interval pro lodě: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Nastaví defaultní servisní interval pro lodě pokud loď nemá nastaven jiný servisní interval
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}D{P en ní ""}/Minut{P a y ""}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Vypnuto

View File

@ -1832,7 +1832,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard servic
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Sæt serviceintervallets standardværdi for nye fly.
STR_CONFIG_SETTING_SERVINT_SHIPS :Standard serviceinterval for skibe: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Sæt serviceintervallets standardværdi for nye skibe.
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dag{P 0 "" s}/Minute{P 0 "" r}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktiveret

View File

@ -1832,7 +1832,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standaardonderh
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Standaardonderhoudsterrmijn voor nieuwe vliegtuigen als er geen expliciete onderhoudstermijn is ingesteld voor het voertuig
STR_CONFIG_SETTING_SERVINT_SHIPS :Standaardonderhoudstermijn voor schepen: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Standaardonderhoudstermijn voor nieuwe schepen als er geen expliciete onderhoudstermijn is ingesteld voor het voertuig
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dag{P 0 "" en}/minu{P 0 ut ten}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Uitgeschakeld

View File

@ -1832,7 +1832,11 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Default service
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Set the default service interval for new aircraft, if no explicit service interval is set for the vehicle
STR_CONFIG_SETTING_SERVINT_SHIPS :Default service interval for ships: {STRING2}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Set the default service interval for new ships, if no explicit service interval is set for the vehicle
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Day{P 0 "" s}/Minute{P 0 "" s}/%
###length 3
STR_CONFIG_SETTING_SERVINT_VALUE_DAYS :{COMMA}{NBSP}Day{P 0 "" s}
STR_CONFIG_SETTING_SERVINT_VALUE_MINUTES :{COMMA}{NBSP}Minute{P 0 "" s}
STR_CONFIG_SETTING_SERVINT_VALUE_PERCENTAGE :{COMMA}{NBSP}%
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Disabled

View File

@ -1832,7 +1832,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Default service
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Set the default service interval for new aircraft, if no explicit service interval is set for the vehicle
STR_CONFIG_SETTING_SERVINT_SHIPS :Default service interval for ships: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Set the default service interval for new ships, if no explicit service interval is set for the vehicle
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Day{P 0 "" s}/Minute{P 0 "" s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Disabled

View File

@ -1832,7 +1832,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Default mainten
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Set the default maintenance interval for new aircraft, if no explicit maintenance interval is set for the vehicle
STR_CONFIG_SETTING_SERVINT_SHIPS :Default maintenance interval for ships: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Set the default maintenance interval for new ships, if no explicit maintenance interval is set for the vehicle
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Day{P 0 "" s}/Minute{P 0 "" s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Disabled

View File

@ -1841,7 +1841,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Defaŭlta prise
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Elektu la defaŭltan priservintervalon por novaj aviadiloj, se ne estas eksplicite agordita priservintervalo por la veturilo
STR_CONFIG_SETTING_SERVINT_SHIPS :Defaŭlta priservintervalo por ŝipoj: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Elektu la defaŭltan priservintervalon por novaj ŝipoj, se ne estas eksplicite agordita priservintervalo por la veturilo
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}tago{P 0 "" j}/minuto{P 0 "" j}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Malaktiva

View File

@ -1888,7 +1888,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Õhusõidukite
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Määrab uute õhusõidukite hooldusvälba, kui sõidukile eraldi hooldusvälpa ei määrata
STR_CONFIG_SETTING_SERVINT_SHIPS :Laevade hooldusvälba vaikeväärtus: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Määrab uute laevade hooldusvälba, kui sõidukile eraldi hooldusvälpa ei määrata
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Päev{P 0 "" a}/Minut{P 0 "" it}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Väljas

View File

@ -1503,7 +1503,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Vanligur eftirl
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjumf logførum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli
STR_CONFIG_SETTING_SERVINT_SHIPS :Vanligur eftirlits títtleiki fyri skip: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjum skipum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" ar}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Ikki sligi til

View File

@ -1832,7 +1832,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Lentokoneiden o
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Määritä oletushuoltoväli uusille lentokoneille, mikäli kulkuneuvolle ei ole määritelty erillistä huoltoväliä
STR_CONFIG_SETTING_SERVINT_SHIPS :Laivojen oletushuoltoväli: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Määritä oletushuoltoväli uusille laivoille, mikäli kulkuneuvolle ei ole määritelty erillistä huoltoväliä
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}päivä{P 0 "" ä}/minuutti{P 0 "" a}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Pois käytöstä

View File

@ -1833,7 +1833,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalle d'en
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Définit l'intervalle d'entretien par défaut des nouveaux aéronefs, si aucun intervalle d'entretien n'est défini pour le véhicule
STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalle d'entretien par défaut pour les navires{NBSP}: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Définit l'intervalle d'entretien par défaut des nouveaux navires, si aucun intervalle d'entretien n'est défini pour le véhicule
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}jour{P 0 "" s}/minute{P 0 "" s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Désactivé

View File

@ -1570,7 +1570,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standert repara
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Stel it standert reparaasjeskema yn foar nije fleantugen dy't gjin eigen reparaasjeskema kenne
STR_CONFIG_SETTING_SERVINT_SHIPS :Standerd reparaasjeskema foar skippen: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Stel it standerd reparaasjeskema yn foar nije skippen dy't gjin eigen reparaasjeskema kenne
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}{P 0 dei dagen}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Útskeakele

View File

@ -1769,7 +1769,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Tricead bunaite
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Tagh dè cho tric s a thèid obair-chàraidh a dhèanamh air carbadan-adhair ùra mura deach tricead a chàraidh sònraichte a shuidheachadh airson a' charbaid
STR_CONFIG_SETTING_SERVINT_SHIPS :Tricead bunaiteach na h-obrach-càraidh air longan: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Tagh dè cho tric s a thèid obair-chàraidh a dhèanamh air longan ùra mura deach tricead a chàraidh sònraichte a shuidheachadh airson na luinge
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}{P 0 latha latha làithean latha}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :À comas

View File

@ -1833,7 +1833,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo de ma
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Fixa o intervalo de mantemento por defecto para avións novos, o cal se empregará no caso de que non se defina explicitamente un novo intervalo de mantemento para o vehículo
STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalo de mantemento por defecto para navíos: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Fixa o intervalo de mantemento por defecto para navíos novos, o cal se empregará no caso de que non se defina explicitamente un novo intervalo de mantemento para o vehículo
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Día{P 0 "" s}/Minuto{P 0 "" s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Desactivado

View File

@ -1833,7 +1833,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard-Wartun
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Setze das Standardwartungsintervall für Luftfahrzeuge. Dieses Wartungsintervall wird von allen Luftfahrzeugen eingehalten, denen kein individuelles Wartungsintervall zugewiesen worden ist
STR_CONFIG_SETTING_SERVINT_SHIPS :Standard-Wartungsintervall für Schiffe: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Setze das Standardwartungsintervall für Schiffe. Dieses Wartungsintervall wird von allen Schiffen eingehalten, denen kein individuelles Wartungsintervall zugewiesen worden ist
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Tag{P 0 "" e}/Minute{P 0 "" n}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktiviert

View File

@ -44,7 +44,7 @@ STR_CARGO_PLURAL_WOOD :{G=f}Ξυλεί
STR_CARGO_PLURAL_WOOD.geniki :Ξυλείας
STR_CARGO_PLURAL_IRON_ORE :{G=n}Σιδηρομεταλλεύματα
STR_CARGO_PLURAL_IRON_ORE.geniki :Σιδηρομεταλλευμάτων
STR_CARGO_PLURAL_STEEL :{G=m}Χάλυβες
STR_CARGO_PLURAL_STEEL :{G=m}Χάλυβα
STR_CARGO_PLURAL_STEEL.geniki :Χάλυβα
STR_CARGO_PLURAL_VALUABLES :{G=n}Πολύτιμα είδη
STR_CARGO_PLURAL_VALUABLES.geniki :Πολύτιμων ειδών
@ -65,7 +65,7 @@ STR_CARGO_PLURAL_GOLD.geniki :Χρυσού
STR_CARGO_PLURAL_WATER :{G=n}Νερά
STR_CARGO_PLURAL_WATER.geniki :Νερών
STR_CARGO_PLURAL_WHEAT :Σιτάρια
STR_CARGO_PLURAL_WHEAT.geniki :Σιταριών
STR_CARGO_PLURAL_WHEAT.geniki :Σιτάρι
STR_CARGO_PLURAL_RUBBER :{G=n}Λάστιχα
STR_CARGO_PLURAL_RUBBER.geniki :Λάστιχων
STR_CARGO_PLURAL_SUGAR :{G=f}Ζάχαρη
@ -267,7 +267,7 @@ STR_COLOUR_SECONDARY_ORANGE :Πορτοκα
STR_COLOUR_SECONDARY_BROWN :Καφέ
STR_COLOUR_SECONDARY_GREY :Γκρι
STR_COLOUR_SECONDARY_WHITE :Άσπρο
STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Ίδιο με το πρωταρχικό
STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Ίδιο με το Αρχικό
# Units used in OpenTTD
@ -526,7 +526,7 @@ STR_FILE_MENU_EXIT :Έξοδος
# Map menu
STR_MAP_MENU_MAP_OF_WORLD :Χάρτης του κόσμου
STR_MAP_MENU_EXTRA_VIEWPORT :Πρόσθετη εμφάνιση
STR_MAP_MENU_EXTRA_VIEWPORT :Πρόσθετο παράθυρο προβολής
STR_MAP_MENU_LINGRAPH_LEGEND :Υπόμνημα ροής φορτίου
STR_MAP_MENU_SIGN_LIST :Λίστα πινακίδων
@ -1026,7 +1026,7 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLAC
STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}Η τοπική αρχή της {TOWN} υπογράφει σύμβαση με την {STRING} για 12 λεπτά αποκλειστικών δικαιωμάτων μεταφοράς!
# Extra view window
STR_EXTRA_VIEWPORT_TITLE :{WHITE}Εμφάνιση {COMMA}
STR_EXTRA_VIEWPORT_TITLE :{WHITE}Προβολή {COMMA}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Αντιγραφή στο παράθυρο εμφάνισης
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Αντιγραφή της τοποθεσίας της κύριας προβολής σε αυτό το παράθυρο εμφάνισης
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Επικόλληση από παράθυρο εμφάνισης
@ -1139,7 +1139,7 @@ STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Τρέχ
STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Μέγεθος διεπαφής
STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Σύρετε το κουμπί για να ορίσετε το μέγεθος του περιβάλλοντος διεπαφής. Ctrl+Σύρσιμο για συνεχή προσαρμογή
STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Αυτόματη εντόπιση μεγέθους
STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Αυτόματος εντοπισμός μεγέθους
STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Τσεκάρετε αυτό το κουτάκι για να ανιχνεύεται το μέγεθος της διεπαφής αυτόματα
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Κλίση κλίμακας
@ -1183,7 +1183,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Βασι
STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Επιλέξτε το βασικό σετ μουσικής για χρήση
STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με το βασικό σετ μουσικής
STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(δεν έχουν εγκατασταθεί plugins για ενοποίηση με πλατφόρμες κοινωνικής δικτύωσης)
STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(δεν έχουν εγκατασταθεί plugins για διασύνδεση με πλατφόρμες κοινωνικής δικτύωσης)
STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING})
STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Πλατφόρμα:
@ -1343,8 +1343,8 @@ STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Εμφά
###length 3
STR_CONFIG_SETTING_OFF :Ανενεργό
STR_CONFIG_SETTING_ON :Ενεργή
STR_CONFIG_SETTING_DISABLED :Ανένεργη
STR_CONFIG_SETTING_ON :Ενεργό
STR_CONFIG_SETTING_DISABLED :Ανένεργο
###length 3
STR_CONFIG_SETTING_COMPANIES_OFF :Ανένεργο
@ -1382,7 +1382,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Ταχύτητ
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Περιορίζει το ποσοστό των οικοδομήμσεων από τα ΑΙ
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Βλάβες οχημάτων: {STRING}
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Ελέγχει πόσο συχνά τα ανεπαρκώς συντηρημένα οχήματα παθαίνουν βλάβες
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Ελέγχει πόσο συχνά παθαίνουν βλάβες τα ανεπαρκώς συντηρημένα οχήματα
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Πολλαπλασιαστής επιδότησης: {STRING}
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Θέστε πόσο ξεπληρώνεται για επιδοτημένες συνδέσεις
@ -1434,7 +1434,7 @@ STR_CONFIG_SETTING_TRAIN_LENGTH :Μέγιστο
STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Ορίστε το μέγιστο μήκος των τρένων
STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} τετραγωνίδι{P 0 ο α}
STR_CONFIG_SETTING_SMOKE_AMOUNT :Ποσότητα καπνού/σπινθύρων οχήματος: {STRING}
STR_CONFIG_SETTING_SMOKE_AMOUNT :Ποσότητα καπνού/σπινθήρων οχήματος: {STRING}
STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Ορίστε τον όγκο του καπνού ή τον αριθμό των σπιθών που παράγονται από τα οχήματα
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Μοντέλο επιτάχυνσης τρένων: {STRING}
@ -1450,7 +1450,7 @@ STR_CONFIG_SETTING_PERCENTAGE :{COMMA}%
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Κλίση εδάφους για τα οδικά οχήματα: {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Η κλίση ενός κεκλιμένου τετραγωνίδιου για τα οδικά οχήματα. Μεγαλύτερες τιμές καθιστούν δυσκολότερο το ανέβασμα λόφων
STR_CONFIG_SETTING_FORBID_90_DEG :Απαγόρευση στα τρένα να κάνουν στροφές 90°: {STRING}
STR_CONFIG_SETTING_FORBID_90_DEG :Απαγορεύεται στα τρένα να κάνουν στροφές 90°: {STRING}
STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Στροφές 90 μοιρών προκύπτουν όταν μια οριζόντια σιδηροτροχιά ακολουθείται από μια κάθετη στο επόμενο τετραγωνίδιο, κάνοντας το τρένο να στρίψει κατά 90 μοίρες όταν αλλάζει τετραγωνίδιο, αντί για τις συνηθισμένες 45 μοίρες σε άλλους συνδυασμούς σιδηροτροχιών
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Να επιτρέπεται η συνένωση μη παρακείμενων σταθμών: {STRING}
@ -1496,10 +1496,10 @@ STR_CONFIG_SETTING_SHOWFINANCES_PERIOD :Εμφάνισ
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Όταν ενεργοποιείται, το παράθυρο των οικονομικών πληροφοριών εμφανίζεται στο τέλος κάθε χρόνου για ευκολότερο έλεγχο της οικονομικής κατάστασης της εταιρείας
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :Εάν είναι ενεργοποιημένο, το παράθυρο οικονομικών αναδύεται στο τέλος κάθε περιόδου για να επιτρέψει την εύκολη επιθεώρηση της οικονομικής κατάστασης της εταιρείας
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Οι νέες οδηγίες είναι «χωρίς στάση» από προεπιλογή: {STRING}
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Οι νέες οδηγίες είναι «χωρίς στάση» εξ' ορισμού: {STRING}
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Κανονικά, τα οχήματα σταματούν σε κάθε σταθμό που περνούν. Ενεργοποιώντας αυτήν τη ρύθμιση, δεν θα σταματούν σε κανένα σταθμό που θα βρει στη διαδρομή τους προς τον τελικό προορισμό. Σημείωστε πως αυτή η ρύθμιση ορίζει μόνο μια καθορισμένη τιμή για νέες εντολές. Ειδικές εντολές μπορούν να δοθούν για οποιαδήποτε συμπεριφορά, άσχετα από την προκαθορισμένη
STR_CONFIG_SETTING_STOP_LOCATION :Οι εντόλες νέων τρένων διορίζουν ότι σταματάνε εξ ορισμού στο {STRING} της πλατφόρμας
STR_CONFIG_SETTING_STOP_LOCATION :Οι νέες εντόλες τρένων έχουν στάση εξ' ορισμού στο {STRING} της πλατφόρμας
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Ορισμός προεπιλεγμένου σημείου που θα σταματούν τα τρένα στην πλατφόρμα. Το «κοντινό άκρο» σημαίνει κοντά στο σημείο εισόδου, «μέση» σημαίνει στο μέσο της πλατφόρμας και «μακρινό άκρο» σημαίνει στο άλλο άκρο από το σημείο εισόδου. Σημειώστε ότι αυτή η ρύθμιση ορίζει μόνο την προεπιλεγμένη τιμή για νέες εντολές. Οι μεμονωμένες εντολές μπορούν να έχουν τη δική τους θέση στάσης κάνοντας κλικ πάνω στο κείμενο της εντολής
###length 3
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :κοντινό άκρο
@ -1509,10 +1509,10 @@ STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :μακρινό
STR_CONFIG_SETTING_AUTOSCROLL :Μετακίνηση παραθύρου όταν το ποντίκι είναι στην άκρη: {STRING}
STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Όταν είναι ενεργή, η εμφάνιση θα κυλά όταν το ποντίκι είναι κοντά στην άκρη του παραθύρου
###length 4
STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Απενεργοποιημένη
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Κύρια εμφάνιση, μόνο σε πλήρη οθόνη
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Κύρια εμφάνιση
STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Κάθε εμφάνιση
STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Απενεργοποιημένο
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Κύριο παράθυρο προβολής, μόνο σε πλήρη οθόνη
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Κύριο παράθυρο προβολής
STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Κάθε παράθυρο προβολής
STR_CONFIG_SETTING_BRIBE :Επιτρέπεται η δωροδοκία της τοπικής αρχής: {STRING}
###length 2
@ -1557,7 +1557,7 @@ STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Επιτρέπ
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Δεν είναι δυνατή η αλλαγή αυτής της ρύθμισης όταν υπάρχουν οχήματα.
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Συντήρηση υποδομής: {STRING}
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Όταν είναι ενεργοποιημένη, οι υποδομές προκαλούν έξοδα συντήρησης. Το κόστος μεγαλώνει δυσανάλογα με το μέγεθος του δικτύου, επηρεάζοντας έτσι τις μεγάλες εταιρείες περισσότερο από τις μικρότερες
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Όταν είναι ενεργοποιημένο, οι υποδομές προκαλούν έξοδα συντήρησης. Το κόστος μεγαλώνει υπεραναλογικά με το μέγεθος του δικτύου, επηρεάζοντας έτσι τις μεγάλες εταιρείες περισσότερο από τις μικρότερες
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Αρχικό χρώμα εταιρίας: {STRING}
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Επιλογή του αρχικού χρώματος της εταιρίας
@ -1608,21 +1608,21 @@ STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}%
STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Αυτόματη ανανέωση όταν ένα όχημα παλιώνει: {STRING}
STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Όταν είναι ενεργοποιημένη, τα οχήματα που πλησιάζουν το τέλος της ζωής τους αντικαθίσταται αυτόματα όταν πληρούνται οι προϋποθέσεις αντικατάστασής του
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Αυτόματη αντικατάστηση όταν το όχημα είναι {STRING} μέγιστης ηλικίας
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Αυτόματη αντικατάστηση όταν το όχημα είναι {STRING} την μέγιστη ηλικία
STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Σχετική ηλικία κατά την οποία κάποιο όχημα θα πρέπει να εξεταστεί για αυτόματη ανανέωση
###length 2
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} μήν{P 0 α ες} πριν
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} μήν{P 0 α ες} μετά
STR_CONFIG_SETTING_AUTORENEW_MONEY :Αυτόματη ανανέωση με τα ελάχιστα απαιτούμενα χρήματα: {STRING}
STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Ελάχιστο χρηματικό ποσό που θα πρέπει να υπολείπεται στην τράπεζα πριν εξεταστεί η αυτόματη ανανέωση των οχημάτων
STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Ελάχιστο χρηματικό ποσό που θα πρέπει να απομείνει στην τράπεζα πριν εξεταστεί η αυτόματη ανανέωση των οχημάτων
STR_CONFIG_SETTING_ERRMSG_DURATION :Διάρκεια μηνύματος σφάλματος: {STRING}
STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Διάρκεια εμφάνισης μηνύματων σφάλματος σε κόκκινο παράθυρο. Σημειώστε ότι μερικά (κρίσιμα) μηνύματα σφάλματος δεν κλείνουν αυτόματα μετά από αυτόν τον χρόνο, αλλά πρέπει να κλείσουν χειροκίνητα
STR_CONFIG_SETTING_HOVER_DELAY :Εμφάνιση αναδυόμενων μηνυμάτων: {STRING}
STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Καθυστέρηση πριν την εμφάνιση των επεξηγήσεων όταν ο δείκτης του ποντικιού βρίσκεται πάνω από κάποιο στοιχείο της διεπαφής. Εναλλακτικά, οι επεξηγήσεις συνδέονται με το δεξί κουμπί του ποντικιού όταν η τιμή αυτού του πεδίου είναι 0
STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Ο δείκτης του ποντικιού να βρίσκεται από πάνω για {COMMA} δευτερόλεπτ{P 0 ο α}
STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Ο δείκτης του ποντικιού να βρίσκεται από πάνω για {COMMA} χιλιοστά του δευτερολέπτου
###setting-zero-is-special
STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Δεξί κουμπί
@ -1691,8 +1691,8 @@ STR_CONFIG_SETTING_ROAD_SIDE :Οχήματα
STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Επιλέξτε την πλευρά οδήγησης
###length 2
STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Οδηγούν από αριστερά
STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Οδηγούν από δεξιά
STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Οδήγηση από αριστερά
STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Οδήγηση από δεξιά
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Περιστροφή χάρτη υψομετρίας: {STRING}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Επιλέξτε με ποιον τρόπο θα περιστραφεί η εικόνα του ύψους χάρτη, για να ταιριάζει στον κόσμο του παιχνιδιού
@ -1746,7 +1746,7 @@ STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Εμφάνισ
STR_CONFIG_SETTING_LIVERIES :Εμφάνιση χρωμάτων των εταιριών: {STRING}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Ελέγξτε τη χρήση του χρωματικού μοτίβου των τύπων των οχημάτων για τα οχήματα (σε αντίθεση με τα εταιρικά)
###length 3
STR_CONFIG_SETTING_LIVERIES_NONE :Κανένας
STR_CONFIG_SETTING_LIVERIES_NONE :Κανένα
STR_CONFIG_SETTING_LIVERIES_OWN :Η εταιρία μου
STR_CONFIG_SETTING_LIVERIES_ALL :Όλες οι εταιρίες
@ -1792,7 +1792,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :Όχι
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Ναι
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Ναι, εκτός από το καρφιτσωμένο
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Χρήση της {STRING} ημερολογιακής μορφής στα ονόματα αποθηκευμένων παιχνιδιών
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Χρήση της ημερολογιακής μορφής {STRING} στα ονόματα αποθηκευμένων παιχνιδιών
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Μορφή της ημερομηνίας στα αρχεία αποθήκευσης παιχνιδιών
###length 3
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :μακριά (31 Δεκ 2008)
@ -1865,10 +1865,10 @@ STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Τέλος πε
STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Παίζει ηχητικό εφέ στο τέλος του χρόνου που συνοψίζει την επίδοση της εταιρείας κατά την διάρκεια αυτού του χρόνου σε σχέση με τον προηγούμενο χρόνο
STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Παίζει ηχητικό εφέ στο τέλος του χρόνου που συνοψίζει την επίδοση της εταιρείας κατά την διάρκεια αυτής της περιόδου σε σχέση με την προηγούμεη περίοδο
STR_CONFIG_SETTING_SOUND_CONFIRM :Οικοδομή: {STRING}
STR_CONFIG_SETTING_SOUND_CONFIRM :Κατασκευή: {STRING}
STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Παίζει ηχητικό εφέ σε επιτυχής οικοδομές ή άλλες δράσεις
STR_CONFIG_SETTING_SOUND_CLICK :πατήματα κουμπιού: {STRING}
STR_CONFIG_SETTING_SOUND_CLICK :Πατήματα κουμπιού: {STRING}
STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Παίζει ήχο όταν γίνεται κλικ σε κουμπιά
STR_CONFIG_SETTING_SOUND_DISASTER :Καταστροφές/ατυχήματα: {STRING}
@ -1924,7 +1924,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Προκαθο
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα αεροσκάφη, όταν δεν δίνεται άλλο διάστημα για το αεροσκάφος
STR_CONFIG_SETTING_SERVINT_SHIPS :Προκαθορισμένο διάστημα μεταξύ επισκευών για τα πλοία: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα πλοία, όταν δεν δίνεται άλλο διάστημα για το πλοίο
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Ημέρ{P 0 α ες}/Λεπτ{P ό ά}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Απενεργοποιημένο
@ -1967,7 +1968,7 @@ STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Εμφάνισ
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Αλλαγή της παραγωγής των βιομηχανιών που εξυπηρετούνται από την εταιρία: {STRING}
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Εμφάνιση εφημερίδας όταν μεταβάλλεται η παραγωγικότητα μιας βιομηχανίας που εξυπηρετείται από την εταιρία
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Διαφοροποιήσεις στην παραγωγή των βιομηχανιών που εξυπηρετούνται από ανταγωνιστή(-ές): {STRING}
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Διαφοροποιήσεις στην παραγωγή των βιομηχανιών που εξυπηρετούνται από ανταγωνιστή/ές: {STRING}
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Εμφάνιση εφημερίδας όταν μεταβάλλεται η παραγωγικότητα μιας βιομηχανίας που εξυπηρετείται από ανταγωνιστές
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Άλλες διαφοροποιήσεις στη παραγωγή: {STRING}
@ -1988,7 +1989,7 @@ STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Πρόβαλλ
STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Γενικές πληροφορίες: {STRING}
STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Εμφάνιση εφημερίδας σε γενικά συμβάντα, όπως αγορά αποκλειστικών δικαιωμάτων ή χρηματοδότηση ανακατασκευής δρόμων
###length 3
STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Απενεργοποιημένα
STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Απενεργοποιημένο
STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Περιλήψεις
STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Ολόκληρα
@ -2080,7 +2081,7 @@ STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Απόστασ
STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} εικονοστοιχεί{P 0 ο α}
###setting-zero-is-special
STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Απενεργοποιημένη
STR_CONFIG_SETTING_SOFT_LIMIT :Μέγιστο όριο μη καρφωμένων παραθύρων: {STRING}
STR_CONFIG_SETTING_SOFT_LIMIT :Μέγιστο όριο μη καρφιτσωμένων παραθύρων: {STRING}
STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Αριθμός μη μόνιμων ανοικτών παράθυρων πριν παλαιότερα παράθυρα κλείσουν αυτόματα για να κάνουν χώρα για τα νεότερα
STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA}
###setting-zero-is-special
@ -2234,7 +2235,7 @@ STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Αυτόματ
STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Επιτρέπεται στα τρένα να αντιστραφούν σε σήμα, εάν περιμένουν εκεί για πολύ ώρα
###length 2
STR_CONFIG_SETTING_PATHFINDER_NPF :NPF
STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Συνίσταται)
STR_CONFIG_SETTING_PATHFINDER_YAPF :YAPF {BLUE}(Συνιστάται)
STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Αλλαγή τιμής ρύθμισης
@ -5033,7 +5034,7 @@ STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... δε
STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... η εικόνα είναι πολύ μεγάλη
STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Προειδοποίηση κλίμακας
STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Αλλαγή μεγέθους του πηγαίου χάρτη δεν συνίσταται. Να προχωρήσει η δημιουργία;
STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Αλλαγή μεγέθους του πηγαίου χάρτη δεν συνιστάται. Να προχωρήσει η δημιουργία;
# Soundset messages
STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Βρέθηκε μόνο εφεδρικό σετ ήχου. Αν θέλετε ήχους, εγκαταστήστε ένα πακέτο ήχων μέσω του συστήματος μεταφόρτωσης υλικού

View File

@ -1612,7 +1612,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :ברירת מח
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :קבע את ברירת המחדל למרווח הזמן בין תחזוקות עבור מטוסים חדשים, אם לא נקבע באופן מפורש מרווח זמן עבור כלי הרכב
STR_CONFIG_SETTING_SERVINT_SHIPS :ברירת מחדל למרווח הזמן בין תחזוקות עבור אוניות: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :קבע את ברירת המחדל למרווח הזמן בין תחזוקות עבור אוניות חדשות, אם לא נקבע באופן מפורש מרווח זמן עבור כלי הרכב
STR_CONFIG_SETTING_SERVINT_VALUE :{P 0 "יום " ""}{COMMA}{P "" " ימים"}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :מבוטל

View File

@ -619,6 +619,8 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :कंप्य
###length 3
###setting-zero-is-special

View File

@ -1895,7 +1895,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Alapértelmezet
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Alapértelmezett javítási intervallum beállítása új repülőgépeknek, ha nincs külön javítási intervallum beállítva a járműre
STR_CONFIG_SETTING_SERVINT_SHIPS :Alapértelmezett javítási intervallum hajóknak: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Alapértelmezett javítási intervallum beállítása új hajóknak, ha nincs külön javítási intervallum beállítva a járműre
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Nap/Perc/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :kikapcsolva
@ -4453,7 +4454,7 @@ STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Nincs ára
STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Szabad útra vár
STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}A következő repülőtér túl messze van
STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Ütban {0:STATION} állomás felé
STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Útban {0:STATION} állomás felé
STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Nincs utasítás
STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Útban {0:WAYPOINT} felé
STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Útban {0:DEPOT} felé
@ -5341,6 +5342,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Változt
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Még nincsenek elérhető járművek
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Indíts új játékot {DATE_SHORT} után, vagy használj olyan NewGRF-et, ami tartalmaz megfelelően korai járműveket!
STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Nincs városban építhető út-típus
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nem haladhatja meg a vonat a megállj jelzést...

View File

@ -1502,7 +1502,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Sjálfgefið mi
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum flugvélum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið
STR_CONFIG_SETTING_SERVINT_SHIPS :Sjálfgefið millibil fyrir þjónustu hjá skipum: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum skipum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 ur ar}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Óvirkt

View File

@ -733,6 +733,8 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violkolora
###length 3
###setting-zero-is-special

View File

@ -1791,7 +1791,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Interval perbai
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Setel interval perbaikan untuk pesawat baru, jika tidak ada interval asli yang disetel
STR_CONFIG_SETTING_SERVINT_SHIPS :Interval dasar untuk kapal: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Mengatur interval perbaikan untuk kapal baru, jika tidak ada interval perbaikan, setelan dasar akan diatur untuk kendaraan
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}hari/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Di non-aktifkan

View File

@ -1648,7 +1648,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Eatramh seirbh
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Socraigh an t-eatramh seirbhísithe réamhshocraithe d'aerárthaigh nua, mura bhfuil eatramh seirbhísithe sainráite socraithe don fheithicil
STR_CONFIG_SETTING_SERVINT_SHIPS :Eatramh seirbhíse réamhshocraithe do longa: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Socraigh an t-eatramh seirbhísithe réamhshocraithe do longa nua, mura bhfuil eatramh seirbhísithe sainráite socraithe don fheithicil
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}lá/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Díchumasaithe

View File

@ -1867,7 +1867,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervallo manu
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Imposta l'intervallo di manutenzione predefinito per i nuovi aeromobili, quando non viene impostato nessun intervallo esplicito
STR_CONFIG_SETTING_SERVINT_SHIPS :Intervallo manutenzione predefinito navi: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Imposta l'intervallo di manutenzione predefinito per le nuove navi, quando non viene impostato nessun intervallo esplicito
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Giorn{P 0 o i}/Minut{P 0 o i}%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Disabilitato

View File

@ -1705,7 +1705,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :航空機の点
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :個別に指定されていない場合の、航空機の点検周期を設定します
STR_CONFIG_SETTING_SERVINT_SHIPS :船舶の点検周期: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :個別に指定されていない場合の、船舶の点検周期を設定します
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} 日/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :点検なし

View File

@ -1833,7 +1833,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :항공기에
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :항공기에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다.
STR_CONFIG_SETTING_SERVINT_SHIPS :선박에 대한 기본 점검 기준: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :선박에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다.
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}일/분/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :사용 안 함

View File

@ -1767,7 +1767,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervallum min
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Eligere solitum intervallum ministrationis novis aeroplanis, si non est proprium intervallum ministrationis vehiculo
STR_CONFIG_SETTING_SERVINT_SHIPS :Intervallum ministrationis solitum navibus: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Eligere solitum intervallum ministrationis novis navibus, si non est proprium intervallum ministrationis vehiculo
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}die{P 0 m s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Neglectum

View File

@ -1834,7 +1834,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Lidaparātu apk
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Izvēlēties jauniem lidaparātiem apkopju noklusējuma starplaiku, ja transportlīdzeklim tas nav noteikts
STR_CONFIG_SETTING_SERVINT_SHIPS :Kuģu apkopju noklusējuma starplaiks: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Izvēlēties jauniem kuģiem apkopju noklusējuma starplaiku, ja transportlīdzeklim tas nav noteikts
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Dien{P 0 a as u}/Minūt{P 0 e es es}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :izslēgts

View File

@ -1900,7 +1900,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Lėktuvų techn
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Numatytoji naujo lėktuvo techninės apžiūros intervalo reikšmė
STR_CONFIG_SETTING_SERVINT_SHIPS :Laivų techninės apžiūros intervalas: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Numatytoji naujo laivo techninės apžiūros intervalo reikšmė
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dien{P a os ų}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Išjungta

View File

@ -1831,7 +1831,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard Revisi
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Definéiert de Standardrevisiounsintervall fir nei Fligeren, wann keen expliziten Revisiounsintervall uginn ass
STR_CONFIG_SETTING_SERVINT_SHIPS :Standard Revisiounsintervall fir Schëffer: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Definéiert de Standardrevisiounsintervall fir nei Schëffer, wann keen expliziten Revisiounsintervall uginn ass
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}D{P 0 ag eeg}/Minutt{P 0 "" en}%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Ausgeschalt

View File

@ -1020,6 +1020,8 @@ STR_CONFIG_SETTING_SOUND_VEHICLE :Возила: {
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#ОПкодови пред скрипти се суспендирани: {STRING}
###length 3
###setting-zero-is-special

View File

@ -1437,7 +1437,8 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Pilih sama ada
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Tetapkan selang masa servis untuk pesawat baru kepada tetapan asal jika tiada selang masa servis yang jelas ditetapkan untuk pesawat tersebut
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Tetapkan selang masa servis untuk kapal baru kepada tetapan asal jika tiada selang masa servis yang jelas ditetapkan untuk kapal tersebut
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}hari{P 0 "" s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Dilumpuhkan

View File

@ -665,6 +665,8 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ippermetti l-uz
###length 3
###setting-zero-is-special

View File

@ -952,6 +952,8 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :सर्व
###length 3
###setting-zero-is-special

View File

@ -1834,7 +1834,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard vedlik
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Angi standard vedlikeholdsintervall for nye fly, hvis det ikke er angitt noe vedlikeholdsintervall for flyet
STR_CONFIG_SETTING_SERVINT_SHIPS :Standard vedlikeholdsintervall for skip: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Angi standard vedlikeholdsintervall for nye skip, hvis det ikke er angitt noe vedlikeholdsintervall for fartøyet
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Dag{P 0 "" er}/Minutt{P 0 "" er}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktivert

View File

@ -1512,7 +1512,8 @@ STR_CONFIG_SETTING_SERVINT_TRAINS :Standard vedlik
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard vedlikehaldsintervall for veg-køyrety: {STRING}
STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard vedlikehaldsintervall for fly: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS :Standard vedlikehaldsintervall for skip: {STRING}
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktivert

View File

@ -1418,6 +1418,8 @@ STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes before
STR_CONFIG_SETTING_SERVINT_ISPERCENT :درصد زمان برای تعمیر/نگهداری به نسبت زمان کار: {STRING}
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_NOSERVICE :غیرفعال کردن تعمیر/بازنگری کلیه وسایل نقلیه وقتی که طبق تنظیمات بازی خودرو ها خراب نشوند : {STRING}

View File

@ -2212,7 +2212,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Domyślny inter
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych maszyn latających, jeśli takowy nie istnieje dla określonego pojazdu
STR_CONFIG_SETTING_SERVINT_SHIPS :Domyślny interwał serwisowania statków: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych statków, jeśli takowy nie istnieje dla określonego pojazdu
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}D{P zień ni ni}/Minut{P a y ""}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Wyłączone

View File

@ -1833,7 +1833,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo de ma
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Definir o intervalo de manutenção por omissão para novas aeronaves, se não for configurado um intervalo de manutenção explícito para o veículo
STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalo de serviço para navios por omissão: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Definir o intervalo de manutenção por omissão para novos navios, se não for configurado um intervalo de manutenção explícito para o veículo
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Dia{P 0 "" s}/Minuto{P 0 "" s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Desativado

View File

@ -1829,7 +1829,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalul de
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Alege perioada de întreținere implicită pentru noi aeronave, dacă nu există un interval de întreținere stabilit pentru aeronave
STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalul de întreținere implicit al navelor: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Alege perioada de întreținere implicită pentru noi nave, dacă nu există un interval de întreținere stabilit pentru nave
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}{P 0 zi zile "de zile"}/{P 0 minut minute minute}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Dezactivat

View File

@ -1983,7 +1983,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Интерва
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Настройка периодичности технического обслуживания для новых воздушных судов
STR_CONFIG_SETTING_SERVINT_SHIPS :Интервал ТО по умолчанию для судов: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Настройка периодичности технического обслуживания для новых судов
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P ень ня ней}/минут{P а ы ""}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :отключен
@ -2375,7 +2376,7 @@ STR_QUIT_NO :{BLACK}Нет
# Abandon game
STR_ABANDON_GAME_CAPTION :{WHITE}В главное меню
STR_ABANDON_GAME_QUERY :{YELLOW}Вы действительно хотите выйти из игры?
STR_ABANDON_GAME_QUERY :{YELLOW}Вы уверены, что хотите выйти из игры?
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Вы уверены, что хотите выйти из этого сценария?
# Help window
@ -3127,7 +3128,7 @@ STR_AIRPORT_CLASS_LARGE.nom :Средний
STR_AIRPORT_CLASS_HUB :Большие аэропорты
STR_AIRPORT_CLASS_HUB.nom :Большой
STR_AIRPORT_CLASS_HELIPORTS :Вертолётные площадки
STR_AIRPORT_CLASS_HELIPORTS.nom :Вертолётный
STR_AIRPORT_CLASS_HELIPORTS.nom :Вертолётная
STR_STATION_BUILD_NOISE :{BLACK}Производимый шум: {GOLD}{COMMA}

View File

@ -1988,7 +1988,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Podrazumevani s
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Postavi podrazumevani servisni interval za nove letelice, ukoliko nema zadatog servisnog intervala za vozilo
STR_CONFIG_SETTING_SERVINT_SHIPS :Podrazumevani servisni interval za brodove: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Postavi podrazumevani servisni interval za nove brodove, ukoliko nema zadatog servisnog intervala za vozilo
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dan{P 0 "" a a}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Onemogućeno

View File

@ -1832,7 +1832,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :飞机默认保
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :如果没有为飞机指定保养周期,设定飞机的默认保养周期
STR_CONFIG_SETTING_SERVINT_SHIPS :船只默认保养周期:{STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :如果没有为船只设定保养周期,按照这里设定的默认保养周期执行
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}日 / 分钟 / %
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :关闭

View File

@ -1900,7 +1900,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Predvolený int
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Nastav predvolený interval pre nové lietadlá. Ak nie je nastavený podrobnejší interval.
STR_CONFIG_SETTING_SERVINT_SHIPS :Predvolený interval servisu pre lode: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Nastav predvolený interval pre nové lode. Ak nie je nastavený podrobnejší interval.
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}D{P eň ni ní}/min{P utu uty út}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :vypnuté

View File

@ -1719,7 +1719,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Privzeto servis
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Nastavitev privzetega obdobja servisiranja za letala, razen če ni izjemno nastavljeno obdobje za posamično letalo.
STR_CONFIG_SETTING_SERVINT_SHIPS :Privzeto servisno obdobje ladij: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Nastavitev privzetega obdobja servisiranja za ladje, razen če ni izjemno nastavljeno obdobje za posamično ladjo.
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} d{P 0 an neva dni dni}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Onemogočeno

View File

@ -1833,7 +1833,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo de ma
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Fija el intervalo de mantenimiento por defecto para aeronaves nuevas, que se empleará si no se define un intervalo de forma explícita para ése vehículo
STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalo de mantenimiento por defecto para barcos: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Fija el intervalo de mantenimiento por defecto para barcos nuevos, que se empleará si no se define un intervalo de forma explícita para ése vehículo
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Día{P 0 "" s}/Minuto{P 0 "" s}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Deshabilitado

View File

@ -1791,7 +1791,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo de ma
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Intervalo de mantenimiento por defecto para nuevas aeronaves, en caso de no definirse otro explícitamente
STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalo de mantenimiento por defecto para barcos: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Intervalo de mantenimiento por defecto para nuevos barcos, en caso de no definirse otro explícitamente
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}día{P 0 "" s} o %
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Deshabilitado

View File

@ -1832,7 +1832,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Normalt service
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Välj vilket serviceintervall som normalt sett ska användas för nya flygplan, om inget annat serviceintervall uttryckligen anges
STR_CONFIG_SETTING_SERVINT_SHIPS :Normalt serviceintervall för skepp: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Välj vilket serviceintervall som normalt sett ska användas för nya skepp, om inget annat serviceintervall uttryckligen anges
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Dag{P 0 "" ar}/Minut{P 0 "" er}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Inaktiverat
@ -3393,8 +3394,11 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Vill du
STR_GENERATION_PROGRESS :{WHITE}{NUM}% färdigt
STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM}
STR_GENERATION_WORLD_GENERATION :{BLACK}Generera värld
STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Landskapsgenerering
STR_GENERATION_RIVER_GENERATION :{BLACK}Generera Flod
STR_GENERATION_CLEARING_TILES :{BLACK}Svår och stenig markgenerering
STR_GENERATION_TOWN_GENERATION :{BLACK}Stadsgenerering
STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Industrigenerering
STR_GENERATION_OBJECT_GENERATION :{BLACK}Generera objekt
STR_GENERATION_TREE_GENERATION :{BLACK}Generera Träd
STR_GENERATION_SETTINGUP_GAME :{BLACK}Ställer in spel
@ -5286,6 +5290,10 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Ändra d
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Inga fordon är tillgängliga än
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Starta ett nytt spel efter {DATE_SHORT} eller använd en NewGRF som erbjuder tidiga fordon
STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Inga vägtyper som kan byggas av städer finns tillgängliga
STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Ändra din NewGRF-konfiguration
STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Inga vägtyper som kan byggas av städer finns tillgängliga ännu
STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Starta ett nytt spel efter {DATE_SHORT} eller använd en NewGRF som tidigt erbjuder vägtyper som städer kan bygga
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan inte tillåta tåg att passera signal under fara...

View File

@ -1690,7 +1690,8 @@ STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :சாலை
STR_CONFIG_SETTING_SERVINT_AIRCRAFT :விமாங்களின் பழுதுபார்த்தல் இடைவேளி: {STRING}
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :புதிய விமானங்களுக்கான இயல்புநிலை சேவை இடைவெளியை அமைக்கவும், வாகனத்திற்கு வெளிப்படையான சேவை இடைவெளி எதுவும் அமைக்கப்படவில்லை என்றால்
STR_CONFIG_SETTING_SERVINT_SHIPS :கப்பல்களின் பழுதுபார்த்தல் இடைவேளி: {STRING}
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}நா{P 0 "ள்" ட்கள்}/நிமிட{P 0 "ம்" ங்கள்}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :செயலிழக்க செய்யப்பட்டது

View File

@ -1575,7 +1575,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :ตั้งค
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงสำหรับอากาศยาน เป็นหน่วยวัน หรือหากเลือกการตั้งค่าโดยคิดจากเปอร์เซนต์ของประสิทธิภาพ จะเปลี่ยนไปใช้่หน่วยเปอร์เซนต์แทน
STR_CONFIG_SETTING_SERVINT_SHIPS :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงของพาหนะทางน้ำ: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงสำหรับพาหนะทางน้ำ เป็นหน่วยวัน หรือหากเลือกการตั้งค่าโดยคิดจากเปอร์เซนต์ของประสิทธิ์ภาพ จะเปลี่ยนไปใช้่หน่วยเปอร์เซนต์แทน
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} วัน/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :ไม่ตั้ง

View File

@ -1759,7 +1759,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :預設的飛機
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :設定預設的飛機維護作業時距。所有沒有指定維護作業時距的飛機都會使用這個預設值。
STR_CONFIG_SETTING_SERVINT_SHIPS :預設的船舶維護作業時距:{STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :設定預設的船舶維護作業時距。所有沒有指定維護作業時距的船舶都會使用這個預設值。
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}日/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :停用

View File

@ -1833,7 +1833,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Hava araçları
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Yeni hava 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
STR_CONFIG_SETTING_SERVINT_SHIPS :Gemiler için varsayılan bakım aralığı: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Yeni gemiler için varsayılan bakım aralığını ayarlar, eğer araç için özel bir bakım aralığı belirtilmemişse geçerlidir
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}%gün/dakika
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Etkisiz

View File

@ -1969,7 +1969,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Інтерва
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Налаштування інтервалу техогляду для нового повітряного транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі).
STR_CONFIG_SETTING_SERVINT_SHIPS :Інтервал техогляду водного транспорту: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Налаштування інтервалу техогляду для нового водного транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі).
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}д{P 0 "ень" "ні" "нів"}/хвилин{P 0 а и ""}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Відключено

View File

@ -1329,6 +1329,8 @@ STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :اسکرپٹس
STR_CONFIG_SETTING_SERVINT_ISPERCENT :مرمتی وقفے فیصد میں ہیں: {STRING}
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_NOSERVICE :گاڑیوں کی خرابی غیر فعال ہونے کی صورت میں مرمت بھی غیر فعال کر دیں: {STRING}

View File

@ -1832,7 +1832,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Tần suất b
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Thiết lập khoảng thời gian bảo trì tùy chọn đối với các máy bay, nếu phương tiện không có riêng thời gian bảo trì này
STR_CONFIG_SETTING_SERVINT_SHIPS :Tần suất bảo trì mặc định đối với tàu thủy: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Thiết lập khoảng thời gian bảo trì tùy chọn đối với các tàu thủy, nếu phương tiện không có riêng thời gian bảo trì này
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}ngày/phút/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :tắt
@ -2223,7 +2224,7 @@ STR_QUIT_YES :{BLACK}Đồng
STR_QUIT_NO :{BLACK}Không đồng ý
# Abandon game
STR_ABANDON_GAME_CAPTION :{WHITE}Bỏ Màn Chơi
STR_ABANDON_GAME_CAPTION :{WHITE}Loại bỏ Game
STR_ABANDON_GAME_QUERY :{YELLOW}Bạn có chắc chắn muốn bỏ màn chơi này không?
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Bạn có chắc bạn muốn bỏ màn chơi kịch bản này?
@ -3393,8 +3394,11 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Bạn c
STR_GENERATION_PROGRESS :{WHITE}{NUM}% hoàn thành
STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM}
STR_GENERATION_WORLD_GENERATION :{BLACK}Tạo màn
STR_GENERATION_LANDSCAPE_GENERATION :{BLACK}Khởi tạo cảnh quan
STR_GENERATION_RIVER_GENERATION :{BLACK}Khởi tạo sông suối
STR_GENERATION_CLEARING_TILES :{BLACK}Sinh đá và sự gồ ghề
STR_GENERATION_TOWN_GENERATION :{BLACK}Khởi tạo thị trấn
STR_GENERATION_INDUSTRY_GENERATION :{BLACK}Khởi tạo nhà máy
STR_GENERATION_OBJECT_GENERATION :{BLACK}Sinh đối tượng cứng
STR_GENERATION_TREE_GENERATION :{BLACK}Trồng cây
STR_GENERATION_SETTINGUP_GAME :{BLACK}Thiết lập ván chơi
@ -3488,6 +3492,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Loại đườn
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Biến số NewGRF là 60+x (dạng hexa)
# Sprite aligner window
STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Căn chỉnh hình sprite: ({STRING}:{NUM})
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Căn chỉnh hình sprite: Hành động 0xA, {COMMA} ({STRING}:{NUM})
STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Căn chỉnh hình sprite: Hành động 0x5, loại {HEX}, {COMMA} ({STRING}:{NUM})
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite tiếp
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Chuyển tới sprite bình thường kế tiếp, bỏ qua các loại sprite và căn theo điểm kết thúc
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Đi tới sprite
@ -3496,6 +3503,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite t
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Xử lý sprite bình thường ở trước, bỏ qua các loại pseudo/recolour/font sprite căn theo điểm bắt đầu
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Theo những thông tin của sprite đã chọn. Thì việc căn chỉnh khi vẽ đối với sprite này sẽ bị bỏ qua
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Di chuyển sprite xung quanh, thay đổi X và Y offsets. Ctrl+Click để di chuyển sprite tám đơn vị một lúc
STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM}
###length 2
STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Toạ độ về trung tâm
@ -4898,7 +4906,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Thu nh
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Đang lưu vào đĩa,{}hãy chờ cho đến khi hoàn thành!
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Tự lưu gặp lỗi
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Không đọc được đĩa
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lưu game thất bại...
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Không thể xoá file
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Khởi động game thất bại...
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Lỗi kỹ thuật: {STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bản lưu ván chơi bị hỏng - {STRING}
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Bản lưu ván chơi dành cho phiên bản mới hơn
@ -5280,6 +5290,10 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Thay đ
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Chưa có phương tiện nào có sẵn
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Bắt đầu một màn chơi mới sau {DATE_SHORT} hoặc sử dụng một NewGRF cung cấp sớm phương tiện
STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL :{WHITE}Không có sẵn loại đường có thể xây dựng được trong thị trấn
STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Thay đổi cấu hình NewGRF của bạn
STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET :{WHITE}Hiện tại chưa có các loại đường thị trấn
STR_ERROR_NO_TOWN_ROADTYPES_AVAILABLE_YET_EXPLANATION :{WHITE}Hãy bắt đầu trò chơi mới sau {DATE_SHORT} hoặc sử dụng NewGRF khác có hỗ trợ xây dựng sớm các loại đường đô thị
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Không thể để tàu hoả qua tín hiệu đèn khi nguy hiểm...
@ -5831,6 +5845,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
STR_JUST_STRING :{STRING}
STR_JUST_STRING1 :{STRING}
STR_JUST_STRING2 :{STRING}
STR_JUST_STRING4 :{STRING}
STR_JUST_STRING_STRING :{STRING}{STRING}
STR_JUST_RAW_STRING :{STRING}
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}

View File

@ -1832,7 +1832,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Ystod gwasanaet
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Gosod yr ystod gwasanaethu rhagosodedig ar gyfer awyrennau newydd, os na ddynodir ystod gwasanaethu penodol ar gyfer y cerbyd
STR_CONFIG_SETTING_SERVINT_SHIPS :Ystod gwasanaethu rhagosodedig ar gyfer llongau: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Gosod yr ystod gwasanaethu rhagosodedig ar gyfer llongau newydd, os na ddynodir ystod gwasanaethu penodol ar gyfer y cerbyd
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Diwrnod{P 0 "" ""}/Munud{P 0 "" ""}/%
###length 3
###setting-zero-is-special
STR_CONFIG_SETTING_SERVINT_DISABLED :Analluogwyd

View File

@ -334,8 +334,8 @@ class NetworkContentListWindow : public Window, ContentCallback {
static Listing last_sorting; ///< The last sorting setting.
static Filtering last_filtering; ///< The last filtering setting.
static GUIContentList::SortFunction * const sorter_funcs[]; ///< Sorter functions
static GUIContentList::FilterFunction * const filter_funcs[]; ///< Filter functions.
static const std::initializer_list<GUIContentList::SortFunction * const> sorter_funcs; ///< Sorter functions
static const std::initializer_list<GUIContentList::FilterFunction * const> filter_funcs; ///< Filter functions.
GUIContentList content; ///< List with content
bool auto_select; ///< Automatically select all content when the meta-data becomes available
ContentListFilterData filter_data; ///< Filter for content list
@ -464,7 +464,7 @@ class NetworkContentListWindow : public Window, ContentCallback {
}
/** Filter content by tags/name */
static bool CDECL TagNameFilter(const ContentInfo * const *a, ContentListFilterData &filter)
static bool TagNameFilter(const ContentInfo * const *a, ContentListFilterData &filter)
{
if ((*a)->state == ContentInfo::SELECTED || (*a)->state == ContentInfo::AUTOSELECTED) return true;
@ -476,7 +476,7 @@ class NetworkContentListWindow : public Window, ContentCallback {
}
/** Filter content by type, but still show content selected for download. */
static bool CDECL TypeOrSelectedFilter(const ContentInfo * const *a, ContentListFilterData &filter)
static bool TypeOrSelectedFilter(const ContentInfo * const *a, ContentListFilterData &filter)
{
if (filter.types.none()) return true;
if (filter.types[(*a)->type]) return true;
@ -1010,13 +1010,13 @@ public:
Listing NetworkContentListWindow::last_sorting = {false, 1};
Filtering NetworkContentListWindow::last_filtering = {false, 0};
NetworkContentListWindow::GUIContentList::SortFunction * const NetworkContentListWindow::sorter_funcs[] = {
const std::initializer_list<NetworkContentListWindow::GUIContentList::SortFunction * const> NetworkContentListWindow::sorter_funcs = {
&StateSorter,
&TypeSorter,
&NameSorter,
};
NetworkContentListWindow::GUIContentList::FilterFunction * const NetworkContentListWindow::filter_funcs[] = {
const std::initializer_list<NetworkContentListWindow::GUIContentList::FilterFunction * const> NetworkContentListWindow::filter_funcs = {
&TagNameFilter,
&TypeOrSelectedFilter,
};

View File

@ -181,8 +181,8 @@ protected:
static Listing last_sorting;
/* Constants for sorting servers */
static GUIGameServerList::SortFunction * const sorter_funcs[];
static GUIGameServerList::FilterFunction * const filter_funcs[];
static const std::initializer_list<GUIGameServerList::SortFunction * const> sorter_funcs;
static const std::initializer_list<GUIGameServerList::FilterFunction * const> filter_funcs;
NetworkGameList *server; ///< Selected server.
NetworkGameList *last_joined; ///< The last joined server.
@ -338,7 +338,7 @@ protected:
}
}
static bool CDECL NGameSearchFilter(NetworkGameList * const *item, StringFilter &sf)
static bool NGameSearchFilter(NetworkGameList * const *item, StringFilter &sf)
{
assert(item != nullptr);
assert((*item) != nullptr);
@ -459,8 +459,8 @@ public:
this->server = this->last_joined;
this->servers.SetListing(this->last_sorting);
this->servers.SetSortFuncs(this->sorter_funcs);
this->servers.SetFilterFuncs(this->filter_funcs);
this->servers.SetSortFuncs(NetworkGameWindow::sorter_funcs);
this->servers.SetFilterFuncs(NetworkGameWindow::filter_funcs);
this->servers.ForceRebuild();
}
@ -860,7 +860,7 @@ public:
};
Listing NetworkGameWindow::last_sorting = {false, 5};
GUIGameServerList::SortFunction * const NetworkGameWindow::sorter_funcs[] = {
const std::initializer_list<GUIGameServerList::SortFunction * const> NetworkGameWindow::sorter_funcs = {
&NGameNameSorter,
&NGameClientSorter,
&NGameMapSizeSorter,
@ -869,7 +869,7 @@ GUIGameServerList::SortFunction * const NetworkGameWindow::sorter_funcs[] = {
&NGameAllowedSorter
};
GUIGameServerList::FilterFunction * const NetworkGameWindow::filter_funcs[] = {
const std::initializer_list<GUIGameServerList::FilterFunction * const> NetworkGameWindow::filter_funcs = {
&NGameSearchFilter
};

View File

@ -4846,7 +4846,6 @@ static ChangeInfoResult RoadStopChangeInfo(uint id, int numinfo, int prop, ByteR
uint32_t classid = buf->ReadDWord();
rs->cls_id = RoadStopClass::Allocate(BSWAP32(classid));
rs->spec_id = id + i;
break;
}

View File

@ -308,25 +308,15 @@ bool Convert8bitBooleanCallback(const struct GRFFile *grffile, uint16_t cbid, ui
*/
template <size_t Tcnt>
struct GRFFilePropsBase {
GRFFilePropsBase() : local_id(0), grffile(nullptr)
{
/* The lack of some compilers to provide default constructors complying to the specs
* requires us to zero the stuff ourself. */
memset(spritegroup, 0, sizeof(spritegroup));
}
uint16_t local_id; ///< id defined by the grf file for this entity
const struct GRFFile *grffile; ///< grf file that introduced this entity
const struct SpriteGroup *spritegroup[Tcnt]; ///< pointer to the different sprites of the entity
uint16_t local_id = 0; ///< id defined by the grf file for this entity
const struct GRFFile *grffile = nullptr; ///< grf file that introduced this entity
std::array<const struct SpriteGroup *, Tcnt> spritegroup{}; ///< pointers to the different sprites of the entity
};
/** Data related to the handling of grf files. */
struct GRFFileProps : GRFFilePropsBase<1> {
/** Set all default data constructor for the props. */
GRFFileProps(uint16_t subst_id = 0) :
GRFFilePropsBase<1>(), subst_id(subst_id), override(subst_id)
{
}
constexpr GRFFileProps(uint16_t subst_id = 0) : subst_id(subst_id), override(subst_id) {}
uint16_t subst_id;
uint16_t override; ///< id of the entity been replaced by

View File

@ -53,7 +53,7 @@ const SpriteGroup *GetWagonOverrideSpriteSet(EngineID engine, CargoID cargo, Eng
void SetCustomEngineSprites(EngineID engine, uint8_t cargo, const SpriteGroup *group)
{
Engine *e = Engine::Get(engine);
assert(cargo < lengthof(e->grf_prop.spritegroup));
assert(cargo < std::size(e->grf_prop.spritegroup));
if (e->grf_prop.spritegroup[cargo] != nullptr) {
GrfMsg(6, "SetCustomEngineSprites: engine {} cargo {} already has group -- replacing", engine, cargo);
@ -1062,7 +1062,7 @@ VehicleResolverObject::VehicleResolverObject(EngineID engine_type, const Vehicle
if (this->root_spritegroup == nullptr) {
const Engine *e = Engine::Get(engine_type);
CargoID cargo = v != nullptr ? v->cargo_type : SpriteGroupCargo::SG_PURCHASE;
assert(cargo < lengthof(e->grf_prop.spritegroup));
assert(cargo < std::size(e->grf_prop.spritegroup));
this->root_spritegroup = e->grf_prop.spritegroup[cargo] != nullptr ? e->grf_prop.spritegroup[cargo] : e->grf_prop.spritegroup[SpriteGroupCargo::SG_DEFAULT];
}
}

View File

@ -609,8 +609,8 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
static Listing last_sorting; ///< Default sorting of #GUIGRFConfigList.
static Filtering last_filtering; ///< Default filtering of #GUIGRFConfigList.
static GUIGRFConfigList::SortFunction * const sorter_funcs[]; ///< Sort functions of the #GUIGRFConfigList.
static GUIGRFConfigList::FilterFunction * const filter_funcs[]; ///< Filter functions of the #GUIGRFConfigList.
static const std::initializer_list<GUIGRFConfigList::SortFunction * const> sorter_funcs; ///< Sort functions of the #GUIGRFConfigList.
static const std::initializer_list<GUIGRFConfigList::FilterFunction * const> filter_funcs; ///< Filter functions of the #GUIGRFConfigList.
GUIGRFConfigList avails; ///< Available (non-active) grfs.
const GRFConfig *avail_sel; ///< Currently selected available grf. \c nullptr is none is selected.
@ -1458,7 +1458,7 @@ private:
}
/** Filter grfs by tags/name */
static bool CDECL TagNameFilter(const GRFConfig * const *a, StringFilter &filter)
static bool TagNameFilter(const GRFConfig * const *a, StringFilter &filter)
{
filter.ResetState();
filter.AddLine((*a)->GetName());
@ -1586,11 +1586,11 @@ void ShowMissingContentWindow(const GRFConfig *list)
Listing NewGRFWindow::last_sorting = {false, 0};
Filtering NewGRFWindow::last_filtering = {false, 0};
NewGRFWindow::GUIGRFConfigList::SortFunction * const NewGRFWindow::sorter_funcs[] = {
const std::initializer_list<NewGRFWindow::GUIGRFConfigList::SortFunction * const> NewGRFWindow::sorter_funcs = {
&NameSorter,
};
NewGRFWindow::GUIGRFConfigList::FilterFunction * const NewGRFWindow::filter_funcs[] = {
const std::initializer_list<NewGRFWindow::GUIGRFConfigList::FilterFunction * const> NewGRFWindow::filter_funcs = {
&TagNameFilter,
};

View File

@ -157,7 +157,7 @@ std::string NewGRFProfiler::GetOutputFilename() const
/**
* Check whether profiling is active and should be finished.
*/
static TimeoutTimer<TimerGameTick> _profiling_finish_timeout(0, []()
static TimeoutTimer<TimerGameTick> _profiling_finish_timeout({ TimerGameTick::Priority::NONE, 0 }, []()
{
NewGRFProfiler::FinishAll();
});
@ -167,7 +167,7 @@ static TimeoutTimer<TimerGameTick> _profiling_finish_timeout(0, []()
*/
/* static */ void NewGRFProfiler::StartTimer(uint64_t ticks)
{
_profiling_finish_timeout.Reset(ticks);
_profiling_finish_timeout.Reset({ TimerGameTick::Priority::NONE, static_cast<uint>(ticks) });
}
/**

View File

@ -127,7 +127,6 @@ struct RoadStopSpec {
*/
GRFFilePropsBase<NUM_CARGO + 3> grf_prop;
RoadStopClassID cls_id; ///< The class to which this spec belongs.
int spec_id; ///< The ID of this spec inside the class.
StringID name; ///< Name of this stop
RoadStopAvailabilityType stop_type = ROADSTOPTYPE_ALL;

View File

@ -504,7 +504,7 @@ uint32_t Waypoint::GetNewGRFVariable(const ResolverObject &, uint8_t variable, [
/* virtual */ const SpriteGroup *StationResolverObject::ResolveReal(const RealSpriteGroup *group) const
{
if (this->station_scope.st == nullptr || this->station_scope.statspec->cls_id == STAT_CLASS_WAYP) {
if (this->station_scope.st == nullptr || !Station::IsExpected(this->station_scope.st)) {
return group->loading[0];
}

View File

@ -56,8 +56,8 @@ class BuildObjectWindow : public Window {
static Listing last_sorting; ///< Default sorting of #GUIObjectClassList.
static Filtering last_filtering; ///< Default filtering of #GUIObjectClassList.
static GUIObjectClassList::SortFunction * const sorter_funcs[]; ///< Sort functions of the #GUIObjectClassList.
static GUIObjectClassList::FilterFunction * const filter_funcs[]; ///< Filter functions of the #GUIObjectClassList.
static const std::initializer_list<GUIObjectClassList::SortFunction * const> sorter_funcs; ///< Sort functions of the #GUIObjectClassList.
static const std::initializer_list<GUIObjectClassList::FilterFunction * const> filter_funcs; ///< Filter functions of the #GUIObjectClassList.
GUIObjectClassList object_classes; ///< Available object classes.
StringFilter string_filter; ///< Filter for available objects.
QueryString filter_editbox; ///< Filter editbox.
@ -129,7 +129,7 @@ public:
}
/** Filter object classes by class name. */
static bool CDECL TagNameFilter(ObjectClassID const *oc, StringFilter &filter)
static bool TagNameFilter(ObjectClassID const *oc, StringFilter &filter)
{
ObjectClass *objclass = ObjectClass::Get(*oc);
@ -655,11 +655,11 @@ public:
Listing BuildObjectWindow::last_sorting = { false, 0 };
Filtering BuildObjectWindow::last_filtering = { false, 0 };
BuildObjectWindow::GUIObjectClassList::SortFunction * const BuildObjectWindow::sorter_funcs[] = {
const std::initializer_list<BuildObjectWindow::GUIObjectClassList::SortFunction * const> BuildObjectWindow::sorter_funcs = {
&ObjectClassIDSorter,
};
BuildObjectWindow::GUIObjectClassList::FilterFunction * const BuildObjectWindow::filter_funcs[] = {
const std::initializer_list<BuildObjectWindow::GUIObjectClassList::FilterFunction * const> BuildObjectWindow::filter_funcs = {
&TagNameFilter,
};

View File

@ -964,8 +964,8 @@ private:
static Listing last_sorting; ///< Default sorting of #GUIStationClassList.
static Filtering last_filtering; ///< Default filtering of #GUIStationClassList.
static GUIStationClassList::SortFunction * const sorter_funcs[]; ///< Sort functions of the #GUIStationClassList.
static GUIStationClassList::FilterFunction * const filter_funcs[]; ///< Filter functions of the #GUIStationClassList.
static const std::initializer_list<GUIStationClassList::SortFunction * const> sorter_funcs; ///< Sort functions of the #GUIStationClassList.
static const std::initializer_list<GUIStationClassList::FilterFunction * const> filter_funcs; ///< Filter functions of the #GUIStationClassList.
GUIStationClassList station_classes; ///< Available station classes.
StringFilter string_filter; ///< Filter for available station classes.
QueryString filter_editbox; ///< Filter editbox.
@ -1095,7 +1095,7 @@ public:
}
/** Filter station classes by class name. */
static bool CDECL TagNameFilter(StationClassID const * sc, StringFilter &filter)
static bool TagNameFilter(StationClassID const * sc, StringFilter &filter)
{
filter.ResetState();
filter.AddLine(GetString(StationClass::Get(*sc)->name));
@ -1571,11 +1571,11 @@ public:
Listing BuildRailStationWindow::last_sorting = { false, 0 };
Filtering BuildRailStationWindow::last_filtering = { false, 0 };
BuildRailStationWindow::GUIStationClassList::SortFunction * const BuildRailStationWindow::sorter_funcs[] = {
const std::initializer_list<BuildRailStationWindow::GUIStationClassList::SortFunction * const> BuildRailStationWindow::sorter_funcs = {
&StationClassIDSorter,
};
BuildRailStationWindow::GUIStationClassList::FilterFunction * const BuildRailStationWindow::filter_funcs[] = {
const std::initializer_list<BuildRailStationWindow::GUIStationClassList::FilterFunction * const> BuildRailStationWindow::filter_funcs = {
&TagNameFilter,
};

View File

@ -1112,8 +1112,8 @@ private:
static Listing last_sorting; ///< Default sorting of #GUIRoadStopClassList.
static Filtering last_filtering; ///< Default filtering of #GUIRoadStopClassList.
static GUIRoadStopClassList::SortFunction * const sorter_funcs[]; ///< Sort functions of the #GUIRoadStopClassList.
static GUIRoadStopClassList::FilterFunction * const filter_funcs[]; ///< Filter functions of the #GUIRoadStopClassList.
static const std::initializer_list<GUIRoadStopClassList::SortFunction * const> sorter_funcs; ///< Sort functions of the #GUIRoadStopClassList.
static const std::initializer_list<GUIRoadStopClassList::FilterFunction * const> filter_funcs; ///< Filter functions of the #GUIRoadStopClassList.
GUIRoadStopClassList roadstop_classes; ///< Available road stop classes.
StringFilter string_filter; ///< Filter for available road stop classes.
QueryString filter_editbox; ///< Filter editbox.
@ -1246,7 +1246,7 @@ public:
}
/** Filter classes by class name. */
static bool CDECL TagNameFilter(RoadStopClassID const *sc, StringFilter &filter)
static bool TagNameFilter(RoadStopClassID const *sc, StringFilter &filter)
{
filter.ResetState();
filter.AddLine(GetString(RoadStopClass::Get(*sc)->name));
@ -1599,11 +1599,11 @@ public:
Listing BuildRoadStationWindow::last_sorting = { false, 0 };
Filtering BuildRoadStationWindow::last_filtering = { false, 0 };
BuildRoadStationWindow::GUIRoadStopClassList::SortFunction * const BuildRoadStationWindow::sorter_funcs[] = {
const std::initializer_list<BuildRoadStationWindow::GUIRoadStopClassList::SortFunction * const> BuildRoadStationWindow::sorter_funcs = {
&RoadStopClassIDSorter,
};
BuildRoadStationWindow::GUIRoadStopClassList::FilterFunction * const BuildRoadStationWindow::filter_funcs[] = {
const std::initializer_list<BuildRoadStationWindow::GUIRoadStopClassList::FilterFunction * const> BuildRoadStationWindow::filter_funcs = {
&TagNameFilter,
};

View File

@ -3255,7 +3255,7 @@ bool AfterLoadGame()
/* We did load the "period" of the timer, but not the fired/elapsed. We can deduce that here. */
extern TimeoutTimer<TimerGameTick> _new_competitor_timeout;
_new_competitor_timeout.storage.elapsed = 0;
_new_competitor_timeout.fired = _new_competitor_timeout.period == 0;
_new_competitor_timeout.fired = _new_competitor_timeout.period.value == 0;
}
if (IsSavegameVersionBefore(SLV_NEWGRF_LAST_SERVICE)) {

View File

@ -68,7 +68,7 @@ public:
SlObject(lc, this->GetLoadDescription());
if (IsSavegameVersionBefore(SLV_STRING_GAMELOG)) {
static_cast<LoggedChangeRevision *>(lc)->text = StrMakeValid(std::string_view(SlGamelogRevision::revision_text, lengthof(SlGamelogRevision::revision_text)));
static_cast<LoggedChangeRevision *>(lc)->text = StrMakeValid(std::string_view(std::begin(SlGamelogRevision::revision_text), std::end(SlGamelogRevision::revision_text)));
}
}

View File

@ -99,9 +99,9 @@ static const SaveLoad _date_desc[] = {
SLEG_CONDVAR("pause_mode", _pause_mode, SLE_UINT8, SLV_4, SL_MAX_VERSION),
SLEG_CONDSSTR("id", _game_session_stats.savegame_id, SLE_STR, SLV_SAVEGAME_ID, SL_MAX_VERSION),
/* For older savegames, we load the current value as the "period"; afterload will set the "fired" and "elapsed". */
SLEG_CONDVAR("next_competitor_start", _new_competitor_timeout.period, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_109),
SLEG_CONDVAR("next_competitor_start", _new_competitor_timeout.period, SLE_UINT32, SLV_109, SLV_AI_START_DATE),
SLEG_CONDVAR("competitors_interval", _new_competitor_timeout.period, SLE_UINT32, SLV_AI_START_DATE, SL_MAX_VERSION),
SLEG_CONDVAR("next_competitor_start", _new_competitor_timeout.period.value, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_109),
SLEG_CONDVAR("next_competitor_start", _new_competitor_timeout.period.value, SLE_UINT32, SLV_109, SLV_AI_START_DATE),
SLEG_CONDVAR("competitors_interval", _new_competitor_timeout.period.value, SLE_UINT32, SLV_AI_START_DATE, SL_MAX_VERSION),
SLEG_CONDVAR("competitors_interval_elapsed", _new_competitor_timeout.storage.elapsed, SLE_UINT32, SLV_AI_START_DATE, SL_MAX_VERSION),
SLEG_CONDVAR("competitors_interval_fired", _new_competitor_timeout.fired, SLE_BOOL, SLV_AI_START_DATE, SL_MAX_VERSION),
};

View File

@ -33,12 +33,24 @@ static inline OldChunkType GetOldChunkType(OldChunkType type) {return (OldCh
static inline OldChunkType GetOldChunkVarType(OldChunkType type) {return (OldChunkType)(GB(type, 8, 8) << 8);}
static inline OldChunkType GetOldChunkFileType(OldChunkType type) {return (OldChunkType)(GB(type, 16, 8) << 16);}
/**
* Return expected size in bytes of a OldChunkType
* @param type OldChunkType to get size of.
* @return size of type in bytes.
*/
static inline uint8_t CalcOldVarLen(OldChunkType type)
{
static const uint8_t type_mem_size[] = {0, 1, 1, 2, 2, 4, 4, 8};
uint8_t length = GB(type, 8, 8);
assert(length != 0 && length < lengthof(type_mem_size));
return type_mem_size[length];
switch (GetOldChunkVarType(type)) {
case OC_VAR_I8: return sizeof(int8_t);
case OC_VAR_U8: return sizeof(uint8_t);
case OC_VAR_I16: return sizeof(int16_t);
case OC_VAR_U16: return sizeof(uint16_t);
case OC_VAR_I32: return sizeof(int32_t);
case OC_VAR_U32: return sizeof(uint32_t);
case OC_VAR_I64: return sizeof(int64_t);
case OC_VAR_U64: return sizeof(uint64_t);
default: NOT_REACHED();
}
}
/**

View File

@ -1701,7 +1701,7 @@ static const OldChunks main_chunk[] = {
OCL_ASSERT( OC_TTO, 0x496CE ),
OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &_new_competitor_timeout.period ),
OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &_new_competitor_timeout.period.value ),
OCL_CNULL( OC_TTO, 2 ), ///< available monorail bitmask

View File

@ -599,17 +599,25 @@ static uint8_t GetSavegameFileType(const SaveLoad &sld)
*/
static inline uint SlCalcConvMemLen(VarType conv)
{
static const uint8_t conv_mem_size[] = {1, 1, 1, 2, 2, 4, 4, 8, 8, 0};
switch (GetVarMemType(conv)) {
case SLE_VAR_BL: return sizeof(bool);
case SLE_VAR_I8: return sizeof(int8_t);
case SLE_VAR_U8: return sizeof(uint8_t);
case SLE_VAR_I16: return sizeof(int16_t);
case SLE_VAR_U16: return sizeof(uint16_t);
case SLE_VAR_I32: return sizeof(int32_t);
case SLE_VAR_U32: return sizeof(uint32_t);
case SLE_VAR_I64: return sizeof(int64_t);
case SLE_VAR_U64: return sizeof(uint64_t);
case SLE_VAR_NULL: return 0;
case SLE_VAR_STR:
case SLE_VAR_STRQ:
return SlReadArrayLength();
case SLE_VAR_NAME:
default:
uint8_t type = GetVarMemType(conv) >> 4;
assert(type < lengthof(conv_mem_size));
return conv_mem_size[type];
NOT_REACHED();
}
}
@ -621,17 +629,24 @@ static inline uint SlCalcConvMemLen(VarType conv)
*/
static inline uint8_t SlCalcConvFileLen(VarType conv)
{
static const uint8_t conv_file_size[] = {0, 1, 1, 2, 2, 4, 4, 8, 8, 2};
switch (GetVarFileType(conv)) {
case SLE_FILE_END: return 0;
case SLE_FILE_I8: return sizeof(int8_t);
case SLE_FILE_U8: return sizeof(uint8_t);
case SLE_FILE_I16: return sizeof(int16_t);
case SLE_FILE_U16: return sizeof(uint16_t);
case SLE_FILE_I32: return sizeof(int32_t);
case SLE_FILE_U32: return sizeof(uint32_t);
case SLE_FILE_I64: return sizeof(int64_t);
case SLE_FILE_U64: return sizeof(uint64_t);
case SLE_FILE_STRINGID: return sizeof(uint16_t);
case SLE_FILE_STRING:
return SlReadArrayLength();
case SLE_FILE_STRUCT:
default:
uint8_t type = GetVarFileType(conv);
if (type >= lengthof(conv_file_size)) fmt::println("{}", type);
assert(type < lengthof(conv_file_size));
return conv_file_size[type];
NOT_REACHED();
}
}

View File

@ -2498,7 +2498,8 @@ struct GameSettingsWindow : Window {
DrawString(tr, STR_CONFIG_SETTING_TYPE);
tr.top += GetCharacterHeight(FS_NORMAL);
sd->SetValueDParams(0, sd->def);
int32_t def_val = sd->get_def_cb != nullptr ? sd->get_def_cb() : sd->def;
sd->SetValueDParams(0, def_val);
DrawString(tr, STR_CONFIG_SETTING_DEFAULT_VALUE);
tr.top += GetCharacterHeight(FS_NORMAL) + WidgetDimensions::scaled.vsep_normal;
@ -2732,6 +2733,8 @@ struct GameSettingsWindow : Window {
if (sd->flags & SF_GUI_CURRENCY) llvalue /= GetCurrency().rate;
value = ClampTo<int32_t>(llvalue);
} else if (sd->get_def_cb != nullptr) {
value = sd->get_def_cb();
} else {
value = sd->def;
}

View File

@ -164,6 +164,12 @@ struct IntSettingDesc : SettingDesc {
* @param The new value for the setting.
*/
typedef void PostChangeCallback(int32_t value);
/**
* A callback to get the correct default value. For example a default that can be measured in time
* units or expressed as a percentage.
* @return The correct default value for the setting.
*/
typedef int32_t GetDefaultValueCallback();
template <
typename Tdef,
@ -178,11 +184,13 @@ struct IntSettingDesc : SettingDesc {
IntSettingDesc(const SaveLoad &save, SettingFlag flags, bool startup, Tdef def,
Tmin min, Tmax max, Tinterval interval, StringID str, StringID str_help, StringID str_val,
SettingCategory cat, PreChangeCheck pre_check, PostChangeCallback post_callback,
GetTitleCallback get_title_cb, GetHelpCallback get_help_cb, SetValueDParamsCallback set_value_dparams_cb) :
GetTitleCallback get_title_cb, GetHelpCallback get_help_cb, SetValueDParamsCallback set_value_dparams_cb,
GetDefaultValueCallback get_def_cb) :
SettingDesc(save, flags, startup),
str(str), str_help(str_help), str_val(str_val), cat(cat), pre_check(pre_check),
post_callback(post_callback),
get_title_cb(get_title_cb), get_help_cb(get_help_cb), set_value_dparams_cb(set_value_dparams_cb) {
get_title_cb(get_title_cb), get_help_cb(get_help_cb), set_value_dparams_cb(set_value_dparams_cb),
get_def_cb(get_def_cb) {
if constexpr (std::is_base_of_v<StrongTypedefBase, Tdef>) {
this->def = def.base();
} else {
@ -221,6 +229,7 @@ struct IntSettingDesc : SettingDesc {
GetTitleCallback *get_title_cb;
GetHelpCallback *get_help_cb;
SetValueDParamsCallback *set_value_dparams_cb;
GetDefaultValueCallback *get_def_cb; ///< Callback to set the correct default value
StringID GetTitle() const;
StringID GetHelp() const;
@ -254,9 +263,10 @@ struct BoolSettingDesc : IntSettingDesc {
BoolSettingDesc(const SaveLoad &save, SettingFlag flags, bool startup, bool def,
StringID str, StringID str_help, StringID str_val, SettingCategory cat,
PreChangeCheck pre_check, PostChangeCallback post_callback,
GetTitleCallback get_title_cb, GetHelpCallback get_help_cb, SetValueDParamsCallback set_value_dparams_cb) :
GetTitleCallback get_title_cb, GetHelpCallback get_help_cb, SetValueDParamsCallback set_value_dparams_cb,
GetDefaultValueCallback get_def_cb) :
IntSettingDesc(save, flags, startup, def ? 1 : 0, 0, 1, 0, str, str_help, str_val, cat,
pre_check, post_callback, get_title_cb, get_help_cb, set_value_dparams_cb) {}
pre_check, post_callback, get_title_cb, get_help_cb, set_value_dparams_cb, get_def_cb) {}
static std::optional<bool> ParseSingleValue(const char *str);
@ -273,9 +283,9 @@ struct OneOfManySettingDesc : IntSettingDesc {
int32_t max, StringID str, StringID str_help, StringID str_val, SettingCategory cat,
PreChangeCheck pre_check, PostChangeCallback post_callback,
GetTitleCallback get_title_cb, GetHelpCallback get_help_cb, SetValueDParamsCallback set_value_dparams_cb,
std::initializer_list<const char *> many, OnConvert *many_cnvt) :
GetDefaultValueCallback get_def_cb, std::initializer_list<const char *> many, OnConvert *many_cnvt) :
IntSettingDesc(save, flags, startup, def, 0, max, 0, str, str_help, str_val, cat,
pre_check, post_callback, get_title_cb, get_help_cb, set_value_dparams_cb), many_cnvt(many_cnvt)
pre_check, post_callback, get_title_cb, get_help_cb, set_value_dparams_cb, get_def_cb), many_cnvt(many_cnvt)
{
for (auto one : many) this->many.push_back(one);
}
@ -296,9 +306,9 @@ struct ManyOfManySettingDesc : OneOfManySettingDesc {
int32_t def, StringID str, StringID str_help, StringID str_val, SettingCategory cat,
PreChangeCheck pre_check, PostChangeCallback post_callback,
GetTitleCallback get_title_cb, GetHelpCallback get_help_cb, SetValueDParamsCallback set_value_dparams_cb,
std::initializer_list<const char *> many, OnConvert *many_cnvt) :
GetDefaultValueCallback get_def_cb, std::initializer_list<const char *> many, OnConvert *many_cnvt) :
OneOfManySettingDesc(save, flags, startup, def, (1 << many.size()) - 1, str, str_help,
str_val, cat, pre_check, post_callback, get_title_cb, get_help_cb, set_value_dparams_cb, many, many_cnvt) {}
str_val, cat, pre_check, post_callback, get_title_cb, get_help_cb, set_value_dparams_cb, get_def_cb, many, many_cnvt) {}
size_t ParseValue(const char *str) const override;
std::string FormatValue(const void *object) const override;

View File

@ -116,6 +116,28 @@ static void SettingsValueAbsolute(const IntSettingDesc &sd, uint first_param, in
SetDParam(first_param + 1, abs(value));
}
/** Service Interval Settings Default Value displays the correct units or as a percentage */
static void ServiceIntervalSettingsValueText(const IntSettingDesc &sd, uint first_param, int32_t value)
{
VehicleDefaultSettings *vds;
if (_game_mode == GM_MENU || !Company::IsValidID(_current_company)) {
vds = &_settings_client.company.vehicle;
} else {
vds = &Company::Get(_current_company)->settings.vehicle;
}
if (value == 0) {
SetDParam(first_param, sd.str_val + 3);
} else if (vds->servint_ispercent) {
SetDParam(first_param, sd.str_val + 2);
} else if (TimerGameEconomy::UsingWallclockUnits(_game_mode == GM_MENU)) {
SetDParam(first_param, sd.str_val + 1);
} else {
SetDParam(first_param, sd.str_val);
}
SetDParam(first_param + 1, value);
}
/** Reposition the main toolbar as the setting changed. */
static void v_PositionMainToolbar(int32_t)
{
@ -240,6 +262,43 @@ static void UpdateServiceInterval(VehicleType type, int32_t new_value)
SetWindowClassesDirty(WC_VEHICLE_DETAILS);
}
/**
* Checks if the service intervals in the settings are specified as percentages and corrects the default value accordingly.
* @param new_value Contains the service interval's default value in days, or 50 (default in percentage).
*/
static int32_t GetDefaultServiceInterval(VehicleType type)
{
VehicleDefaultSettings *vds;
if (_game_mode == GM_MENU || !Company::IsValidID(_current_company)) {
vds = &_settings_client.company.vehicle;
} else {
vds = &Company::Get(_current_company)->settings.vehicle;
}
int32_t new_value;
if (vds->servint_ispercent) {
new_value = DEF_SERVINT_PERCENT;
} else if (TimerGameEconomy::UsingWallclockUnits(_game_mode == GM_MENU)) {
switch (type) {
case VEH_TRAIN: new_value = DEF_SERVINT_MINUTES_TRAINS; break;
case VEH_ROAD: new_value = DEF_SERVINT_MINUTES_ROADVEH; break;
case VEH_AIRCRAFT: new_value = DEF_SERVINT_MINUTES_AIRCRAFT; break;
case VEH_SHIP: new_value = DEF_SERVINT_MINUTES_SHIPS; break;
default: NOT_REACHED();
}
} else {
switch (type) {
case VEH_TRAIN: new_value = DEF_SERVINT_DAYS_TRAINS; break;
case VEH_ROAD: new_value = DEF_SERVINT_DAYS_ROADVEH; break;
case VEH_AIRCRAFT: new_value = DEF_SERVINT_DAYS_AIRCRAFT; break;
case VEH_SHIP: new_value = DEF_SERVINT_DAYS_SHIPS; break;
default: NOT_REACHED();
}
}
return new_value;
}
static void TrainAccelerationModelChanged(int32_t)
{
for (Train *t : Train::Iterate()) {

View File

@ -93,7 +93,7 @@ struct SignList {
}
/** Filter sign list by sign name */
static bool CDECL SignNameFilter(const Sign * const *a, StringFilter &filter)
static bool SignNameFilter(const Sign * const *a, StringFilter &filter)
{
/* Same performance benefit as above for sorting. */
const std::string &a_name = (*a)->name.empty() ? SignList::default_name : (*a)->name;
@ -104,14 +104,14 @@ struct SignList {
}
/** Filter sign list excluding OWNER_DEITY */
static bool CDECL OwnerDeityFilter(const Sign * const *a, StringFilter &)
static bool OwnerDeityFilter(const Sign * const *a, StringFilter &)
{
/* You should never be able to edit signs of owner DEITY */
return (*a)->owner != OWNER_DEITY;
}
/** Filter sign list by owner */
static bool CDECL OwnerVisibilityFilter(const Sign * const *a, StringFilter &)
static bool OwnerVisibilityFilter(const Sign * const *a, StringFilter &)
{
assert(!HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS));
/* Hide sign if non-own signs are hidden in the viewport */

View File

@ -47,11 +47,11 @@ template <typename T, typename P = std::nullptr_t, typename F = const char*>
class GUIList : public std::vector<T> {
public:
using SortFunction = std::conditional_t<std::is_same_v<P, std::nullptr_t>, bool (const T&, const T&), bool (const T&, const T&, const P)>; ///< Signature of sort function.
typedef bool CDECL FilterFunction(const T*, F); ///< Signature of filter function.
using FilterFunction = bool(const T*, F); ///< Signature of filter function.
protected:
SortFunction * const *sort_func_list; ///< the sort criteria functions
FilterFunction * const *filter_func_list; ///< the filter criteria functions
std::span<SortFunction * const> sort_func_list; ///< the sort criteria functions
std::span<FilterFunction * const> filter_func_list; ///< the filter criteria functions
SortListFlags flags; ///< used to control sorting/resorting/etc.
uint8_t sort_type; ///< what criteria to sort on
uint8_t filter_type; ///< what criteria to filter on
@ -85,8 +85,8 @@ public:
/* If sort parameters are not used then we don't require a reference to the params. */
template <typename T_ = T, typename P_ = P, typename _F = F, std::enable_if_t<std::is_same_v<P_, std::nullptr_t>>* = nullptr>
GUIList() :
sort_func_list(nullptr),
filter_func_list(nullptr),
sort_func_list({}),
filter_func_list({}),
flags(VL_NONE),
sort_type(0),
filter_type(0),
@ -97,8 +97,8 @@ public:
/* If sort parameters are used then we require a reference to the params. */
template <typename T_ = T, typename P_ = P, typename _F = F, std::enable_if_t<!std::is_same_v<P_, std::nullptr_t>>* = nullptr>
GUIList(const P &params) :
sort_func_list(nullptr),
filter_func_list(nullptr),
sort_func_list({}),
filter_func_list({}),
flags(VL_NONE),
sort_type(0),
filter_type(0),
@ -123,6 +123,7 @@ public:
*/
void SetSortType(uint8_t n_type)
{
assert(n_type < std::size(this->sort_func_list));
if (this->sort_type != n_type) {
SETBITS(this->flags, VL_RESORT);
this->sort_type = n_type;
@ -175,6 +176,7 @@ public:
*/
void SetFilterType(uint8_t n_type)
{
assert(n_type < std::size(this->filter_func_list));
if (this->filter_type != n_type) {
this->filter_type = n_type;
}
@ -288,11 +290,11 @@ public:
}
/**
* Hand the array of sort function pointers to the sort list
* Hand the sort function pointers to the GUIList.
*
* @param n_funcs The pointer to the first sort func
* @param n_funcs Span covering the sort function pointers.
*/
void SetSortFuncs(SortFunction * const *n_funcs)
void SetSortFuncs(std::span<SortFunction * const> n_funcs)
{
this->sort_func_list = n_funcs;
}
@ -305,7 +307,8 @@ public:
*/
bool Sort()
{
assert(this->sort_func_list != nullptr);
if (this->sort_func_list.empty()) return false;
assert(this->sort_type < this->sort_func_list.size());
return this->Sort(this->sort_func_list[this->sort_type]);
}
@ -359,11 +362,11 @@ public:
}
/**
* Hand the array of filter function pointers to the sort list
* Hand the filter function pointers to the GUIList.
*
* @param n_funcs The pointer to the first filter func
* @param n_funcs Span covering the filter function pointers.
*/
void SetFilterFuncs(FilterFunction * const *n_funcs)
void SetFilterFuncs(std::span<FilterFunction * const> n_funcs)
{
this->filter_func_list = n_funcs;
}
@ -376,7 +379,8 @@ public:
*/
bool Filter(F filter_data)
{
if (this->filter_func_list == nullptr) return false;
if (this->filter_func_list.empty()) return false;
assert(this->filter_type < this->filter_func_list.size());
return this->Filter(this->filter_func_list[this->filter_type], filter_data);
}

View File

@ -245,7 +245,7 @@ protected:
/* Constants for sorting stations */
static const StringID sorter_names[];
static GUIStationList::SortFunction * const sorter_funcs[];
static const std::initializer_list<GUIStationList::SortFunction * const> sorter_funcs;
FilterState filter;
GUIStationList stations{filter.cargoes};
@ -720,7 +720,7 @@ public:
};
/* Available station sorting functions */
GUIStationList::SortFunction * const CompanyStationsWindow::sorter_funcs[] = {
const std::initializer_list<GUIStationList::SortFunction * const> CompanyStationsWindow::sorter_funcs = {
&StationNameSorter,
&StationTypeSorter,
&StationWaitingTotalSorter,

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