From 4b372b60500485fa3bc9cbf9675550c9701464c1 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 2 Feb 2024 18:13:38 +0100 Subject: [PATCH 01/17] Codechange: use std::shared_ptr to manage saveload filters instead of manually trying to avoid double frees --- src/network/network_client.cpp | 19 ++++--------- src/network/network_client.h | 2 +- src/network/network_server.cpp | 2 +- src/network/network_server.h | 2 +- src/openttd.cpp | 2 +- src/saveload/saveload.cpp | 50 ++++++++++++++-------------------- src/saveload/saveload.h | 4 +-- src/saveload/saveload_filter.h | 18 ++++++------ 8 files changed, 40 insertions(+), 59 deletions(-) diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index 6c9fd88273..670b7db47a 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -155,7 +155,6 @@ ClientNetworkGameSocketHandler::~ClientNetworkGameSocketHandler() assert(ClientNetworkGameSocketHandler::my_client == this); ClientNetworkGameSocketHandler::my_client = nullptr; - delete this->savegame; delete this->GetInfo(); } @@ -567,7 +566,7 @@ bool ClientNetworkGameSocketHandler::IsConnected() * DEF_CLIENT_RECEIVE_COMMAND has parameter: Packet *p ************/ -extern bool SafeLoad(const std::string &filename, SaveLoadOperation fop, DetailedFileType dft, GameMode newgm, Subdirectory subdir, struct LoadFilter *lf = nullptr); +extern bool SafeLoad(const std::string &filename, SaveLoadOperation fop, DetailedFileType dft, GameMode newgm, Subdirectory subdir, std::shared_ptr lf); NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_FULL(Packet *) { @@ -810,7 +809,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(Packe if (this->savegame != nullptr) return NETWORK_RECV_STATUS_MALFORMED_PACKET; - this->savegame = new PacketReader(); + this->savegame = std::make_shared(); _frame_counter = _frame_counter_server = _frame_counter_max = p->Recv_uint32(); @@ -864,20 +863,12 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DONE(Packet _network_join_status = NETWORK_JOIN_STATUS_PROCESSING; SetWindowDirty(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN); - /* - * Make sure everything is set for reading. - * - * We need the local copy and reset this->savegame because when - * loading fails the network gets reset upon loading the intro - * game, which would cause us to free this->savegame twice. - */ - LoadFilter *lf = this->savegame; - this->savegame = nullptr; - lf->Reset(); + this->savegame->Reset(); /* The map is done downloading, load it */ ClearErrorMessages(); - bool load_success = SafeLoad({}, SLO_LOAD, DFT_GAME_FILE, GM_NORMAL, NO_DIRECTORY, lf); + bool load_success = SafeLoad({}, SLO_LOAD, DFT_GAME_FILE, GM_NORMAL, NO_DIRECTORY, this->savegame); + this->savegame = nullptr; /* Long savegame loads shouldn't affect the lag calculation! */ this->last_packet = std::chrono::steady_clock::now(); diff --git a/src/network/network_client.h b/src/network/network_client.h index 42caac9289..038ed0e551 100644 --- a/src/network/network_client.h +++ b/src/network/network_client.h @@ -16,7 +16,7 @@ class ClientNetworkGameSocketHandler : public ZeroedMemoryAllocator, public NetworkGameSocketHandler { private: std::string connection_string; ///< Address we are connected to. - struct PacketReader *savegame; ///< Packet reader for reading the savegame. + std::shared_ptr savegame; ///< Packet reader for reading the savegame. byte token; ///< The token we need to send back to the server to prove we're the right client. /** Status of the connection with the server. */ diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 96c95434e5..1dda7dbcf4 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -576,7 +576,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMap() Debug(net, 9, "client[{}] SendMap(): first_packet", this->client_id); WaitTillSaved(); - this->savegame = new PacketWriter(this); + this->savegame = std::make_shared(this); /* Now send the _frame_counter and how many packets are coming */ Packet *p = new Packet(PACKET_SERVER_MAP_BEGIN); diff --git a/src/network/network_server.h b/src/network/network_server.h index 171a89233d..2ff1c9798f 100644 --- a/src/network/network_server.h +++ b/src/network/network_server.h @@ -69,7 +69,7 @@ public: CommandQueue outgoing_queue; ///< The command-queue awaiting delivery size_t receive_limit; ///< Amount of bytes that we can receive at this moment - struct PacketWriter *savegame; ///< Writer used to write the savegame. + std::shared_ptr savegame; ///< Writer used to write the savegame. NetworkAddress client_address; ///< IP-address of the client (so they can be banned) ServerNetworkGameSocketHandler(SOCKET s); diff --git a/src/openttd.cpp b/src/openttd.cpp index 3af31509e1..31db6b0d60 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -966,7 +966,7 @@ static void MakeNewEditorWorld() * @param subdir default directory to look for filename, set to 0 if not needed * @param lf Load filter to use, if nullptr: use filename + subdir. */ -bool SafeLoad(const std::string &filename, SaveLoadOperation fop, DetailedFileType dft, GameMode newgm, Subdirectory subdir, struct LoadFilter *lf = nullptr) +bool SafeLoad(const std::string &filename, SaveLoadOperation fop, DetailedFileType dft, GameMode newgm, Subdirectory subdir, std::shared_ptr lf = nullptr) { assert(fop == SLO_LOAD); assert(dft == DFT_GAME_FILE || (lf == nullptr && dft == DFT_OLD_GAME_FILE)); diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index c4e078cf39..a25267ddf0 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -88,14 +88,14 @@ struct ReadBuffer { byte buf[MEMORY_CHUNK_SIZE]; ///< Buffer we're going to read from. byte *bufp; ///< Location we're at reading the buffer. byte *bufe; ///< End of the buffer we can read from. - LoadFilter *reader; ///< The filter used to actually read. + std::shared_ptr reader; ///< The filter used to actually read. size_t read; ///< The amount of read bytes so far from the filter. /** * Initialise our variables. * @param reader The filter to actually read data. */ - ReadBuffer(LoadFilter *reader) : bufp(nullptr), bufe(nullptr), reader(reader), read(0) + ReadBuffer(std::shared_ptr reader) : bufp(nullptr), bufe(nullptr), reader(reader), read(0) { } @@ -162,7 +162,7 @@ struct MemoryDumper { * Flush this dumper into a writer. * @param writer The filter we want to use. */ - void Flush(SaveFilter *writer) + void Flush(std::shared_ptr writer) { uint i = 0; size_t t = this->GetSize(); @@ -199,10 +199,10 @@ struct SaveLoadParams { bool expect_table_header; ///< In the case of a table, if the header is saved/loaded. MemoryDumper *dumper; ///< Memory dumper to write the savegame to. - SaveFilter *sf; ///< Filter to write the savegame to. + std::shared_ptr sf; ///< Filter to write the savegame to. ReadBuffer *reader; ///< Savegame reading buffer. - LoadFilter *lf; ///< Filter to read the savegame from. + std::shared_ptr lf; ///< Filter to read the savegame from. StringID error_str; ///< the translatable error message to show std::string extra_msg; ///< the error message @@ -2175,9 +2175,6 @@ struct FileReader : LoadFilter { { if (this->file != nullptr) fclose(this->file); this->file = nullptr; - - /* Make sure we don't double free. */ - _sl.sf = nullptr; } size_t Read(byte *buf, size_t size) override @@ -2213,9 +2210,6 @@ struct FileWriter : SaveFilter { ~FileWriter() { this->Finish(); - - /* Make sure we don't double free. */ - _sl.sf = nullptr; } void Write(byte *buf, size_t size) override @@ -2249,7 +2243,7 @@ struct LZOLoadFilter : LoadFilter { * Initialise this filter. * @param chain The next filter in this chain. */ - LZOLoadFilter(LoadFilter *chain) : LoadFilter(chain) + LZOLoadFilter(std::shared_ptr chain) : LoadFilter(chain) { if (lzo_init() != LZO_E_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize decompressor"); } @@ -2296,7 +2290,7 @@ struct LZOSaveFilter : SaveFilter { * Initialise this filter. * @param chain The next filter in this chain. */ - LZOSaveFilter(SaveFilter *chain, byte) : SaveFilter(chain) + LZOSaveFilter(std::shared_ptr chain, byte) : SaveFilter(chain) { if (lzo_init() != LZO_E_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize compressor"); } @@ -2336,7 +2330,7 @@ struct NoCompLoadFilter : LoadFilter { * Initialise this filter. * @param chain The next filter in this chain. */ - NoCompLoadFilter(LoadFilter *chain) : LoadFilter(chain) + NoCompLoadFilter(std::shared_ptr chain) : LoadFilter(chain) { } @@ -2352,7 +2346,7 @@ struct NoCompSaveFilter : SaveFilter { * Initialise this filter. * @param chain The next filter in this chain. */ - NoCompSaveFilter(SaveFilter *chain, byte) : SaveFilter(chain) + NoCompSaveFilter(std::shared_ptr chain, byte) : SaveFilter(chain) { } @@ -2378,7 +2372,7 @@ struct ZlibLoadFilter : LoadFilter { * Initialise this filter. * @param chain The next filter in this chain. */ - ZlibLoadFilter(LoadFilter *chain) : LoadFilter(chain) + ZlibLoadFilter(std::shared_ptr chain) : LoadFilter(chain) { memset(&this->z, 0, sizeof(this->z)); if (inflateInit(&this->z) != Z_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize decompressor"); @@ -2423,7 +2417,7 @@ struct ZlibSaveFilter : SaveFilter { * @param chain The next filter in this chain. * @param compression_level The requested level of compression. */ - ZlibSaveFilter(SaveFilter *chain, byte compression_level) : SaveFilter(chain) + ZlibSaveFilter(std::shared_ptr chain, byte compression_level) : SaveFilter(chain) { memset(&this->z, 0, sizeof(this->z)); if (deflateInit(&this->z, compression_level) != Z_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize compressor"); @@ -2507,7 +2501,7 @@ struct LZMALoadFilter : LoadFilter { * Initialise this filter. * @param chain The next filter in this chain. */ - LZMALoadFilter(LoadFilter *chain) : LoadFilter(chain), lzma(_lzma_init) + LZMALoadFilter(std::shared_ptr chain) : LoadFilter(chain), lzma(_lzma_init) { /* Allow saves up to 256 MB uncompressed */ if (lzma_auto_decoder(&this->lzma, 1 << 28, 0) != LZMA_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize decompressor"); @@ -2551,7 +2545,7 @@ struct LZMASaveFilter : SaveFilter { * @param chain The next filter in this chain. * @param compression_level The requested level of compression. */ - LZMASaveFilter(SaveFilter *chain, byte compression_level) : SaveFilter(chain), lzma(_lzma_init) + LZMASaveFilter(std::shared_ptr chain, byte compression_level) : SaveFilter(chain), lzma(_lzma_init) { if (lzma_easy_encoder(&this->lzma, compression_level, LZMA_CHECK_CRC32) != LZMA_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize compressor"); } @@ -2611,8 +2605,8 @@ struct SaveLoadFormat { const char *name; ///< name of the compressor/decompressor (debug-only) uint32_t tag; ///< the 4-letter tag by which it is identified in the savegame - LoadFilter *(*init_load)(LoadFilter *chain); ///< Constructor for the load filter. - SaveFilter *(*init_write)(SaveFilter *chain, byte compression); ///< Constructor for the save filter. + std::shared_ptr (*init_load)(std::shared_ptr chain); ///< Constructor for the load filter. + std::shared_ptr (*init_write)(std::shared_ptr chain, byte compression); ///< Constructor for the save filter. byte min_compression; ///< the minimum compression level of this format byte default_compression; ///< the default compression level of this format @@ -2720,13 +2714,11 @@ static inline void ClearSaveLoadState() delete _sl.dumper; _sl.dumper = nullptr; - delete _sl.sf; _sl.sf = nullptr; delete _sl.reader; _sl.reader = nullptr; - delete _sl.lf; _sl.lf = nullptr; } @@ -2839,7 +2831,7 @@ void WaitTillSaved() * @param threaded Whether to try to perform the saving asynchronously. * @return Return the result of the action. #SL_OK or #SL_ERROR */ -static SaveOrLoadResult DoSave(SaveFilter *writer, bool threaded) +static SaveOrLoadResult DoSave(std::shared_ptr writer, bool threaded) { assert(!_sl.saveinprogress); @@ -2871,7 +2863,7 @@ static SaveOrLoadResult DoSave(SaveFilter *writer, bool threaded) * @param threaded Whether to try to perform the saving asynchronously. * @return Return the result of the action. #SL_OK or #SL_ERROR */ -SaveOrLoadResult SaveWithFilter(SaveFilter *writer, bool threaded) +SaveOrLoadResult SaveWithFilter(std::shared_ptr writer, bool threaded) { try { _sl.action = SLA_SAVE; @@ -2888,7 +2880,7 @@ SaveOrLoadResult SaveWithFilter(SaveFilter *writer, bool threaded) * @param load_check Whether to perform the checking ("preview") or actually load the game. * @return Return the result of the action. #SL_OK or #SL_REINIT ("unload" the game) */ -static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) +static SaveOrLoadResult DoLoad(std::shared_ptr reader, bool load_check) { _sl.lf = reader; @@ -3027,7 +3019,7 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) * @param reader The filter to read the savegame from. * @return Return the result of the action. #SL_OK or #SL_REINIT ("unload" the game) */ -SaveOrLoadResult LoadWithFilter(LoadFilter *reader) +SaveOrLoadResult LoadWithFilter(std::shared_ptr reader) { try { _sl.action = SLA_LOAD; @@ -3114,13 +3106,13 @@ SaveOrLoadResult SaveOrLoad(const std::string &filename, SaveLoadOperation fop, Debug(desync, 1, "save: {:08x}; {:02x}; {}", TimerGameEconomy::date, TimerGameEconomy::date_fract, filename); if (!_settings_client.gui.threaded_saves) threaded = false; - return DoSave(new FileWriter(fh), threaded); + return DoSave(std::make_shared(fh), threaded); } /* LOAD game */ assert(fop == SLO_LOAD || fop == SLO_CHECK); Debug(desync, 1, "load: {}", filename); - return DoLoad(new FileReader(fh), fop == SLO_CHECK); + return DoLoad(std::make_shared(fh), fop == SLO_CHECK); } catch (...) { /* This code may be executed both for old and new save games. */ ClearSaveLoadState(); diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index 9cdecc7cd7..1dfe3f96c1 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -421,8 +421,8 @@ void DoExitSave(); void DoAutoOrNetsave(FiosNumberedSaveName &counter); -SaveOrLoadResult SaveWithFilter(struct SaveFilter *writer, bool threaded); -SaveOrLoadResult LoadWithFilter(struct LoadFilter *reader); +SaveOrLoadResult SaveWithFilter(std::shared_ptr writer, bool threaded); +SaveOrLoadResult LoadWithFilter(std::shared_ptr reader); typedef void AutolengthProc(void *arg); diff --git a/src/saveload/saveload_filter.h b/src/saveload/saveload_filter.h index 490daec872..445208f041 100644 --- a/src/saveload/saveload_filter.h +++ b/src/saveload/saveload_filter.h @@ -13,20 +13,19 @@ /** Interface for filtering a savegame till it is loaded. */ struct LoadFilter { /** Chained to the (savegame) filters. */ - LoadFilter *chain; + std::shared_ptr chain; /** * Initialise this filter. * @param chain The next filter in this chain. */ - LoadFilter(LoadFilter *chain) : chain(chain) + LoadFilter(std::shared_ptr chain) : chain(chain) { } /** Make sure the writers are properly closed. */ virtual ~LoadFilter() { - delete this->chain; } /** @@ -51,28 +50,27 @@ struct LoadFilter { * @param chain The next filter in this chain. * @tparam T The type of load filter to create. */ -template LoadFilter *CreateLoadFilter(LoadFilter *chain) +template std::shared_ptr CreateLoadFilter(std::shared_ptr chain) { - return new T(chain); + return std::make_shared(chain); } /** Interface for filtering a savegame till it is written. */ struct SaveFilter { /** Chained to the (savegame) filters. */ - SaveFilter *chain; + std::shared_ptr chain; /** * Initialise this filter. * @param chain The next filter in this chain. */ - SaveFilter(SaveFilter *chain) : chain(chain) + SaveFilter(std::shared_ptr chain) : chain(chain) { } /** Make sure the writers are properly closed. */ virtual ~SaveFilter() { - delete this->chain; } /** @@ -97,9 +95,9 @@ struct SaveFilter { * @param compression_level The requested level of compression. * @tparam T The type of save filter to create. */ -template SaveFilter *CreateSaveFilter(SaveFilter *chain, byte compression_level) +template std::shared_ptr CreateSaveFilter(std::shared_ptr chain, byte compression_level) { - return new T(chain, compression_level); + return std::make_shared(chain, compression_level); } #endif /* SAVELOAD_FILTER_H */ From 7a740eefa07804a65924842d66669f2fadf09bf2 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 2 Feb 2024 18:18:23 +0100 Subject: [PATCH 02/17] Codechange: use std::unique_ptr for managing SaveLoadParams --- src/saveload/saveload.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index a25267ddf0..95b439ce28 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -198,10 +198,10 @@ struct SaveLoadParams { int array_index, last_array_index; ///< in the case of an array, the current and last positions bool expect_table_header; ///< In the case of a table, if the header is saved/loaded. - MemoryDumper *dumper; ///< Memory dumper to write the savegame to. + std::unique_ptr dumper; ///< Memory dumper to write the savegame to. std::shared_ptr sf; ///< Filter to write the savegame to. - ReadBuffer *reader; ///< Savegame reading buffer. + std::unique_ptr reader; ///< Savegame reading buffer. std::shared_ptr lf; ///< Filter to read the savegame from. StringID error_str; ///< the translatable error message to show @@ -2711,14 +2711,9 @@ static void ResetSaveloadData() */ static inline void ClearSaveLoadState() { - delete _sl.dumper; _sl.dumper = nullptr; - _sl.sf = nullptr; - - delete _sl.reader; _sl.reader = nullptr; - _sl.lf = nullptr; } @@ -2835,7 +2830,7 @@ static SaveOrLoadResult DoSave(std::shared_ptr writer, bool threaded { assert(!_sl.saveinprogress); - _sl.dumper = new MemoryDumper(); + _sl.dumper = std::make_unique(); _sl.sf = writer; _sl_version = SAVEGAME_VERSION; @@ -2942,7 +2937,7 @@ static SaveOrLoadResult DoLoad(std::shared_ptr reader, bool load_che } _sl.lf = fmt->init_load(_sl.lf); - _sl.reader = new ReadBuffer(_sl.lf); + _sl.reader = std::make_unique(_sl.lf); _next_offs = 0; if (!load_check) { From 80a704ba110bff3624f414a89cd180720416089f Mon Sep 17 00:00:00 2001 From: Tyler Trahan Date: Sat, 3 Feb 2024 16:47:06 -0500 Subject: [PATCH 03/17] Fix f6dd505: Split depot action tooltip by vehicle type --- src/lang/english.txt | 9 ++++++++- src/order_gui.cpp | 5 +++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/lang/english.txt b/src/lang/english.txt index a8a1bc3f68..bf2c54306d 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -4559,7 +4559,14 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Always go STR_ORDER_DROP_SERVICE_DEPOT :Service if needed STR_ORDER_DROP_HALT_DEPOT :Stop STR_ORDER_DROP_UNBUNCH :Unbunch -STR_ORDER_DEPOT_ACTION_TOOLTIP :{BLACK}Select the action to take at this depot + +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP :{BLACK}Select the action to take at this depot +STR_ORDER_ROAD_DEPOT_ACTION_TOOLTIP :{BLACK}Select the action to take at this depot +STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Select the action to take at this depot +STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Select the action to take at this hangar +###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Vehicle data to base jumping on diff --git a/src/order_gui.cpp b/src/order_gui.cpp index d4ec09cb84..e916d3d72f 100644 --- a/src/order_gui.cpp +++ b/src/order_gui.cpp @@ -785,6 +785,7 @@ public: this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_O_SCROLLBAR); + this->GetWidget(WID_O_DEPOT_ACTION)->tool_tip = STR_ORDER_TRAIN_DEPOT_ACTION_TOOLTIP + v->type; this->FinishInitNested(v->index); this->selected_order = -1; @@ -1614,7 +1615,7 @@ static constexpr NWidgetPart _nested_orders_train_widgets[] = { NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_UNLOAD), SetMinimalSize(93, 12), SetFill(1, 0), SetDataTip(STR_ORDER_TOGGLE_UNLOAD, STR_ORDER_TOOLTIP_UNLOAD), SetResize(1, 0), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_DEPOT_ACTION), SetMinimalSize(93, 12), SetFill(1, 0), - SetDataTip(STR_JUST_STRING, STR_ORDER_DEPOT_ACTION_TOOLTIP), SetResize(1, 0), + SetDataTip(STR_JUST_STRING, STR_NULL), SetResize(1, 0), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_TOP_RIGHT), NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(93, 12), SetFill(1, 0), SetResize(1, 0), EndContainer(), @@ -1692,7 +1693,7 @@ static constexpr NWidgetPart _nested_orders_widgets[] = { NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_REFIT), SetMinimalSize(186, 12), SetFill(1, 0), SetDataTip(STR_ORDER_REFIT, STR_ORDER_REFIT_TOOLTIP), SetResize(1, 0), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_DEPOT_ACTION), SetMinimalSize(124, 12), SetFill(1, 0), - SetDataTip(STR_JUST_STRING, STR_ORDER_DEPOT_ACTION_TOOLTIP), SetResize(1, 0), + SetDataTip(STR_JUST_STRING, STR_NULL), SetResize(1, 0), EndContainer(), /* Buttons for setting a condition. */ From d0c753465d208185e6832444a834f4ff865873ec Mon Sep 17 00:00:00 2001 From: Tyler Trahan Date: Sat, 3 Feb 2024 16:50:25 -0500 Subject: [PATCH 04/17] Fix f6dd505: Remove unneeded error when switching between depot actions --- src/lang/english.txt | 1 - src/order_cmd.cpp | 5 ----- 2 files changed, 6 deletions(-) diff --git a/src/lang/english.txt b/src/lang/english.txt index bf2c54306d..6e685acf82 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -5112,7 +5112,6 @@ STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... cann STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... cannot unbunch a vehicle with a full load order STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... cannot use conditional orders when vehicle has an unbunching order STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... cannot unbunch a vehicle with a conditional order -STR_ERROR_UNBUNCHING_NO_SERVICE_IF_NEEDED :{WHITE}... vehicle must always visit the depot to unbunch there # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} is too long after replacement diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index 8dd4218930..707fe82318 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -1300,9 +1300,6 @@ CommandCost CmdModifyOrder(DoCommandFlag flags, VehicleID veh, VehicleOrderID se case MOF_DEPOT_ACTION: if (data >= DA_END) return CMD_ERROR; - /* The vehicle must always go to the depot (not just if it needs servicing) in order to unbunch there. */ - if ((data == DA_SERVICE) && (order->GetDepotActionType() & ODATFB_UNBUNCH)) return_cmd_error(STR_ERROR_UNBUNCHING_NO_SERVICE_IF_NEEDED); - /* Check if we are allowed to add unbunching. We are always allowed to remove it. */ if (data == DA_UNBUNCH) { /* Only one unbunching order is allowed in a vehicle's orders. If this order already has an unbunching action, no error is needed. */ @@ -1312,8 +1309,6 @@ CommandCost CmdModifyOrder(DoCommandFlag flags, VehicleID veh, VehicleOrderID se if (o->IsType(OT_CONDITIONAL)) return_cmd_error(STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL); /* We don't allow unbunching if the vehicle has a full load order. */ if (o->IsType(OT_GOTO_STATION) && o->GetLoadType() & (OLFB_FULL_LOAD | OLF_FULL_LOAD_ANY)) return_cmd_error(STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD); - /* The vehicle must always go to the depot (not just if it needs servicing) in order to unbunch there. */ - if (o->IsType(OT_GOTO_DEPOT) && o->GetDepotOrderType() & ODTFB_SERVICE) return_cmd_error(STR_ERROR_UNBUNCHING_NO_SERVICE_IF_NEEDED); } } break; From d5e936c9d4a0583d8cd8e8719ee573c7fbcaca54 Mon Sep 17 00:00:00 2001 From: Tyler Trahan Date: Sun, 4 Feb 2024 01:07:47 -0500 Subject: [PATCH 05/17] Fix #11968: Always set string parameters to avoid undefined behavior (#11973) --- src/order_gui.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/order_gui.cpp b/src/order_gui.cpp index e916d3d72f..fc889d3fe0 100644 --- a/src/order_gui.cpp +++ b/src/order_gui.cpp @@ -1166,7 +1166,11 @@ public: case WID_O_DEPOT_ACTION: { VehicleOrderID sel = this->OrderGetSel(); const Order *order = this->vehicle->GetOrder(sel); - if (order == nullptr || !order->IsType(OT_GOTO_DEPOT)) break; + if (order == nullptr || !order->IsType(OT_GOTO_DEPOT)) { + /* We can't leave this param unset or the undefined behavior can cause a crash. */ + SetDParam(0, STR_EMPTY); + break; + }; /* Select the current action selected in the dropdown. The flags don't match the dropdown so we can't just use an index. */ if (order->GetDepotOrderType() & ODTFB_SERVICE) { From cb13ee90efa7373ed3b65d30bf008f834b884adf Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 3 Feb 2024 23:13:52 +0000 Subject: [PATCH 06/17] Fix: Second colour vehicle-type default liveries not being updated When changing company default second colour --- src/company_cmd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 8677367ff7..32743dd666 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -1046,7 +1046,7 @@ CommandCost CmdSetCompanyColour(DoCommandFlag flags, LiveryScheme scheme, bool p c->livery[scheme].colour2 = colour; if (scheme == LS_DEFAULT) { - UpdateCompanyGroupLiveries(c); + UpdateCompanyLiveries(c); } } From d9461e52aff6ade48ccba385ecdb30c1cba6116c Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 4 Feb 2024 08:51:19 +0000 Subject: [PATCH 07/17] Fix #11972: Incorrect minimum width allocated to graph. (#11974) Width was based on actual number of data points instead of possible number of data points. --- src/graph_gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp index e724dd6b9c..45b4ded9ac 100644 --- a/src/graph_gui.cpp +++ b/src/graph_gui.cpp @@ -548,7 +548,7 @@ public: SetDParam(1, INT64_MAX); uint y_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL).width; - size->width = std::max(size->width, ScaleGUITrad(5) + y_label_width + this->num_on_x_axis * (x_label_width + ScaleGUITrad(5)) + ScaleGUITrad(9)); + size->width = std::max(size->width, ScaleGUITrad(5) + y_label_width + this->num_vert_lines * (x_label_width + ScaleGUITrad(5)) + ScaleGUITrad(9)); size->height = std::max(size->height, ScaleGUITrad(5) + (1 + MIN_GRAPH_NUM_LINES_Y * 2 + (this->draw_dates ? 3 : 1)) * GetCharacterHeight(FS_SMALL) + ScaleGUITrad(4)); size->height = std::max(size->height, size->width / 3); } From 093715849976c4db57d098adf1041c5ed4f4f182 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 4 Feb 2024 14:22:05 +0530 Subject: [PATCH 08/17] Fix: [CMake] Link test executable with log library in Android (#11979) --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f0f0b33e65..fe1652d6fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -288,6 +288,10 @@ target_link_libraries(openttd ) target_link_libraries(openttd_test PRIVATE openttd_lib) +if(ANDROID) + target_link_libraries(openttd_test PRIVATE log) +endif() + include(Catch) catch_discover_tests(openttd_test) From 75015cdad21aacd711e7bc9dca2150a465570020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Guilloux?= Date: Sun, 4 Feb 2024 10:39:06 +0100 Subject: [PATCH 09/17] Fix 6f6f099: Signals exist only on plain rail tiles (#11977) --- src/rail_gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 636f5e6c2b..7f5586b1e1 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -241,7 +241,7 @@ static void GenericPlaceSignals(TileIndex tile) Command::Post(STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM, CcPlaySound_CONSTRUCTION_RAIL, tile, track); } else { /* Which signals should we cycle through? */ - bool tile_has_signal = IsValidTrack(track) && HasSignalOnTrack(tile, track); + bool tile_has_signal = IsPlainRailTile(tile) && IsValidTrack(track) && HasSignalOnTrack(tile, track); SignalType cur_signal_on_tile = tile_has_signal ? GetSignalType(tile, track) : _cur_signal_type; SignalType cycle_start; SignalType cycle_end; From 83d63464db912f030b4cbf2936a878d1c86c338d Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 4 Feb 2024 10:15:20 +0000 Subject: [PATCH 10/17] Fix #11966: Scrollbar may be incorrect on first opening of text file window. (#11981) The scrollbar is set up before the true monospace is loaded, so reinitialise the window after loading. --- src/textfile_gui.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/textfile_gui.cpp b/src/textfile_gui.cpp index 0e840b01a6..c07133f248 100644 --- a/src/textfile_gui.cpp +++ b/src/textfile_gui.cpp @@ -850,6 +850,9 @@ void TextfileWindow::LoadText(std::string_view buf) this->AfterLoadText(); CheckForMissingGlyphs(true, this); + + /* The font may have changed when searching for glyphs, so ensure widget sizes are updated just in case. */ + this->ReInit(); } /** From 2fd9096070cf5af8548dadafdaf32e49909f6a8b Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 4 Feb 2024 10:16:08 +0000 Subject: [PATCH 11/17] Change: Decouple and remove landscape-dependent cargo types. (#11719) Cargo types of default engines, industries and houses are now specified in terms of label. --- src/aircraft_cmd.cpp | 9 ++- src/articulated_vehicles.cpp | 1 + src/build_vehicle_gui.cpp | 8 ++- src/cargo_type.h | 104 +++++++++++++++++--------------- src/cargotype.cpp | 83 +++++++++++++------------ src/cargotype.h | 18 ++++-- src/console_cmds.cpp | 2 +- src/engine.cpp | 10 +-- src/engine_gui.cpp | 2 +- src/engine_type.h | 1 + src/house.h | 1 + src/industry_cmd.cpp | 8 +-- src/industrytype.h | 3 + src/newgrf.cpp | 86 +++++++++++++++++--------- src/newgrf_cargo.cpp | 2 +- src/newgrf_town.cpp | 37 ++++++------ src/object_cmd.cpp | 30 ++++++--- src/roadveh_cmd.cpp | 1 + src/saveload/oldloader_sl.cpp | 21 ++++--- src/saveload/town_sl.cpp | 33 +++++----- src/script/api/script_cargo.cpp | 2 +- src/ship_cmd.cpp | 1 + src/table/build_industry.h | 8 ++- src/table/cargo_const.h | 80 ++++++++++++------------ src/table/engines.h | 74 +++++++++++------------ src/table/town_land.h | 1 + src/town.h | 6 +- src/town_cmd.cpp | 2 +- src/train_cmd.cpp | 2 + src/vehicle.cpp | 9 ++- src/vehicle_cmd.cpp | 6 +- src/vehicle_gui.cpp | 2 +- 32 files changed, 378 insertions(+), 275 deletions(-) diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index e6c979f872..7ad284b5b7 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -306,11 +306,16 @@ CommandCost CmdBuildAircraft(DoCommandFlag flags, TileIndex tile, const Engine * v->cargo_cap = avi->passenger_capacity; v->refit_cap = 0; - u->cargo_cap = avi->mail_capacity; u->refit_cap = 0; v->cargo_type = e->GetDefaultCargoType(); - u->cargo_type = CT_MAIL; + assert(IsValidCargoID(v->cargo_type)); + + CargoID mail = GetCargoIDByLabel(CT_MAIL); + if (IsValidCargoID(mail)) { + u->cargo_type = mail; + u->cargo_cap = avi->mail_capacity; + } v->name.clear(); v->last_station_visited = INVALID_STATION; diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp index 1f3a8a54b2..110acb3371 100644 --- a/src/articulated_vehicles.cpp +++ b/src/articulated_vehicles.cpp @@ -398,6 +398,7 @@ void AddArticulatedParts(Vehicle *first) rv->spritenum = e_artic->u.road.image_index; if (e_artic->CanCarryCargo()) { rv->cargo_type = e_artic->GetDefaultCargoType(); + assert(IsValidCargoID(rv->cargo_type)); rv->cargo_cap = e_artic->u.road.capacity; // Callback 36 is called when the consist is finished } else { rv->cargo_type = front->cargo_type; // Needed for livery selection diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index 02e86115e2..467b9c0bed 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -820,7 +820,7 @@ static int DrawAircraftPurchaseInfo(int left, int right, int y, EngineID engine_ if (te.mail_capacity > 0) { SetDParam(0, te.cargo); SetDParam(1, te.capacity); - SetDParam(2, CT_MAIL); + SetDParam(2, GetCargoIDByLabel(CT_MAIL)); SetDParam(3, te.mail_capacity); DrawString(left, right, y, STR_PURCHASE_INFO_AIRCRAFT_CAPACITY); } else { @@ -902,7 +902,11 @@ void TestedEngineDetails::FillDefaultCapacities(const Engine *e) } else { this->capacity = e->GetDisplayDefaultCapacity(&this->mail_capacity); this->all_capacities[this->cargo] = this->capacity; - this->all_capacities[CT_MAIL] = this->mail_capacity; + if (IsValidCargoID(GetCargoIDByLabel(CT_MAIL))) { + this->all_capacities[GetCargoIDByLabel(CT_MAIL)] = this->mail_capacity; + } else { + this->mail_capacity = 0; + } } if (this->all_capacities.GetCount() == 0) this->cargo = INVALID_CARGO; } diff --git a/src/cargo_type.h b/src/cargo_type.h index 871f958790..5a50a0002d 100644 --- a/src/cargo_type.h +++ b/src/cargo_type.h @@ -11,58 +11,64 @@ #define CARGO_TYPE_H #include "core/enum_type.hpp" +#include "core/strong_typedef_type.hpp" + +/** Globally unique label of a cargo type. */ +using CargoLabel = StrongType::Typedef; /** * Cargo slots to indicate a cargo type within a game. - * Numbers are re-used between different climates. - * @see CargoTypes */ -typedef byte CargoID; - -/** Available types of cargo */ -enum CargoType { - /* Temperate */ - CT_PASSENGERS = 0, - CT_COAL = 1, - CT_MAIL = 2, - CT_OIL = 3, - CT_LIVESTOCK = 4, - CT_GOODS = 5, - CT_GRAIN = 6, - CT_WOOD = 7, - CT_IRON_ORE = 8, - CT_STEEL = 9, - CT_VALUABLES = 10, - - /* Arctic */ - CT_WHEAT = 6, - CT_HILLY_UNUSED = 8, - CT_PAPER = 9, - CT_GOLD = 10, - CT_FOOD = 11, - - /* Tropic */ - CT_RUBBER = 1, - CT_FRUIT = 4, - CT_MAIZE = 6, - CT_COPPER_ORE = 8, - CT_WATER = 9, - CT_DIAMONDS = 10, - - /* Toyland */ - CT_SUGAR = 1, - CT_TOYS = 3, - CT_BATTERIES = 4, - CT_CANDY = 5, - CT_TOFFEE = 6, - CT_COLA = 7, - CT_COTTON_CANDY = 8, - CT_BUBBLES = 9, - CT_PLASTIC = 10, - CT_FIZZY_DRINKS = 11, - - CT_INVALID = 0xFF, ///< Invalid cargo type. -}; +using CargoID = byte; + +/** + * Available types of cargo + * Labels may be re-used between different climates. + */ + +/* Temperate */ +static constexpr CargoLabel CT_PASSENGERS = CargoLabel{'PASS'}; +static constexpr CargoLabel CT_COAL = CargoLabel{'COAL'}; +static constexpr CargoLabel CT_MAIL = CargoLabel{'MAIL'}; +static constexpr CargoLabel CT_OIL = CargoLabel{'OIL_'}; +static constexpr CargoLabel CT_LIVESTOCK = CargoLabel{'LVST'}; +static constexpr CargoLabel CT_GOODS = CargoLabel{'GOOD'}; +static constexpr CargoLabel CT_GRAIN = CargoLabel{'GRAI'}; +static constexpr CargoLabel CT_WOOD = CargoLabel{'WOOD'}; +static constexpr CargoLabel CT_IRON_ORE = CargoLabel{'IORE'}; +static constexpr CargoLabel CT_STEEL = CargoLabel{'STEL'}; +static constexpr CargoLabel CT_VALUABLES = CargoLabel{'VALU'}; + +/* Arctic */ +static constexpr CargoLabel CT_WHEAT = CargoLabel{'WHEA'}; +static constexpr CargoLabel CT_PAPER = CargoLabel{'PAPR'}; +static constexpr CargoLabel CT_GOLD = CargoLabel{'GOLD'}; +static constexpr CargoLabel CT_FOOD = CargoLabel{'FOOD'}; + +/* Tropic */ +static constexpr CargoLabel CT_RUBBER = CargoLabel{'RUBR'}; +static constexpr CargoLabel CT_FRUIT = CargoLabel{'FRUI'}; +static constexpr CargoLabel CT_MAIZE = CargoLabel{'MAIZ'}; +static constexpr CargoLabel CT_COPPER_ORE = CargoLabel{'CORE'}; +static constexpr CargoLabel CT_WATER = CargoLabel{'WATR'}; +static constexpr CargoLabel CT_DIAMONDS = CargoLabel{'DIAM'}; + +/* Toyland */ +static constexpr CargoLabel CT_SUGAR = CargoLabel{'SUGR'}; +static constexpr CargoLabel CT_TOYS = CargoLabel{'TOYS'}; +static constexpr CargoLabel CT_BATTERIES = CargoLabel{'BATT'}; +static constexpr CargoLabel CT_CANDY = CargoLabel{'SWET'}; +static constexpr CargoLabel CT_TOFFEE = CargoLabel{'TOFF'}; +static constexpr CargoLabel CT_COLA = CargoLabel{'COLA'}; +static constexpr CargoLabel CT_COTTON_CANDY = CargoLabel{'CTCD'}; +static constexpr CargoLabel CT_BUBBLES = CargoLabel{'BUBL'}; +static constexpr CargoLabel CT_PLASTIC = CargoLabel{'PLST'}; +static constexpr CargoLabel CT_FIZZY_DRINKS = CargoLabel{'FZDR'}; + +/** Dummy label for engines that carry no cargo; they actually carry 0 passengers. */ +static constexpr CargoLabel CT_NONE = CT_PASSENGERS; + +static constexpr CargoLabel CT_INVALID = CargoLabel{UINT32_MAX}; ///< Invalid cargo type. static const CargoID NUM_ORIGINAL_CARGO = 12; ///< Original number of cargo types. static const CargoID NUM_CARGO = 64; ///< Maximum number of cargo types in a game. @@ -85,7 +91,7 @@ namespace CargoFilterCriteria { }; /** Test whether cargo type is not CT_INVALID */ -inline bool IsValidCargoType(CargoType t) { return t != CT_INVALID; } +inline bool IsValidCargoType(CargoLabel t) { return t != CT_INVALID; } /** Test whether cargo type is not INVALID_CARGO */ inline bool IsValidCargoID(CargoID t) { return t != INVALID_CARGO; } diff --git a/src/cargotype.cpp b/src/cargotype.cpp index 7181782ec4..bca7e368b5 100644 --- a/src/cargotype.cpp +++ b/src/cargotype.cpp @@ -35,6 +35,12 @@ CargoTypes _cargo_mask; */ CargoTypes _standard_cargo_mask; +/** + * List of default cargo labels, used when setting up cargo types for default vehicles. + * This is done by label so that a cargo label can be redefined in a different slot. + */ +static std::vector _default_cargo_labels; + /** * Set up the default cargo types for the given landscape type. * @param l Landscape @@ -44,18 +50,20 @@ void SetupCargoForClimate(LandscapeID l) assert(l < lengthof(_default_climate_cargo)); _cargo_mask = 0; + _default_cargo_labels.clear(); /* Copy from default cargo by label or index. */ auto insert = std::begin(CargoSpec::array); - for (const CargoLabel &cl : _default_climate_cargo[l]) { + for (const auto &cl : _default_climate_cargo[l]) { /* Check if value is an index into the cargo table */ - if (cl < lengthof(_default_cargo)) { + if (std::holds_alternative(cl)) { /* Copy the default cargo by index. */ - *insert = _default_cargo[cl]; + *insert = _default_cargo[std::get(cl)]; } else { /* Search for label in default cargo types and copy if found. */ - auto found = std::find_if(std::begin(_default_cargo), std::end(_default_cargo), [&cl](const CargoSpec &cs) { return cs.label == cl; }); + CargoLabel label = std::get(cl); + auto found = std::find_if(std::begin(_default_cargo), std::end(_default_cargo), [&label](const CargoSpec &cs) { return cs.label == label; }); if (found != std::end(_default_cargo)) { *insert = *found; } else { @@ -64,65 +72,64 @@ void SetupCargoForClimate(LandscapeID l) } } - if (insert->IsValid()) SetBit(_cargo_mask, insert->Index()); + if (insert->IsValid()) { + SetBit(_cargo_mask, insert->Index()); + _default_cargo_labels.push_back(insert->label); + } ++insert; } /* Reset and disable remaining cargo types. */ std::fill(insert, std::end(CargoSpec::array), CargoSpec{}); + + BuildCargoLabelMap(); } /** - * Get dimensions of largest cargo icon. - * @return Dimensions of largest cargo icon. + * Build cargo label map. + * This is called multiple times during NewGRF initialization as cargos are defined, so that TranslateRefitMask() and + * GetCargoTranslation(), also used during initialization, get the correct information. */ -Dimension GetLargestCargoIconSize() +void BuildCargoLabelMap() { - Dimension size = {0, 0}; - for (const CargoSpec *cs : _sorted_cargo_specs) { - size = maxdim(size, GetSpriteSize(cs->GetCargoIcon())); + CargoSpec::label_map.clear(); + for (const CargoSpec &cs : CargoSpec::array) { + /* During initialization, CargoSpec can be marked valid before the label has been set. */ + if (!cs.IsValid() || cs.label == CargoLabel{0}) continue; + /* Label already exists, don't addd again. */ + if (CargoSpec::label_map.count(cs.label) != 0) continue; + + CargoSpec::label_map.insert(std::make_pair(cs.label, cs.Index())); } - return size; } /** - * Get the cargo ID of a default cargo, if present. - * @param l Landscape - * @param ct Default cargo type. - * @return ID number if the cargo exists, else #INVALID_CARGO + * Test if a cargo is a default cargo type. + * @param cid Cargo ID. + * @returns true iff the cargo type is a default cargo type. */ -CargoID GetDefaultCargoID(LandscapeID l, CargoType ct) +bool IsDefaultCargo(CargoID cid) { - assert(l < lengthof(_default_climate_cargo)); - - if (!IsValidCargoType(ct)) return INVALID_CARGO; + auto cs = CargoSpec::Get(cid); + if (!cs->IsValid()) return false; - assert(ct < lengthof(_default_climate_cargo[0])); - CargoLabel cl = _default_climate_cargo[l][ct]; - /* Bzzt: check if cl is just an index into the cargo table */ - if (cl < lengthof(_default_cargo)) { - cl = _default_cargo[cl].label; - } - - return GetCargoIDByLabel(cl); + CargoLabel label = cs->label; + return std::any_of(std::begin(_default_cargo_labels), std::end(_default_cargo_labels), [&label](const CargoLabel &cl) { return cl == label; }); } /** - * Get the cargo ID by cargo label. - * @param cl Cargo type to get. - * @return ID number if the cargo exists, else #INVALID_CARGO + * Get dimensions of largest cargo icon. + * @return Dimensions of largest cargo icon. */ -CargoID GetCargoIDByLabel(CargoLabel cl) +Dimension GetLargestCargoIconSize() { - for (const CargoSpec *cs : CargoSpec::Iterate()) { - if (cs->label == cl) return cs->Index(); + Dimension size = {0, 0}; + for (const CargoSpec *cs : _sorted_cargo_specs) { + size = maxdim(size, GetSpriteSize(cs->GetCargoIcon())); } - - /* No matching label was found, so it is invalid */ - return INVALID_CARGO; + return size; } - /** * Find the CargoID of a 'bitnum' value. * @param bitnum 'bitnum' to find. diff --git a/src/cargotype.h b/src/cargotype.h index 4c83c3ceba..81758c8b42 100644 --- a/src/cargotype.h +++ b/src/cargotype.h @@ -17,9 +17,6 @@ #include "landscape_type.h" #include "core/bitmath_func.hpp" -/** Globally unique label of a cargo type. */ -typedef uint32_t CargoLabel; - /** Town growth effect when delivering cargo. */ enum TownAcceptanceEffect : byte { TAE_BEGIN = 0, @@ -194,8 +191,11 @@ struct CargoSpec { private: static CargoSpec array[NUM_CARGO]; ///< Array holding all CargoSpecs + static inline std::map label_map{}; ///< Translation map from CargoLabel to Cargo ID. friend void SetupCargoForClimate(LandscapeID l); + friend void BuildCargoLabelMap(); + friend inline CargoID GetCargoIDByLabel(CargoLabel ct); friend void FinaliseCargoArray(); }; @@ -203,9 +203,17 @@ extern CargoTypes _cargo_mask; extern CargoTypes _standard_cargo_mask; void SetupCargoForClimate(LandscapeID l); -CargoID GetCargoIDByLabel(CargoLabel cl); +bool IsDefaultCargo(CargoID cid); +void BuildCargoLabelMap(); CargoID GetCargoIDByBitnum(uint8_t bitnum); -CargoID GetDefaultCargoID(LandscapeID l, CargoType ct); + +inline CargoID GetCargoIDByLabel(CargoLabel label) +{ + auto found = CargoSpec::label_map.find(label); + if (found != std::end(CargoSpec::label_map)) return found->second; + return INVALID_CARGO; +} + Dimension GetLargestCargoIconSize(); void InitializeSortedCargoSpecs(); diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 5d8515c6ce..797b8e8ebe 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -2541,7 +2541,7 @@ static void ConDumpCargoTypes() IConsolePrint(CC_DEFAULT, " {:02d} Bit: {:2d}, Label: {:c}{:c}{:c}{:c}, Callback mask: 0x{:02X}, Cargo class: {}{}{}{}{}{}{}{}{}{}{}, GRF: {:08X}, {}", spec->Index(), spec->bitnum, - spec->label >> 24, spec->label >> 16, spec->label >> 8, spec->label, + spec->label.base() >> 24, spec->label.base() >> 16, spec->label.base() >> 8, spec->label.base(), spec->callback_mask, (spec->classes & CC_PASSENGERS) != 0 ? 'p' : '-', (spec->classes & CC_MAIL) != 0 ? 'm' : '-', diff --git a/src/engine.cpp b/src/engine.cpp index c46f7bb843..979c6a7e31 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -244,8 +244,10 @@ uint Engine::DetermineCapacity(const Vehicle *v, uint16_t *mail_capacity) const if (!IsCargoInClass(cargo_type, CC_PASSENGERS)) { extra_mail_cap = GetEngineProperty(this->index, PROP_AIRCRAFT_MAIL_CAPACITY, this->u.air.mail_capacity, v); } - if (!new_multipliers && cargo_type == CT_MAIL) return capacity + extra_mail_cap; - default_cargo = CT_PASSENGERS; // Always use 'passengers' wrt. cargo multipliers + if (IsValidCargoID(GetCargoIDByLabel(CT_MAIL))) { + if (!new_multipliers && cargo_type == GetCargoIDByLabel(CT_MAIL)) return capacity + extra_mail_cap; + } + default_cargo = GetCargoIDByLabel(CT_PASSENGERS); // Always use 'passengers' wrt. cargo multipliers break; default: NOT_REACHED(); @@ -262,8 +264,8 @@ uint Engine::DetermineCapacity(const Vehicle *v, uint16_t *mail_capacity) const uint16_t default_multiplier = new_multipliers ? 0x100 : CargoSpec::Get(default_cargo)->multiplier; uint16_t cargo_multiplier = CargoSpec::Get(cargo_type)->multiplier; capacity *= cargo_multiplier; - if (extra_mail_cap > 0) { - uint mail_multiplier = CargoSpec::Get(CT_MAIL)->multiplier; + if (extra_mail_cap > 0 && IsValidCargoID(GetCargoIDByLabel(CT_MAIL))) { + uint mail_multiplier = CargoSpec::Get(GetCargoIDByLabel(CT_MAIL))->multiplier; capacity += (default_multiplier * extra_mail_cap * cargo_multiplier + mail_multiplier / 2) / mail_multiplier; } capacity = (capacity + default_multiplier / 2) / default_multiplier; diff --git a/src/engine_gui.cpp b/src/engine_gui.cpp index bbf5ba5626..4742e6e234 100644 --- a/src/engine_gui.cpp +++ b/src/engine_gui.cpp @@ -211,7 +211,7 @@ static StringID GetAircraftEngineInfoString(const Engine *e) SetDParam(9, mail_capacity > 0 ? STR_ENGINE_PREVIEW_CAPACITY_2 : STR_ENGINE_PREVIEW_CAPACITY); SetDParam(10, cargo); SetDParam(11, capacity); - SetDParam(12, CT_MAIL); + SetDParam(12, GetCargoIDByLabel(CT_MAIL)); SetDParam(13, mail_capacity); return STR_ENGINE_PREVIEW_TEXT4; diff --git a/src/engine_type.h b/src/engine_type.h index 7716fd92e7..daaad1a7f8 100644 --- a/src/engine_type.h +++ b/src/engine_type.h @@ -149,6 +149,7 @@ struct EngineInfo { byte load_amount; byte climates; ///< Climates supported by the engine. CargoID cargo_type; + CargoLabel cargo_label; CargoTypes refit_mask; byte refit_cost; byte misc_flags; ///< Miscellaneous flags. @see EngineMiscFlags diff --git a/src/house.h b/src/house.h index 4831e289ac..c3308ea59b 100644 --- a/src/house.h +++ b/src/house.h @@ -106,6 +106,7 @@ struct HouseSpec { byte mail_generation; ///< mail generation multiplier (tile based, as the acceptances below) byte cargo_acceptance[HOUSE_NUM_ACCEPTS]; ///< acceptance level for the cargo slots CargoID accepts_cargo[HOUSE_NUM_ACCEPTS]; ///< input cargo slots + CargoLabel accepts_cargo_label[HOUSE_NUM_ACCEPTS]; ///< input landscape cargo slots BuildingFlags building_flags; ///< some flags that describe the house (size, stadium etc...) HouseZones building_availability; ///< where can it be built (climates, zones) bool enabled; ///< the house is available to build (true by default, but can be disabled by newgrf) diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 7a4fc70d42..a8752d5208 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -982,7 +982,7 @@ bool IsTileForestIndustry(TileIndex tile) if ((GetIndustrySpec(ind->type)->life_type & INDUSTRYLIFE_ORGANIC) == 0) return false; /* Check for wood production */ - return std::any_of(std::begin(ind->produced), std::end(ind->produced), [](const auto &p) { return IsValidCargoID(p.cargo) && CargoSpec::Get(p.cargo)->label == 'WOOD'; }); + return std::any_of(std::begin(ind->produced), std::end(ind->produced), [](const auto &p) { return IsValidCargoID(p.cargo) && CargoSpec::Get(p.cargo)->label == CT_WOOD; }); } static const byte _plantfarmfield_type[] = {1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6}; @@ -1869,7 +1869,7 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type, uint maxcargoes = (indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED) ? static_cast(i->accepted.size()) : 3; for (uint j = 0; j < maxcargoes; j++) { uint16_t res = GetIndustryCallback(CBID_INDUSTRY_INPUT_CARGO_TYPES, j, 0, i, type, INVALID_TILE); - if (res == CALLBACK_FAILED || GB(res, 0, 8) == CT_INVALID) break; + if (res == CALLBACK_FAILED || GB(res, 0, 8) == UINT8_MAX) break; if (indspec->grf_prop.grffile->grf_version >= 8 && res >= 0x100) { ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_INPUT_CARGO_TYPES, res); break; @@ -1901,7 +1901,7 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type, uint maxcargoes = (indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED) ? static_cast(i->produced.size()) : 2; for (uint j = 0; j < maxcargoes; j++) { uint16_t res = GetIndustryCallback(CBID_INDUSTRY_OUTPUT_CARGO_TYPES, j, 0, i, type, INVALID_TILE); - if (res == CALLBACK_FAILED || GB(res, 0, 8) == CT_INVALID) break; + if (res == CALLBACK_FAILED || GB(res, 0, 8) == UINT8_MAX) break; if (indspec->grf_prop.grffile->grf_version >= 8 && res >= 0x100) { ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_OUTPUT_CARGO_TYPES, res); break; @@ -2877,7 +2877,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly) /* Prevent production to overflow or Oil Rig passengers to be over-"produced" */ new_prod = Clamp(new_prod, 1, 255); - if (p.cargo == CT_PASSENGERS && !(indspec->behaviour & INDUSTRYBEH_NO_PAX_PROD_CLAMP)) { + if (IsValidCargoID(p.cargo) && p.cargo == GetCargoIDByLabel(CT_PASSENGERS) && !(indspec->behaviour & INDUSTRYBEH_NO_PAX_PROD_CLAMP)) { new_prod = Clamp(new_prod, 0, 16); } diff --git a/src/industrytype.h b/src/industrytype.h index 07a3d36bb7..b71b7d29b3 100644 --- a/src/industrytype.h +++ b/src/industrytype.h @@ -110,6 +110,7 @@ struct IndustrySpec { IndustryType conflicting[3]; ///< Industries this industry cannot be close to byte check_proc; ///< Index to a procedure to check for conflicting circumstances CargoID produced_cargo[INDUSTRY_NUM_OUTPUTS]; + CargoLabel produced_cargo_label[INDUSTRY_NUM_OUTPUTS]; byte production_rate[INDUSTRY_NUM_OUTPUTS]; /** * minimum amount of cargo transported to the stations. @@ -117,6 +118,7 @@ struct IndustrySpec { */ byte minimal_cargo; CargoID accepts_cargo[INDUSTRY_NUM_INPUTS]; ///< 16 accepted cargoes. + CargoLabel accepts_cargo_label[INDUSTRY_NUM_INPUTS]; uint16_t input_cargo_multiplier[INDUSTRY_NUM_INPUTS][INDUSTRY_NUM_OUTPUTS]; ///< Input cargo multipliers (multiply amount of incoming cargo for the produced cargoes) IndustryLifeType life_type; ///< This is also known as Industry production flag, in newgrf specs byte climate_availability; ///< Bitmask, giving landscape enums as bit position @@ -153,6 +155,7 @@ struct IndustrySpec { */ struct IndustryTileSpec { std::array accepts_cargo; ///< Cargo accepted by this tile + std::array accepts_cargo_label; std::array acceptance; ///< Level of acceptance per cargo type (signed, may be negative!) Slope slopes_refused; ///< slope pattern on which this tile cannot be built byte anim_production; ///< Animation frame to start when goods are produced diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 22455baf61..e3bd89a372 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -1151,6 +1151,7 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop ei->cargo_type = INVALID_CARGO; GrfMsg(2, "RailVehicleChangeInfo: Invalid cargo type {}, using first refittable", ctype); } + ei->cargo_label = CT_INVALID; break; } @@ -1412,6 +1413,7 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop ei->cargo_type = INVALID_CARGO; GrfMsg(2, "RailVehicleChangeInfo: Invalid cargo type {}, using first refittable", ctype); } + ei->cargo_label = CT_INVALID; break; } @@ -1607,6 +1609,7 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop ei->cargo_type = INVALID_CARGO; GrfMsg(2, "ShipVehicleChangeInfo: Invalid cargo type {}, using first refittable", ctype); } + ei->cargo_label = CT_INVALID; break; } @@ -2426,7 +2429,9 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt * climate. This can cause problems when copying the properties * of a house that accepts food, where the new house is valid * in the temperate climate. */ - if (!CargoSpec::Get(housespec->accepts_cargo[2])->IsValid()) { + CargoID cid = housespec->accepts_cargo[2]; + if (!IsValidCargoID(cid)) cid = GetCargoIDByLabel(housespec->accepts_cargo_label[2]); + if (!IsValidCargoID(cid) || !CargoSpec::Get(cid)->IsValid()) { housespec->cargo_acceptance[2] = 0; } } @@ -2462,13 +2467,14 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt /* If value of goods is negative, it means in fact food or, if in toyland, fizzy_drink acceptance. * Else, we have "standard" 3rd cargo type, goods or candy, for toyland once more */ - CargoID cid = (goods >= 0) ? ((_settings_game.game_creation.landscape == LT_TOYLAND) ? CT_CANDY : CT_GOODS) : - ((_settings_game.game_creation.landscape == LT_TOYLAND) ? CT_FIZZY_DRINKS : CT_FOOD); + CargoID cid = (goods >= 0) ? ((_settings_game.game_creation.landscape == LT_TOYLAND) ? GetCargoIDByLabel(CT_CANDY) : GetCargoIDByLabel(CT_GOODS)) : + ((_settings_game.game_creation.landscape == LT_TOYLAND) ? GetCargoIDByLabel(CT_FIZZY_DRINKS) : GetCargoIDByLabel(CT_FOOD)); /* Make sure the cargo type is valid in this climate. */ if (!CargoSpec::Get(cid)->IsValid()) goods = 0; housespec->accepts_cargo[2] = cid; + housespec->accepts_cargo_label[2] = CT_INVALID; housespec->cargo_acceptance[2] = abs(goods); // but we do need positive value here break; } @@ -2636,7 +2642,7 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt * @return ChangeInfoResult. */ template -static ChangeInfoResult LoadTranslationTable(uint gvid, int numinfo, ByteReader *buf, T &translation_table, const char *name) +static ChangeInfoResult LoadTranslationTable(uint gvid, int numinfo, ByteReader *buf, std::vector &translation_table, const char *name) { if (gvid != 0) { GrfMsg(1, "LoadTranslationTable: {} translation table must start at zero", name); @@ -2645,8 +2651,7 @@ static ChangeInfoResult LoadTranslationTable(uint gvid, int numinfo, ByteReader translation_table.clear(); for (int i = 0; i < numinfo; i++) { - uint32_t item = buf->ReadDWord(); - translation_table.push_back(BSWAP32(item)); + translation_table.push_back(T(BSWAP32(buf->ReadDWord()))); } return CIR_SUCCESS; @@ -2991,6 +2996,7 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea } else { ClrBit(_cargo_mask, cid + i); } + BuildCargoLabelMap(); break; case 0x09: // String ID for cargo type name @@ -3058,8 +3064,8 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea break; case 0x17: // Cargo label - cs->label = buf->ReadDWord(); - cs->label = BSWAP32(cs->label); + cs->label = CargoLabel{BSWAP32(buf->ReadDWord())}; + BuildCargoLabelMap(); break; case 0x18: { // Town growth substitute type @@ -3666,12 +3672,14 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, case 0x10: // Production cargo types for (byte j = 0; j < 2; j++) { indsp->produced_cargo[j] = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + indsp->produced_cargo_label[j] = CT_INVALID; } break; case 0x11: // Acceptance cargo types for (byte j = 0; j < 3; j++) { indsp->accepts_cargo[j] = GetCargoTranslation(buf->ReadByte(), _cur.grffile); + indsp->accepts_cargo_label[j] = CT_INVALID; } buf->ReadByte(); // Unnused, eat it up break; @@ -5564,18 +5572,18 @@ static CargoID TranslateCargo(uint8_t feature, uint8_t ctype) /* Look up the cargo label from the translation table */ CargoLabel cl = _cur.grffile->cargo_list[ctype]; - if (cl == 0) { + if (cl == CT_INVALID) { GrfMsg(5, "TranslateCargo: Cargo type {} not available in this climate, skipping.", ctype); return INVALID_CARGO; } CargoID cid = GetCargoIDByLabel(cl); if (!IsValidCargoID(cid)) { - GrfMsg(5, "TranslateCargo: Cargo '{:c}{:c}{:c}{:c}' unsupported, skipping.", GB(cl, 24, 8), GB(cl, 16, 8), GB(cl, 8, 8), GB(cl, 0, 8)); + GrfMsg(5, "TranslateCargo: Cargo '{:c}{:c}{:c}{:c}' unsupported, skipping.", GB(cl.base(), 24, 8), GB(cl.base(), 16, 8), GB(cl.base(), 8, 8), GB(cl.base(), 0, 8)); return INVALID_CARGO; } - GrfMsg(6, "TranslateCargo: Cargo '{:c}{:c}{:c}{:c}' mapped to cargo type {}.", GB(cl, 24, 8), GB(cl, 16, 8), GB(cl, 8, 8), GB(cl, 0, 8), cid); + GrfMsg(6, "TranslateCargo: Cargo '{:c}{:c}{:c}{:c}' mapped to cargo type {}.", GB(cl.base(), 24, 8), GB(cl.base(), 16, 8), GB(cl.base(), 8, 8), GB(cl.base(), 0, 8), cid); return cid; } @@ -6864,9 +6872,9 @@ static void SkipIf(ByteReader *buf) if (condtype >= 0x0B) { /* Tests that ignore 'param' */ switch (condtype) { - case 0x0B: result = !IsValidCargoID(GetCargoIDByLabel(BSWAP32(cond_val))); + case 0x0B: result = !IsValidCargoID(GetCargoIDByLabel(CargoLabel(BSWAP32(cond_val)))); break; - case 0x0C: result = IsValidCargoID(GetCargoIDByLabel(BSWAP32(cond_val))); + case 0x0C: result = IsValidCargoID(GetCargoIDByLabel(CargoLabel(BSWAP32(cond_val)))); break; case 0x0D: result = GetRailTypeByLabel(BSWAP32(cond_val)) == INVALID_RAILTYPE; break; @@ -8961,9 +8969,8 @@ GRFFile::~GRFFile() static void CalculateRefitMasks() { CargoTypes original_known_cargoes = 0; - for (int ct = 0; ct != NUM_ORIGINAL_CARGO; ++ct) { - CargoID cid = GetDefaultCargoID(_settings_game.game_creation.landscape, static_cast(ct)); - if (IsValidCargoID(cid)) SetBit(original_known_cargoes, cid); + for (CargoID cid = 0; cid != NUM_CARGO; ++cid) { + if (IsDefaultCargo(cid)) SetBit(original_known_cargoes, cid); } for (Engine *e : Engine::Iterate()) { @@ -8971,6 +8978,11 @@ static void CalculateRefitMasks() EngineInfo *ei = &e->info; bool only_defaultcargo; ///< Set if the vehicle shall carry only the default cargo + /* Apply default cargo translation map if cargo type hasn't been set, either explicitly or by aircraft cargo handling. */ + if (!IsValidCargoID(e->info.cargo_type)) { + e->info.cargo_type = GetCargoIDByLabel(e->info.cargo_label); + } + /* If the NewGRF did not set any cargo properties, we apply default values. */ if (_gted[engine].defaultcargo_grf == nullptr) { /* If the vehicle has any capacity, apply the default refit masks */ @@ -8981,7 +8993,7 @@ static void CalculateRefitMasks() static constexpr byte Y = 1 << LT_TOYLAND; static const struct DefaultRefitMasks { byte climate; - CargoType cargo_type; + CargoLabel cargo_label; CargoTypes cargo_allowed; CargoTypes cargo_disallowed; } _default_refit_masks[] = { @@ -9005,13 +9017,13 @@ static void CalculateRefitMasks() _gted[engine].cargo_allowed = CC_PASSENGERS | CC_MAIL | CC_ARMOURED | CC_EXPRESS; _gted[engine].cargo_disallowed = CC_LIQUID; } else if (e->type == VEH_SHIP) { - switch (ei->cargo_type) { - case CT_PASSENGERS: + switch (ei->cargo_label.base()) { + case CT_PASSENGERS.base(): /* Ferries */ _gted[engine].cargo_allowed = CC_PASSENGERS; _gted[engine].cargo_disallowed = 0; break; - case CT_OIL: + case CT_OIL.base(): /* Tankers */ _gted[engine].cargo_allowed = CC_LIQUID; _gted[engine].cargo_disallowed = 0; @@ -9038,7 +9050,7 @@ static void CalculateRefitMasks() /* Train wagons and road vehicles are classified by their default cargo type */ for (const auto &drm : _default_refit_masks) { if (!HasBit(drm.climate, _settings_game.game_creation.landscape)) continue; - if (drm.cargo_type != ei->cargo_type) continue; + if (drm.cargo_label != ei->cargo_label) continue; _gted[engine].cargo_allowed = drm.cargo_allowed; _gted[engine].cargo_disallowed = drm.cargo_disallowed; @@ -9051,8 +9063,6 @@ static void CalculateRefitMasks() } _gted[engine].UpdateRefittability(_gted[engine].cargo_allowed != 0); - /* Translate cargo_type using the original climate-specific cargo table. */ - ei->cargo_type = GetDefaultCargoID(_settings_game.game_creation.landscape, static_cast(ei->cargo_type)); if (IsValidCargoID(ei->cargo_type)) ClrBit(_gted[engine].ctt_exclude_mask, ei->cargo_type); } @@ -9206,10 +9216,10 @@ void FinaliseCargoArray() for (CargoSpec &cs : CargoSpec::array) { if (cs.town_production_effect == INVALID_TPE) { /* Set default town production effect by cargo label. */ - switch (cs.label) { - case 'PASS': cs.town_production_effect = TPE_PASSENGERS; break; - case 'MAIL': cs.town_production_effect = TPE_MAIL; break; - default: cs.town_production_effect = TPE_NONE; break; + switch (cs.label.base()) { + case CT_PASSENGERS.base(): cs.town_production_effect = TPE_PASSENGERS; break; + case CT_MAIL.base(): cs.town_production_effect = TPE_MAIL; break; + default: cs.town_production_effect = TPE_NONE; break; } } if (!cs.IsValid()) { @@ -9352,6 +9362,13 @@ static void FinaliseHouseArray() * this one in the pool is properly handled as 1x1 house. */ hs->building_flags = TILE_NO_FLAG; } + + /* Apply default cargo translation map for unset cargo slots */ + for (uint i = 0; i < lengthof(hs->accepts_cargo); ++i) { + if (!IsValidCargoID(hs->accepts_cargo[i])) hs->accepts_cargo[i] = GetCargoIDByLabel(hs->accepts_cargo_label[i]); + /* Disable acceptance if cargo type is invalid. */ + if (!IsValidCargoID(hs->accepts_cargo[i])) hs->cargo_acceptance[i] = 0; + } } HouseZones climate_mask = (HouseZones)(1 << (_settings_game.game_creation.landscape + 12)); @@ -9426,6 +9443,21 @@ static void FinaliseIndustriesArray() if (!indsp.enabled) { indsp.name = STR_NEWGRF_INVALID_INDUSTRYTYPE; } + + /* Apply default cargo translation map for unset cargo slots */ + for (uint i = 0; i < lengthof(indsp.produced_cargo); ++i) { + if (!IsValidCargoID(indsp.produced_cargo[i])) indsp.produced_cargo[i] = GetCargoIDByLabel(indsp.produced_cargo_label[i]); + } + for (uint i = 0; i < lengthof(indsp.accepts_cargo); ++i) { + if (!IsValidCargoID(indsp.accepts_cargo[i])) indsp.accepts_cargo[i] = GetCargoIDByLabel(indsp.accepts_cargo_label[i]); + } + } + + for (auto &indtsp : _industry_tile_specs) { + /* Apply default cargo translation map for unset cargo slots */ + for (uint i = 0; i < lengthof(indtsp.accepts_cargo); ++i) { + if (!IsValidCargoID(indtsp.accepts_cargo[i])) indtsp.accepts_cargo[i] = GetCargoIDByLabel(indtsp.accepts_cargo_label[i]); + } } } diff --git a/src/newgrf_cargo.cpp b/src/newgrf_cargo.cpp index ffd1c44269..97eaebec87 100644 --- a/src/newgrf_cargo.cpp +++ b/src/newgrf_cargo.cpp @@ -30,7 +30,7 @@ GrfSpecFeature CargoResolverObject::GetFeature() const uint32_t CargoResolverObject::GetDebugID() const { - return this->cargospec->label; + return this->cargospec->label.base(); } /** diff --git a/src/newgrf_town.cpp b/src/newgrf_town.cpp index 57a68941a8..0bd4924e34 100644 --- a/src/newgrf_town.cpp +++ b/src/newgrf_town.cpp @@ -17,6 +17,7 @@ /* virtual */ uint32_t TownScopeResolver::GetVariable(byte variable, [[maybe_unused]] uint32_t parameter, bool *available) const { + CargoID cid; switch (variable) { /* Larger towns */ case 0x40: @@ -81,24 +82,24 @@ case 0xB2: return this->t->statues; case 0xB6: return ClampTo(this->t->cache.num_houses); case 0xB9: return this->t->growth_rate / Ticks::TOWN_GROWTH_TICKS; - case 0xBA: return ClampTo(this->t->supplied[CT_PASSENGERS].new_max); - case 0xBB: return GB(ClampTo(this->t->supplied[CT_PASSENGERS].new_max), 8, 8); - case 0xBC: return ClampTo(this->t->supplied[CT_MAIL].new_max); - case 0xBD: return GB(ClampTo(this->t->supplied[CT_MAIL].new_max), 8, 8); - case 0xBE: return ClampTo(this->t->supplied[CT_PASSENGERS].new_act); - case 0xBF: return GB(ClampTo(this->t->supplied[CT_PASSENGERS].new_act), 8, 8); - case 0xC0: return ClampTo(this->t->supplied[CT_MAIL].new_act); - case 0xC1: return GB(ClampTo(this->t->supplied[CT_MAIL].new_act), 8, 8); - case 0xC2: return ClampTo(this->t->supplied[CT_PASSENGERS].old_max); - case 0xC3: return GB(ClampTo(this->t->supplied[CT_PASSENGERS].old_max), 8, 8); - case 0xC4: return ClampTo(this->t->supplied[CT_MAIL].old_max); - case 0xC5: return GB(ClampTo(this->t->supplied[CT_MAIL].old_max), 8, 8); - case 0xC6: return ClampTo(this->t->supplied[CT_PASSENGERS].old_act); - case 0xC7: return GB(ClampTo(this->t->supplied[CT_PASSENGERS].old_act), 8, 8); - case 0xC8: return ClampTo(this->t->supplied[CT_MAIL].old_act); - case 0xC9: return GB(ClampTo(this->t->supplied[CT_MAIL].old_act), 8, 8); - case 0xCA: return this->t->GetPercentTransported(CT_PASSENGERS); - case 0xCB: return this->t->GetPercentTransported(CT_MAIL); + case 0xBA: cid = GetCargoIDByLabel(CT_PASSENGERS); return IsValidCargoID(cid) ? ClampTo(this->t->supplied[cid].new_max) : 0; + case 0xBB: cid = GetCargoIDByLabel(CT_PASSENGERS); return IsValidCargoID(cid) ? GB(ClampTo(this->t->supplied[cid].new_max), 8, 8) : 0; + case 0xBC: cid = GetCargoIDByLabel(CT_MAIL); return IsValidCargoID(cid) ? ClampTo(this->t->supplied[cid].new_max) : 0; + case 0xBD: cid = GetCargoIDByLabel(CT_MAIL); return IsValidCargoID(cid) ? GB(ClampTo(this->t->supplied[cid].new_max), 8, 8) : 0; + case 0xBE: cid = GetCargoIDByLabel(CT_PASSENGERS); return IsValidCargoID(cid) ? ClampTo(this->t->supplied[cid].new_act) : 0; + case 0xBF: cid = GetCargoIDByLabel(CT_PASSENGERS); return IsValidCargoID(cid) ? GB(ClampTo(this->t->supplied[cid].new_act), 8, 8) : 0; + case 0xC0: cid = GetCargoIDByLabel(CT_MAIL); return IsValidCargoID(cid) ? ClampTo(this->t->supplied[cid].new_act) : 0; + case 0xC1: cid = GetCargoIDByLabel(CT_MAIL); return IsValidCargoID(cid) ? GB(ClampTo(this->t->supplied[cid].new_act), 8, 8) : 0; + case 0xC2: cid = GetCargoIDByLabel(CT_PASSENGERS); return IsValidCargoID(cid) ? ClampTo(this->t->supplied[cid].old_max) : 0; + case 0xC3: cid = GetCargoIDByLabel(CT_PASSENGERS); return IsValidCargoID(cid) ? GB(ClampTo(this->t->supplied[cid].old_max), 8, 8) : 0; + case 0xC4: cid = GetCargoIDByLabel(CT_MAIL); return IsValidCargoID(cid) ? ClampTo(this->t->supplied[cid].old_max) : 0; + case 0xC5: cid = GetCargoIDByLabel(CT_MAIL); return IsValidCargoID(cid) ? GB(ClampTo(this->t->supplied[cid].old_max), 8, 8) : 0; + case 0xC6: cid = GetCargoIDByLabel(CT_PASSENGERS); return IsValidCargoID(cid) ? ClampTo(this->t->supplied[cid].old_act) : 0; + case 0xC7: cid = GetCargoIDByLabel(CT_PASSENGERS); return IsValidCargoID(cid) ? GB(ClampTo(this->t->supplied[cid].old_act), 8, 8) : 0; + case 0xC8: cid = GetCargoIDByLabel(CT_MAIL); return IsValidCargoID(cid) ? ClampTo(this->t->supplied[cid].old_act) : 0; + case 0xC9: cid = GetCargoIDByLabel(CT_MAIL); return IsValidCargoID(cid) ? GB(ClampTo(this->t->supplied[cid].old_act), 8, 8) : 0; + case 0xCA: return this->t->GetPercentTransported(GetCargoIDByLabel(CT_PASSENGERS)); + case 0xCB: return this->t->GetPercentTransported(GetCargoIDByLabel(CT_MAIL)); case 0xCC: return this->t->received[TAE_FOOD].new_act; case 0xCD: return GB(this->t->received[TAE_FOOD].new_act, 8, 8); case 0xCE: return this->t->received[TAE_WATER].new_act; diff --git a/src/object_cmd.cpp b/src/object_cmd.cpp index ab4907eb1f..3e2654a853 100644 --- a/src/object_cmd.cpp +++ b/src/object_cmd.cpp @@ -630,23 +630,31 @@ static void AddAcceptedCargo_Object(TileIndex tile, CargoArray &acceptance, Carg /* Top town building generates 10, so to make HQ interesting, the top * type makes 20. */ - acceptance[CT_PASSENGERS] += std::max(1U, level); - SetBit(*always_accepted, CT_PASSENGERS); + CargoID pass = GetCargoIDByLabel(CT_PASSENGERS); + if (IsValidCargoID(pass)) { + acceptance[pass] += std::max(1U, level); + SetBit(*always_accepted, pass); + } /* Top town building generates 4, HQ can make up to 8. The * proportion passengers:mail is different because such a huge * commercial building generates unusually high amount of mail * correspondence per physical visitor. */ - acceptance[CT_MAIL] += std::max(1U, level / 2); - SetBit(*always_accepted, CT_MAIL); + CargoID mail = GetCargoIDByLabel(CT_MAIL); + if (IsValidCargoID(mail)) { + acceptance[mail] += std::max(1U, level / 2); + SetBit(*always_accepted, mail); + } } static void AddProducedCargo_Object(TileIndex tile, CargoArray &produced) { if (!IsObjectType(tile, OBJECT_HQ)) return; - produced[CT_PASSENGERS]++; - produced[CT_MAIL]++; + CargoID pass = GetCargoIDByLabel(CT_PASSENGERS); + if (IsValidCargoID(pass)) produced[pass]++; + CargoID mail = GetCargoIDByLabel(CT_MAIL); + if (IsValidCargoID(mail)) produced[mail]++; } @@ -686,7 +694,8 @@ static void TileLoop_Object(TileIndex tile) uint r = Random(); /* Top town buildings generate 250, so the top HQ type makes 256. */ - if (GB(r, 0, 8) < (256 / 4 / (6 - level))) { + CargoID pass = GetCargoIDByLabel(CT_PASSENGERS); + if (IsValidCargoID(pass) && GB(r, 0, 8) < (256 / 4 / (6 - level))) { uint amt = GB(r, 0, 8) / 8 / 4 + 1; /* Production is halved during recessions. */ @@ -695,13 +704,14 @@ static void TileLoop_Object(TileIndex tile) /* Scale by cargo scale setting. */ amt = ScaleByCargoScale(amt, true); - MoveGoodsToStation(CT_PASSENGERS, amt, SourceType::Headquarters, GetTileOwner(tile), stations.GetStations()); + MoveGoodsToStation(pass, amt, SourceType::Headquarters, GetTileOwner(tile), stations.GetStations()); } /* Top town building generates 90, HQ can make up to 196. The * proportion passengers:mail is about the same as in the acceptance * equations. */ - if (GB(r, 8, 8) < (196 / 4 / (6 - level))) { + CargoID mail = GetCargoIDByLabel(CT_MAIL); + if (IsValidCargoID(mail) && GB(r, 8, 8) < (196 / 4 / (6 - level))) { uint amt = GB(r, 8, 8) / 8 / 4 + 1; /* Production is halved during recessions. */ @@ -710,7 +720,7 @@ static void TileLoop_Object(TileIndex tile) /* Scale by cargo scale setting. */ amt = ScaleByCargoScale(amt, true); - MoveGoodsToStation(CT_MAIL, amt, SourceType::Headquarters, GetTileOwner(tile), stations.GetStations()); + MoveGoodsToStation(mail, amt, SourceType::Headquarters, GetTileOwner(tile), stations.GetStations()); } } diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 65ccd3a17d..6aace6b3e9 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -286,6 +286,7 @@ CommandCost CmdBuildRoadVehicle(DoCommandFlag flags, TileIndex tile, const Engin v->spritenum = rvi->image_index; v->cargo_type = e->GetDefaultCargoType(); + assert(IsValidCargoID(v->cargo_type)); v->cargo_cap = rvi->capacity; v->refit_cap = 0; diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp index 57510b739a..8448367c9e 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -590,14 +590,15 @@ static const OldChunks town_chunk[] = { OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Town, time_until_rebuild ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Town, growth_rate ), - OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_PASSENGERS].new_max ), - OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_MAIL].new_max ), - OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_PASSENGERS].new_act ), - OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_MAIL].new_act ), - OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_PASSENGERS].old_max ), - OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_MAIL].old_max ), - OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_PASSENGERS].old_act ), - OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_MAIL].old_act ), + /* Slots 0 and 2 are passengers and mail respectively for old saves. */ + OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[0].new_max ), + OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[2].new_max ), + OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[0].new_act ), + OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[2].new_act ), + OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[0].old_max ), + OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[2].old_max ), + OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[0].old_act ), + OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[2].old_act ), OCL_NULL( 2 ), ///< pct_pass_transported / pct_mail_transported, now computed on the fly @@ -1301,10 +1302,10 @@ bool LoadOldVehicle(LoadgameState *ls, int num) switch (v->spritenum) { case 2: // oil tanker && cargo type != oil - if (v->cargo_type != CT_OIL) v->spritenum = 0; // make it a coal/goods ship + if (v->cargo_type != 3) v->spritenum = 0; // make it a coal/goods ship break; case 4: // passenger ship && cargo type == mail - if (v->cargo_type == CT_MAIL) v->spritenum = 0; // make it a mail ship + if (v->cargo_type == 2) v->spritenum = 0; // make it a mail ship break; default: break; diff --git a/src/saveload/town_sl.cpp b/src/saveload/town_sl.cpp index 0907b2464f..67409c6449 100644 --- a/src/saveload/town_sl.cpp +++ b/src/saveload/town_sl.cpp @@ -222,22 +222,23 @@ static const SaveLoad _town_desc[] = { SLE_CONDARR(Town, unwanted, SLE_INT8, 8, SLV_4, SLV_104), SLE_CONDARR(Town, unwanted, SLE_INT8, MAX_COMPANIES, SLV_104, SL_MAX_VERSION), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_max, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_max, SLE_UINT32, SLV_9, SLV_165), - SLE_CONDVAR(Town, supplied[CT_MAIL].old_max, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), - SLE_CONDVAR(Town, supplied[CT_MAIL].old_max, SLE_UINT32, SLV_9, SLV_165), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_max, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_max, SLE_UINT32, SLV_9, SLV_165), - SLE_CONDVAR(Town, supplied[CT_MAIL].new_max, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), - SLE_CONDVAR(Town, supplied[CT_MAIL].new_max, SLE_UINT32, SLV_9, SLV_165), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_act, SLE_UINT32, SLV_9, SLV_165), - SLE_CONDVAR(Town, supplied[CT_MAIL].old_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), - SLE_CONDVAR(Town, supplied[CT_MAIL].old_act, SLE_UINT32, SLV_9, SLV_165), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_UINT32, SLV_9, SLV_165), - SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), - SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_UINT32, SLV_9, SLV_165), + /* Slots 0 and 2 are passengers and mail respectively for old saves. */ + SLE_CONDVARNAME(Town, supplied[0].old_max, "supplied[CT_PASSENGERS].old_max", SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVARNAME(Town, supplied[0].old_max, "supplied[CT_PASSENGERS].old_max", SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVARNAME(Town, supplied[2].old_max, "supplied[CT_MAIL].old_max", SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVARNAME(Town, supplied[2].old_max, "supplied[CT_MAIL].old_max", SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVARNAME(Town, supplied[0].new_max, "supplied[CT_PASSENGERS].new_max", SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVARNAME(Town, supplied[0].new_max, "supplied[CT_PASSENGERS].new_max", SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVARNAME(Town, supplied[2].new_max, "supplied[CT_MAIL].new_max", SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVARNAME(Town, supplied[2].new_max, "supplied[CT_MAIL].new_max", SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVARNAME(Town, supplied[0].old_act, "supplied[CT_PASSENGERS].old_act", SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVARNAME(Town, supplied[0].old_act, "supplied[CT_PASSENGERS].old_act", SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVARNAME(Town, supplied[2].old_act, "supplied[CT_MAIL].old_act", SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVARNAME(Town, supplied[2].old_act, "supplied[CT_MAIL].old_act", SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVARNAME(Town, supplied[0].new_act, "supplied[CT_PASSENGERS].new_act", SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVARNAME(Town, supplied[0].new_act, "supplied[CT_PASSENGERS].new_act", SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVARNAME(Town, supplied[2].new_act, "supplied[CT_MAIL].new_act", SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVARNAME(Town, supplied[2].new_act, "supplied[CT_MAIL].new_act", SLE_UINT32, SLV_9, SLV_165), SLE_CONDVARNAME(Town, received[TAE_FOOD].old_act, "received[TE_FOOD].old_act", SLE_UINT16, SL_MIN_VERSION, SLV_165), SLE_CONDVARNAME(Town, received[TAE_WATER].old_act, "received[TE_WATER].old_act", SLE_UINT16, SL_MIN_VERSION, SLV_165), diff --git a/src/script/api/script_cargo.cpp b/src/script/api/script_cargo.cpp index 4f6ab51f67..6f86b6f9e2 100644 --- a/src/script/api/script_cargo.cpp +++ b/src/script/api/script_cargo.cpp @@ -45,7 +45,7 @@ * like "PASS", "COAL", "OIL_". New ones can be defined by NewGRFs */ std::string cargo_label; for (uint i = 0; i < sizeof(cargo->label); i++) { - cargo_label.push_back(GB(cargo->label, (uint8_t)(sizeof(cargo->label) - i - 1) * 8, 8)); + cargo_label.push_back(GB(cargo->label.base(), (uint8_t)(sizeof(cargo->label) - i - 1) * 8, 8)); } return cargo_label; } diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index 920a881214..dc57b19125 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -934,6 +934,7 @@ CommandCost CmdBuildShip(DoCommandFlag flags, TileIndex tile, const Engine *e, V v->spritenum = svi->image_index; v->cargo_type = e->GetDefaultCargoType(); + assert(IsValidCargoID(v->cargo_type)); v->cargo_cap = svi->capacity; v->refit_cap = 0; diff --git a/src/table/build_industry.h b/src/table/build_industry.h index 43881e8309..f8683e8b09 100644 --- a/src/table/build_industry.h +++ b/src/table/build_industry.h @@ -1128,8 +1128,10 @@ enum IndustryTypes { #define MI(tbl, sndc, snd, d, pc, ai1, ai2, ai3, ai4, ag1, ag2, ag3, ag4, col, \ c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3) \ {tbl, d, 0, pc, {c1, c2, c3}, proc, \ + {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \ {p1, p2, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID}, \ {r1, r2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, m, \ + {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \ {a1, a2, a3, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID}, \ {{im1, 0}, {im2, 0}, {im3, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, \ pr, clim, bev, col, in, intx, s1, s2, s3, STR_UNDEFINED, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \ @@ -1530,7 +1532,11 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { * @param a2 next frame of animation * @param a3 chooses between animation or construction state */ -#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) {{c1, c2, c3, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID}, {ca1, ca2, ca3}, sl, a1, a2, a3, 0, {0, ANIM_STATUS_NO_ANIMATION, 2, 0}, INDTILE_SPECIAL_NONE, true, GRFFileProps(INVALID_INDUSTRYTILE)} +#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) { \ + {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \ + {c1, c2, c3, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID}, \ + {ca1, ca2, ca3}, sl, a1, a2, a3, 0, {0, ANIM_STATUS_NO_ANIMATION, 2, 0}, INDTILE_SPECIAL_NONE, true, GRFFileProps(INVALID_INDUSTRYTILE) \ +} static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = { /* Coal Mine */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), diff --git a/src/table/cargo_const.h b/src/table/cargo_const.h index f182e039df..657dd323d6 100644 --- a/src/table/cargo_const.h +++ b/src/table/cargo_const.h @@ -50,56 +50,56 @@ /** Cargo types available by default. */ static const CargoSpec _default_cargo[] = { - MK( 0, 'PASS', 152, 1, 0x400, 3185, 0, 24, false, TAE_PASSENGERS, PASSENGERS, PASSENGER, STR_PASSENGERS, CC_PASSENGERS), - MK( 1, 'COAL', 6, 16, 0x100, 5916, 7, 255, true, TAE_NONE, COAL, COAL, STR_TONS, CC_BULK), - MK( 2, 'MAIL', 15, 4, 0x200, 4550, 20, 90, false, TAE_MAIL, MAIL, MAIL, STR_BAGS, CC_MAIL), + MK( 0, CT_PASSENGERS, 152, 1, 0x400, 3185, 0, 24, false, TAE_PASSENGERS, PASSENGERS, PASSENGER, STR_PASSENGERS, CC_PASSENGERS), + MK( 1, CT_COAL, 6, 16, 0x100, 5916, 7, 255, true, TAE_NONE, COAL, COAL, STR_TONS, CC_BULK), + MK( 2, CT_MAIL, 15, 4, 0x200, 4550, 20, 90, false, TAE_MAIL, MAIL, MAIL, STR_BAGS, CC_MAIL), /* Oil in temperate and arctic */ - MK( 3, 'OIL_', 174, 16, 0x100, 4437, 25, 255, true, TAE_NONE, OIL, OIL, STR_LITERS, CC_LIQUID), + MK( 3, CT_OIL, 174, 16, 0x100, 4437, 25, 255, true, TAE_NONE, OIL, OIL, STR_LITERS, CC_LIQUID), /* Oil in subtropic */ - MK( 3, 'OIL_', 174, 16, 0x100, 4892, 25, 255, true, TAE_NONE, OIL, OIL, STR_LITERS, CC_LIQUID), - MK( 4, 'LVST', 208, 3, 0x100, 4322, 4, 18, true, TAE_NONE, LIVESTOCK, LIVESTOCK, STR_ITEMS, CC_PIECE_GOODS), - MK( 5, 'GOOD', 194, 8, 0x200, 6144, 5, 28, true, TAE_GOODS, GOODS, GOODS, STR_CRATES, CC_EXPRESS), - MK( 6, 'GRAI', 191, 16, 0x100, 4778, 4, 40, true, TAE_NONE, GRAIN, GRAIN, STR_TONS, CC_BULK), - MK( 6, 'WHEA', 191, 16, 0x100, 4778, 4, 40, true, TAE_NONE, WHEAT, WHEAT, STR_TONS, CC_BULK), - MK( 6, 'MAIZ', 191, 16, 0x100, 4322, 4, 40, true, TAE_NONE, MAIZE, MAIZE, STR_TONS, CC_BULK), + MK( 3, CT_OIL, 174, 16, 0x100, 4892, 25, 255, true, TAE_NONE, OIL, OIL, STR_LITERS, CC_LIQUID), + MK( 4, CT_LIVESTOCK, 208, 3, 0x100, 4322, 4, 18, true, TAE_NONE, LIVESTOCK, LIVESTOCK, STR_ITEMS, CC_PIECE_GOODS), + MK( 5, CT_GOODS, 194, 8, 0x200, 6144, 5, 28, true, TAE_GOODS, GOODS, GOODS, STR_CRATES, CC_EXPRESS), + MK( 6, CT_GRAIN, 191, 16, 0x100, 4778, 4, 40, true, TAE_NONE, GRAIN, GRAIN, STR_TONS, CC_BULK), + MK( 6, CT_WHEAT, 191, 16, 0x100, 4778, 4, 40, true, TAE_NONE, WHEAT, WHEAT, STR_TONS, CC_BULK), + MK( 6, CT_MAIZE, 191, 16, 0x100, 4322, 4, 40, true, TAE_NONE, MAIZE, MAIZE, STR_TONS, CC_BULK), /* Wood in temperate and arctic */ - MK( 7, 'WOOD', 84, 16, 0x100, 5005, 15, 255, true, TAE_NONE, WOOD, WOOD, STR_TONS, CC_PIECE_GOODS), + MK( 7, CT_WOOD, 84, 16, 0x100, 5005, 15, 255, true, TAE_NONE, WOOD, WOOD, STR_TONS, CC_PIECE_GOODS), /* Wood in subtropic */ - MK( 7, 'WOOD', 84, 16, 0x100, 7964, 15, 255, true, TAE_NONE, WOOD, WOOD, STR_TONS, CC_PIECE_GOODS), - MK( 8, 'IORE', 184, 16, 0x100, 5120, 9, 255, true, TAE_NONE, IRON_ORE, IRON_ORE, STR_TONS, CC_BULK), - MK( 9, 'STEL', 10, 16, 0x100, 5688, 7, 255, true, TAE_NONE, STEEL, STEEL, STR_TONS, CC_PIECE_GOODS), - MK( 10, 'VALU', 202, 2, 0x100, 7509, 1, 32, true, TAE_NONE, VALUABLES, VALUABLES, STR_BAGS, CC_ARMOURED), - MK( 10, 'GOLD', 202, 8, 0x100, 5802, 10, 40, true, TAE_NONE, GOLD, GOLD, STR_BAGS, CC_ARMOURED), - MK( 10, 'DIAM', 202, 2, 0x100, 5802, 10, 255, true, TAE_NONE, DIAMONDS, DIAMOND, STR_BAGS, CC_ARMOURED), - MK( 11, 'PAPR', 10, 16, 0x100, 5461, 7, 60, true, TAE_NONE, PAPER, PAPER, STR_TONS, CC_PIECE_GOODS), - MK( 12, 'FOOD', 48, 16, 0x100, 5688, 0, 30, true, TAE_FOOD, FOOD, FOOD, STR_TONS, CC_EXPRESS | CC_REFRIGERATED), - MK( 13, 'FRUT', 208, 16, 0x100, 4209, 0, 15, true, TAE_NONE, FRUIT, FRUIT, STR_TONS, CC_BULK | CC_REFRIGERATED), - MK( 14, 'CORE', 184, 16, 0x100, 4892, 12, 255, true, TAE_NONE, COPPER_ORE, COPPER_ORE, STR_TONS, CC_BULK), - MK( 15, 'WATR', 10, 16, 0x100, 4664, 20, 80, true, TAE_WATER, WATER, WATER, STR_LITERS, CC_LIQUID), - MK( 16, 'RUBR', 6, 16, 0x100, 4437, 2, 20, true, TAE_NONE, RUBBER, RUBBER, STR_LITERS, CC_LIQUID), - MK( 17, 'SUGR', 6, 16, 0x100, 4437, 20, 255, true, TAE_NONE, SUGAR, SUGAR, STR_TONS, CC_BULK), - MK( 18, 'TOYS', 174, 2, 0x100, 5574, 25, 255, true, TAE_NONE, TOYS, TOY, STR_ITEMS, CC_PIECE_GOODS), - MK( 19, 'BATT', 208, 4, 0x100, 4322, 2, 30, true, TAE_NONE, BATTERIES, BATTERY, STR_ITEMS, CC_PIECE_GOODS), - MK( 20, 'SWET', 194, 5, 0x200, 6144, 8, 40, true, TAE_GOODS, SWEETS, SWEETS, STR_BAGS, CC_EXPRESS), - MK( 21, 'TOFF', 191, 16, 0x100, 4778, 14, 60, true, TAE_NONE, TOFFEE, TOFFEE, STR_TONS, CC_BULK), - MK( 22, 'COLA', 84, 16, 0x100, 4892, 5, 75, true, TAE_NONE, COLA, COLA, STR_LITERS, CC_LIQUID), - MK( 23, 'CTCD', 184, 16, 0x100, 5005, 10, 25, true, TAE_NONE, CANDYFLOSS, CANDYFLOSS, STR_TONS, CC_BULK), - MK( 24, 'BUBL', 10, 1, 0x100, 5077, 20, 80, true, TAE_NONE, BUBBLES, BUBBLE, STR_ITEMS, CC_PIECE_GOODS), - MK( 25, 'PLST', 202, 16, 0x100, 4664, 30, 255, true, TAE_NONE, PLASTIC, PLASTIC, STR_LITERS, CC_LIQUID), - MK( 26, 'FZDR', 48, 2, 0x100, 6250, 30, 50, true, TAE_FOOD, FIZZY_DRINKS, FIZZY_DRINK, STR_ITEMS, CC_PIECE_GOODS), + MK( 7, CT_WOOD, 84, 16, 0x100, 7964, 15, 255, true, TAE_NONE, WOOD, WOOD, STR_TONS, CC_PIECE_GOODS), + MK( 8, CT_IRON_ORE, 184, 16, 0x100, 5120, 9, 255, true, TAE_NONE, IRON_ORE, IRON_ORE, STR_TONS, CC_BULK), + MK( 9, CT_STEEL, 10, 16, 0x100, 5688, 7, 255, true, TAE_NONE, STEEL, STEEL, STR_TONS, CC_PIECE_GOODS), + MK( 10, CT_VALUABLES, 202, 2, 0x100, 7509, 1, 32, true, TAE_NONE, VALUABLES, VALUABLES, STR_BAGS, CC_ARMOURED), + MK( 10, CT_GOLD, 202, 8, 0x100, 5802, 10, 40, true, TAE_NONE, GOLD, GOLD, STR_BAGS, CC_ARMOURED), + MK( 10, CT_DIAMONDS, 202, 2, 0x100, 5802, 10, 255, true, TAE_NONE, DIAMONDS, DIAMOND, STR_BAGS, CC_ARMOURED), + MK( 11, CT_PAPER, 10, 16, 0x100, 5461, 7, 60, true, TAE_NONE, PAPER, PAPER, STR_TONS, CC_PIECE_GOODS), + MK( 12, CT_FOOD, 48, 16, 0x100, 5688, 0, 30, true, TAE_FOOD, FOOD, FOOD, STR_TONS, CC_EXPRESS | CC_REFRIGERATED), + MK( 13, CT_FRUIT, 208, 16, 0x100, 4209, 0, 15, true, TAE_NONE, FRUIT, FRUIT, STR_TONS, CC_BULK | CC_REFRIGERATED), + MK( 14, CT_COPPER_ORE, 184, 16, 0x100, 4892, 12, 255, true, TAE_NONE, COPPER_ORE, COPPER_ORE, STR_TONS, CC_BULK), + MK( 15, CT_WATER, 10, 16, 0x100, 4664, 20, 80, true, TAE_WATER, WATER, WATER, STR_LITERS, CC_LIQUID), + MK( 16, CT_RUBBER, 6, 16, 0x100, 4437, 2, 20, true, TAE_NONE, RUBBER, RUBBER, STR_LITERS, CC_LIQUID), + MK( 17, CT_SUGAR, 6, 16, 0x100, 4437, 20, 255, true, TAE_NONE, SUGAR, SUGAR, STR_TONS, CC_BULK), + MK( 18, CT_TOYS, 174, 2, 0x100, 5574, 25, 255, true, TAE_NONE, TOYS, TOY, STR_ITEMS, CC_PIECE_GOODS), + MK( 19, CT_BATTERIES, 208, 4, 0x100, 4322, 2, 30, true, TAE_NONE, BATTERIES, BATTERY, STR_ITEMS, CC_PIECE_GOODS), + MK( 20, CT_CANDY, 194, 5, 0x200, 6144, 8, 40, true, TAE_GOODS, SWEETS, SWEETS, STR_BAGS, CC_EXPRESS), + MK( 21, CT_TOFFEE, 191, 16, 0x100, 4778, 14, 60, true, TAE_NONE, TOFFEE, TOFFEE, STR_TONS, CC_BULK), + MK( 22, CT_COLA, 84, 16, 0x100, 4892, 5, 75, true, TAE_NONE, COLA, COLA, STR_LITERS, CC_LIQUID), + MK( 23, CT_COTTON_CANDY, 184, 16, 0x100, 5005, 10, 25, true, TAE_NONE, CANDYFLOSS, CANDYFLOSS, STR_TONS, CC_BULK), + MK( 24, CT_BUBBLES, 10, 1, 0x100, 5077, 20, 80, true, TAE_NONE, BUBBLES, BUBBLE, STR_ITEMS, CC_PIECE_GOODS), + MK( 25, CT_PLASTIC, 202, 16, 0x100, 4664, 30, 255, true, TAE_NONE, PLASTIC, PLASTIC, STR_LITERS, CC_LIQUID), + MK( 26, CT_FIZZY_DRINKS, 48, 2, 0x100, 6250, 30, 50, true, TAE_FOOD, FIZZY_DRINKS, FIZZY_DRINK, STR_ITEMS, CC_PIECE_GOODS), /* Void slot in temperate */ - MK(0xFF, 0, 1, 0, 0x100, 5688, 0, 30, true, TAE_NONE, NOTHING, NOTHING, STR_TONS, CC_NOAVAILABLE), + MK(0xFF, CT_INVALID, 1, 0, 0x100, 5688, 0, 30, true, TAE_NONE, NOTHING, NOTHING, STR_TONS, CC_NOAVAILABLE), /* Void slot in arctic */ - MK(0xFF, 0, 184, 0, 0x100, 5120, 9, 255, true, TAE_NONE, NOTHING, NOTHING, STR_TONS, CC_NOAVAILABLE), + MK(0xFF, CT_INVALID, 184, 0, 0x100, 5120, 9, 255, true, TAE_NONE, NOTHING, NOTHING, STR_TONS, CC_NOAVAILABLE), }; /** Table of cargo types available in each climate, by default */ -static const CargoLabel _default_climate_cargo[NUM_LANDSCAPE][NUM_ORIGINAL_CARGO] = { - { 'PASS', 'COAL', 'MAIL', 'OIL_', 'LVST', 'GOOD', 'GRAI', 'WOOD', 'IORE', 'STEL', 'VALU', 33, }, - { 'PASS', 'COAL', 'MAIL', 'OIL_', 'LVST', 'GOOD', 'WHEA', 'WOOD', 34, 'PAPR', 'GOLD', 'FOOD', }, - { 'PASS', 'RUBR', 'MAIL', 4, 'FRUT', 'GOOD', 'MAIZ', 11, 'CORE', 'WATR', 'DIAM', 'FOOD', }, - { 'PASS', 'SUGR', 'MAIL', 'TOYS', 'BATT', 'SWET', 'TOFF', 'COLA', 'CTCD', 'BUBL', 'PLST', 'FZDR', }, +static const std::variant _default_climate_cargo[NUM_LANDSCAPE][NUM_ORIGINAL_CARGO] = { + { CT_PASSENGERS, CT_COAL, CT_MAIL, CT_OIL, CT_LIVESTOCK, CT_GOODS, CT_GRAIN, CT_WOOD, CT_IRON_ORE, CT_STEEL, CT_VALUABLES, 33, }, + { CT_PASSENGERS, CT_COAL, CT_MAIL, CT_OIL, CT_LIVESTOCK, CT_GOODS, CT_WHEAT, CT_WOOD, 34, CT_PAPER, CT_GOLD, CT_FOOD, }, + { CT_PASSENGERS, CT_RUBBER, CT_MAIL, 4, CT_FRUIT, CT_GOODS, CT_MAIZE, 11, CT_COPPER_ORE, CT_WATER, CT_DIAMONDS, CT_FOOD, }, + { CT_PASSENGERS, CT_SUGAR, CT_MAIL, CT_TOYS, CT_BATTERIES, CT_CANDY, CT_TOFFEE, CT_COLA, CT_COTTON_CANDY, CT_BUBBLES, CT_PLASTIC, CT_FIZZY_DRINKS, }, }; diff --git a/src/table/engines.h b/src/table/engines.h index ec02f6b908..9bf442fe11 100644 --- a/src/table/engines.h +++ b/src/table/engines.h @@ -24,7 +24,7 @@ * @param f Bitmask of the climates * @note the 5 between b and f is the load amount */ -#define MT(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } +#define MT(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, INVALID_CARGO, e, 0, 8, 0, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } /** * Writes the properties of a multiple-unit train into the EngineInfo struct. @@ -37,7 +37,7 @@ * @param f Bitmask of the climates * @note the 5 between b and f is the load amount */ -#define MM(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 1 << EF_RAIL_IS_MU, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } +#define MM(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, INVALID_CARGO, e, 0, 8, 1 << EF_RAIL_IS_MU, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } /** * Writes the properties of a train carriage into the EngineInfo struct. @@ -50,7 +50,7 @@ * @see MT * @note the 5 between b and f is the load amount */ -#define MW(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } +#define MW(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, INVALID_CARGO, e, 0, 8, 0, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } /** * Writes the properties of a road vehicle into the EngineInfo struct. @@ -63,7 +63,7 @@ * @param f Bitmask of the climates * @note the 5 between b and f is the load amount */ -#define MR(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } +#define MR(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, INVALID_CARGO, e, 0, 8, 0, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } /** * Writes the properties of a ship into the EngineInfo struct. @@ -75,7 +75,7 @@ * @param f Bitmask of the climates * @note the 10 between b and f is the load amount */ -#define MS(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 10, f, e, 0, 8, 0, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } +#define MS(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 10, f, INVALID_CARGO, e, 0, 8, 0, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } /** * Writes the properties of an aeroplane into the EngineInfo struct. @@ -86,7 +86,7 @@ * @param e Bitmask of the climates * @note the 20 between b and e is the load amount */ -#define MA(a, b, c, d, e) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 20, e, CT_INVALID, 0, 8, 0, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } +#define MA(a, b, c, d, e) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 20, e, INVALID_CARGO, CT_INVALID, 0, 8, 0, 0, 0, STR_EMPTY, Ticks::CARGO_AGING_TICKS, INVALID_ENGINE, ExtraEngineFlags::None } /* Climates * T = Temperate @@ -102,33 +102,33 @@ static const EngineInfo _orig_engine_info[] = { * | decay_speed cargo_type * | | lifelength | climates * | | | | | | */ - MT( 1827, 20, 15, 30, 0 , T ), // 0 Kirby Paul Tank (Steam) - MT( 12784, 20, 22, 30, 0 , A|S ), // 1 MJS 250 (Diesel) - MT( 9497, 20, 20, 50, 0 , Y), // 2 Ploddyphut Choo-Choo - MT( 11688, 20, 20, 30, 0 , Y), // 3 Powernaut Choo-Choo - MT( 16802, 20, 20, 30, 0 , Y), // 4 Mightymover Choo-Choo - MT( 18993, 20, 20, 30, 0 , Y), // 5 Ploddyphut Diesel - MT( 20820, 20, 20, 30, 0 , Y), // 6 Powernaut Diesel - MT( 8766, 20, 20, 30, 0 , A|S ), // 7 Wills 2-8-0 (Steam) - MT( 5114, 20, 21, 30, 0 , T ), // 8 Chaney 'Jubilee' (Steam) - MT( 5479, 20, 20, 30, 0 , T ), // 9 Ginzu 'A4' (Steam) - MT( 12419, 20, 23, 25, 0 , T ), // 10 SH '8P' (Steam) + MT( 1827, 20, 15, 30, CT_NONE , T ), // 0 Kirby Paul Tank (Steam) + MT( 12784, 20, 22, 30, CT_NONE , A|S ), // 1 MJS 250 (Diesel) + MT( 9497, 20, 20, 50, CT_NONE , Y), // 2 Ploddyphut Choo-Choo + MT( 11688, 20, 20, 30, CT_NONE , Y), // 3 Powernaut Choo-Choo + MT( 16802, 20, 20, 30, CT_NONE , Y), // 4 Mightymover Choo-Choo + MT( 18993, 20, 20, 30, CT_NONE , Y), // 5 Ploddyphut Diesel + MT( 20820, 20, 20, 30, CT_NONE , Y), // 6 Powernaut Diesel + MT( 8766, 20, 20, 30, CT_NONE , A|S ), // 7 Wills 2-8-0 (Steam) + MT( 5114, 20, 21, 30, CT_NONE , T ), // 8 Chaney 'Jubilee' (Steam) + MT( 5479, 20, 20, 30, CT_NONE , T ), // 9 Ginzu 'A4' (Steam) + MT( 12419, 20, 23, 25, CT_NONE , T ), // 10 SH '8P' (Steam) MM( 13149, 20, 12, 30, CT_PASSENGERS , T ), // 11 Manley-Morel DMU (Diesel) MM( 23376, 20, 15, 35, CT_PASSENGERS , T ), // 12 'Dash' (Diesel) - MT( 14976, 20, 18, 28, 0 , T ), // 13 SH/Hendry '25' (Diesel) - MT( 14245, 20, 20, 30, 0 , T ), // 14 UU '37' (Diesel) - MT( 15341, 20, 22, 33, 0 , T ), // 15 Floss '47' (Diesel) - MT( 14976, 20, 20, 25, 0 , A|S ), // 16 CS 4000 (Diesel) - MT( 16437, 20, 20, 30, 0 , A|S ), // 17 CS 2400 (Diesel) - MT( 18993, 20, 22, 30, 0 , A|S ), // 18 Centennial (Diesel) - MT( 13880, 20, 22, 30, 0 , A|S ), // 19 Kelling 3100 (Diesel) - MM( 20454, 20, 22, 30, 0 , A|S ), // 20 Turner Turbo (Diesel) - MT( 16071, 20, 22, 30, 0 , A|S ), // 21 MJS 1000 (Diesel) + MT( 14976, 20, 18, 28, CT_NONE , T ), // 13 SH/Hendry '25' (Diesel) + MT( 14245, 20, 20, 30, CT_NONE , T ), // 14 UU '37' (Diesel) + MT( 15341, 20, 22, 33, CT_NONE , T ), // 15 Floss '47' (Diesel) + MT( 14976, 20, 20, 25, CT_NONE , A|S ), // 16 CS 4000 (Diesel) + MT( 16437, 20, 20, 30, CT_NONE , A|S ), // 17 CS 2400 (Diesel) + MT( 18993, 20, 22, 30, CT_NONE , A|S ), // 18 Centennial (Diesel) + MT( 13880, 20, 22, 30, CT_NONE , A|S ), // 19 Kelling 3100 (Diesel) + MM( 20454, 20, 22, 30, CT_NONE , A|S ), // 20 Turner Turbo (Diesel) + MT( 16071, 20, 22, 30, CT_NONE , A|S ), // 21 MJS 1000 (Diesel) MT( 20820, 20, 20, 25, CT_MAIL , T ), // 22 SH '125' (Diesel) - MT( 16437, 20, 23, 30, 0 , T ), // 23 SH '30' (Electric) - MT( 19359, 20, 23, 80, 0 , T ), // 24 SH '40' (Electric) - MM( 23376, 20, 25, 30, 0 , T ), // 25 'T.I.M.' (Electric) - MM( 26298, 20, 25, 50, 0 , T ), // 26 'AsiaStar' (Electric) + MT( 16437, 20, 23, 30, CT_NONE , T ), // 23 SH '30' (Electric) + MT( 19359, 20, 23, 80, CT_NONE , T ), // 24 SH '40' (Electric) + MM( 23376, 20, 25, 30, CT_NONE , T ), // 25 'T.I.M.' (Electric) + MM( 26298, 20, 25, 50, CT_NONE , T ), // 26 'AsiaStar' (Electric) MW( 1827, 20, 20, 50, CT_PASSENGERS , T|A|S|Y), // 27 Passenger Carriage MW( 1827, 20, 20, 50, CT_MAIL , T|A|S|Y), // 28 Mail Van MW( 1827, 20, 20, 50, CT_COAL , T|A ), // 29 Coal Truck @@ -156,9 +156,9 @@ static const EngineInfo _orig_engine_info[] = { MW( 1827, 20, 20, 50, CT_BATTERIES , Y), // 51 Battery Truck MW( 1827, 20, 20, 50, CT_FIZZY_DRINKS, Y), // 52 Fizzy Drink Truck MW( 1827, 20, 20, 50, CT_PLASTIC , Y), // 53 Plastic Truck - MT( 28490, 20, 20, 50, 0 , T|A|S ), // 54 'X2001' (Electric) + MT( 28490, 20, 20, 50, CT_NONE , T|A|S ), // 54 'X2001' (Electric) MT( 31047, 20, 20, 50, CT_PASSENGERS , T|A|S ), // 55 'Millennium Z1' (Electric) - MT( 28855, 20, 20, 50, 0 , Y), // 56 Wizzowow Z99 + MT( 28855, 20, 20, 50, CT_NONE , Y), // 56 Wizzowow Z99 MW( 1827, 20, 20, 50, CT_PASSENGERS , T|A|S|Y), // 57 Passenger Carriage MW( 1827, 20, 20, 50, CT_MAIL , T|A|S|Y), // 58 Mail Van MW( 1827, 20, 20, 50, CT_COAL , T|A ), // 59 Coal Truck @@ -186,11 +186,11 @@ static const EngineInfo _orig_engine_info[] = { MW( 1827, 20, 20, 50, CT_BATTERIES , Y), // 81 Battery Truck MW( 1827, 20, 20, 50, CT_FIZZY_DRINKS, Y), // 82 Fizzy Drink Truck MW( 1827, 20, 20, 50, CT_PLASTIC , Y), // 83 Plastic Truck - MT( 36525, 20, 20, 50, 0 , T|A|S ), // 84 Lev1 'Leviathan' (Electric) - MT( 39447, 20, 20, 50, 0 , T|A|S ), // 85 Lev2 'Cyclops' (Electric) - MT( 42004, 20, 20, 50, 0 , T|A|S ), // 86 Lev3 'Pegasus' (Electric) - MT( 42735, 20, 20, 50, 0 , T|A|S ), // 87 Lev4 'Chimaera' (Electric) - MT( 36891, 20, 20, 60, 0 , Y), // 88 Wizzowow Rocketeer + MT( 36525, 20, 20, 50, CT_NONE , T|A|S ), // 84 Lev1 'Leviathan' (Electric) + MT( 39447, 20, 20, 50, CT_NONE , T|A|S ), // 85 Lev2 'Cyclops' (Electric) + MT( 42004, 20, 20, 50, CT_NONE , T|A|S ), // 86 Lev3 'Pegasus' (Electric) + MT( 42735, 20, 20, 50, CT_NONE , T|A|S ), // 87 Lev4 'Chimaera' (Electric) + MT( 36891, 20, 20, 60, CT_NONE , Y), // 88 Wizzowow Rocketeer MW( 1827, 20, 20, 50, CT_PASSENGERS , T|A|S|Y), // 89 Passenger Carriage MW( 1827, 20, 20, 50, CT_MAIL , T|A|S|Y), // 90 Mail Van MW( 1827, 20, 20, 50, CT_COAL , T|A ), // 91 Coal Truck diff --git a/src/table/town_land.h b/src/table/town_land.h index d2d991c328..2ba1bc173b 100644 --- a/src/table/town_land.h +++ b/src/table/town_land.h @@ -1812,6 +1812,7 @@ static_assert(lengthof(_town_draw_tile_data) == (NEW_HOUSE_OFFSET) * 4 * 4); #define MS(mnd, mxd, p, rc, bn, rr, mg, ca1, ca2, ca3, bf, ba, cg1, cg2, cg3) \ {mnd, mxd, p, rc, bn, rr, mg, \ {ca1, ca2, ca3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \ + {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \ {cg1, cg2, cg3, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID}, \ bf, ba, true, GRFFileProps(INVALID_HOUSE_ID), 0, {COLOUR_BEGIN, COLOUR_BEGIN, COLOUR_BEGIN, COLOUR_BEGIN}, \ 16, NO_EXTRA_FLAG, HOUSE_NO_CLASS, {0, 2, 0, 0}, 0, 0, 0} diff --git a/src/town.h b/src/town.h index 75182c285a..f096bfa530 100644 --- a/src/town.h +++ b/src/town.h @@ -78,7 +78,11 @@ struct Town : TownPool::PoolItem<&_town_pool> { std::string text; ///< General text with additional information. - inline byte GetPercentTransported(CargoID cid) const { return this->supplied[cid].old_act * 256 / (this->supplied[cid].old_max + 1); } + inline byte GetPercentTransported(CargoID cid) const + { + if (!IsValidCargoID(cid)) return 0; + return this->supplied[cid].old_act * 256 / (this->supplied[cid].old_max + 1); + } StationList stations_near; ///< NOSAVE: List of nearby stations. diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index a2c3df76fb..ffa3d746b3 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -803,7 +803,7 @@ static void AddAcceptedCargo_Town(TileIndex tile, CargoArray &acceptance, CargoT AddAcceptedCargoSetMask(accepts[1], GB(callback, 4, 4), acceptance, always_accepted); if (_settings_game.game_creation.landscape != LT_TEMPERATE && HasBit(callback, 12)) { /* The 'S' bit indicates food instead of goods */ - AddAcceptedCargoSetMask(CT_FOOD, GB(callback, 8, 4), acceptance, always_accepted); + AddAcceptedCargoSetMask(GetCargoIDByLabel(CT_FOOD), GB(callback, 8, 4), acceptance, always_accepted); } else { AddAcceptedCargoSetMask(accepts[2], GB(callback, 8, 4), acceptance, always_accepted); } diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index da95bfc218..1a3d74b00b 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -649,6 +649,7 @@ static CommandCost CmdBuildRailWagon(DoCommandFlag flags, TileIndex tile, const InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); v->cargo_type = e->GetDefaultCargoType(); + assert(IsValidCargoID(v->cargo_type)); v->cargo_cap = rvi->capacity; v->refit_cap = 0; @@ -773,6 +774,7 @@ CommandCost CmdBuildRailVehicle(DoCommandFlag flags, TileIndex tile, const Engin v->vehstatus = VS_HIDDEN | VS_STOPPED | VS_DEFPAL; v->spritenum = rvi->image_index; v->cargo_type = e->GetDefaultCargoType(); + assert(IsValidCargoID(v->cargo_type)); v->cargo_cap = rvi->capacity; v->refit_cap = 0; v->last_station_visited = INVALID_STATION; diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 8ac20d9b14..d4a50101c9 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1954,7 +1954,8 @@ LiveryScheme GetEngineLiveryScheme(EngineID engine_type, EngineID parent_engine_ } if (!IsValidCargoID(cargo_type)) cargo_type = e->GetDefaultCargoType(); - if (!IsValidCargoID(cargo_type)) cargo_type = CT_GOODS; // The vehicle does not carry anything, let's pick some freight cargo + if (!IsValidCargoID(cargo_type)) cargo_type = GetCargoIDByLabel(CT_GOODS); // The vehicle does not carry anything, let's pick some freight cargo + assert(IsValidCargoID(cargo_type)); if (e->u.rail.railveh_type == RAILVEH_WAGON) { if (!CargoSpec::Get(cargo_type)->is_freight) { if (parent_engine_type == INVALID_ENGINE) { @@ -1994,7 +1995,8 @@ LiveryScheme GetEngineLiveryScheme(EngineID engine_type, EngineID parent_engine_ cargo_type = v->First()->cargo_type; } if (!IsValidCargoID(cargo_type)) cargo_type = e->GetDefaultCargoType(); - if (!IsValidCargoID(cargo_type)) cargo_type = CT_GOODS; // The vehicle does not carry anything, let's pick some freight cargo + if (!IsValidCargoID(cargo_type)) cargo_type = GetCargoIDByLabel(CT_GOODS); // The vehicle does not carry anything, let's pick some freight cargo + assert(IsValidCargoID(cargo_type)); /* Important: Use Tram Flag of front part. Luckily engine_type refers to the front part here. */ if (HasBit(e->info.misc_flags, EF_ROAD_TRAM)) { @@ -2007,7 +2009,8 @@ LiveryScheme GetEngineLiveryScheme(EngineID engine_type, EngineID parent_engine_ case VEH_SHIP: if (!IsValidCargoID(cargo_type)) cargo_type = e->GetDefaultCargoType(); - if (!IsValidCargoID(cargo_type)) cargo_type = CT_GOODS; // The vehicle does not carry anything, let's pick some freight cargo + if (!IsValidCargoID(cargo_type)) cargo_type = GetCargoIDByLabel(CT_GOODS); // The vehicle does not carry anything, let's pick some freight cargo + assert(IsValidCargoID(cargo_type)); return IsCargoInClass(cargo_type, CC_PASSENGERS) ? LS_PASSENGER_SHIP : LS_FREIGHT_SHIP; case VEH_AIRCRAFT: diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index eb8da1ebb1..4817627e8c 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -167,7 +167,8 @@ std::tuple CmdBuildVehicle(D } else { refitted_capacity = e->GetDisplayDefaultCapacity(&refitted_mail_capacity); cargo_capacities[default_cargo] = refitted_capacity; - cargo_capacities[CT_MAIL] = refitted_mail_capacity; + CargoID mail = GetCargoIDByLabel(CT_MAIL); + if (IsValidCargoID(mail)) cargo_capacities[mail] = refitted_mail_capacity; } } @@ -410,7 +411,8 @@ static std::tuple RefitVehicle(Vehicle total_mail_capacity += mail_capacity; cargo_capacities[new_cid] += amount; - cargo_capacities[CT_MAIL] += mail_capacity; + CargoID mail = GetCargoIDByLabel(CT_MAIL); + if (IsValidCargoID(mail)) cargo_capacities[mail] += mail_capacity; if (!refittable) continue; diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index b07e978f64..b7f117e9c1 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -947,7 +947,7 @@ struct RefitWindow : public Window { Money money = cost.GetCost(); if (mail_capacity > 0) { - SetDParam(2, CT_MAIL); + SetDParam(2, GetCargoIDByLabel(CT_MAIL)); SetDParam(3, mail_capacity); if (this->order != INVALID_VEH_ORDER_ID) { /* No predictable cost */ From ff618230fe59bd889f56d4ace837ffc2445377b1 Mon Sep 17 00:00:00 2001 From: dP Date: Sun, 4 Feb 2024 16:15:24 +0530 Subject: [PATCH 12/17] Codechange: Replace magic value with a variable (#11980) --- src/graph_gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp index 45b4ded9ac..da5ba21c53 100644 --- a/src/graph_gui.cpp +++ b/src/graph_gui.cpp @@ -1122,7 +1122,7 @@ struct PaymentRatesGraphWindow : BaseGraphWindow { int i = 0; for (const CargoSpec *cs : _sorted_standard_cargo_specs) { this->colours[i] = cs->legend_colour; - for (uint j = 0; j != 20; j++) { + for (uint j = 0; j != this->num_on_x_axis; j++) { this->cost[i][j] = GetTransportedGoodsIncome(10, 20, j * 4 + 4, cs->Index()); } i++; From 64611a7d12c22128b3d0983603828fd6bb459f70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Guilloux?= Date: Sun, 4 Feb 2024 13:19:35 +0100 Subject: [PATCH 13/17] Fix #11975, 27a920c: Running AIs also occupy a slot (#11976) --- src/ai/ai_gui.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index e3512d315d..0cd83ea8b3 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -164,6 +164,17 @@ struct AIConfigWindow : public Window { switch (widget) { case WID_AIC_LIST: { Rect tr = r.Shrink(WidgetDimensions::scaled.matrix); + int max_slot = GetGameSettings().difficulty.max_no_competitors; + if (_game_mode == GM_NORMAL) { + for (const Company *c : Company::Iterate()) { + if (c->is_ai) max_slot--; + } + for (CompanyID cid = COMPANY_FIRST; cid < (CompanyID)max_slot && cid < MAX_COMPANIES; cid++) { + if (Company::IsValidID(cid)) max_slot++; + } + } else { + max_slot++; // Slot 0 is human + } for (int i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && i < MAX_COMPANIES; i++) { StringID text; @@ -180,13 +191,6 @@ struct AIConfigWindow : public Window { if (this->selected_slot == i) { tc = TC_WHITE; } else if (IsEditable((CompanyID)i)) { - int max_slot = GetGameSettings().difficulty.max_no_competitors; - for (const Company *c : Company::Iterate()) { - if (c->is_ai) max_slot--; - } - for (CompanyID cid = COMPANY_FIRST; cid < (CompanyID)max_slot && cid < MAX_COMPANIES; cid++) { - if (Company::IsValidHumanID(cid)) max_slot++; - } if (i < max_slot) tc = TC_ORANGE; } else if (Company::IsValidAiID(i)) { tc = TC_GREEN; From 9cc17230e864b84e60fa96e0bfcf1ed969d7345a Mon Sep 17 00:00:00 2001 From: translators Date: Sun, 4 Feb 2024 18:36:20 +0000 Subject: [PATCH 14/17] Update: Translations from eints english (au): 11 changes by krysclarke english (us): 11 changes by 2TallTyler galician: 3 changes by pvillaverde chinese (simplified): 17 changes by WenSimEHRP korean: 14 changes by telk5093 german: 78 changes by SecretIdetity russian: 11 changes by Ln-Wolf catalan: 23 changes by J0anJosep danish: 2 changes by bscargo latvian: 229 changes by lexuslatvia french: 29 changes by glx22 portuguese: 33 changes by azulcosta portuguese (brazilian): 28 changes by pasantoro --- src/lang/afrikaans.txt | 4 + src/lang/arabic_egypt.txt | 4 + src/lang/basque.txt | 4 + src/lang/belarusian.txt | 4 + src/lang/brazilian_portuguese.txt | 49 ++-- src/lang/bulgarian.txt | 4 + src/lang/catalan.txt | 29 ++- src/lang/chuvash.txt | 4 + src/lang/croatian.txt | 4 + src/lang/czech.txt | 4 + src/lang/danish.txt | 6 + src/lang/dutch.txt | 4 + src/lang/english_AU.txt | 15 ++ src/lang/english_US.txt | 15 ++ src/lang/esperanto.txt | 4 + src/lang/estonian.txt | 4 + src/lang/faroese.txt | 4 + src/lang/finnish.txt | 4 + src/lang/french.txt | 35 ++- src/lang/frisian.txt | 4 + src/lang/gaelic.txt | 4 + src/lang/galician.txt | 7 + src/lang/german.txt | 87 ++++++- src/lang/greek.txt | 4 + src/lang/hebrew.txt | 4 + src/lang/hindi.txt | 4 + src/lang/hungarian.txt | 4 + src/lang/icelandic.txt | 4 + src/lang/ido.txt | 4 + src/lang/indonesian.txt | 4 + src/lang/irish.txt | 4 + src/lang/italian.txt | 4 + src/lang/japanese.txt | 4 + src/lang/korean.txt | 21 +- src/lang/latin.txt | 4 + src/lang/latvian.txt | 375 +++++++++++++++++++----------- src/lang/lithuanian.txt | 4 + src/lang/luxembourgish.txt | 4 + src/lang/macedonian.txt | 4 + src/lang/malay.txt | 4 + src/lang/maltese.txt | 4 + src/lang/marathi.txt | 4 + src/lang/norwegian_bokmal.txt | 4 + src/lang/norwegian_nynorsk.txt | 4 + src/lang/persian.txt | 4 + src/lang/polish.txt | 4 + src/lang/portuguese.txt | 59 +++-- src/lang/romanian.txt | 4 + src/lang/russian.txt | 22 +- src/lang/serbian.txt | 4 + src/lang/simplified_chinese.txt | 27 ++- src/lang/slovak.txt | 4 + src/lang/slovenian.txt | 4 + src/lang/spanish.txt | 4 + src/lang/spanish_MX.txt | 4 + src/lang/swedish.txt | 4 + src/lang/tamil.txt | 4 + src/lang/thai.txt | 4 + src/lang/traditional_chinese.txt | 4 + src/lang/turkish.txt | 4 + src/lang/ukrainian.txt | 4 + src/lang/urdu.txt | 4 + src/lang/vietnamese.txt | 4 + src/lang/welsh.txt | 4 + 64 files changed, 745 insertions(+), 206 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 0716ef3be9..1c20902723 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -3965,6 +3965,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :gaan altyd STR_ORDER_DROP_SERVICE_DEPOT :Diens indien nodig STR_ORDER_DROP_HALT_DEPOT :Stop +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Voertuig data om sprong op te baseer # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 730d9b6ab5..fd8c3287de 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -3716,6 +3716,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :الذهاب د STR_ORDER_DROP_SERVICE_DEPOT :الصيانة عند الحاجة STR_ORDER_DROP_HALT_DEPOT :توقف +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}بيانات العربة لتعريف التجاوز الى # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 3ac1428f79..e7b7590b6a 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -3734,6 +3734,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Joan beti STR_ORDER_DROP_SERVICE_DEPOT :Beharrezkoa bada mantenimendua egin STR_ORDER_DROP_HALT_DEPOT :Gelditu +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Ibilgailuaren xehetasunak jauzia oinarritzeko # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 1a35371bd7..e6ab224cd3 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -4325,6 +4325,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ісьці за STR_ORDER_DROP_SERVICE_DEPOT :Абслужыць, калі неабходна STR_ORDER_DROP_HALT_DEPOT :Стоп +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Парамэтр транспарту для параўнаньня # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 4af3923ef7..e191cb412e 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -165,7 +165,7 @@ STR_ABBREV_ALL :TUDO # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA}{NBSP}passageiro{P "" s} -STR_BAGS :{COMMA}{NBSP}bolsa{P "" s} +STR_BAGS :{COMMA}{NBSP}sacola{P "" s} STR_TONS :{COMMA}{NBSP}tonelada{P "" s} STR_LITERS :{COMMA}{NBSP}litro{P "" s} STR_ITEMS :{COMMA}{NBSP}ite{P m ns} @@ -1933,6 +1933,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Seleciona o ano STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Tipo de sinal a ser exibido: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selecione quais os tipos de sinais mostrar ao usar Ctrl+Clique num sinal existente com a ferramenta de sinais ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Apenas grupo atual STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Todos visíveis STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Mostrar tipos de sinais: {STRING} @@ -2830,19 +2831,19 @@ STR_STATION_CLASS_WAYP_WAYPOINT :Ponto de contro # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Seleção de Sinais -STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Alternar se mostra os tipos de sinais avançados -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinais padrão (semáforos){}Sinais são necessários para impedir trens de colidirem nas malhas ferroviárias com mais de um trem -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (semáforo){}Verde enquanto haja um ou mais sinais de saída verdes na atual seção dos trilhos. Do contrário, mostra vermelho -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de saída (semáforo){}Funciona como um sinal normal, porém é necessário para o funcionamento correto do sistema de pré-sinais combo ou de entrada -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sinal combo (semáforo){}O sinal combo funciona tanto como um sinal de entrada quanto de saída. Permite construir várias ramificações -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal de trajeto(Semáforo){}Um sinal de trajeto permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal de trajeto já permite a passada do próximo -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal de trajeto de mão única(Semáforo){}Um sinal de trajeto permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal de trajeto já permite a passada do próximo, porém não permite a passagem na via contrária -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sinal Padrão (elétrico){}Sinais são necessários para impedir que trens batam em redes de ferrovias com mais de uma máquina +STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Alterna mostrar os tipos de sinais avançados +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinal de bloco (semáforo){}Este é o tipo mais básico de sinal, permitindo que apenas um trem fique em um bloco de linha ao mesmo tempo +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (semáforo){}Fica verde enquanto houver um ou mais sinais de saída verdes na atual seção de trilhos. Caso contrário, fica vermelho +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de saída (semáforo){}Funciona da mesma forma que o sinal de bloco, mas é necessário para ativar a cor correta nos pré-sinais de entrada e combinado. +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sinal combinado (semáforo){}O sinal combinado funciona simultaneamente como um sinal de entrada e de saída. Isto permite a construção de ramificações complexas de pré-sinais. +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal de trajeto(semáforo){}Um sinal de trajeto permite mais de um trem entrar em um bloco de sinal ao mesmo tempo, se o trem puder reservar um trajeto para um ponto seguro de parada. Sinais de trajeto padrões podem ser passados no sentido contrário +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal de sentido único(semáforo){}Um sinal de trajeto permite mais de um trem em um bloco de sinal ao mesmo tempo, se o trem puder reservar um trajeto para um ponto seguro de parada. Os sinais de sentido único não podem ser passados no sentido contrário +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sinal de bloco (elétrico){}Este é o tipo mais básico de sinal, permitindo que apenas um trem fique em um bloco de linha em um dado momento STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (elétrico){}Verde enquanto haja um ou mais sinais de saída verdes na atual seção dos trilhos. Do contrário, mostra vermelho -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de saída(elétrico){}Funciona como um sinal normal, porém é necessário para o funcionamento correto do sistema de pré-sinais combo ou de entrada -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal Combo (elétrico){}O sinal combo funciona tanto como um sinal de entrada quanto de saída. Permite construir várias ramificações de pré-sinais -STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal de trajeto (Elétrico){}Um sinal de trajeto permite mais de um trem entrar em um bloco de sinal ao mesmo tempo, se o trem puder reservar um trajeto para um ponto seguro de parada. Sinais de trajeto padrões podem ser passados pelo lado de trás -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal avançado de mão única(Elétrico){}Um sinal de trajeto permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal de trajeto já permite a passada do próximo, porém não permite a passagem na via contrária +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de saída (elétrico){}Funciona da mesma forma que o sinal de bloco, mas é necessário para ativar a cor correta nos pré-sinais de entrada e combinado. +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal combinado (elétrico){}O sinal combinado funciona simultaneamente como um sinal de entrada e de saída. Isto permite construir ramificações complexas de pré-sinais. +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal de trajeto (elétrico){}Um sinal de trajeto permite mais de um trem entrar em um bloco de sinal ao mesmo tempo, se o trem puder reservar um trajeto para um ponto seguro de parada. Sinais de trajeto padrões podem ser passados no sentido contrário +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal de sentido único (elétrico){}Um sinal de trajeto permite mais de um trem entrar em um bloco de sinal ao mesmo tempo, se o trem puder reservar um trajeto para um ponto seguro de parada. Os sinais de sentido único não podem ser passados no sentido contrário STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Converter sinal{}Clique em um sinal existente para convertê-lo para o tipo e variante de sinal selecionado. Ctrl+Clique anterna a variante existente. Shift+Clique mostra o custo estimado da conversão STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densidade dos sinais ao clicar e arrastar STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Diminuir a densidade dos sinais @@ -4108,7 +4109,7 @@ STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Comprar STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e reequipar veículo STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e Reequipar Veículo STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e Repor Navio -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e reequipar aeronaves +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e Adaptar Aeronaves ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar o veículo ferroviário selecionado. Pressionar Shift mostra o custo estimado @@ -4376,6 +4377,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Ação a # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Carregando / descarregando STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Saindo +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Esperando para desagrupar STR_VEHICLE_STATUS_CRASHED :{RED}Acidentado! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Quebrado STR_VEHICLE_STATUS_STOPPED :{RED}Parado @@ -4389,6 +4391,7 @@ STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Sem ord STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Indo para {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Indo para {DEPOT}. {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção em {DEPOT}. {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Desagrupar e efetuar manutenção em {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Não é possível alcançar {STATION}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Não é possível alcançar {WAYPOINT}, {VELOCITY} @@ -4519,6 +4522,7 @@ STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Exibe o STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de ordens - clique em uma ordem para selecionar. Ctrl+Clique mostra o destino da ordem STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Fim de Ordens - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Fim de Ordens Compartilhadas - - @@ -4555,6 +4559,11 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Cargas disponí STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ir sempre STR_ORDER_DROP_SERVICE_DEPOT :Manutenção, se necessária STR_ORDER_DROP_HALT_DEPOT :Parar +STR_ORDER_DROP_UNBUNCH :Desagrupar + +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dados do veículo no qual se basear para pular ordem @@ -4623,6 +4632,7 @@ STR_ORDER_REFIT_ORDER :(Adaptar para { STR_ORDER_REFIT_STOP_ORDER :(Adaptar a {STRING} e parar) STR_ORDER_STOP_ORDER :(Parar) +STR_ORDER_WAIT_TO_UNBUNCH :(esperar para desagrupar) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Não pode usar a estação){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4755,12 +4765,12 @@ STR_AI_DEBUG_RELOAD :{BLACK}Recarreg STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Desativar a IA, recarregar o script e reiniciar a IA STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Ativar/desativar a pausa quando uma mensagem de registo da IA corresponder à sequência de pausa STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Falha em: -STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Falha em +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Parar em STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Quando uma mensagem do registo da IA corresponder a esta sequência, o jogo é pausado STR_AI_DEBUG_MATCH_CASE :{BLACK}Caso de igualdade STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Alternar o caso de igualdade quando comparar as mensagens de resgisto da IA com a sequência de pausa STR_AI_DEBUG_CONTINUE :{BLACK}Continuar -STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Despausar e continuar o AI +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Sair da pausa e continuar a IA STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Ver saída de depuração desta IA STR_AI_GAME_SCRIPT :{BLACK}Game Script STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Verifique o registo do Script de jogo @@ -4799,7 +4809,7 @@ STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configur # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Disponíveis {STRING} STR_AI_LIST_CAPTION_AI :{G=f}IAs -STR_AI_LIST_CAPTION_GAMESCRIPT :Script do jogo +STR_AI_LIST_CAPTION_GAMESCRIPT :Scripts de jogo STR_AI_LIST_TOOLTIP :{BLACK}Clique para selecionar um script STR_AI_LIST_AUTHOR :{LTBLUE}Autor: {ORANGE}{STRING} @@ -5094,6 +5104,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Incapaz STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Tipo de depósito errado # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... pode haver somente uma ordem de desagrupar +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... não é possível usar ordens de carga completa quando o veículo tem uma ordem de desagrupar +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... não é possível desagrupar um veículo com ordem de carga completa +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... não é possível usar ordens condicionais quando um veículo tem uma ordem de desagrupar +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... não é possível desagrupar um veículo com uma ordem condicional # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} fica grande demais para ser substituído diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 793ae051d5..7bdde6832e 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -3806,6 +3806,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Винаги н STR_ORDER_DROP_SERVICE_DEPOT :Сервиз, когато е необходимо STR_ORDER_DROP_HALT_DEPOT :Стоп +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Данни за превозното средство, на които се базира # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 9f4cf7ae20..f29bf615ee 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -363,6 +363,7 @@ STR_SORT_BY_POPULATION :Població STR_SORT_BY_RATING :Qualificació STR_SORT_BY_NUM_VEHICLES :Nombre de vehicles STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Benefici total de l'any passat +STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Benefici total durant l'últim període STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Benefici total d'aquest any STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Benefici total d'aquest període STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Benefici mitjà de l'any passat @@ -634,6 +635,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Clica aq # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Taula de la lliga de companyies STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} «{STRING}» +STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Enginyer STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Director de trànsit STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinador de transport @@ -1263,6 +1265,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Dreta STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}segon{P 0 "" s} STR_CONFIG_SETTING_INFINITE_MONEY :Diners infinits: {STRING} +STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Permet gastar diners sense límit i desactiva les bancarrotes de les companyies. STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Préstec inicial màxim: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Quantitat màxima del préstec que pot demanar una companyia (sense tenir en compte la inflació) @@ -1288,6 +1291,7 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Fixa quant es p STR_CONFIG_SETTING_SUBSIDY_DURATION :Durada dels subsidis: {STRING} ###length 2 STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Establiu el nombre d'anys que duren els subsidis. +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Estableix el nombre de períodes que duren les subvencions. STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR_PERIODS} ###setting-zero-is-special @@ -1474,7 +1478,8 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :De tots els veh STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisa si el benefici del vehicle és negatiu: {STRING} ###length 2 -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Quan està activat, un missatge de notícia és enviat quan un vehicle no ha tingut beneficis durant l'any +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Quan està activat, s'envia un missatge de notícia quan un vehicle no ha tingut beneficis durant l'any +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Quan està activat, s'envia un missatge de notícia quan un vehicle no ha obtingut benefici durant un període. STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Els vehicles mai caduquen: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Quan està activat, tots els models de vehicles continuen disponibles per sempre després de la seva introducció @@ -1491,6 +1496,7 @@ STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (temps de cal STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Escala la producció de càrrega de les poblacions: {STRING} STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Escala la producció de càrrega de les poblacions segons aquest percentatge. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Escala la producció de càrrega de les indústries: {STRING} STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Escala la producció de càrrega de les indústries segons aquest percentatge. STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}{NBSP}% @@ -1752,6 +1758,7 @@ STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Fi del període ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reprodueix un efecte de so al final de l'any quan apareix el resum financer de l'any de la companyia en comparació amb l'anterior +STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Reprodueix un so al final d'un període que indica el rendiment de la companyia durant el període respecte al període anterior. STR_CONFIG_SETTING_SOUND_CONFIRM :Construcció: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Reprodueix un efecte de so quan es realitzin amb èxit construccions o altres accions @@ -1912,6 +1919,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Estableix l'any STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Canvia a través dels tipus de senyal: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Seleccioneu com es commutaran els tipus de senyals quan es faci Ctrl+clic sobre un senyal ja construït amb l'eina de construir senyals. ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Només el grup actual STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Tots visibles STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Mostra els tipus de senyals: {STRING} @@ -2220,7 +2228,7 @@ STR_HELP_WINDOW_BUGTRACKER :{BLACK}Informeu STR_HELP_WINDOW_COMMUNITY :Comunitat # Cheat window -STR_CHEATS :{WHITE}Trampes +STR_CHEATS :{WHITE}Opcions de mode lliure STR_CHEAT_MONEY :{LTBLUE}Augmenta els diners de la companyia actual en {CURRENCY_LONG}. STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Juga amb la companyia: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Eruga màgica (treu indústries i altres objectes inamovibles): {ORANGE}{STRING} @@ -3694,6 +3702,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clica al STR_SUBSIDIES_OFFERED_EXPIRY_DATE :fins el {DATE_SHORT} STR_SUBSIDIES_OFFERED_EXPIRY_TIME :abans de {UNITS_MONTHS_OR_MINUTES} STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :fins el {DATE_SHORT} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :Queden {UNITS_MONTHS_OR_MINUTES} # Story book window STR_STORY_BOOK_CAPTION :{WHITE}Llibre de Partida de {COMPANY} @@ -3734,6 +3743,7 @@ STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratis STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Mostra els ratis de l'estació STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH :{BLACK}Subministrament mensual i rati local: +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :{BLACK}Subministrament per minut i rati local: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Agrupa per @@ -3918,6 +3928,7 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :Cap # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producció del darrer mes: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Producció durant l'últim minut: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportat) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centra la vista principal al lloc de la indústria. Ctrl+Clic obre una nova vista al lloc de la indústria STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivell de producció: {YELLOW}{COMMA}% @@ -4396,6 +4407,7 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Pes: {LT STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Benefici d'aquest any: {LTBLUE}{CURRENCY_LONG} (darrer any: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Benefici aquest any: {LTBLUE}{CURRENCY_LONG} (l'any passat: {CURRENCY_LONG}) {BLACK}Rendiment mínim: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Benefici durant aquest període: {LTBLUE}{CURRENCY_LONG} (durant l'últim període: {CURRENCY_LONG}) +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Benefici durant aquest període: {LTBLUE}{CURRENCY_LONG} (durant l'últim període: {CURRENCY_LONG}) {BLACK}Rendiment mínim: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilitat: {LTBLUE}{COMMA}% {BLACK}Avaries des de la darrera revisió: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Fabricat: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY_LONG} @@ -4481,6 +4493,7 @@ STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Commuta STR_ORDERS_LIST_TOOLTIP :{BLACK}Llista d'ordres - clica en una ordre per marcar-la. Ctrl+Clic desplaça cap a la destinació de l'ordre STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Fi d'Ordres - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Fi d'Ordres Compartides - - @@ -4517,6 +4530,11 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Càrrega dispon STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vés-hi sempre STR_ORDER_DROP_SERVICE_DEPOT :Revisa si és necessari STR_ORDER_DROP_HALT_DEPOT :Para +STR_ORDER_DROP_UNBUNCH :Separa + +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dades del vehicle on basar el salt a @@ -4585,6 +4603,7 @@ STR_ORDER_REFIT_ORDER :(Remodela a {ST STR_ORDER_REFIT_STOP_ORDER :(Remodela a {STRING} i para) STR_ORDER_STOP_ORDER :(Para) +STR_ORDER_WAIT_TO_UNBUNCH :(espera per a separar) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(No pot usar l'estació){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4788,6 +4807,8 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de la pa STR_AI_SETTINGS_CLOSE :{BLACK}Tanca STR_AI_SETTINGS_RESET :{BLACK}Restableix STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] +STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -5054,6 +5075,10 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Impossib STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Tipus de cotxera incorrecta # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... només pot tenir una ordre de separar. +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... no es poden fer servir ordres de càrrega completa quan el vehicle té una ordre de separació. +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... no pot fer servir ordres condicionals quan un vehicle té una ordre de separació. +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... no es pot separar un vehicle que té ordres condicionals. # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} és massa llarg després de la substitució diff --git a/src/lang/chuvash.txt b/src/lang/chuvash.txt index 4f0b1f2667..62d30a61ce 100644 --- a/src/lang/chuvash.txt +++ b/src/lang/chuvash.txt @@ -1528,6 +1528,10 @@ STR_ORDER_INDEX :{COMMA}:{NBSP} +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 25147fe7b8..c688ecd013 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -4151,6 +4151,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Idi neprekidno STR_ORDER_DROP_SERVICE_DEPOT :Servisiraj prema potrebi STR_ORDER_DROP_HALT_DEPOT :Stani +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Podaci vozila prema kojima se zasniva skok # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 53f3594d21..9e43ca9e76 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -4414,6 +4414,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Jeď vždy STR_ORDER_DROP_SERVICE_DEPOT :Údržba v případě potřeby STR_ORDER_DROP_HALT_DEPOT :Zastavit +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Vlastnost vozidla, podle které přeskakovat # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 9093ef77da..f7824807ab 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -799,6 +799,7 @@ STR_STATUSBAR_AUTOSAVE :{RED}AUTOGEM STR_STATUSBAR_SAVING_GAME :{RED}* * GEMMER SPIL * * STR_STATUSBAR_SPECTATOR :{WHITE}(tilskuer) +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(uendelige penge) # News message history STR_MESSAGE_HISTORY :{WHITE}Beskedhistorik @@ -4163,6 +4164,7 @@ STR_ENGINE_PREVIEW_TRAM_VEHICLE :sporvogn STR_ENGINE_PREVIEW_AIRCRAFT :fly STR_ENGINE_PREVIEW_SHIP :skib +STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING} # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Udskift {STRING} - {STRING} @@ -4434,6 +4436,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Altid benyt STR_ORDER_DROP_SERVICE_DEPOT :Service hvis nødvendigt STR_ORDER_DROP_HALT_DEPOT :Stop +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Data som ordrespring baseres på # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index e24f3ecf92..1bbf2c6a23 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -4554,6 +4554,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Altijd gaan STR_ORDER_DROP_SERVICE_DEPOT :Onderhouden wanneer nodig STR_ORDER_DROP_HALT_DEPOT :Stoppen +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Voertuiggegevens voor basisspringen wanneer # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 79f6a858ee..cec6f3b07b 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -1932,6 +1932,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Set the year wh STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Cycle through signal types: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Select which signal types to cycle through when Ctrl+Clicking on a built signal with the signal tool ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Current group only STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :All visible STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Show signal types: {STRING} @@ -4375,6 +4376,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Current # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Loading / Unloading STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Leaving +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Waiting to unbunch STR_VEHICLE_STATUS_CRASHED :{RED}Crashed! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Broken down STR_VEHICLE_STATUS_STOPPED :{RED}Stopped @@ -4388,6 +4390,7 @@ STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}No orde STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Heading for {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Heading for {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Service at {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Unbunch and service at {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Cannot reach {STATION}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Cannot reach {WAYPOINT}, {VELOCITY} @@ -4518,6 +4521,7 @@ STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Switch t STR_ORDERS_LIST_TOOLTIP :{BLACK}Order list - click on an order to highlight it. Ctrl+Click to scroll to the order's destination STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - End of Orders - - STR_ORDERS_END_OF_SHARED_ORDERS :- - End of Shared Orders - - @@ -4554,6 +4558,11 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Available cargo STR_ORDER_DROP_GO_ALWAYS_DEPOT :Always go STR_ORDER_DROP_SERVICE_DEPOT :Service if needed STR_ORDER_DROP_HALT_DEPOT :Stop +STR_ORDER_DROP_UNBUNCH :Unbunch + +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Vehicle data to base jumping on @@ -4622,6 +4631,7 @@ STR_ORDER_REFIT_ORDER :(Refit to {STRI STR_ORDER_REFIT_STOP_ORDER :(Refit to {STRING} and stop) STR_ORDER_STOP_ORDER :(Stop) +STR_ORDER_WAIT_TO_UNBUNCH :(wait to unbunch) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Can't use station){POP_COLOUR} {STRING} {STATION} {STRING} @@ -5093,6 +5103,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Unable t STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Wrong depot type # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... can only have one unbunching order +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... cannot use full load orders when vehicle has an unbunching order +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... cannot unbunch a vehicle with a full load order +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... cannot use conditional orders when vehicle has an unbunching order +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... cannot unbunch a vehicle with a conditional order # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} is too long after replacement diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index f9f01d5e6e..0f5e12ef34 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -1932,6 +1932,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Set the year wh STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Cycle through signal types: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Select which signal types to cycle through when Ctrl+Clicking on a built signal with the signal tool ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Current group only STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :All visible STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Show signal types: {STRING} @@ -4375,6 +4376,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Current # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Loading / Unloading STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Leaving +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Waiting to unbunch STR_VEHICLE_STATUS_CRASHED :{RED}Crashed! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Broken down STR_VEHICLE_STATUS_STOPPED :{RED}Stopped @@ -4388,6 +4390,7 @@ STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}No orde STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Heading for {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Heading for {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Maintenance at {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Unbunch and service at {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Cannot reach {STATION}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Cannot reach {WAYPOINT}, {VELOCITY} @@ -4518,6 +4521,7 @@ STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Switch t STR_ORDERS_LIST_TOOLTIP :{BLACK}Order list - click on an order to highlight it. Ctrl+Click to scroll to the order's destination STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - End of Orders - - STR_ORDERS_END_OF_SHARED_ORDERS :- - End of Shared Orders - - @@ -4554,6 +4558,11 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Available cargo STR_ORDER_DROP_GO_ALWAYS_DEPOT :Always go STR_ORDER_DROP_SERVICE_DEPOT :Repair if needed STR_ORDER_DROP_HALT_DEPOT :Stop +STR_ORDER_DROP_UNBUNCH :Unbunch + +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Vehicle data to base jumping on @@ -4622,6 +4631,7 @@ STR_ORDER_REFIT_ORDER :(Refit to {STRI STR_ORDER_REFIT_STOP_ORDER :(Refit to {STRING} and stop) STR_ORDER_STOP_ORDER :(Stop) +STR_ORDER_WAIT_TO_UNBUNCH :(wait to unbunch) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Can't use station){POP_COLOUR} {STRING} {STATION} {STRING} @@ -5093,6 +5103,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Unable t STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Wrong depot type # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... can only have one unbunching order +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... cannot use full load orders when vehicle has an unbunching order +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... cannot unbunch a vehicle with a full load order +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... cannot use conditional orders when vehicle has an unbunching order +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... cannot unbunch a vehicle with a conditional order # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} is too long after replacement diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index 28b4e51391..c146b1e2dd 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -4289,6 +4289,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ĉiam iru. STR_ORDER_DROP_SERVICE_DEPOT :Prizorgu se necesas. STR_ORDER_DROP_HALT_DEPOT :Haltu. +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 553e3a9332..ebef38c2f7 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -4341,6 +4341,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Alati STR_ORDER_DROP_SERVICE_DEPOT :Vajadusel STR_ORDER_DROP_HALT_DEPOT :Peatu +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Sõiduki andmed, millel korralduse vahelejätmine põhineb # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index 86c4646d74..ddfdc70b50 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -3427,6 +3427,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Far altíð STR_ORDER_DROP_SERVICE_DEPOT :Eftirlit um neyðugt STR_ORDER_DROP_HALT_DEPOT :Steðga +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index ea13022bd2..0db5f41e0f 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -4518,6 +4518,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Mene aina STR_ORDER_DROP_SERVICE_DEPOT :Huolto, jos tarpeen STR_ORDER_DROP_HALT_DEPOT :Pysähdy +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Kulkuneuvon tiedot, joiden perusteella hypätään # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/french.txt b/src/lang/french.txt index 92bd790fda..91c963ff0b 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -635,6 +635,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Cliquer # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Classement des compagnies STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingénieur STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Gestionnaire de trafic STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinateur de trafic @@ -818,6 +819,7 @@ STR_STATUSBAR_AUTOSAVE :{RED}ENREGISTRE STR_STATUSBAR_SAVING_GAME :{RED}* * SAUVEGARDE EN COURS * * STR_STATUSBAR_SPECTATOR :{WHITE}(spectateur) +STR_STATUSBAR_INFINITE_MONEY :{WHITE}(argent infini) # News message history STR_MESSAGE_HISTORY :{WHITE}Historique des messages @@ -1270,6 +1272,8 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :À droite STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}seconde{P 0 "" s} +STR_CONFIG_SETTING_INFINITE_MONEY :Argent infini{NBSP}: {STRING} +STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Autoriser les dépenses illimitées et désactiver la banqueroute des compagnies STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Emprunt initial maximum{NBSP}: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Montant maximum qu'une compagnie peut emprunter (sans tenir compte de l'inflation) @@ -1504,6 +1508,11 @@ STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (calendrier gelé) +STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Échelle de production de marchandise des villes{NBSP}: {STRING} +STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Modifier la production de marchandise des villes de ce pourcentage. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Échelle de production de marchandise des industries{NBSP}: {STRING} +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Modifier la production de marchandise des industries de ce pourcentage. +STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Renouveler automatiquement les véhicules vieillissants{NBSP}: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Quand il est actif, un véhicule approchant de la fin de sa durée de vie est automatiquement remplacé quand les conditions du renouvellement sont remplies @@ -1916,7 +1925,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Espacement des STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Définit la distance à laquelle les signaux seront construits sur une voies jusqu'au prochain obstacle (signal, jonction), si les signaux sont glissés-déposés STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} case{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Espacement fixe entre les signaux en mode glisser-déposer{NBSP}: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Choisir le comportement du placement des signaux en mode glisser-déposer avec Ctrl. Si désactivé, les signaux sont placés autour des tunnels ou des ponts pour éviter de longues portions sans signaux. Si activé, les signaux sont placés toutes les N case, permettant d'aligner facilement les signaux sur des voies parallèles +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Choisir le comportement du placement des signaux en mode glisser-déposer. Si désactivé, les signaux sont placés autour des tunnels ou des ponts pour éviter de longues portions sans signaux. Si activé, les signaux sont placés toutes les N cases, permettant d'aligner facilement les signaux sur des voies parallèles STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Construire automatiquement des sémaphores avant{NBSP}: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Définit l'année à partir de laquelle des signaux électriques seront utilisés pour les voies. Avant cette année, des signaux non électriques seront utilisés (ils ont le même fonctionnement mais une apparence différente) @@ -1924,6 +1933,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Définit l'ann STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Sélectionner les signaux parmi{NBSP}: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Choisir quels types de signaux sont proposés lors de leur construction avec Ctrl ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Uniquement le groupe courant STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :tous les signaux visibles STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Afficher les signaux parmi{NBSP}: {STRING} @@ -2780,7 +2790,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construire un dépôt ferroviaire (pour acheter et entretenir des trains).{}Shift pour afficher seulement le coût estimé. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Construire un point de contrôle sur les rails.{}Ctrl pour joindre des points de contrôle entre eux.{}Shift pour afficher seulement le coût estimé. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construire une gare.{}Ctrl pour joindre des stations entre elles.{}Shift pour afficher seulement le coût estimé. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construire des signaux. Ctrl pour inverser le type des signaux (sémaphore/lumineux).{}Faire glisser pour construire le long d'une section de voie linéaire.{}Ctrl-glisser pour construire des signaux jusqu'à la prochaine jonction ou le prochain signal{}Ctrl-clic pour inverser le mode d'ouverture de la fenêtre de sélection des signaux.{}Shift pour afficher seulement le coût estimé. +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construire des signaux. Ctrl pour inverser le type des signaux (sémaphore/lumineux).{}Faire glisser pour construire des signaux jusqu'à la prochaine jonction ou le prochain signal{}Shift pour afficher seulement le coût estimé. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construire un pont ferroviaire.{}Shift pour afficher seulement le coût estimé. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construire un tunnel ferroviaire.{}Shift pour afficher seulement le coût estimé. STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Alterner entre construire et retirer des voies, des signaux, des points de contrôle et des gares.{}Ctrl pour retirer également la voie lors du retrait des points de contrôle et des gares. @@ -4367,6 +4377,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Action c # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Chargement/Déchargement STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Départ +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}En attente de répartition STR_VEHICLE_STATUS_CRASHED :{RED}Accidenté{NBSP}! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}En panne STR_VEHICLE_STATUS_STOPPED :{RED}Arrêté @@ -4380,6 +4391,7 @@ STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Aucun o STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}En route pour {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}En route pour le {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Entretien au {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Répartition et entretien au {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Ne peut pas atteindre {STATION}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Ne peut pas atteindre {WAYPOINT}, {VELOCITY} @@ -4510,6 +4522,7 @@ STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Basculer STR_ORDERS_LIST_TOOLTIP :{BLACK}Liste d'ordres - Cliquer sur un ordre pour le sélectionner. Ctrl-clic pour déplacer la vue sur la destination de l'ordre. STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :−− Fin des ordres −− STR_ORDERS_END_OF_SHARED_ORDERS :−− Fin des ordres partagés −− @@ -4546,6 +4559,11 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Cargaison dispo STR_ORDER_DROP_GO_ALWAYS_DEPOT :Toujours aller STR_ORDER_DROP_SERVICE_DEPOT :Entretien si nécessaire STR_ORDER_DROP_HALT_DEPOT :Arrêt +STR_ORDER_DROP_UNBUNCH :Répartir + +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Données du véhicule servant de base au saut @@ -4614,6 +4632,7 @@ STR_ORDER_REFIT_ORDER :(Réaménager p STR_ORDER_REFIT_STOP_ORDER :(Réaménager pour {STRING} et arrêt) STR_ORDER_STOP_ORDER :(Arrêt) +STR_ORDER_WAIT_TO_UNBUNCH :(attendre la répartition) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Station inutilisable){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4817,6 +4836,8 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :du script de je STR_AI_SETTINGS_CLOSE :{BLACK}Fermer STR_AI_SETTINGS_RESET :{BLACK}Réinitialiser STR_AI_SETTINGS_SETTING :{STRING}{NBSP}: {ORANGE}{STRING} +STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}{NBSP}: {ORANGE}[{STRING}, {STRING}] +STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -5083,6 +5104,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Impossib STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Dépôt incompatible # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... ne peut avoir qu'un seul ordre de répartition +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... impossible d'utiliser un ordre de chargement complet quand un véhicule a un ordre de répartition +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... impossible de répartir un véhicule avec un ordre de chargement complet +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... impossible d'utiliser des ordres conditionnels quand le véhicule a un ordre de répartition +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... impossible de répartir un véhicule avec un ordre conditionnel # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} est trop long après remplacement @@ -5743,6 +5769,7 @@ STR_UNKNOWN_STATION :station inconnu STR_DEFAULT_SIGN_NAME :Panneau STR_COMPANY_SOMEONE :quelqu'un +STR_SAVEGAME_DURATION_REALTIME :{NUM}h {NUM}m STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Spectateur, {1:STRING} @@ -5776,6 +5803,10 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}k +STR_CURRENCY_SHORT_MEGA :{NBSP}Mio +STR_CURRENCY_SHORT_GIGA :{NBSP}Mrd +STR_CURRENCY_SHORT_TERA :{NBSP}kMrd STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index 51e1c92dd3..54579817c3 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -3618,6 +3618,10 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Beskikbere frac STR_ORDER_DROP_GO_ALWAYS_DEPOT :Gean altyd STR_ORDER_DROP_HALT_DEPOT :Stop +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index 5a09cdbea7..459854221d 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -4116,6 +4116,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Rach ann an-cò STR_ORDER_DROP_SERVICE_DEPOT :Obair-ghlèidhidh ma tha i a dhìth STR_ORDER_DROP_HALT_DEPOT :Stad +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dàta a' charbaid air a bheil an leum stèidhichte # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 8f743e57a3..795962bda1 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -1243,6 +1243,7 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Fixa canto se p STR_CONFIG_SETTING_SUBSIDY_DURATION :Duración da subvención: {STRING} ###length 2 STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Establece o número de anos durante os cales se concede a subvención. +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Establece o número de períodos durante os que se concede a subvención ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Sen subvencións @@ -2301,6 +2302,7 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Direcci STR_NETWORK_SERVER_LIST_INVITE_CODE :{SILVER}Código de convite: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Data de comezo: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Data actual: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PLAY_TIME :{SILVER}Tempo de xogo: {WHITE}{NUM}h {NUM}m STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Script do xogo: {WHITE}{STRING} (v{NUM}) STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Protexido con contrasinal! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVIDOR DESCONECTADO @@ -4125,6 +4127,7 @@ STR_ENGINE_PREVIEW_TRAM_VEHICLE :Vehículo de tr STR_ENGINE_PREVIEW_AIRCRAFT :avión STR_ENGINE_PREVIEW_SHIP :barco +STR_ENGINE_PREVIEW_CAPACITY_2 :Capacidade: {CARGO_LONG}, {CARGO_LONG} # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Substituír {STRING} - {STRING} @@ -4394,6 +4397,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ir sempre STR_ORDER_DROP_SERVICE_DEPOT :Facer servizo se é necesario STR_ORDER_DROP_HALT_DEPOT :Parar +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Datos do vehículo para saltarse # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/german.txt b/src/lang/german.txt index 28afbc977a..d772c9419d 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -215,6 +215,8 @@ STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Wie primär STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP}mph STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}km/h STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}m/s +STR_UNITS_VELOCITY_GAMEUNITS_DAY :{DECIMAL}{NBSP}Felder/Tag +STR_UNITS_VELOCITY_GAMEUNITS_SEC :{DECIMAL}{NBSP}Felder/Sek STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}Knoten STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}PS @@ -256,7 +258,9 @@ STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP} STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m # Time units used in string control characters +STR_UNITS_TICKS :{COMMA}{NBSP}Tick{P "" s} +STR_UNITS_MINUTES :{NUM}{NBSP}minute{P "" n} # Common window strings @@ -325,6 +329,7 @@ STR_SORT_BY_TRANSPORTED :Transportiert STR_SORT_BY_NUMBER :Nummer STR_SORT_BY_PROFIT_LAST_YEAR :Gewinn im letzten Jahr STR_SORT_BY_PROFIT_THIS_YEAR :Gewinn in diesem Jahr +STR_SORT_BY_PROFIT_THIS_PERIOD :Gewinn in diesem Zeitraum STR_SORT_BY_AGE :Alter STR_SORT_BY_RELIABILITY :Zuverlässigkeit STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Gesamtkapazität pro Fracht @@ -353,8 +358,10 @@ STR_SORT_BY_RATING :Bewertung STR_SORT_BY_NUM_VEHICLES :Anzahl der Fahrzeuge STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Gewinn im letzten Jahr STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Gewinn in diesem Jahr +STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Gesamter Gewinn in diesem Zeitraum STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Durchschnittlicher Gewinn im letzten Jahr STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Durchschnittlicher Gewinn in diesem Jahr +STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Durchschnittlicher Gewinn in diesem Zeitraum # Group by options for vehicle list STR_GROUP_BY_NONE :Keine @@ -597,8 +604,10 @@ STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Beförde STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Bewertung der Firmenleistung (Höchstwert: 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Firmenwertdiagramm +STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Letzten 72 Minuten STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Frachtbeförderungspreise +STR_GRAPH_CARGO_PAYMENT_RATES_SECONDS :{TINY_FONT}{BLACK}Sekunden unterwegs STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Zahlung für 10 gelieferte Einheiten (oder 10.000 Liter) Fracht über eine Strecke von 20 Feldern STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Alle auswählen STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Alle abwählen @@ -616,6 +625,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Graph de # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Firmentabelle STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} „{STRING}“ +STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingenieur STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Verkehrsmanager STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Fuhrparkleiter @@ -647,6 +657,7 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Kredit: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Gesamt: ###next-name-looks-similar +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Anzahl der Fahrzeuge, die im letzten Zeitraum einen Gewinn erzielt haben. Diese beinhaltet Straßenfahrzeuge, Züge, Schiffe und Flugzeuge STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Anzahl vor kurzem genutzter Stationen (wenn Stationen verschiedener Typen verbunden sind, werden sie trotzdem einzeln gezählt) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Geringste Quartalseinnahmen in den letzten 3 Jahren STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Höchste Quartalseinnahmen in den letzten 3 Jahren @@ -914,6 +925,7 @@ STR_GAME_OPTIONS_TAB_GRAPHICS :Grafik STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Grafikeinstellungen wählen STR_GAME_OPTIONS_TAB_SOUND :Sound STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Sound- und Musikeinstellungen auswählen +STR_GAME_OPTIONS_TAB_SOCIAL :Soziales STR_GAME_OPTIONS_VOLUME :Lautstärke STR_GAME_OPTIONS_SFX_VOLUME :Sound-Effekte @@ -1014,6 +1026,8 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Dieses K STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Schrägen skalieren STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Dieses Kästchen ankreuzen, um Schrägen nach der Oberflächengröße zu skalieren +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Nutze die traditionelle Sprite-Schriftart +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Dieses Kästchen ankreuzen, um die traditionelle Sprite-Schriftart mit fester Größe zu verwenden. STR_GAME_OPTIONS_GUI_SCALE_1X :1× STR_GAME_OPTIONS_GUI_SCALE_2X :2× @@ -1049,7 +1063,11 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Ein Basi STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Zusätzliche Informationen über das Basismusikset +STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Bahnsteig: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Am laufen +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}Entladen STR_BASESET_STATUS :{STRING} {RED}({NUM} fehlende/beschädigte Datei{P "" en}) @@ -1241,7 +1259,8 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Einstellen, wie STR_CONFIG_SETTING_SUBSIDY_DURATION :Subventionsdauer: {STRING} ###length 2 -STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Die Anzahl der Jahre, für die eine Subvention vergeben wird +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Wähle die Anzahl der Jahre, für die eine Subvention vergeben wird +STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Wähle die Anzahl der Zeiträume, für die eine Subvention vergeben wird ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Keine Subventionen @@ -1340,6 +1359,7 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Auf der rechten ###length 2 STR_CONFIG_SETTING_SHOWFINANCES :Zeige Firmenfinanzen am Ende des Jahres: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_PERIOD :Zeige Firmenfinanzen am Ende des Zeitraums: {STRING} ###length 2 STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Blende am Ende jedes Jahres automatisch die Einkommensübersicht des Unternehmes ein, um eine schnelle Übersicht über den finanziellen Status zu bekommen @@ -1368,7 +1388,8 @@ STR_CONFIG_SETTING_BRIBE_HELPTEXT :Firmen das Best STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Den Erwerb exklusiver Transportrechte erlauben: {STRING} ###length 2 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Wenn eine Firma exklusive Transportrechte in einer Stadt kauft, wird ein Jahr lang keine Fracht an Stationen von Mitbewerbern im Stadtgebiet geliefert +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Wenn eine Firma exklusive Transportrechte für eine Stadt kauft, erhalten Stationen von Mitbewerbern 12 Monate lang keine Passagiere und Fracht +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :Wenn eine Firma exklusive Transportrechte für eine Stadt kauft, erhalten Stationen von Mitbewerbern 12 Minuten lang keine Passagiere und Fracht STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Finanzieren von Gebäuden erlauben: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Erlaubt Firmen, der Stadtverwaltung Geld für das Errichten neuer Häuser zur Verfügung zu stellen @@ -1431,11 +1452,14 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Zeige Nachricht STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Fahrzeuge veralten nie: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Erlauben, dass Fahrzeuge nach ihrem Einführungsdatum ewig verfügbar bleiben +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Wähle die Zeiteinheit des Spiels. Diese kann später nicht geändert werden.{}{}Kalender-basiert ist die klassische OpenTTD Erfahrung, in dem ein Jahr aus 12 Monaten besteht und jeder Monat 28-31 Tage hat.{}{}In Wanduhr-basierter Zeit sind Fahrzeuggeschwindigkeit, Güterproduktion und Finanzen basierend auf 1-minütigen Inkrementen, welche etwa so lang wie ein 30-tägiger Monat im Kalender-basierten Modus sind. Diese sind in 12-minütige Zeiträume gruppiert, equivalent zu einem Kalender-Jahr.{}{}In beiden Modi ist immer ein klassischer Kalender, welcher für das Einführungdatum von Fahrzeugen, Häusern und anderer Infrastruktur genutzt wird. ###length 2 +STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special +STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Skaliere Güterproduktion in Städten: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Fahrzeuge automatisch erneuern, wenn sie alt werden: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Erneuere Fahrzeuge automatisch gemäß der Regeln für Erneuerung, wenn sie ihr Maximalalter erreicht haben. @@ -1527,6 +1551,7 @@ STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Linksverkehr STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Rechtsverkehr STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Drehung der Reliefkarte: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Wählen, in welche Richtung das Höhenkarten-Bild rotiert wird um in die Spielwelt zu passen ###length 2 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Nach links STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Nach rechts @@ -1647,7 +1672,9 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Nutze erweitert STR_CONFIG_SETTING_LOADING_INDICATORS :Ladestandanzeiger verwenden: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Auswählen, ob beim Be- oder Entladen der Ladestand in Prozent über dem Fahrzeug angezeigt werden soll +STR_CONFIG_SETTING_TIMETABLE_MODE :Zeiteinheiten für Fahrpläne: {STRING} ###length 3 +STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Ticks STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Zeige Ankunft und Abfahrt im Fahrplan: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Zeige geschätzte Ankunfts- und Abfahrtzeiten in Fahrplänen @@ -1685,6 +1712,7 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Soundeffekte be ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR :Bericht am Jahresende: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Ende des Zeitraums: {STRING} ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Soundeffekte beim Jahresrückblick auf die Bilanzen der vergangenen Jahre abspielen @@ -1755,6 +1783,7 @@ STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktiviert STR_CONFIG_SETTING_NOSERVICE :Wartung deaktivieren, wenn Pannen abgeschaltet: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Schicke Fahrzeuge nicht zur Wartung, wenn Pannen ausgeschaltet sind +STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY :Verringerung der Ladegeschwindigkeit für Züge die länger als die Station sind: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Berücksichtige Waggonhöchstgeschwindigkeit: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Begrenze die Höchstgeschwindigkeit eines Zuges durch die jeweiligen Höchstgeschwindigkeiten der mitgeführten Waggons @@ -1846,6 +1875,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Lege das Jahr f STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Durchlaufen der Signalarten: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Lege fest, durch welche Signaltypen mittels Strg-Klick auf vorhandene Signale rotiert wird ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Nur aktuelle Gruppe STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alle Sichtbaren STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Signaltypen zeigen: {STRING} @@ -2032,10 +2062,12 @@ STR_CONFIG_SETTING_LIMITATIONS :Beschränkungen STR_CONFIG_SETTING_ACCIDENTS :Unfälle und Katastrophen STR_CONFIG_SETTING_GENWORLD :Spielfeld-Erzeugung STR_CONFIG_SETTING_ENVIRONMENT :Umgebung +STR_CONFIG_SETTING_ENVIRONMENT_TIME :Uhrzeit STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Öffentliche Verwaltungen STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Städte STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrien STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Warenverteilung +STR_CONFIG_SETTING_ENVIRONMENT_TREES :Bäume STR_CONFIG_SETTING_AI :Mitbewerber STR_CONFIG_SETTING_AI_NPC :Computerspieler STR_CONFIG_SETTING_NETWORK :Netzwerk @@ -2170,9 +2202,13 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Zugfarbs STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Fahrzeugfarbschema anzeigen STR_LIVERY_SHIP_TOOLTIP :{BLACK}Schiffsfarbschema anzeigen STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Flugzeugfarbschema anzeigen +STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Zeige Farben von Zuggruppen an +STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Zeige Farben von Schiffsgruppen an STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Die Hauptfarbe für das gewählte Schema auswählen. Strg+Klick wählt diese Farbe für jedes Schema STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Die Nebenfarbe für das ausgewählte Schema auswählen. Strg+Klick wählt diese Farbe für jedes Schema STR_LIVERY_PANEL_TOOLTIP :{BLACK}Farbschema oder mehrere Farbschemata mittels Strg+Klick auswählen, um diese zu ändern. In das Kästchen klicken, um ein Schema zu aktivieren +STR_LIVERY_ROAD_VEHICLE_GROUP_EMPTY :Es sind keine Straßenfahrzeuge eingerichtet +STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Es wurden keine Flugzeuggruppen erstellt ###length 23 STR_LIVERY_DEFAULT :Standardlackierung @@ -2278,6 +2314,9 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Spielfel STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Spielfeldgröße{}Klick sortiert nach Fläche STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Momentanes Spieljahr +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}h {NUM}m +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Spielzeit +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Zeit gespielt während{}Spiel nicht pausiert war STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Sprache, Server-Version, etc. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Ein Spiel der Liste durch Anklicken wählen @@ -2648,7 +2687,8 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}überlastet # Linkgraph tooltip -STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} ZUM Rücktransport vorgesehen ({COMMA}% der Kapazitäten) +STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}{CARGO_LONG} zum Rücktransport vorgesehen pro Minute von {STATION} zu {STATION} ({COMMA}% der Kapazität){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} zum Rücktransport vorgesehen ({COMMA}% der Kapazität) # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Einzugsgebiet anzeigen @@ -2658,6 +2698,7 @@ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Einzugsg STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Einzugsgebiet anzeigen STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Nimmt an: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Liefert: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}Unterhaltskosten: {GOLD}{CURRENCY_SHORT}/Jahr # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Verbinde mit Station @@ -3182,6 +3223,7 @@ STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Städten STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Wähle die Sprache für die Städtenamen aus STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Industriedichte: +STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Wähle die Dichte der Industrien, oder einen benutzerdefinierten Wert STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Höchster Gipfel: STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Die maximale Höhe des höchsten Gipfels auf der Karte um eins erhöhen STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Die maximale Höhe des höchsten Gipfels auf der Karte um eins verringern @@ -3195,10 +3237,12 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Wüstenb STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}% STR_MAPGEN_TERRAIN_TYPE :{BLACK}Landschaftstyp: STR_MAPGEN_SEA_LEVEL :{BLACK}Gewässermenge: +STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Wähle die Meereshöhe STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Flüsse: STR_MAPGEN_SMOOTHNESS :{BLACK}Gleichmäßigkeit: STR_MAPGEN_VARIETY :{BLACK}Größe der Geländeformen: STR_MAPGEN_GENERATE :{WHITE}Erzeugen +STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Erstelle die Welt und spiele OpenTTD! STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF-Einstellungen STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}NewGRF-Einstellungen anzeigen STR_MAPGEN_AI_SETTINGS :{BLACK}KI Einstellungen @@ -3231,6 +3275,7 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Katalanisch # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Spielfeldränder: +STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Wähle die Grenzen der Spielwelt STR_MAPGEN_NORTHWEST :{BLACK}Nordwesten STR_MAPGEN_NORTHEAST :{BLACK}Nordosten STR_MAPGEN_SOUTHEAST :{BLACK}Südosten @@ -3540,8 +3585,10 @@ STR_LOCAL_AUTHORITY_ACTION_BRIBE :Die Stadtverwal STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Im Ort eine kleine Werbekampagne starten, um mehr Passagier- und Frachtaufträge für die eigene Firma zu gewinnen.{}Bewirkt eine temporäre Steigerung der Stationsbewertung in einem kleinen Radius um das Ortszentrum.{}{POP_COLOUR}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Im Ort eine mittlere Werbekampagne starten, um mehr Passagier- und Frachtaufträge für die eigene Firma zu gewinnen.{}Bewirkt eine temporäre Steigerung der Stationsbewertung in einem mittleren Radius um das Ortszentrum.{}{POP_COLOUR}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Im Ort eine große Werbekampagne starten, um mehr Passagier- und Frachtaufträge für die eigene Firma zu gewinnen.{}Bewirkt eine temporäre Steigerung der Stationsbewertung in einem großen Radius um das Ortszentrum.{}{POP_COLOUR}Kosten: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Straßenreparaturen des Ortes finanzieren.{}Verursacht erhebliche Störungen für Straßenverkehr für bis zu 6 Monate.{}{POP_COLOUR}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Eine Statue zu Ehren der eigenen Firma errichten.{}Bewirkt eine permanente Steigerung der Stationsbewertung in diesem Ort.{}{POP_COLOUR}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Bau von neuen Gebäuden im Ort finanzieren.{}Bewirkt eine temporäre Steigerung des Ortswachstums in diesem Ort.{}{POP_COLOUR}Kosten: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Kaufe exklusive Transportrechte in dieser Stadt für 12 Minuten.{}Die Stadtverwaltung wird es Passagieren und Fracht nicht erlauben Stationen von Mitbewerbern zu nutzen. Eine erfolgreiche Bestechung eines Mitbewerbers kündigt den Vertrag.{}{POP_COLOUR}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Die Stadtverwaltung bestechen, um die eigene Bewertung zu verbessern und die exklusiven Transportrechte eines Wettbewerbers zu widerrufen. Dabei riskiert man allerdings eine harte Strafe, falls man ertappt wird.{}{POP_COLOUR}Kosten: {CURRENCY_LONG} # Goal window @@ -3591,6 +3638,8 @@ STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subventi STR_SUBSIDIES_NONE :{ORANGE}- Keine - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Bereits vergebene Subventionen: STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick auf subventionierte Dienstleistung zentriert Hauptansicht auf die Industrie/Stadt. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Industrie/Stadt +STR_SUBSIDIES_OFFERED_EXPIRY_TIME :innerhalb {UNITS_MONTHS_OR_MINUTES} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} übrig # Story book window STR_STORY_BOOK_CAPTION :{WHITE}Chronik für {COMPANY} @@ -3690,6 +3739,8 @@ STR_EDIT_WAYPOINT_NAME :{WHITE}Namen de # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} – Finanzen {BLACK}{COMPANY_NUM} STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_YEAR_CAPTION :{WHITE}Jahr +STR_FINANCES_PERIOD_CAPTION :{WHITE}Zeitraum ###length 3 STR_FINANCES_REVENUE_TITLE :{WHITE}Einnahmen @@ -3791,6 +3842,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanäle STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationen: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stationsfelder STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flughäfen +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD :{WHITE}{CURRENCY_LONG}/Zeitraum # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrien @@ -3851,6 +3903,7 @@ STR_VEHICLE_LIST_REPLACE_VEHICLES :Fahrzeuge erset STR_VEHICLE_LIST_SEND_FOR_SERVICING :Zur Wartung schicken STR_VEHICLE_LIST_CREATE_GROUP :Gruppe erstellen STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Gewinn im laufenden Jahr: {CURRENCY_LONG} (vergangenes Jahr: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Profit in diesem Zeitraum: {CURRENCY_LONG} (letzter Zeitraum: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -3896,6 +3949,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Liste leeren STR_GROUP_RENAME_CAPTION :{BLACK}Gruppe umbenennen STR_GROUP_PROFIT_THIS_YEAR :Gewinn dieses Jahr: +STR_GROUP_PROFIT_THIS_PERIOD :Gewinn in diesem Zeitraum: STR_GROUP_PROFIT_LAST_YEAR :Gewinn letztes Jahr: STR_GROUP_OCCUPANCY :Aktuelle Nutzung: STR_GROUP_OCCUPANCY_VALUE :{NUM}% @@ -3923,6 +3977,7 @@ STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Geschw.: STR_PURCHASE_INFO_SPEED :{BLACK}Geschwindigkeit: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Geschwindigkeit auf dem Meer: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Geschwindigkeit auf Kanälen und Flüssen: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Betriebskosten: {GOLD}{CURRENCY_LONG}/Zeitraum STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapazität: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(umrüstbar) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Entworfen: {GOLD}{NUM}{BLACK} Betriebsdauer: {GOLD}{COMMA} Jahr{P "" e} @@ -3931,7 +3986,7 @@ STR_PURCHASE_INFO_COST :{BLACK}Kosten: STR_PURCHASE_INFO_COST_REFIT :{BLACK}Kosten: {GOLD}{CURRENCY_LONG}{BLACK} (Kosten der Umrüstung: {GOLD}{CURRENCY_LONG}{BLACK}) STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Gewicht: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Kosten: {GOLD}{CURRENCY_LONG}{BLACK} Geschw.: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_COST_REFIT_SPEED :{BLACK}Kosten: {GOLD}{CURRENCY_LONG}{BLACK} (Kosten der Umrüstung: {GOLD}{CURRENCY_LONG}{BLACK}) Geschwindigkeit: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_COST_REFIT_SPEED :{BLACK}Kosten: {GOLD}{CURRENCY_LONG}{BLACK} (Kosten der Umrüstung: {GOLD}{CURRENCY_LONG}{BLACK}) Geschw.: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapazität: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Angetriebene Waggons: {GOLD}+{POWER}{BLACK} Gewicht: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Umrüstbar auf: {GOLD}{STRING} @@ -4115,6 +4170,13 @@ STR_ENGINE_PREVIEW_TRAM_VEHICLE :Straßenbahn STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}Flugzeug STR_ENGINE_PREVIEW_SHIP :{G=n}Schiff +STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING} +STR_ENGINE_PREVIEW_COST_MAX_SPEED :Kosten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY} +STR_ENGINE_PREVIEW_SPEED_POWER :Geschw.: {VELOCITY} Leistung: {POWER} +STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Geschw.: {VELOCITY} Leistung: {POWER} Max. Zugkraft: {FORCE} +STR_ENGINE_PREVIEW_TYPE :Flugzeugtyp: {STRING} +STR_ENGINE_PREVIEW_TYPE_RANGE :Flugzeugtyp: {STRING} Reichweite: {COMMA} Felder +STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Betriebskosten: {CURRENCY_LONG}/Zeitraum # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING} ersetzen – {STRING} @@ -4259,7 +4321,8 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Name des STR_VEHICLE_INFO_AGE :{COMMA} Jahr{P "" e} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} Jahr{P "" e} ({COMMA}) -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Alter: {LTBLUE}{STRING}{BLACK} Betriebskosten: {LTBLUE}{CURRENCY_LONG}/Jahr +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Alter: {LTBLUE}{STRING}{BLACK} Betriebskosten: {LTBLUE}{CURRENCY_LONG}/Jahr +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Alter: {LTBLUE}{STRING}{BLACK} Betriebskosten: {LTBLUE}{CURRENCY_LONG}/Zeitraum STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. Geschw.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. Geschw.: {LTBLUE}{VELOCITY} {BLACK}Flugzeugtyp: {LTBLUE}{STRING} @@ -4279,6 +4342,8 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapazit STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer-Einnahmen: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Zuletzt gewartet: vor {LTBLUE}{NUM} Minuten +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Verringere Serviceintervall um 5 Minuten. Strg+Klick um den Serviceintervall um 1 Minute zu verringern STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Art des Wartungsintervalls ändern STR_VEHICLE_DETAILS_DEFAULT :Standard @@ -4384,6 +4449,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Fahre immer STR_ORDER_DROP_SERVICE_DEPOT :Wartung, wenn nötig STR_ORDER_DROP_HALT_DEPOT :Stopp +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Fahrzeuginformation, welche für den Sprung ausgewertet wird # Conditional order variables, must follow order of OrderConditionVariable enum @@ -4528,8 +4597,10 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Das Fahr STR_TIMETABLE_STATUS_LATE :{BLACK}Dieses Fahrzeug hat {STRING} Verspätung STR_TIMETABLE_STATUS_EARLY :{BLACK}Dieses Fahrzeug ist {STRING} zu früh STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Dieser Fahrplan ist noch nicht gültig +STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Dieser Fahrplan startet in {COMMA} Sekunden +STR_TIMETABLE_START_SECONDS_QUERY :Sekunden bis der Fahrplan beginnt STR_TIMETABLE_CHANGE_TIME :{BLACK}Zeit ändern STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Zeitrahmen für den markierten Auftrag ändern. Strg+Klick legt die Zeit für alle Aufträge fest @@ -4553,6 +4624,7 @@ STR_TIMETABLE_EXPECTED :{BLACK}Voraussi STR_TIMETABLE_SCHEDULED :{BLACK}Fahrplanmäßig STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Umschalten zwischen Anzeige der erwarteten Ankunftszeit und des Fahrplans +STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY} # Date window (for timetable) @@ -4645,6 +4717,8 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spielskript STR_AI_SETTINGS_CLOSE :{BLACK}Schließen STR_AI_SETTINGS_RESET :{BLACK}Zurücksetzen STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] +STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -5571,6 +5645,7 @@ STR_UNKNOWN_STATION :unbekannte Stat STR_DEFAULT_SIGN_NAME :Schild STR_COMPANY_SOMEONE :Jemand +STR_SAVEGAME_DURATION_REALTIME :{NUM}h {NUM}m STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Zuschauer, {1:STRING} @@ -5604,6 +5679,8 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} +STR_CURRENCY_SHORT_KILO :{NBSP}t +STR_CURRENCY_SHORT_GIGA :{NBSP}Mrd STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 4b290ae79e..422c5d4a75 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -4374,6 +4374,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Πάντα πή STR_ORDER_DROP_SERVICE_DEPOT :Επισκευή εάν χρειάζεται STR_ORDER_DROP_HALT_DEPOT :Στάση +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Δεδομένα οχήματος για να βασιστεί το άλμα # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 27eca245fa..9a4c2346ff 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -4011,6 +4011,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :עבור תמי STR_ORDER_DROP_SERVICE_DEPOT :טפל במידת הצורך STR_ORDER_DROP_HALT_DEPOT :עצור +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}נתוני כלי הרכב עליהם יתבסס הדילוג # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index 377ea9564c..938b8f164a 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -1282,6 +1282,10 @@ STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_REFIT_TOOLTIP :{BLACK}इस मार्ग पर ढोये जा रहे नौभार को बदलने के लिये नये प्रकार का नौभार चुनें। Ctrl+क्लिक करने पर परिवर्तन का आदेश निरस्त हो जायेगा। +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 69cb6f3c09..9f021c6538 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -4446,6 +4446,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Mindig menj jav STR_ORDER_DROP_SERVICE_DEPOT :Ha javításra szorul STR_ORDER_DROP_HALT_DEPOT :Maradj ott +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}A jármű adata ami alapján ugrani szeretnénk a parancssorban # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 1ddd95441c..1bd5db35d9 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -3623,6 +3623,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Fara alltaf STR_ORDER_DROP_SERVICE_DEPOT :Þjónusta ef þarf STR_ORDER_DROP_HALT_DEPOT :Stoppa +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Gögn farartækis sem skilyrði byggja á # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/ido.txt b/src/lang/ido.txt index 44a73b3a3f..cf4b8b03d4 100644 --- a/src/lang/ido.txt +++ b/src/lang/ido.txt @@ -1406,6 +1406,10 @@ STR_ORDER_INDEX :{COMMA}:{NBSP} +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 494547390f..1bff0bf27e 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -4383,6 +4383,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Selalu masuk STR_ORDER_DROP_SERVICE_DEPOT :Perbaikan jika diperlukan STR_ORDER_DROP_HALT_DEPOT :Berhenti +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Kondisi yang diperiksa # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 888d803780..d9e7ee3636 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -4200,6 +4200,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Téigh i gcóna STR_ORDER_DROP_SERVICE_DEPOT :Seirbhísigh más gá STR_ORDER_DROP_HALT_DEPOT :Stop +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Sonraí feithicle a bhunófar an léim air # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/italian.txt b/src/lang/italian.txt index aa056b67ea..3c298fe89d 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -4444,6 +4444,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Sempre STR_ORDER_DROP_SERVICE_DEPOT :Solo se necessario STR_ORDER_DROP_HALT_DEPOT :Ferma in deposito +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dato del veicolo sul quale basare il salto # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index c0cb01d65e..31452a5c9a 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -4311,6 +4311,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :常に行く STR_ORDER_DROP_SERVICE_DEPOT :必要であれば点検 STR_ORDER_DROP_HALT_DEPOT :運用停止 +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}輸送機器データに基づく条件分岐 # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/korean.txt b/src/lang/korean.txt index c3464d3d02..484ae43435 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -1496,17 +1496,17 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :옛날 차량 STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :이 설정을 켜면, 오래된 차량 모델을 포함하여 모든 차량 모델을 도입 이후에 계속 사용할 수 있게 됩니다. STR_CONFIG_SETTING_TIMEKEEPING_UNITS :시간 단위: {STRING} -STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :게임에서 사용할 시간 표시 단위를 선택합니다. 나중에 변경할 수 없습니다.{}{}달력 기반은 1년 12개월, 매월 28~31일로 구성된 고전적인 OpenTTD 환경입니다.{}{}벽시계 기반은 차량 이동, 화물 생산 및 재정이 1분 단위로 대신 계산됩니다. 1분은 달력 기반 모드에서 한 달, 즉 30일 정도 걸리는 시간으로, 12분 간격으로 묶어서 1년을 구성합니다.{}{}두 단위 모두, 시간 표시 단위와 상관없이 차량, 주택 및 기타 인프라 도입 날짜에 사용되는 기존 달력 시스템을 별도로 사용합니다. +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :게임에서 사용할 시간 표시 단위를 선택합니다. 나중에 변경할 수 없습니다.{}{}달력 기반은 1년 12개월, 매월 28~31일로 구성된 고전적인 OpenTTD 환경입니다.{}{}벽시계 기반은 차량 이동, 화물 생산 및 재정이 1분 단위로 대신 계산됩니다. 1분은 달력 기반 모드에서 한 달, 즉 30일 정도 걸리는 시간으로, 12분 간격으로 묶어서 1년을 구성합니다.{}{}두 단위 모두, 시간 표시 단위와 상관없이 차량, 건물 및 기타 기반 시설 도입 날짜 등에는 기존의 달력 시스템을 별도로 사용합니다. ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :달력 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :벽시계 -STR_CONFIG_SETTING_MINUTES_PER_YEAR :1년의 길이: {STRING}분 +STR_CONFIG_SETTING_MINUTES_PER_YEAR :1년의 길이: {STRING}{ORANGE}분 STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :달력의 1년을 몇 분으로 할 지 선택합니다. 기본값은 12분입니다. 달력 시간이 변하는 것을 막으려면 0으로 설정하세요. 이 설정은 게임의 경제 시뮬레이션에는 영향을 미치지 않고, 벽시계 시간 설정을 사용할 때만 이용 가능합니다. STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special -STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (달력 시간 정지됨) +STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :(달력 시간 정지됨) 0 STR_CONFIG_SETTING_TOWN_CARGO_SCALE :도시 화물 생성 조정: {STRING} STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :도시의 화물 생산량을 이 백분율 값만큼 조정합니다. @@ -1933,6 +1933,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :전자식 신 STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :신호기를 CTRL 클릭할 때 바뀌는 신호기의 종류: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :신호기 건설에서 CTRL+클릭할 때 바뀌는 신호기의 종류를 선택합니다 ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :경로 신호기만 보여주기 STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :모두 보여주기 STR_CONFIG_SETTING_SIGNAL_GUI_MODE :보여줄 신호기 종류: {STRING} @@ -4376,6 +4377,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}현재 # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}싣는 중 / 내리는 중 STR_VEHICLE_STATUS_LEAVING :{LTBLUE}출발 중 +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}배차 간격 유지 대기 중 STR_VEHICLE_STATUS_CRASHED :{RED}충돌! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}고장 STR_VEHICLE_STATUS_STOPPED :{RED}정지함 @@ -4389,6 +4391,7 @@ STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}경로 STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}다음 목적지: {WAYPOINT} ({VELOCITY}) STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}다음 목적지: {DEPOT} ({VELOCITY}) STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}점검: {DEPOT} ({VELOCITY}) +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}점검 및 배차 간격 대기: {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{STATION}에 갈 수 없음, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{WAYPOINT}에 갈 수 없음, {VELOCITY} @@ -4519,6 +4522,7 @@ STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}시간 STR_ORDERS_LIST_TOOLTIP :{BLACK}이 열차의 경로 - 선택하려면 클릭하세요. CTRL+클릭하시면 그 역이 있는 장소로 이동합니다 STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - 경로의 끝 - - STR_ORDERS_END_OF_SHARED_ORDERS :- - 공유된 경로의 끝 - - @@ -4555,6 +4559,11 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :이용 가능 STR_ORDER_DROP_GO_ALWAYS_DEPOT :항상 감 STR_ORDER_DROP_SERVICE_DEPOT :필요하면 점검 STR_ORDER_DROP_HALT_DEPOT :멈춤 +STR_ORDER_DROP_UNBUNCH :배차 간격 유지 + +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}경로를 건너뛰기 위한 비교 조건을 선택합니다 @@ -4623,6 +4632,7 @@ STR_ORDER_REFIT_ORDER :({STRING}{G 0 " STR_ORDER_REFIT_STOP_ORDER :({STRING}에서 수리 후 멈춤) STR_ORDER_STOP_ORDER :(멈춤) +STR_ORDER_WAIT_TO_UNBUNCH :(배차 간격 유지 대기) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(이 역을 이용할 수 없음){POP_COLOUR} {STRING} {STATION} {STRING} @@ -5094,6 +5104,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}근처 STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :잘못된 차량기지 종류입니다 # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... 배차 간격 유지 경로는 하나만 사용 가능합니다 +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... 차량에 배차 간격 유지 경로가 있으면 가득 싣기 경로를 사용할 수 없습니다 +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... 가득 싣기 경로가 있는 차량에는 배차 간격 유지를 사용할 수 없습니다 +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... 차량에 배차 간격 유지 경로가 있으면 조건부 경로를 사용할 수 없습니다 +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... 조건부 경로가 있는 차량에는 배차 간격 유지를 사용할 수 없습니다 # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} : 교체된지 너무 오래되었습니다 diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 7fadd4109e..b233940696 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -4106,6 +4106,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ire semper STR_ORDER_DROP_SERVICE_DEPOT :Ministrari si necesse est STR_ORDER_DROP_HALT_DEPOT :Consiste +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Indicia vehiculi ad quae spectat ordines conditionales # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 511a3e711b..bb745130ad 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -216,6 +216,7 @@ STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Tāds, ka prim STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP}jūdzes stundā STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}km/h STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}m/s +STR_UNITS_VELOCITY_GAMEUNITS_DAY :{DECIMAL}{NBSP}lauciņi/dienā STR_UNITS_VELOCITY_GAMEUNITS_SEC :{DECIMAL}{NBSP}lauciņi/s STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}mezgli @@ -291,7 +292,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Klikšķ STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Pārslēgties starp lielu/mazu loga izmēru STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Ritjosla - ritina sarakstu augšup/lejup STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Ritjosla - ritina sarakstu pa kreisi/pa labi -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Nojaukt celtnes u.c. objektus no zemes platības. Ctrl iezīmē diagonālu laukumu. Shift pārslēdz nojaukšanu/izmaksu tāmes attēlošanu +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Nojaukt celtnes u.c. objektus no zemes platības. Velkot Ctrl+klikšķis iezīmē diagonālu laukumu. Shift parāda izmaksas, neveicot nojaukšanu # Show engines button ###length VEHICLE_TYPES @@ -333,6 +334,7 @@ STR_SORT_BY_TYPE :veida STR_SORT_BY_TRANSPORTED :pārvadājuma STR_SORT_BY_NUMBER :numura STR_SORT_BY_PROFIT_LAST_YEAR :peļņas pērn +STR_SORT_BY_PROFIT_LAST_PERIOD :Peļņa pēdējā periodā STR_SORT_BY_PROFIT_THIS_YEAR :peļņas šogad STR_SORT_BY_PROFIT_THIS_PERIOD :Peļņa šajā periodā STR_SORT_BY_AGE :vecuma @@ -366,6 +368,7 @@ STR_SORT_BY_TOTAL_PROFIT_LAST_PERIOD :Kopējā peļņ STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Kopējā peļņa šogad STR_SORT_BY_TOTAL_PROFIT_THIS_PERIOD :Kopējā peļņa šajā periodā STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Vidējā peļņa iepriekšējā gadā +STR_SORT_BY_AVERAGE_PROFIT_LAST_PERIOD :Vidējā peļņa pēdējā periodā STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Vidējā peļņa šajā gadā STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Vidējā peļņa šajā periodā @@ -383,32 +386,32 @@ STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauzēt STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Paātrināta spēle STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opcijas un iestatījumi STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Saglabājiet, ielādējiet vai pametiet spēli, iziet no programmas -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Rādīt karti, papildu skata logu, kravas plūsmu vai zīmju sarakstu -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Rādīt pilsētu sarakstu -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Rādīt subsīdijas -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Rādīt uzņēmuma staciju sarakstu -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Rādīt uzņēmuma finanšu stāvokli -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Rādīt uzņēmuma vispārējo informāciju -STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Rādīt stāstu grāmatu -STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Rādīt mērķu sarakstu -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Rādīt uzņēmumu grafikus un kravas maksājumu likmes -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Rādīt uzņēmumu rangu sarakstu -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Izpētiet nozares vai finansējiet jaunas nozares celtniecību -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Rādīt uzņēmuma vilcienu sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Rādīt uzņēmuma autotransporta sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Rādīt uzņēmuma kuģu sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Rādīt uzņēmuma lidaparātu sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Pietuvināt skatu -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Attālināt skatu -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Būvēt sliežu ceļu -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Būvēt ceļus -STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Būvēt tramvajus -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Būvēt kuģu piestātnes +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Atvērt karti, papildu skata logu, kravas plūsmu vai zīmju sarakstu +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Atvērt pilsētu sarakstu vai dibināt pilsētu +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Atvērt subsīdiju sarakstu +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Atvērt uzņēmuma staciju sarakstu +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Atvērt uzņēmuma finanšu stāvokli +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Atvērt uzņēmuma vispārējo informāciju +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Atvērt stāstu grāmatu +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Atvērt mērķu sarakstu +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Atvērt uzņēmumu grafikus un kravas maksājumu likmes +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Atvērt uzņēmumu rangu sarakstu +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Atvērt ražotņu sarakstu, ražošanas ķēdi vai subsidēt jauno ražotņu izveidi +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Atvērt uzņēmuma vilcienu sarakstu. Ctrl+noklikšķiniet, lai parādītu vai paslēptu transportlīdzekļu grupas pretēji izvēlētiem iestatījumiem +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Rādīt uzņēmuma autotransporta sarakstu. Ctrl+klikšķis, lai parādītu vai paslēptu transportlīdzekļu grupas pretēji izvēlētajiem iestatījumiem +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Atvērt uzņēmuma kuģu sarakstu. Ctrl+klikšķis, lai parādītu vai paslēptu transportlīdzekļu grupas pretēji izvēlētiem iestatījumiem +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Atvērt uzņēmuma lidaparātu sarakstu. Ctrl+klikšķis, lai parādītu vai paslēptu transportlīdzekļu grupas pretēji izvēlētiem iestatījumiem +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Pietuvināt +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Attālināt +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Buvēt dzelzceļa infrastruktūru +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Buvēt ceļu infrastruktūru +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Buvēt tramvaju infrastruktūru +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Būvēt ūdensceļu infrastruktūru STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Būvēt lidostas -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Atvērt ainavas rīkjoslu, lai paceltu/nolaistu zemes līmeni, stādītu kokus utt. -STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Rādīt skaņas/mūzikas logu -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Rādīt pēdējo ziņojumu/ziņu pārskatu, ziņojumu vēsturi vai dzēst visus ziņojumus -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informācija par zemi, ekrānuzņēmums par OpenTTD un izstrādātāju rīkiem +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Atveriet ainavu izvēlni, koku izvēlni vai novietojiet zīmi +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Atvērt skaņas/mūzikas logu +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Atvērt pēdējo ziņojumu/ziņu pārskatu, ziņojumu vēsturi vai dzēst visus ziņojumus +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Atvērt zemes informāciju, ekrānuzņēmumu izvēlni, OpenTTD kredītus vai izstrādātāju rīkus STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Pārslēgt rīkjoslas # Extra tooltips for the scenario editor toolbar @@ -418,15 +421,15 @@ STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}scenār STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Pārvietot sākuma datumu 1 gadu atpakaļ STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Pārvietot sākuma datumu 1 gadu uz priekšu STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klikšķināt, lai ievadītu sākuma gadu -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Rādīt karti, pilsētu sarakstu -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Ainavas radīšana -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Pilsētu radīšana -STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Ražotņu radīšana -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Ceļu būvēšana -STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Tramvaju sliežu ceļu būvniecība -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Iestādiet kokus. Ctrl atlasa apgabalu pa diagonāli. Shift pārslēdz celt/parādīt izmaksas +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Atvērt karti, papildu skata logu, zīmju sarakstu vai pilsētas vai ražotņu sarakstu +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Atvērt ainavu izvēlni vai izveidot jaunu pasauli +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Buvēt vai ģenerēt pilsētas +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Veidot vai ģenerēt ražotnes +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Būvēt ceļu infrastruktūru +STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Būvēt tramvaju infrastruktūru +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Iestādiet kokus. Velkot Ctrl+klikšķis atlasīs apgabalu pa diagonāli. Shift parāda izmaksas, neveicot iegādi STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Novietot zīmi -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Novietojiet objektu. Ctrl atlasa apgabalu pa diagonāli. Shift pārslēdz ēku/rāda izmaksu tāmi +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Novietojiet objektu. Velkot Ctrl+klikšķis tiek atlasīts apgabals pa diagonāli. Shift parāda novērtētās izmaksas, neveicot iegādi # Scenario editor file menu ###length 7 @@ -611,8 +614,10 @@ STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Pārvad STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Uzņēmuma darbības vērtējumi (maksimālais ir 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Uzņēmuma vērtības diagramma +STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}Pēdējās 72 minūtes STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Kravas apmaksas cenas +STR_GRAPH_CARGO_PAYMENT_RATES_DAYS :{TINY_FONT}{BLACK}Dienas ceļā STR_GRAPH_CARGO_PAYMENT_RATES_SECONDS :{TINY_FONT}{BLACK}Sekundes tranzītā STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Izmaksas par 10 vienību (vai 10,000 litru) kravas pārvadāšanu par 20 lauciņiem STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Iespējot visu @@ -667,6 +672,7 @@ STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}To trans STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Transportlīdzekļu skaits, kas pagājušajā periodā guva peļņu. Tas ietver autotransporta līdzekļus, vilcienus, kuģus un lidmašīnas STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Nesen apkalpoto staciju skaits. Dzelzceļa stacijas, autoostas, lidostas un tamlīdzīgas tiek skaitītas kā atsevišķas, pat ja tās ir savienotas kā viena stacija STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}Transportlīdzekļa peļņa ar viszemākajiem ienākumiem (tiek ņemti vērā tikai transportlīdzekļi, kas vecāki par diviem gadiem) +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}Transportlīdzekļa peļņa ar viszemākajiem ienākumiem (tiek ņemti vērā tikai transportlīdzekļi, kas vecāki par diviem periodiem) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Nopelnītās naudas daudzums ceturksnī ar vismazāko peļņu pēdējos 12 ceturkšņos STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Nopelnītās naudas daudzums ceturksnī ar vislielāko peļņu pēdējos 12 ceturkšņos STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Kravu vienības , kas piegādātas pēdējos četros ceturkšņos @@ -899,6 +905,7 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} ir kļuvis ļoti vecs un tam steidzami nepieciešama nomaiņa STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} nevar atrast ceļu, lai turpinātu STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} ir apmaldījies +STR_NEWS_VEHICLE_UNPROFITABLE_YEAR :Uzņēmuma {WHITE}{VEHICLE} peļņa pagājušajā gadā bija {CURRENCY_LONG} STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}{VEHICLE} peļņa pagājušajā periodā bija {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} nevar doties uz nākamo galamērķi, jo tas ir ārpus apgabala @@ -918,10 +925,16 @@ STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLAC STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidēšana atcelta:{}{}{STRING} pārvadājumi no {STRING} uz {STRING} turpmāk vairs netiek subsidēti STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Pakalpojuma subsīdijas piedāvājums:{}{}Pirmais {STRING} no {STRING} līdz {STRING} saņems {UNITS_YEARS_OR_MINUTES} subsīdiju no vietējās pašvaldības! ###length 4 +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Pakalpojuma subsīdija piešķirta uzņēmumam {STRING}!{}{} Pārvadājot {STRING} no {STRING} līdz {STRING} saņems 50% piemaksu par nākamo {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Pakalpojuma subsīdija piešķirta uzņēmumam {STRING}!{}{}Pārvadājot {STRING} no {STRING} līdz {STRING} saņems dubultās likmes nākamos {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Pakalpojuma subsīdija piešķirta uzņēmumam {STRING}!{}{}Pārvadājot{STRING} no {STRING} līdz {STRING} saņems trīskāršu maksu nākamo {UNITS_YEARS_OR_MINUTES}! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Pakalpojuma subsīdija piešķirta uzņēmumam {STRING}!{}{}Pārvadājot {STRING} no {STRING} līdz {STRING} saņems četrkāršu tarifu par nākamo {UNITS_YEARS_OR_MINUTES}! STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}Satiksmes haoss pilsētā {TOWN}!{}{} Dēļ {STRING} finansētā ceļu atjaunošanas programmas, tuprmākos 6 mēnešus +STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}Satiksmes haoss pilsētā {TOWN}!{}{}{STRING} finansētā ceļu atjaunošanas programma autobraucējiem sagādā 6 minūtes posta! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Pārvadājumu monopols! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}{TOWN} vietējā pašvaldība paraksta līgumu ar {STRING} par ekskluzīvām transporta tiesībām uz 12 mēnešiem! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}{TOWN} vietējā pašvaldība paraksta līgumu ar {STRING} par ekskluzīvām transporta tiesībām uz 12 minūtēm! # Extra view window STR_EXTRA_VIEWPORT_TITLE :{WHITE}Skatvieta {COMMA} @@ -939,6 +952,8 @@ STR_GAME_OPTIONS_TAB_GRAPHICS :Grafika STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Izvēlieties grafikas iestatījumus STR_GAME_OPTIONS_TAB_SOUND :Skaņa STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Izvēlieties skaņas un mūzikas iestatījumus +STR_GAME_OPTIONS_TAB_SOCIAL :Sociālais tīkls +STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Izvēlieties sociālās integrācijas iestatījumus STR_GAME_OPTIONS_VOLUME :Skaļums STR_GAME_OPTIONS_SFX_VOLUME :Skaņas efekti @@ -1028,20 +1043,22 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK} Atzīm STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Šis iestatījums stāsies spēkā tikai pēc spēles restartēšanas STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync -STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Atzīmējiet šo izvēlni, lai sinhronizētu ekrānu. Mainīts iestatījums tiks piemērots tikai pēc spēles restartēšanas. Darbojas tikai ar iespējotu aparatūras paātrinājumu +STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Atzīmējiet šo izvēlni, lai sinhronizētu ekrānu. Mainīts iestatījums tiks piemērots tikai pēc spēles restartēšanas. Darbojas tikai ar ieslēgtu aparatūras paātrinājumu STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Esošais vadītājs: {STRING} STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Saskarnes izmērs -STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Velciet slīdni, lai iestatītu interfeisa izmēru. Turiet nospiestu taustiņu Ctrl, lai veiktu nepārtrauktu regulēšanu +STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Velciet slīdni, lai iestatītu saskarnes izmēru. Velciet Ctrl nepārtrauktai pielāgošanai STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Automātiski noteikt izmēru STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Atzīmējiet šo izvēlni, lai automātiski noteiktu interfeisa izmēru STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Mēroga slīpumi STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Atzīmējiet šo izvēlni, lai mērogotu slīpumu pēc saskarnes lieluma -STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Izmantot radicionālo sprite fontu +STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Izmantot tradicionālo sprite fontu STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Atzīmējiet šo izvēli, ja vēlaties izmantot tradicionālo fiksētā izmēra sprite fontu. +STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias fonti +STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Atzīmējiet šo izvēli, ja vēlaties mainīt fontus ar anti-alias izmēru. STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x @@ -1076,12 +1093,19 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Pamata m STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Atlasīt lietošanai pamata mūzikas kopu STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Papildinformācija par pamata mūzikas kopu +STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(nav instalētu spraudņu, ko integrēt ar sociālajām platformām) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{STRING} ({STRING}) +STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :{BLACK}Platforma: STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE :{BLACK}Spraudņa stāvoklis: +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_RUNNING :{GREEN}Darbojas STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_FAILED :{RED}Neizdevās instalēt +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_PLATFORM_NOT_RUNNING :{ORANGE}{STRING} nedarbojas +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNLOADED :{RED}Izkrauts STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_DUPLICATE :{RED}Dublēts spraudnis +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_UNSUPPORTED_API :{RED}Neatbalstīta versija +STR_GAME_OPTIONS_SOCIAL_PLUGIN_STATE_INVALID_SIGNATURE :{RED}Nederīgs paraksts STR_BASESET_STATUS :{STRING} {RED}({NUM} trūkst/bojāts fail{P s i ""}) @@ -1230,7 +1254,7 @@ STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Rādīt ###length 3 STR_CONFIG_SETTING_OFF :izslēgts STR_CONFIG_SETTING_ON :ieslēgts -STR_CONFIG_SETTING_DISABLED :atspējots +STR_CONFIG_SETTING_DISABLED :Atspējots ###length 3 STR_CONFIG_SETTING_COMPANIES_OFF :izslēgts @@ -1249,6 +1273,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :pa labi STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}sekund{P 0 i es ""} +STR_CONFIG_SETTING_INFINITE_MONEY :Bezgalīga nauda: {STRING} STR_CONFIG_SETTING_INFINITE_MONEY_HELPTEXT :Atļaut neierobežotus tēriņus un izslēgt uzņēmumu bankrotu STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimālais sākotnējais aizdevums: {STRING} @@ -1277,6 +1302,7 @@ STR_CONFIG_SETTING_SUBSIDY_DURATION :Subsīdiju ilgu STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT :Nosakiet gadu skaitu, par kuru tiek piešķirta subsīdija STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT_PERIODS :Iestatiet periodu skaitu, par kuriem tiek piešķirta subsīdija +STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR_PERIODS} ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Bez subsīdijām @@ -1284,7 +1310,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Būvēšanas iz STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Iestatīt būvēšanas un pirkumu izmaksas STR_CONFIG_SETTING_RECESSIONS :Lejupslīde: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ja ieslēgts, ik pa laikam var gadīties recesijas. To laikā visa ražošana būtiski samazinās (tā atgriežas sākotnējā līmenī pēc recesijas beigām). +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ja ieslēgts, periodiski var rasties recesijas. Recesijas laikā visa ražošana ir ievērojami zemāka (tā atgriežas iepriekšējā līmenī, kad recesija ir beigusies) STR_CONFIG_SETTING_TRAIN_REVERSING :Neatļaut vilcienu apgriešanos stacijās: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ja ieslēgts, stacijās vilcieni negriezīsies pretējā virzienā, pat ja braucot tādā veidā tie atrastu īsāku ceļu un nākamo pieturu; izņēmums ir gala stacijas @@ -1338,7 +1364,7 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Aizliegt vilcie STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 grādu pagriezieni rodas, ja horizontālam sliežu ceļa posmam tieši seko vertikāls sliežu ceļa posms uz blakus esošā lauciņa. Tādējādi vilciens, šķērsojot lauciņu malas, veic 90 grādu pagriezienu, nevis parasto 45 grādu kā citām sliežu ceļu kombinācijām. Tas attiecas arī uz kuģu pagrieziena leņķiem. Tas arī attiecas uz kuģu pagriešanās rādiusu. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Atļaut savienot stacijas, kas neatrodas tieši blakus: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Atļaut pievienot staciju daļas, tām nesaskaroties ar jau esošajām. Novietojot jaunās daļas, ir nepieciešams nospiest Ctrl+klikšķis +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Ļauj pievienot staciju daļas, tām nesaskaroties ar jau esošajām spiežot Ctrl+klikšķis, novietojot jaunas daļas STR_CONFIG_SETTING_INFLATION :Inflācija: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Atļaut inflāciju ekonomikā, kur izmaksu celšanās nedaudz apsteidz ienākumus @@ -1374,10 +1400,11 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :labajā pusē ###length 2 STR_CONFIG_SETTING_SHOWFINANCES :Gada beigās rādīt finanšu pārskatu: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_PERIOD :Rādīt finanšu logu perioda beigās: {STRING} ###length 2 STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Ja ieslēgts, katra gada beigās uznirst finanšu logs, lai varētu viegli pārbaudīt uzņēmuma finansiālo stāvokli -STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :Ja iespējots, finanšu logs tiek parādīts katra perioda beigās, lai varētu viegli pārbaudīt uzņēmuma finansiālo stāvokli +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :Ja ieslēgts, finanšu logs tiek parādīts katra perioda beigās, lai varētu viegli pārbaudīt uzņēmuma finansiālo stāvokli STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Jaunie rīkojumi noklusējumā ir 'bez pieturām': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Transportlīdzeklis parasti pietur pie katras caurbraucamās stacijas. Ieslēdzot šo iestatījumu, tas dosies cauri visām ceļa stacijām uz savu galamērķi bez pieturām. Ņemiet vērā, ka šis iestatījums nosaka noklusējuma vērtību tikai jaunajiem rīkojumiem. Tomēr ir iespējams katru rīkojumu iestatīt arī atsevišķi @@ -1390,7 +1417,7 @@ STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :vidū STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :beigās STR_CONFIG_SETTING_AUTOSCROLL :Bīdīt logu, kad peles kursors atrodas tā malā: {STRING} -STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ja iespējots, skatvieta sāk ritināties kad peles kursors ir pie loga malas +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ja ieslēgts, skatvieta sāk ritināties kad peles kursors ir pie loga malas ###length 4 STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :atspējots STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :galveno skatvietu, tikai pilnekrāna spēlei @@ -1400,10 +1427,11 @@ STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :katru skatvietu STR_CONFIG_SETTING_BRIBE :Atļaut piekukuļot vietējās pašvaldības: {STRING} ###length 2 STR_CONFIG_SETTING_BRIBE_HELPTEXT :Lauj uzņēmumiem mēģināt piekukuļot pilsētu vietējo pašvaldību. Ja inspektors paziņo par kukuli, tad uzņēmums pilsētā nevarēs darboties sešus mēnešus +STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Ļaujiet uzņēmumiem mēģināt uzpirkt vietējās pašvaldības. Ja kukuli pamanīs inspektors, uzņēmums nevarēs rīkoties pilsētā sešas minūtes STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Atļaut pirkt pārvadājumu izņēmuma tiesības: {STRING} ###length 2 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ja uzņēmums pērk pārvadājumu izņēmuma tiesības pilsētā, pretinieku stacijas (pasažieru un kravas) veselu gadu nesaņems nekādu kravu +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ja uzņēmums pērk ekskluzīvas pilsētas transporta tiesības, pretinieku stacijas (pasažieru un kravas) nesaņems nevienu kravu 12 mēnešus. STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :Ja uzņēmums pērk ekskluzīvas pilsētas transporta tiesības, pretinieku stacijas (pasažieru un kravas) nesaņems nevienu kravu 12 minūtes. STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Atļaut ēku finansēšanu: {STRING} @@ -1463,21 +1491,28 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :visiem transpor STR_CONFIG_SETTING_WARN_INCOME_LESS :Brīdināt, ja transportlīdzekļa ienākumi ir negatīvi: {STRING} ###length 2 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Ja ieslēgts, tiks sūtīts ziņojums gadījumā kad transportlīdzeklis negūst nekādu peļņu kalendārā gada laikā -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Ja iespējots, tik nosūtīts ziņojums, ja transportlīdzeklis noteiktā periodā nav guvis peļņu +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Ja ieslēgts, tik nosūtīts ziņojums, ja transportlīdzeklis noteiktā periodā nav guvis peļņu STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Transportlīdzekļi nekad "nemirst": {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kad ieslēgts, visi transportlīdzekļu modeļi pēc to ieviešanas vienmēr ir pieejami STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Laika uzskaite: {STRING} +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Izvēlieties spēles laika mērīšanas vienības. Vēlāk to nevar mainīt.{}{}Kalendāra pamatā ir klasiskā OpenTTD pieredze, kurā gads sastāv no 12 mēnešiem un katru mēnesi ir 28–31 diena.{}{}{}Uz sienas pulksteni balstītā laikā, transportlīdzekļu kustībā, kravu ražošana, un finanses ir balstītas uz vienas minūtes soli, kas ir aptuveni tikpat ilgs laiks, cik 30 dienu mēnesis aizņem kalendāra režīmā. Tie ir sagrupēti 12 minūšu periodos, kas ir līdzvērtīgi gadam kalendāra režīmā.{}{}{}Abos režīmos vienmēr ir klasisks kalendārs, kas tiek izmantots transportlīdzekļu, māju un citas infrastruktūras datu ievadīšanai. ###length 2 STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalendārs +STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Sienas pulkstenis +STR_CONFIG_SETTING_MINUTES_PER_YEAR :Minūtes gadā: {STRING} STR_CONFIG_SETTING_MINUTES_PER_YEAR_HELPTEXT :Izvēlieties minūšu skaitu kalendārajā gadā. Noklusējums ir 12 minūtes. Iestatiet uz 0, lai apturētu kalendāra laika izmaiņas. Šis iestatījums neietekmē spēles ekonomisko simulāciju un ir pieejams tikai tad, ja tiek izmantots sienas pulksteņa laika mērijums +STR_CONFIG_SETTING_MINUTES_PER_YEAR_VALUE :{NUM} ###setting-zero-is-special +STR_CONFIG_SETTING_MINUTES_PER_YEAR_FROZEN :0 (kalendāra laiks ir iesaldēts) STR_CONFIG_SETTING_TOWN_CARGO_SCALE :Mērogot pilsētas kravu ražošana: {STRING} STR_CONFIG_SETTING_TOWN_CARGO_SCALE_HELPTEXT :Mērogojiet pilsētu kravu ražošanu par šo procentu. +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Merogot industrijas kravu ražošanu: {STRING} +STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Mērogojiet nozaru kravu ražošanu par šo procentu. STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}% STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automātiski atjaunot transportlīdzekļus, kad tie ir kļuvuši veci: {STRING} @@ -1510,7 +1545,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Diagrammu līni STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Rādīt jauno NewGRF paplašinājumu nosaukumus uzbūvēto transportlīdzekļu logā: {STRING} STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Uzbūvēto transportlīdzekļu loga pievienot rindu, kurā būtu redzams, no kura NewGRF nāk izvēlētais transportlīdzeklis. STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS :Rādīt kravas, ko transportlīdzekļi var pārvadāt saraksta logos {STRING} -STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Ja iespējots, transportlīdzekļa transportējamā krava parādīsies virs tās transportlīdzekļu sarakstos +STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :Ja ieslēgts, transportlīdzekļa transportējamā krava parādīsies virs tās transportlīdzekļu sarakstos STR_CONFIG_SETTING_LANDSCAPE :Ainava: {STRING} STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Ainavas nosaka pamata spēles scenārijus ar dažādām kravām un pilsētu izaugsmes nosacījumiem. NewGRF un spēles skripti dod smalkākas kontroles iespējas @@ -1641,7 +1676,7 @@ STR_CONFIG_SETTING_SCROLLWHEEL_OFF :izslēgts STR_CONFIG_SETTING_OSK_ACTIVATION :Ekrāntastatūra: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Izvēlieties metodi, kas atvērs ekrnāna tastatūru, lai teksta lauciņos varētu ievadīt tekstu, izmantojot rādītājierīces. Tas ir domāts ierīcēm, kurām nav tastatūras. ###length 4 -STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :atspējota +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Atspējots STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :dubultklikšķis STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :viens klikšķis (kad fokusēta) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :viens klikšķis (nekavējoties) @@ -1721,7 +1756,7 @@ STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automātiski no STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automātiski noņemiet signālus dzelzceļa būvniecības laikā, ja signāli ir uz ceļa. Ņemiet vērā, ka tas var izraisīt vilcienu avārijas. STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Ātrās pārsniegšanas ātruma ierobežojums: {STRING} -STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Ierobežojiet spēles ātrumu, kad ir iespējota ātrā spēles gaita. 0 = nav ierobežojumu (tik ātri, cik ļauj jūsu dators). Vērtības, kas zemākas par 100%, palēnina spēli. Augšējā robeža ir atkarīga no jūsu datora specifikācijas un var atšķirties atkarībā no spēles. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Ierobežojiet spēles ātrumu, kad ir ieslēgta ātrā spēles gaita. 0 = nav ierobežojumu (tik ātri, cik ļauj jūsu dators). Vērtības, kas zemākas par 100%, palēnina spēli. Augšējā robeža ir atkarīga no jūsu datora specifikācijas un var atšķirties atkarībā no spēles. STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% standarta spēles ātrums ###setting-zero-is-special STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Bez ierobežojumiem (tik ātri, cik ļauj jūsu dators) @@ -1738,6 +1773,7 @@ STR_CONFIG_SETTING_SOUND_NEW_PERIOD :Perioda beigas: ###length 2 STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Atskaņot skaņu gada beigās, apkopojot uzņēmuma darbības sasniegumus gada laikā salīdzinājumā ar iepriekšējo gadu +STR_CONFIG_SETTING_SOUND_NEW_PERIOD_HELPTEXT :Atskaņojiet skaņu perioda beigās, apkopojot uzņēmuma darbību attiecīgajā periodā salīdzinājumā ar iepriekšējo periodu STR_CONFIG_SETTING_SOUND_CONFIRM :Būvniecība: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Atskaņot skaņu pēc sekmīgas būvēšanas vai citām darbībām @@ -1798,7 +1834,7 @@ 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}/% +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}Dien{P 0 a as u}/Minūt{P 0 e es es}/% ###setting-zero-is-special STR_CONFIG_SETTING_SERVINT_DISABLED :izslēgts @@ -1890,7 +1926,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Velkot izvietot STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Iestatīt attālumus, kādos līdz nākamajam šķērslim (signālierīcei, dzelzceļa mezglam) uz ceļa tiks būvētas signālierīces, ja tās tiek vilktas STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} lauciņ{P 0 a a a} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Velkot paturēt vienādu attālumu starp signālierīcēm: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Signālierīču izvietošanas uzvedības izvēle, kad to veic ar Ctrl+velkot. Ja izslēgts, signālierīces tiek novietotas pie tuneļiem un tiltiem, lai izvairītos no gariem posmiem bez signālierīcēm. Ja ieslēgts, signālierīces tiek izvietotas uz katra N lauciņa, atvieglojot to izkārtošanu uz paralēliem sliežu ceļiem +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Velkot signālus, izvēlaties izvietojuma opciju. Ja ieslēgts, signāli tiek novietoti ap tuneļiem vai tiltiem, lai izvairītos no gariem posmiem bez signāliem. Ja atslēgts, signāli tiek ievietoti ik pēc n elementiem, atvieglojot signālu izlīdzināšanu paralēlos sliežu ceļus STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automātiski būvēt semaforus pirms: {STRING} gada STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Izvēlēties gadu, kad ceļiem sāks izmantot elektriskās signālierīces. Pirms šā gada tiks izmantotas neelektriskās signālierīces (kam ir tieši tāda pati funkcija, bet ar atšķirīgu izskatu) @@ -1898,6 +1934,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Izvēlēties ga STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Braukt garām signālu veidiem: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Atlasiet, kādus signālu veidus izmantot, izmantojot Ctrl+noklikšķinot uz izveidotā signāla, izmantojot signāla rīku ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Tikai pašreizējā grupa STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Redzami visi STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Rādīt signāla tipus: {STRING} @@ -2030,6 +2067,8 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Vai lietotāja STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :impērijas, britu (jūdzes stundā) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :metriskās (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI, starptautiskās (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_DAYS :Spēles vienības (rūtiņas/dienā) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS_SECS :Spēles vienības (rūtiņas/sek.) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Mezgli STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Transportlīdzekļu jaudas mērvienības: {STRING} @@ -2168,14 +2207,14 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Izvēlē STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Izvēlēties 'subtropu klimata' ainavas stilu STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Izvēlēties 'rotaļlietu zemes' ainavas stilu -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Rādīt spēles opcijas -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Rādīt sasniegumu tabulu +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Atvērt spēles opcijas +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Atvērt sasniegumu tabulu STR_INTRO_TOOLTIP_HELP :{BLACK}Piekļūstiet dokumentācijai un tiešsaistes resursiem -STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Displeja iestatījumi -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Rādīt NewGRF iestatījumus +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Atvērt iestatījumus +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Atvērt NewGRF iestatījumus STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Pārbaudīt vai lejupielādei nav pieejams jauns un atjaunināts saturs -STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Parādīt AI iestatījumus -STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Displeja spēles skripta iestatījumi +STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}Atvērt AI iestatījumus +STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS :{BLACK}Atvērt spēles skripta iestatījumi STR_INTRO_TOOLTIP_QUIT :{BLACK}Iziet no 'OpenTTD' STR_INTRO_BASESET :{BLACK}Pašlaik izvēlētajai bāzes grafikas kopai trūkst {NUM} sprait{P s i u}. Lūdzu, pārbaudiet, vai bāzes kopai ir atjauninājumi. @@ -2206,7 +2245,7 @@ STR_HELP_WINDOW_BUGTRACKER :{BLACK}Ziņot p STR_HELP_WINDOW_COMMUNITY :{BLACK}Kopiena # Cheat window -STR_CHEATS :{WHITE}Blēdības +STR_CHEATS :{WHITE}Smilškastes Opcijas STR_CHEAT_MONEY :{LTBLUE}Palielināt naudas līdzekļus par {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spēlēt kā uzņēmumam: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Burvju buldozers (nojauc ražotnes, nepārvietojamus objektus): {ORANGE}{STRING} @@ -2231,7 +2270,7 @@ STR_LIVERY_TRAIN_GROUP_TOOLTIP :{BLACK}Rādīt STR_LIVERY_ROAD_VEHICLE_GROUP_TOOLTIP :{BLACK}Rādīt autotransporta grupu krāsas STR_LIVERY_SHIP_GROUP_TOOLTIP :{BLACK}Rādīt kuģu grupu krāsas STR_LIVERY_AIRCRAFT_GROUP_TOOLTIP :{BLACK}Rādīt lidaparātu grupu krāsas -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Izvēlēties galveno identitātes krāsu atlasītajai shēmai. Ctrl+klikšķis iestatīs šo krāsu katrai shēmai +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Izvēlieties primāro krāsu atlasītajai shēmai. Ctrl+klikšķis, lai iestatītu šo krāsu katrai shēmai STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Izvēlēties papildu identitātes krāsu atlasītajai shēmai. Ctrl+klikšķis iestatīs šo krāsu katrai shēmai STR_LIVERY_PANEL_TOOLTIP :{BLACK}Izvēlēties kuru identitātes krāsu shēmu mainīt, vai vairākas ar Ctrl+klikšķi. Klikšķināt uz rūtiņas, lai pārslēgtu shēmas izmantošanu STR_LIVERY_TRAIN_GROUP_EMPTY :Vilcienu grupas nav izveidotas @@ -2343,6 +2382,9 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kartes i STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Spēles kartes izmērs{}Klikšķināt, lai šķirotu laukumos STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datums STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Šībrīža datums +STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}h {NUM}m +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Spēles laiks +STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Spēles laiks, kamēr{} spēle netika apturēta STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Valoda, servera versija utt. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klikšķināt sarakstā uz spēles, lai to izvēlētos @@ -2717,6 +2759,7 @@ STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLA STR_LINKGRAPH_STATS_TOOLTIP_MONTH :{BLACK}{CARGO_LONG}, kas jāpārvadā mēnesī no {STATION} uz {STATION} ({COMMA}% no jaudas){STRING} STR_LINKGRAPH_STATS_TOOLTIP_MINUTE :{BLACK}{CARGO_LONG}, kas jāpārvadā minūtē no {STATION} uz {STATION} ({COMMA}% no jaudas){STRING} STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} jātransportē atpakaļ ({COMMA}% no pārvadājuma) +STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Vidējais braucina laiks: {UNITS_DAYS_OR_SECONDS} # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Pārklājuma iezīmēšana @@ -2745,16 +2788,16 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektrificētā STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Viensliedes būvniecība STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magleva būvēšana -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Būvēt sliedes. Ctrl pārslēdz sliežu būvniecību/nojaukšanu. Shift pārslēdz būve/rādīt izmaksu tāmi -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Būvēt dzelzceļu, izmantojot automātisko sliežu režīmu. Ctrl pārslēdz sliežu būvniecību/demolēšanu -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Būvēt vilcienu depo (vilcienu pirkšanai un apkopei). Shift pārslēdz būvi/rādīt izmaksu tāmi -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Izveidojiet ceļa punktu uz dzelzceļa. Ctrl ļauj pievienot vairākus pieturas punktus. Shift rāda izmaksu tāmi -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Būvēt dzelzceļa staciju. Ctrl iespējo staciju apvienošanu. Shift pārslēdz būve/rādīt izmaksu tāmi -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Būvēt signālu uz dzelzceļa. Ctrl pārslēdz semaforu/gaismas signālus{}Velkot, signāli tiek veidoti taisnā sliedes posmā. Ctrl veido signālus līdz nākamajam krustojumam vai signālam{}Ctrl+Click pārslēdz signāla atlases loga atvēršanu. Shift rāda izmaksu tāmi +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Būvēt sliedes. Ctrl pārslēdz sliežu būvniecību/nojaukšanu. Shift parāda novērtētās izmaksas, neveicot būvēšanu +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Būvēt dzelzceļu, izmantojot automātisko sliežu režīmu. Ctrl+klikšķis pārslēdz sliežu būvniecību/demolēšanu. Shift parāda novērtētās izmaksas, neveicot būvēšanu +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Būvēt vilcienu depo (vilcienu pirkšanai un apkopei). Shift parāda novērtētās izmaksas, neveicot būvēšanu +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Izveidojiet ceļa punktu uz dzelzceļa. Ctrl ļauj pievienot vairākus pieturas punktus. Shift parāda novērtētās izmaksas, neveicot būvēšanu +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Būvēt dzelzceļa staciju. Ctrl+klikšķis iespējo staciju apvienošanu. Shift parāda izmaksas, neveicot būvēšanu +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Būvēt dzelzceļa signālu. Ctrl+klikšķis, lai izveidotu alternatīvu signāla stilu{} Velciet lai aizpildītu signālus līdz nākamajam krustojumam, stacijai vai signālam. Shiftparāda izmaksas, neveicot iegādi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Būvēt dzelzceļa tiltu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Būvēt dzelzceļa tuneli. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Pārslēgties starp sliežu, signālierīču, pieturas punktu būvēšanu/noņemšanu. Aizturēt Ctrl, lai noņemtu arī sliedes no pieturas punktiem un stacijām -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Pārveidot/uzlabot sliežu veidu. Shift pārslēdz būvēšanu/izmaksu novērtējumu rādīšanu +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Būvēt dzelzceļa tuneli. Shift parāda izmaksas, neveicot būvēšanu +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Pārslēgties starp sliežu, signālierīču, pieturas punktu būvēšanu/noņemšanu. Aizturēt Ctrl+klikšķis, lai noņemtu arī sliedes no pieturas punktiem un stacijām +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Pārveidot/uzlabot sliežu veidu. Shift parāda novērtētās izmaksas, neveicot iegādi STR_RAIL_NAME_RAILROAD :Dzelzceļš STR_RAIL_NAME_ELRAIL :Elektrificēts dzelzceļš @@ -2830,25 +2873,25 @@ STR_BRIDGE_TUBULAR_SILICON :Cauruļveida, s # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Ceļu būvniecība STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Tramvaju sliežu ceļu būvniecība -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Ceļu būves izvēle. Ctrl pārslēdz ceļa būvešanu/nojaukšanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Tramvaju sliežu būves izvēle. Ctrl pārslēdz tramvaju sliežu būvešanu/nojaukšanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Būvēt ceļu izmantojot automātiskā ceļa paņēmienu. Ctrl pārslēdz ceļu būvēšanu/nojaukšanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Būvēt tramvaju sliedes izmantojot automātisko paņēmienu. Ctrl pārslēdz tramvaju sliežu būvēšanu/nojaukšanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Ceļu būves izvēle. Ctrl+klikšķis pārslēdz ceļa būvešanu/nojaukšanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Būvēt tramvaja posmu. Ctrl+klikšķis, lai noņemtu tramvaja posmu. Shift parāda novērtētās izmaksas, neveicot būvēšanu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Būvēt ceļu izmantojot automātiskā ceļa paņēmienu. Ctrl+klikšķis pārslēdz ceļu būvēšanu/nojaukšanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Būvēt tramvaju sliedes izmantojot automātisko paņēmienu. Ctrl+klikšķis pārslēdz tramvaju sliežu būvēšanu/nojaukšanu. Shift parāda novērtētās izmaksas, neveicot būvēšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Būvēt autotransporta depo (autotransporta līdzekļu pirkšanai un apkopei). Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Būvēt tramvaju depo (tramvaju pirkšanai un apkopei). Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Būvēt autobusu pieturvietu. Ctrl ieslēdz pieturvietu apvienošanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Būvēt pasažieru tramvaju pieturvietu. Ctrl ieslēdz pieturvietu apvienošanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Uzbūvēt kravas automašīnu staciju. Ctrl ļauj buvēt stacijas. Shift rāda izmaksu tāmi -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Būvēt kravas tramvaju pieturvietu. Ctrl ieslēdz pieturvietu apvienošanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Būvēt tramvaju depo (tramvaju pirkšanai un apkopei). Shift parāda izmaksas, neveicot būvēšanu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Būvēt autobusu pieturvietu. Ctrl+klikšķis ieslēdz pieturvietu apvienošanu. Shift+klikšķis parāda izmaksas, neveicot būvēšanu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Būvēt pasažieru tramvaju staciju. Ctrl+klikšķis, lai atlasītu citu staciju, kurai pievienoties. Nospiediet taustiņu Shift, lai rādītu izmaksu tāmi +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Būvēt kravas automašīnu staciju. Ctrl+klikšķis iespējo staciju apvienošanu. Shift parāda izmaksas, neveicot būvēšanu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Būvēt kravas tramvaju pieturvietu. Ctrl+klikšķis ieslēdz pieturvietu apvienošanu. Shift parāda novērtētās izmaksas, neveicot būvēšanu STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Ieslēgt/izslēgt vienvirziena ceļus -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Būvēt ceļa tiltu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Būvēt tramvaju tiltu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Būvēt ceļa tuneli. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Būvēt tramvaju tuneli. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Būvēt ceļa tiltu. Nospiediet taustiņu Shift, lai rādītu tikai izmaksu tāmi +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Būvē tramvaja tiltu. Nospiediet taustiņu Shift, lai rādītu tikai izmaksu tāmi +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Būvēt ceļa tuneli. Shift parāda novērtētās izmaksas, neveicot būvēšanu +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Būvēt tramvaju tuneli. Shift parāda novērtētās izmaksas, neveicot būvēšanu STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Pārslēgties starp ceļa būvēšanas/nojaukšanas režīmiem STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Pārslēgt būvēt/novākt tramvaju būvei -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Pārveidot/uzlabot ceļa veidu. Shift pārslēdz būvēšanu/izmaksu novērtējumu rādīšanu -STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Pārveidot/uzlabot tramvaju veidu. Shift pārslēdz būvēšanu/izmaksu novērtējumu rādīšanu +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Pārveidot/uzlabot ceļa veidu. Shift parāda izmaksas, neveicot uzlabojumu +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Pārveidot/uzlabot tramvaju veidu. Shift parāda izmaksas, neveicot uzlabošanu STR_ROAD_NAME_ROAD :Ceļš STR_ROAD_NAME_TRAM :Tramvaja ceļš @@ -2872,14 +2915,14 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Izvēlē # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Ūdensceļu būvniecība STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Ūdensceļi -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Būvēt kanālus. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Būvēt slūžas. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Būvēt kuģu depo (kuģu būvēšanai un apkopei). Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Būvēt kuģu piestātni. Ctrl ieslēdz staciju apvienošanu. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Izvietot boju, kura var kalpot kā pieturas punkts. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Būvēt akveduktu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Norādīt ūdens laukumu.{}Būvēt kanālu. Ja tur nospiestu Ctrl jūras līmenī, tad appludinās apkārtni -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Pievienot updes. Ctrl pievieno apgabalu diagonāli +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Būvēt kanālus. Shift parāda izmaksas, neveicot būvēšanu +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Būvēt slūžas. Shift parāda novērtētās izmaksas, neveicot būvēšanu +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Būvēt kuģu depo (kuģu būvēšanai un apkopei). Shift parāda novērtētās izmaksas, neveicot būvēšanu +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Būvēt kuģu piestātni. Ctrl+klikšķis ieslēdz staciju apvienošanu. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Izvietot boju, kura var kalpot kā pieturas punkts. Shift parāda novērtētās izmaksas, neveicot izvietojumu +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Būvēt akveduktu. Shift parāda novērtētās izmaksas, neveicot buvēšanu +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Būvēt kanālu. Ctrl+klikšķis jūras līmenī, lai tā vietā appludinātu ar jūras ūdeni +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Izveidot upes. Ctrl+klikšķis, lai veidotu pa diagonāli # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Kuģu depo virziens @@ -2890,7 +2933,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Piestāt # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Lidostas -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Būvēt lidostu. Ctrl ieslēdz staciju apvienošanu. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Būvēt lidostu. Ctrl+klikšķis ieslēdz staciju apvienošanu. Shift parāda izmaksas, neveicot būvēšanu # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Lidostas izvēle @@ -2917,14 +2960,14 @@ STR_STATION_BUILD_NOISE :{BLACK}Radītai # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Ainavas veidošana -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Pazemināt zemes stūri. Vilkšana pazemina pirmo izvēlēto stūri un nolīdzina izvēlēto laukumu uz stūra jauno augstumu. Ctrl iezīmē laukumu diagonāli. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Pacelt zemes stūri. Vilkšana paceļ pirmo izvēlēto stūri un nolīdzina izvēlēto laukumu uz stūra jauno augstumu. Ctrl iezīmē laukumu diagonāli. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Izlīdzināt zemes laukumu pirmā izvēlētā stūra augstumā. Ctrl iezīmē laukumu diagonāli. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Iegādājieties zemi turpmākai lietošanai. Ctrl atlasa apgabalu pa diagonāli. Shift pārslēdz ēku/rāda izmaksu tāmi +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Pazemināt zemes stūri. Vilkšana pazemina pirmo izvēlēto stūri un nolīdzina izvēlēto laukumu uz stūra jauno augstumu. Velkot Ctrl+klikšķis iezīmē laukumu diagonāli. Shift parāda izmaksas, neveicot iegādi +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Pacelt zemes stūri. Vilkšana paceļ pirmo izvēlēto stūri un nolīdzina izvēlēto laukumu uz stūra jauno augstumu. Ctrl iezīmē laukumu diagonāli. Shift parāda izmaksas, neveicot iegādi +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Izlīdzināt zemes laukumu pirmā izvēlētā stūra augstumā. Ctrl iezīmē laukumu diagonāli. Shift parāda izmaksas, neveicot iegādi +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Iegādājieties zemi turpmākai lietošanai. Velkot Ctrl+klikšķis atlasa apgabalu pa diagonāli. Shift parāda izmaksas, neveicot iegādi # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektu izvēle -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Izvēlēlaties buvējamo objektu. Ctrl atlasa apgabalu pa diagonāli. Shift pārslēdz ēku/rāda izmaksu tāmi +STR_OBJECT_BUILD_TOOLTIP :{BLACK}Izvēlēlaties buvējamo objektu. Ctrl atlasa apgabalu pa diagonāli. Shift parāda novērtētās izmaksas, neveicot būvēšanu STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Izvēlēties būvējamā objekta klasi STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objekta priekšskatījums STR_OBJECT_BUILD_SIZE :{BLACK}Izmērs: {GOLD}{NUM} x {NUM} lauciņi @@ -2936,7 +2979,7 @@ STR_OBJECT_CLASS_TRNS :Raidītāji STR_PLANT_TREE_CAPTION :{WHITE}Koki STR_PLANT_TREE_TOOLTIP :{BLACK}Izvēlēties koka veidu stādīšanai. Ja lauciņš jau ir koks, tas pievienos vairāk jauktu veidu kokus neatkarīgi no izvēlētā veida STR_TREES_RANDOM_TYPE :{BLACK}Nejauši izvēlēta veida koki -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Novietojiet jaukta veida kokus. Ctrl atlasa apgabalu pa diagonāli. Shift pārslēdz celtniecību/rāda izmaksas +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Novietojiet jaukta veida kokus. Velkot Ctrl+klikšķis atlasa apgabalu pa diagonāli. Shift parāda izmaksas, neveicot iegādi STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Nejauši koki STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Stādīt nejaušus kokus visā ainavā STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normāls @@ -2949,7 +2992,7 @@ STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Stādiet # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Zemes radīšana STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Ainavā novietot akmeņainus apvidus -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Norādīt tuksneša laukumu.{}Turēt nospiestu Ctrl, lai to noņemtu +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Norādīt tuksneša laukumu.{}Turēt nospiestu Ctrl+klikšķis, lai to noņemtu STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Palielināt zemes apgabalu pazemināšanai/paaugstināšanai STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Samazināt zemes apgabalu pazemināšanai/paaugstināšanai STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Radīt nejaušu zemi @@ -2963,7 +3006,7 @@ STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Vai tie # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Pilsētu radīšana STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Jauna pilsēta -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Dibināt jaunu pilsētu. Shift+klikšķis rāda tikai izmaksu tāmi +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Dibināt jaunu pilsētu. Shift parāda izmaksas, neveicot dibināšanu STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Nejauša pilsēta STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Dibināt pilsētu nejaušā vietā STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Daudz nejauši izveidotu pilsētu @@ -3029,7 +3072,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Izvēlē # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Zemes platības informācija -STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK} Centrējiet galveno skatu uz lauciņa atrašanās vietu. Ctrl + klikšķis atver jaunu skatu logu lauciņa atrašanās vietā +STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK} Centrējiet galveno skatu uz lauciņa atrašanās vietu. Ctrl+klikšķis atvērs skatu uz lauciņu jaunā skatlaukā STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Notīrīšanas izmaksa: {LTBLUE}nav zināma STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Notīrīšanas izmaksa: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Ieņēmumi pēc notīrīšanas: {LTBLUE}{CURRENCY_LONG} @@ -3042,7 +3085,7 @@ STR_LAND_AREA_INFORMATION_RAIL_OWNER.kas :{BLACK}Dzelzce STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Pašvaldība: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neviena STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinātes: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Uzbūvēts: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Buvēts/atjaunots: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stacijas klase: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stacijas tips: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Lidostas klase: {LTBLUE}{STRING} @@ -3277,11 +3320,11 @@ STR_MAPGEN_VARIETY :{BLACK}Dažād STR_MAPGEN_GENERATE :{WHITE}Radīt STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Izveidojiet pasauli un spēlējiet OpenTTD! STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF Iestatījumi -STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Rādīt NewGRF iestatījumus +STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Atvērt NewGRF iestatījumus STR_MAPGEN_AI_SETTINGS :{BLACK}AI iestatījumi -STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Parādīt AI iestatījumus +STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Atvērt AI iestatījumus STR_MAPGEN_GS_SETTINGS :{BLACK}Spēles skripta iestatījumi -STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Rādīt spēles skripta iestatījumus +STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Atvērt spēles skripta iestatījumus ###length 21 STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Angļu (sākotnējie) @@ -3559,7 +3602,7 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Pārslē # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Labot zīmi -STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centrējiet norādes atrašanās vietas galveno skatu. Ctrl + klikšķis atver jaunu skata zīmi uz zīmes atrašanās vietas +STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centrējiet norādes atrašanās vietas galveno skatu. Ctrl+klikšķis atver jaunu skata zīmi uz zīmes atrašanās vietas STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Doties uz nākamo zīmi STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Doties uz iepriekšējo zīmi @@ -3571,7 +3614,7 @@ STR_TOWN_DIRECTORY_NONE :{G=m}{ORANGE}- STR_TOWN_DIRECTORY_NONE.kas :{ORANGE}- Neviena - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Pilsēta){BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Pilsētu nosaukumi - klikšķināt uz nosaukuma, lai centrētu skatu uz to. Ctrl+klikšķis atvērs jaunu skatu lauku uz pilsētu +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Pilsētu nosaukumi - klikšķināt uz nosaukuma, lai centrētu skatu uz to.Ctrl+klikšķis atvērs skatu uz pilsētu jaunā skatlaukā STR_TOWN_POPULATION :{BLACK}Pasaules iedzīvotāju skaits: {COMMA} # Town view window @@ -3586,6 +3629,8 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} piegādāts STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (joprojām pieprasīts) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (piegādāts) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Pilsēta attīstās ik pēc {ORANGE}{UNITS_DAYS_OR_SECONDS} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Pilsēta attīstās ik pēc {ORANGE}{UNITS_DAYS_OR_SECONDS} (finansēts) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Pilsēta {RED}neattīstās{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Trokšņu ierobežojums pilsētā: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centrēt galveno skatu uz pilsētu. Ctrl+klikšķis atvērs skatu uz pilsētu jaunā skatlaukā @@ -3625,8 +3670,11 @@ STR_LOCAL_AUTHORITY_ACTION_BRIBE :Dot kukuli paš STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Sāciet nelielu vietējo reklāmas kampaņu, lai piesaistītu vairāk pasažieru un kravas saviem transporta pakalpojumiem.{}Nodrošina īslaicīgu staciju vērtējuma palielinājumu nelielā rādiusā ap pilsētas centru.{}{POP_COLOUR}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Veiciet vidējo reklāmas kampaņu lai palielinātu pasažieru un kravu parvadājumu savās stacijās.{}Tas īslaicīgi palielinās to staciju vērtējumu, kuras atrodas netālu no pilsētas centra.{}{POP_COLOUR}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Sāciet lielu vietējo reklāmas kampaņu lai piesaistītu vairāk pasažieru un kravas saviem transporta pakalpojumiem.{}Nodrošina īslaicīgu staciju vērtējuma palielinājumu lielā rādiusā ap pilsētas centru.{}{POP_COLOUR}Izmaksas: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Finansējiet pilsētas ceļu tīkla rekonstrukciju.{}Izraisa ievērojamus ceļu satiksmes traucējumus līdz pat 6 mēnešiem.{}{POP_COLOUR}Izmaksas: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MINUTES :{PUSH_COLOUR}{YELLOW}Finansējiet pilsētas ceļu tīkla rekonstrukciju.{}Izraisa ievērojamus ceļu satiksmes traucējumus līdz pat 6 minūtēm.{}{POP_COLOUR}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Uzceliet statuju par godu savam uzņēmumam.{}Nodrošina pastāvīgu staciju vērtējuma palielinājumu šajā pilsētā.{}{POP_COLOUR}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Finansējiet jaunu ēku celtniecību pilsētā.{}Nodrošina īslaicīgu stimulu pilsētas izaugsmei šajā pilsētā.{}{POP_COLOUR}Izmaksas: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Iegādājieties ekskluzīvas transporta tiesības pilsētā uz 12 mēnešiem.{}Pašvaldība neļaus pasažieriem un kravai izmantot jūsu konkurentu stacijas. Veiksmīgs kukulis no konkurenta atcels šo līgumu.{}{POP_COLOUR}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Iegādājieties ekskluzīvas transporta tiesības pilsētā uz 12 minūtēm.{}Pilsētas pārvalde neļaus pasažieriem un kravai izmantot jūsu konkurentu stacijas. Veiksmīgs kukulis no konkurenta atcels šo līgumu.{}{POP_COLOUR}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}Piekukuļot vietējo pašvaldību, lai paaugstinātu savu vērtējumu un atceltu konkurenta ekskluzīvās transporta tiesības, riskējot ar bargu sodu, ja tiksiet pieķerts.{}{POP_COLOUR}Izmaksas: {CURRENCY_LONG} @@ -3676,11 +3724,14 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :Aizvērt # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsīdijas STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Piedāvājumā esošās subsīdijas par pakalpojumu nodrošināšanu: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} no {STRING} līdz {STRING}{YELLOW} ({STRING}) STR_SUBSIDIES_NONE :{ORANGE}- Neviens - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Pašlaik subsidētie pakalpojumi: -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikšķināt uz servisa, lai iecentrētu skatu uz rūpnīcu/pilsētu. Ctrl+klikšķis atvērs jaunu skatu lauku uz pilsētu/rūpnīcu +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} no {STRING} līdz {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikšķināt uz servisa, lai iecentrētu skatu uz rūpnīcu/pilsētu. Ctrl+klikšķis atvērs skatu uz pilsētu jaunā skatlaukā STR_SUBSIDIES_OFFERED_EXPIRY_DATE :līdz {DATE_SHORT} STR_SUBSIDIES_OFFERED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} laikā +STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :līdz {DATE_SHORT} STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} atlikušais kalpošanas laiks # Story book window @@ -3697,8 +3748,8 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Doties u STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Mērķa norāde ir nederīga # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Staciju nosaukumi - klikšķināt uz nosaukuma, lai centrētu galveno skatu uz staciju. Ctrl+klikšķis atvērs jaunu skatvietu pie stacijas -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Aizturēt Ctrl, lai izvēlētos vairākus +STR_STATION_LIST_TOOLTIP :{BLACK}Staciju nosaukumi - klišķināt uz nosaukuma, lai centrētu galveno skatu uz staciju. Ctrl+klikšķis atvērs skatu uz stacijas atrašanos jaunā skatlaukā +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl+klikšķis, atlasa vairākus vienumus STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} stacij{P a as u} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -3851,7 +3902,7 @@ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Būvēt STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Skatīt biroju STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Rādīt uzņēmuma vadības ēku STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Pārvietot biroju -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Pārcelt uzņēmuma centrālo biroju uz citu vietu samaksājot 1% no uzņēmuma vērtības. Shift+klikšķis parāda izmaksu novērtējumu, nemainot biroja atrašanās vietu +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Pārcelt uzņēmuma centrālo biroju uz citu vietu samaksājot 1% no uzņēmuma vērtības. Shift parāda izmaksas, neveicot pārcelšanu STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Sīkāk STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Skatīt detalizētāku infrastruktūras uzskaiti STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Iedot naudu @@ -3908,6 +3959,7 @@ STR_INDUSTRY_DIRECTORY_FILTER_NONE :Nav # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Iepriekšējā mēnesī saražots: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Ražošanas pēdējā minūtē: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} (pārvadāti {COMMA}%) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz ražotni. Ctrl+klikšķis atvērs skatu uz ražotni jaunā skatlaukā STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ražošanas līmenis: {YELLOW}{COMMA}% @@ -3949,6 +4001,7 @@ STR_VEHICLE_LIST_REPLACE_VEHICLES :Nomainīt trans STR_VEHICLE_LIST_SEND_FOR_SERVICING :Sūtīt uz apkopi STR_VEHICLE_LIST_CREATE_GROUP :Izveidot grupu STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Peļņa šogad: {CURRENCY_LONG} (pērn: {CURRENCY_LONG}) +STR_VEHICLE_LIST_PROFIT_THIS_PERIOD_LAST_PERIOD :{TINY_FONT}{BLACK}Peļņa šajā periodā: {CURRENCY_LONG} (pēdējais periods: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -4024,6 +4077,7 @@ STR_PURCHASE_INFO_SPEED :{BLACK}Ātrums: STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Ātrums okeānā: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Ātrums kanālā/upē: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}Darbības izmaksas: {GOLD}{CURRENCY_LONG}/gadā +STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Darbības izmaksas: {GOLD}{CURRENCY_LONG}/periodā STR_PURCHASE_INFO_CAPACITY :{BLACK}Ietilpība: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(pielāgojams) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Projektēts: {GOLD}{NUM}{BLACK} Kalpošanas laiks: {GOLD}{COMMA} gad{P s i u} @@ -4050,10 +4104,10 @@ STR_CARGO_TYPE_FILTER_FREIGHT :Krava STR_CARGO_TYPE_FILTER_NONE :Nav ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Vilciena vagonu atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Autotransporta atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Kuģu atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lidaparātu atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Vilciena vagonu atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju. Ctrl+klikškis, lai parādītu/paslēptu šo vagona veidu +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Autotransporta atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju. trl+klikškis, lai parādītu/paslēptu šo autotransporta veidu +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Kuģu atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju. Ctrl+klikškis, lai parādītu/paslēptu šo kuģa veidu +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lidaparātu atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju. Ctrl+klikškis, lai parādītu/paslēptu šo lidaparātu veidu ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Pirkt transportlīdzekli @@ -4068,14 +4122,14 @@ STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Pirkt un STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Pirkt un pielāgot lidaparātu ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt atzīmēto vilciena vagonu. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt atzīmēto transportlīdzekli. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt atzīmēto kuģi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt izvēlēto lidaparātu. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt atzīmēto vilciena vagonu. Shift rāda izmaksu novērtējumu, neveicot pirkumu +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt atzīmēto transportlīdzekli. Shift rāda izmaksu novērtējumu, neveicot pirkumu +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt atzīmēto kuģi. Shift rāda izmaksu novērtējumu, neveicot pirkumu +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt izcelto lidmašīnu. Nospiediet taustiņu Shift, lai rādītu izmaksu tāmi ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkt un pielāgot izcelto vilcienu. Shift+klikšķis parāda novērtētās izmaksas, neveicot iegādi -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkt un pielāgot izcelto ceļa transportlīdzekli. Shift+klikšķis parāda novērtētās izmaksas, neveicot iegādi +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkt un pielāgot izcelto vilcienu. Shift parāda novērtētās izmaksas, neveicot iegādi +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkt un pielāgot izcelto ceļa transportlīdzekli. Shift parāda novērtētās izmaksas, neveicot iegādi STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkt un pielāgot izcelto kuģi. Shift+klikšķis parāda novērtētās izmaksas, neveicot iegādi STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Pirkt un pielāgot izcelto lidaparātu. Shift+klikšķis parāda novērtētās izmaksas, neveicot iegādi @@ -4127,7 +4181,7 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} tr STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vilcieni - villkt sastāva daļu, lai pievienotu/atvienotu no vilciena. Klikšķināt uz vilciena, lai iegūtu informāciju. Turēt piespiestu Ctrl, lai attiecinātu abas funkcijas sekojošajai ķēdei +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vilcieni - velciet transportlīdzekli ar kreiso klikšķi, lai pievienotu/noņemtu no vilciena, ar labo klikšķi lai iegūtu informāciju. Ctrl+klikšķis, lai lietotu kādu no funkcijām sekojošai ķēdei STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Transportlīdzekļi - labais klikšķis uz transportlīdzekļa, lai uzzinātu vairāk STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Kuģi - labais klikšķis uz kuģa, lai uzzinātu vairāk STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lidaparāti - labais klikšķis uz lidaparāta, lai uzzinātu vairāk @@ -4169,15 +4223,15 @@ STR_DEPOT_CLONE_SHIP :{BLACK}Klonēt STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonēt lidaparātu ###length VEHICLE_TYPES -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Nopirkt vilciena kopiju ar visiem vagoniem. Spiediet šo pogu, un pēc tam uz vilciena, kas atrodas depo vai ārpus tā. Ctrl+Klikšķis, lai koplietotu rīkojumus. Shift+Klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Tas nopirks autotransporta kopiju. Spiediet uz pogas un pēc tam uz autotransporta, kas atrodas depo vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Tas nopirks kuģa kopiju. Spiediet šo pogu un pēc tam uz kuģa, kas atrodas depo vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Tas pirks lidaparāta kopiju. Spiediet uz pogas un pēc tam uz lidaparāta, kas atrodas angārā vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Nopirkt vilciena kopiju ar visiem vagoniem. Spiediet šo pogu, un pēc tam uz vilciena, kas atrodas depo vai ārpus tā. Ctrl+Klikšķis, lai koplietotu rīkojumus. Shift rāda izmaksu novērtējumu, neveicot pirkumu +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Nopirkt autotransporta kopiju. Spiediet uz pogas un pēc tam uz autotransporta, kas atrodas depo vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift rāda izmaksu novērtējumu, neveicot pirkumu +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Nopirkt kuģa kopiju. Spiediet šo pogu un pēc tam uz kuģa, kas atrodas depo vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift rāda izmaksu novērtējumu, neveicot pirkumu +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Pirkt lidaparāta kopiju. Spiediet uz pogas un pēc tam uz lidaparāta, kas atrodas angārā vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift rāda izmaksu novērtējumu, neveicot pirkumu ###length VEHICLE_TYPES STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz vilcienu depo. Ctrl+klikšķis atvērs skatu uz depo jaunā skatlaukā STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz autotransporta depo. Ctrl+klikšķis atvērs skatu uz depo jaunā skatlaukā -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz kuģu depo. Ctrl+klikšķis atvērs skatu uz depo jaunā skatlaukā +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz kuģu depo. Ctrl+klikšķis atvērs skatu uz depo jaunā skatlaukā STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz angāru. Ctrl+klikšķis atvērs skatu uz angāru jaunā skatlaukā ###length VEHICLE_TYPES @@ -4216,10 +4270,18 @@ STR_ENGINE_PREVIEW_TRAM_VEHICLE :tramvajs STR_ENGINE_PREVIEW_AIRCRAFT :lidaparāts STR_ENGINE_PREVIEW_SHIP :kuģis +STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING} +STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING} +STR_ENGINE_PREVIEW_COST_WEIGHT :Izmaksas: {CURRENCY_LONG} Svars: {WEIGHT_SHORT} +STR_ENGINE_PREVIEW_COST_MAX_SPEED :Maksa: {CURRENCY_LONG} maks. ātrums: {VELOCITY} STR_ENGINE_PREVIEW_SPEED_POWER :Ātrums: {VELOCITY} Jauda: {POWER} STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Ātrums: {VELOCITY} Jauda: {POWER} Maks. V.S.: {FORCE} STR_ENGINE_PREVIEW_TYPE :Lidaparāta veids: {STRING} +STR_ENGINE_PREVIEW_TYPE_RANGE :Lidaparāta tips: {STRING} Attālums: {COMMA} rūtiņas +STR_ENGINE_PREVIEW_RUNCOST_YEAR :Darbības izmaksas: {CURRENCY_LONG}/gadā +STR_ENGINE_PREVIEW_RUNCOST_PERIOD :Darbības izmaksas: {CURRENCY_LONG}/periodā STR_ENGINE_PREVIEW_CAPACITY :Ietilpība: {CARGO_LONG} +STR_ENGINE_PREVIEW_CAPACITY_2 :Ietilpība: {CARGO_LONG}, {CARGO_LONG} # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Nomainīt {STRING} - {STRING} @@ -4276,10 +4338,10 @@ STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Klik STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK} Centra galvenais skats uz vilciena atrašanās vietu. Veicot dubultklikšķi, vilcienam sekos galvenais skats. Ctrl + Click atver jaunu skata punktu vilciena atrašanās vietā -STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK} Centrēt transportlīdzekļa atrašanās vietas galveno skatu. Veicot dubultklikšķi, galvenais skats sekos transportlīdzeklim. Ctrl + klikšķis atver jaunu skatu uz transportlīdzekļa atrašanās vietu -STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Centrēt galveno skatu uz kuģa atrašanās vietas. Dubultais klikšķis sekos kuģim galvenajā skatlaukā. Ctrl+klikšķis atvers jaunu boju kuģa lokācijā -STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Centrēt lidmašīnas atrašanās vietas galveno skatu. Veicot dubultklikšķi, galvenajais skats sekos lidmašīnai. Ctrl + klikšķis atver jaunu skatu uz lidmašīnas atrašanās vietu +STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK} Centra galvenais skats uz vilciena atrašanās vietu. Veicot dubultklikšķi, vilcienam sekos galvenais skats. Ctrl+klikšķis atvērs skatu uz vilcienu jaunā skatlaukā +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK} Centrēt transportlīdzekļa atrašanās vietas galveno skatu. Veicot dubultklikšķi, galvenais skats sekos transportlīdzeklim. Ctrl+klikšķis atvērs skatu uz transportlīdzekl jaunā skatlaukā +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Centrēt galveno skatu uz kuģa atrašanās vietas. Dubultais klikšķis sekos kuģim galvenajā skatlaukā. Ctrl+klikšķis atvērs jaunu boju kuģa lokācijā +STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Centrēt lidmašīnas atrašanās vietas galveno skatu. Veicot dubultklikšķi, galvenajais skats sekos lidmašīnai. Ctrl+klikšķis atvērs skatu uz lidmašīnu jaunā skatlaukā ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sūtīt vilcienu uz depo. Ctrl+klikšķis - izvēlēties tikai apkopi @@ -4288,15 +4350,15 @@ STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sūtīt STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sūtīt lidaparātu uz angāru. Ctrl+klikšķis - izvēlēties tikai apkopi ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Tas nopirks vilciena kopiju ar visiem vagoniem. Izmantojot Ctrl+klikšķis, vilcieni rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu vērtību, neveicot pirkumu -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Tas nopirks autotransporta līdzekļa kopiju. Izmantojot Ctrl+klikšķis, autotransporta līdzekļi rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Tas nopirks kuģa kopiju. Izmantojot Ctrl+klikšķis, kuģi rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Tas nopirks lidaparāta kopiju. Izmantojot Ctrl+klikšķis, lidaparāti rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Pirkt vilciena kopiju ar visiem vagoniem. Izmantojot Ctrl+klikšķis, vilcieni rīkojumus lietos kopīgi. Shift rāda izmaksu vērtību, neveicot pirkumu +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Nopirkt autotransporta līdzekļa kopiju. Izmantojot Ctrl+klikšķis, autotransporta līdzekļi rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Nopirkt kuģa kopiju. Izmantojot Ctrl+klikšķis, kuģi rīkojumus lietos kopīgi. Shift parāda novērtētās izmaksas, neveicot iegādi +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Pirkt lidmašīnas kopiju. Ctrl+klikšķis, lai kopīgotu pasūtījumus. Nospiežot Shift, rāda izmaksu novērtējumu, neveicot pirkumu STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Piespiest vilcienu doties tālāk, neievērojot signālu STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Apgriezt vilcienu pretējā virzienā STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Piespiest transportlīdzekli apgriezties -STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK} Centrēt pasūtījuma galamērķa galveno skatu. Ctrl + klikšķis atver jaunu skata punktu pasūtījuma galamērķa atrašanās vietā +STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz pasūtijuma galamērķi. Ctrl+klikšķis atvērs skatu uz pasūtijuma galamērķi jaunā skatlaukā ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Pielāgot vilcienu citam kravas veidam @@ -4325,6 +4387,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Pašreiz # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Iekraušana / Izkraušana STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Aizbrauc +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Gaida atdalīšanu STR_VEHICLE_STATUS_CRASHED :{RED}Cietis avārijā! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Salūzis STR_VEHICLE_STATUS_STOPPED :{RED}Apstādināts @@ -4338,6 +4401,7 @@ STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Nav rī STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Dodas uz {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Dodas uz {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Veikt apkopi {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Atvienot un apkalpot {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Nevar sasniegt {STATION}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Nevar sasniegt {WAYPOINT}, {VELOCITY} @@ -4364,7 +4428,8 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Nosaukt STR_VEHICLE_INFO_AGE :{COMMA} gad{P s i u} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} gad{P s i u} ({COMMA}) -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Vecums: {LTBLUE}{STRING}{BLACK} Izmaksas: {LTBLUE}{CURRENCY_LONG} gadā +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Vecums: {LTBLUE}{STRING}{BLACK} Darbības izmaksas: {LTBLUE}{CURRENCY_LONG}/gadā +STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Vecums: {LTBLUE}{STRING}{BLACK} Darbības izmaksas: {LTBLUE}{CURRENCY_LONG}/periods STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. ātrums: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Maks. ātrums: {LTBLUE}{VELOCITY} {BLACK}Lidaparāta veids: {LTBLUE}{STRING} @@ -4374,6 +4439,7 @@ STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Svars: { STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Peļņa šogad: {LTBLUE}{CURRENCY_LONG} (pagājušajā gadā: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Peļņa šogad: {LTBLUE}{CURRENCY_LONG} (pagājušajā gadā: {CURRENCY_LONG}) {BLACK}Min. veiktspēja: {LTBLUE}{POWER_TO_WEIGHT} +STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD :{BLACK}Peļņa šajā periodā: {LTBLUE}{CURRENCY_LONG} (pēdējais periods: {CURRENCY_LONG}) STR_VEHICLE_INFO_PROFIT_THIS_PERIOD_LAST_PERIOD_MIN_PERFORMANCE :{BLACK}Peļņa šajā periodā: {LTBLUE}{CURRENCY_LONG} (pēdējais periods: {CURRENCY_LONG}) {BLACK}Min. veiktspēja: {LTBLUE}{POWER_TO_WEIGHT} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Drošums: {LTBLUE}{COMMA}% {BLACK}Ķibeles kopš pēdējās apkopes: {LTBLUE}{COMMA} @@ -4385,11 +4451,21 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ietilpī STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Pārvadājumu ieņēmumi: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}{NBSP}dienas{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}{NBSP}minūtes{BLACK} {STRING} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}%{BLACK} {STRING} +STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Pēdējā apkalpošana: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Pēdējā apkope: pirms {LTBLUE}{NUM} minūtēm +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Palieliniet apkopes intervālu par 10 dienām. Ctrl+klikšķis, lai palielinātu apkopes intervālu par 5 dienām STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Palieliniet apkopes intervālu par 5 minūtēm. Ctrl+klikšķis, lai palielinātu apkopes intervālu par 1 minūti +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Palieliniet apkopes intervālu par 10 procentiem. Ctrl+klikšķis, lai palielinātu apkopes intervālu par 5 procentiem STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Samaziniet apkopes intervālu par 10 dienām. Ctrl+klikšķis, lai samazinātu apkopes intervālu par 5 dienām +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Samaziniet apkopes intervālu par 5 minūtēm. Ctrl+klikšķis, lai samazinātu apkopes intervālu par 1 minūti +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Samaziniet apkopes intervālu par 10 procentiem. Ctrl+klikšķis, lai samazinātu apkopes intervālu par 5 procentiem STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Mainīt apkopes starplaiku veidu STR_VEHICLE_DETAILS_DEFAULT :Noklusējuma +STR_VEHICLE_DETAILS_DAYS :Dienas STR_VEHICLE_DETAILS_MINUTES :Minūtes STR_VEHICLE_DETAILS_PERCENT :Procenti @@ -4429,7 +4505,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Jaunā i STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Jaunā ietilpība: {GOLD}{CARGO_LONG}{}{BLACK}Ienākumi no pielāgošanas: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Jaunā ietilpība: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Pielāgošanas izmaksas: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Jaunā ietilpība: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Ienākumi no pielāgošanas: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Izvēlēties transportlīdzekļus pielāgošanai. Vilkšana ar peli ļauj izvēlēties vairākus transportlīdzekļus. Klikšķināšana tukšumā atzīmēs visus transportlīdzekļus. Ctrl+klikšķis atzīmēs izvēlēto un visus tam sekojošus transportlīdzekļus +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Atlasiet transportlīdzekļus, ko pārbūvēt. Velciet ar peli lai atlasītu vairākus transportlīdzekļus. Noklikšķiniet uz tukšas vietas, lai atlasītu visu transportlīdzekli. Ctrl+klikšķis, lai atlasītu visus sekojošos transportlīdzekļus ###length VEHICLE_TYPES STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Izvēlēties, kuru kravas veidu vilciens pārvadās @@ -4454,8 +4530,9 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE STR_ORDERS_TIMETABLE_VIEW :{BLACK}Saraksts STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Pārslēgt uz saraksta skatu -STR_ORDERS_LIST_TOOLTIP :{BLACK}Rīkojumu saraksts - klikšķināt uz rīkojuma, lai to atzīmētu. Ctrl+klikšķis ritina uz rīkojuma galamērķi +STR_ORDERS_LIST_TOOLTIP :{BLACK}Pasūtījumu saraksts - noklikšķiniet uz pasūtījuma, lai to iezīmētu. Ctrl+klikšķis, ritina līdz pasūtījuma galamērķim STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Rīkojumu beigas - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Koplietojamo rīkojumu beigas - - @@ -4492,6 +4569,11 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Pieejamā krava STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vienmēr doties STR_ORDER_DROP_SERVICE_DEPOT :Apkope, ja nepieciešama STR_ORDER_DROP_HALT_DEPOT :Apstādināt +STR_ORDER_DROP_UNBUNCH :Atdalīt + +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Vehicle data to base jumping on @@ -4534,7 +4616,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Doties uz tuvā STR_ORDER_GO_TO_NEAREST_HANGAR :Doties uz tuvāko angāru STR_ORDER_CONDITIONAL :Nosacītais rīkojuma lēciens STR_ORDER_SHARE :Koplietot rīkojumus -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Ievietot jaunu rīkojumu pirms iezīmētā rīkojuma vai saraksta beigās. Ctrl izveido stacijas rīkojumu 'piekraut pilnu ar jebkuru kravu', liek braukt cauri pieturas punktam 'neapstājoties' un depo veikt 'apkopi'. 'Koplietot rīkojumus' vai Ctrl ļauj šim transportlīdzeklim lietot rīkojumus kopīgi ar atlasīto transportlīdzekli. Klikšķināšana uz transportlīdzekļa kopēs tā rīkojumus. Depo rīkojums izslēdz automātisko apkopi. +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Ievietot jaunu rīkojumu pirms iezīmētā rīkojuma vai saraksta beigās. Ctrl+klikšķis izveido stacijas rīkojumu 'piekraut pilnu ar jebkuru kravu', liek braukt cauri pieturas punktam 'neapstājoties' un depo veikt 'apkopi'. 'Koplietot rīkojumus' vai Ctrl+klikšķis ļauj šim transportlīdzeklim lietot rīkojumus kopīgi ar atlasīto transportlīdzekli. Klikšķināšana uz transportlīdzekļa kopēs tā rīkojumus. Depo rīkojums izslēdz automātisko apkopi. STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Rādīt visus ar šo plānu saistītos transportlīdzekļus @@ -4560,6 +4642,7 @@ STR_ORDER_REFIT_ORDER :(Pielāgot uz { STR_ORDER_REFIT_STOP_ORDER :(Pielāgot uz {STRING} un apstāties) STR_ORDER_STOP_ORDER :(Apstādināt) +STR_ORDER_WAIT_TO_UNBUNCH :(gaida atdalīšanu) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Nevar izmantot staciju){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4641,24 +4724,24 @@ STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Šis gra STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Šis grafiks sāksies pēc {COMMA} sekundēm STR_TIMETABLE_START :{BLACK}Sākt Grafiku -STR_TIMETABLE_START_TOOLTIP :{BLACK}Atlasiet, kad sākas šis saraksts. Ctrl+klikšķis vienmērīgi sadala visu transportlīdzekļu sākumu, kas koplieto šo pasūtījumu, pamatojoties uz to relatīvo pasūtījumu, ja pasūtījumam ir pilnībā noteikts saraksts +STR_TIMETABLE_START_TOOLTIP :{BLACK}Atlasiet, kad sākas šis grafiks. Ctrl+klikšķis, lai vienmērīgi sadalītu visu transportlīdzekļu sākumu, kas koplieto šo rīkojumu. Rīkojumā visiem transportiem jāizmanto grafiks STR_TIMETABLE_START_SECONDS_QUERY :Sekundes līdz grafika sākumam STR_TIMETABLE_CHANGE_TIME :{BLACK}Mainīt laiku -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Mainiet laiku, kas nepieciešams iezīmētajam pasūtījumam. Ctrl+Click iestata laiku visiem pasūtījumiem +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Mainiet laiku, kas nepieciešams iezīmētajam pasūtījumam. Ctrl+klikšķis iestata laiku visiem pasūtījumiem STR_TIMETABLE_CLEAR_TIME :{BLACK}Notīrīt laiku STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Dzēst iezīmētā pasūtījuma laiku. Ctrl+klikšķis notīra laiku visiem pasūtījumiem STR_TIMETABLE_CHANGE_SPEED :{BLACK}Mainīt ātruma ierobežojumu -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Mainiet izceltā pasūtījuma maksimālo braukšanas ātrumu. Ctrl+Click iestata ātrumu visiem pasūtījumiem +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Mainiet izceltā pasūtījuma maksimālo braukšanas ātrumu. Ctrl+klikšķis iestata ātrumu visiem pasūtījumiem STR_TIMETABLE_CLEAR_SPEED :{BLACK}Nodzēst ātruma ierobežojumu STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Dzēst iezīmētā pasūtījuma maksimālo braukšanas ātrumu. Ctrl+klikšķis notīra ātrumu visiem pasūtījumiem STR_TIMETABLE_RESET_LATENESS :{BLACK}Atiestatīt kavējuma skaitītāju -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Atiestatiet kavējuma skaitītāju, lai transportlīdzeklis būtu laikā. Nospiežot taustiņu kombināciju Ctrl+klikšķis, tiks atiestatīta visa grupa, lai jaunākais transportlīdzeklis būtu laicīgi un visi pārējie ātrāk +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Atiestatiet kavējuma skaitītāju, lai transportlīdzeklis būtu laikā. Ctrl+klikšķis, lai atiestatītu visu grupu, lai jaunākais transportlīdzeklis būtu laikā un pārējie būtu agri STR_TIMETABLE_AUTOFILL :{BLACK}Automātiska aizpildīšana STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Automātiski aizpildiet kustības grafiku ar vērtībām no nākamā brauciena. Ctrl+noklikšķiniet, lai mēģinātu saglabāt gaidīšanas laiku @@ -4763,6 +4846,7 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spēles skripts STR_AI_SETTINGS_CLOSE :{BLACK}Aizvērt STR_AI_SETTINGS_RESET :{BLACK}Atiestatīt STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] @@ -5030,6 +5114,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Nevar at STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Nepareizs depo veids # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... var būt tikai viens atdalīts pasūtījums +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... nevar izmantot pilnas kravas pasūtījumus, ja transportlīdzeklim ir atdalīts pasūtījums +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... nevar atdalīt transportlīdzekli ar pilnu kravas pasūtījumu +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... nevar izmantot nosacījumu pasūtījumus, ja transportlīdzeklim ir atdalīts pasūtījums +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... nevar atdalīt transportlīdzekli ar nosacījumu pasūtījumu # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} pēc aizstāšanas ir pārāk garš @@ -5690,6 +5779,7 @@ STR_UNKNOWN_STATION :nezināma staci STR_DEFAULT_SIGN_NAME :Zīme STR_COMPANY_SOMEONE :kāds +STR_SAVEGAME_DURATION_REALTIME :{NUM}h {NUM}mlj. STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Novērotājs, {1:STRING} @@ -5726,6 +5816,7 @@ STR_WAYPOINT_NAME :{WAYPOINT} STR_CURRENCY_SHORT_KILO :{NBSP}tk. STR_CURRENCY_SHORT_MEGA :{NBSP}m STR_CURRENCY_SHORT_GIGA :{NBSP}mljrd. +STR_CURRENCY_SHORT_TERA :{NBSP}tonna STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 23953206f3..ef1b6d6efc 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -4473,6 +4473,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vykti visuomet STR_ORDER_DROP_SERVICE_DEPOT :Vykti, jei reikia STR_ORDER_DROP_HALT_DEPOT :Nuvykti ir sustoti +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Transporto priemonės parametras, kuriuo bus remiamasi vykdant sąlyginę užduotį # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 95bbf7c997..030acc75b3 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -4284,6 +4284,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Géi ëmmer STR_ORDER_DROP_SERVICE_DEPOT :Revisioun falls néideg STR_ORDER_DROP_HALT_DEPOT :Stop +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Gefierdaten als Basis fir den Optragssprong # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/macedonian.txt b/src/lang/macedonian.txt index 3932ed0e08..564df399c9 100644 --- a/src/lang/macedonian.txt +++ b/src/lang/macedonian.txt @@ -1877,6 +1877,10 @@ STR_ORDER_INDEX :{COMMA}:{NBSP} +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/malay.txt b/src/lang/malay.txt index a8f9f83b40..2ea48244e3 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -3535,6 +3535,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Sentiasa pergi STR_ORDER_DROP_SERVICE_DEPOT :Selenggara sekiranya perlu STR_ORDER_DROP_HALT_DEPOT :Berhenti +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Lompatan data kenderaan ke pengkalan diaktifkan # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/maltese.txt b/src/lang/maltese.txt index 39c9af3805..044b9c049a 100644 --- a/src/lang/maltese.txt +++ b/src/lang/maltese.txt @@ -1267,6 +1267,10 @@ STR_ORDER_INDEX :{COMMA}:{NBSP} +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index 4f94543e75..bb7cc5d3a0 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -1677,6 +1677,10 @@ STR_ORDER_INDEX :{COMMA}:{NBSP} +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index 8cec9e0327..bac7c042ba 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -4231,6 +4231,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Alltid gå STR_ORDER_DROP_SERVICE_DEPOT :Vedlikehold ved behov STR_ORDER_DROP_HALT_DEPOT :Stopp +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Kjøretøydata å basere hopp på # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index b553b83763..0379084467 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -3754,6 +3754,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Alltid gå STR_ORDER_DROP_SERVICE_DEPOT :Vedlikehald om naudsynt STR_ORDER_DROP_HALT_DEPOT :Stopp +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Køyretøy-data å basere hopp på # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/persian.txt b/src/lang/persian.txt index 25f79d2946..25b5f3f0d9 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -3313,6 +3313,10 @@ STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :درصورت پ +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 8c18860fbe..9ee41984b6 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -4811,6 +4811,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Zawsze do STR_ORDER_DROP_SERVICE_DEPOT :Serwisuj jeśli trzeba STR_ORDER_DROP_HALT_DEPOT :Zatrzymaj +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dane pojazdu wykorzystane w warunku # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index a9081a16f1..46bff439e3 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -402,14 +402,14 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Mostrar STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Mostrar lista de aeronaves da empresa. Ctrl+Clique alterna entre abrir a lista de grupos/veículos STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Ampliar STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Reduzir -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construir caminhos-de-ferro +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construir infraestrutura ferroviária STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Construir infraestrutura rodoviária STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Construir carris para elétricos STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construir docas para navios STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construir aeroportos STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Abra a barra de modelação ambiental para elevar ou baixar terreno, plantar árvores, etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Mostrar janela som/música -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Mostrar a última mensagem/notícia, histórico de mensagens ou eliminar todas as mensagens +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Abrir a última mensagem/notícia, histórico de mensagens ou eliminar todas as mensagens STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informações do terreno, captura de ecrã, sobre o OpenTTD e ferramentas de desenvolvedor STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Trocar barras de ferramentas @@ -428,7 +428,7 @@ STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Construi STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Construção de carris para elétricos STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantar árvores. "Ctrl" seleciona a área na diagonal. "Shift" alterna construir/mostrar custo estimado STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Colocar sinais -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar objeto. Ctrl seleciona a área diagonalmente. Shift alterna construir/mostrar custo estimado +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar objeto. Ctrl+Clique+Arrastar para selecionar a área diagonalmente. Pressione também Shift para mostrar o custo estimado # Scenario editor file menu ###length 7 @@ -720,10 +720,10 @@ STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLA STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Limpar STR_PLAYLIST_CHANGE_SET :{BLACK}Mudar conjunto -STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Limpar programa actual (somente Personaliz. 1 ou Personaliz. 2) +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Limpar programa atual (apenas Personalizado 1 ou Personalizado 2) STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Mudar selecção musical para outro conjunto instalado -STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Clique na faixa de música para a adicionar ao programa actual (somente Personaliz. 1 ou Personaliz. 2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Faça clique numa faixa para a remover da lista (Personaliz. 1 ou Personaliz. 2 apenas) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Clique na faixa de música para a adicionar ao programa atual (apenas Personalização 1 ou Personalização 2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Clique numa faixa para a remover da lista (apenas Personalização 1 ou Personalização 2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Melhores empresas @@ -814,7 +814,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Mostrar STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostrar a última mensagem ou notícia STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * EM PAUSA * * -STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * EM PAUSA (aguardando pela atualização do gráfico de links) * * +STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * EM PAUSA (em espera pela atualização do gráfico de ligações) * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOGUARDADO STR_STATUSBAR_SAVING_GAME :{RED}* * A GUARDAR JOGO * * @@ -1305,7 +1305,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Custos de const STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Configurar o nível de construção e custos de compra STR_CONFIG_SETTING_RECESSIONS :Recessões: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Se ativo, podem ocorrer recessões em intervalos de poucos anos. Durante uma recessão a produção em geral é mais baixa (volta aos níveis anteriores quando termina) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Se ativo, podem ocorrer recessões periodicamente. Durante uma recessão a produção em geral é mais baixa (e regressa aos níveis anteriores quando termina a recessão) STR_CONFIG_SETTING_TRAIN_REVERSING :Desabilitar inversão de combóios nas estações: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Quando ativo, os comboios não podem inverter marcha em estações não-terminais, mesmo se existir um caminho mais curto para o próximo destino ao inverter @@ -1921,7 +1921,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Ao arrastar, co STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Define a distância a que os sinais serão construídos num carril até ao próximo obstáculo (sinal, junção), se os sinais são arrastados STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} quadrado{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Ao arrastar, manter distância fixa entre sinais: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecionar o comportamento da colocação de sinais ao usar Ctrl+arrasto. Se desativado, os sinais são colocados à volta de túneis ou pontes para evitar longos trajetos sem sinais. Se ativo, os sinais são colocados a cada N mosaicos, facilitando o alinhamento de sinais em linhas paralelas +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecionar o comportamento da colocação de sinais ao arrastar os sinais. Se desativado, os sinais são colocados à volta de túneis ou pontes para evitar longos trajetos sem sinais. Se ativo, os sinais são colocados a cada N mosaicos, facilitando o alinhamento de sinais em linhas paralelas STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Usar automaticamente sinais clássicos antes de: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Configurar o ano em que sinais eléctricos podem ser usados para os carris. Antes deste ano, sinais não-eléctricos serão usados (que têm a mesma funcionalidade, mas aspecto diferente) @@ -1929,6 +1929,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Configurar o an STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Trocar tipos de faróis: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selecione os tipos de sinais a percorrer ao usar Ctrl+clique num sinal com a ferramenta de sinais ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Apenas grupo atual STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Todos visíveis STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Mostrar tipos de sinais: {STRING} @@ -2623,7 +2624,7 @@ STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :número de joga STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :a ligar clientes STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script de jogo -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :esperando pela atualização do gráfico de links +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :Em espera pela atualização do gráfico de ligações STR_NETWORK_MESSAGE_CLIENT_LEAVING :a sair STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} entrou no jogo @@ -2869,16 +2870,16 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Construi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Construir secção de carris para elétricos. Ctrl alterna a construção/remoção de carris para elétricos. Shift alterna construir/mostrar custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Construir estradas usando o modo automático. Ctrl alterna a construção/remoção de estradas. Shift alterna construir/mostrar custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Construir carris para elétricos usando o modo automático. Ctrl alterna a construção/remoção de carris para elétricos. Shift alterna construir/mostrar custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construir garagem rodoviária (para compra e manutenção de veículos rodoviários). Shift alterna construir/mostrar custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construir garagem rodoviária (para compra e manutenção de veículos rodoviários). Pressione também Shift para apenas mostrar o custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construir garagem para elétricos (para compra e manutenção). Shift alterna construir/mostrar custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Construir estação de autocarros. Ctrl permite juntar estações. Shift alterna construir/mostrar custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construir paragem de elétricos para passageiros. Ctrl permite juntar estações. Shift alterna construir/mostrar custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Construir estação de camiões. Ctrl permite juntar estações. Shift alterna construir/mostrar custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Construir estação de camiões. Ctrl+Clique para selecionar outra estação para se unir. Pressione também Shift para mostrar o custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Construir paragem de elétricos para carga. Ctrl permite juntar estações. Shift alterna construir/mostrar custo estimado STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Ativar/Desativar estradas de sentido único STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Construir ponte rodoviária. Shift alterna construir/mostrar custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Construir ponte para elétricos. Shift alterna construir/mostrar custo estimado -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Construir túnel rodoviário. Shift alterna construir/mostrar custo estimado +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Construir túnel rodoviário. Pressione também Shift para mostrar apenas o custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Construir túnel para elétricos. Shift alterna construir/mostrar custo estimado STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Alternar entre construir/remover estradas STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Alternar construir/remover linhas de eléctricos e sinais @@ -2910,7 +2911,7 @@ STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Canais STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Construir canais. Shift alterna construção/estimativa de custos STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Construir eclusas. Shift alterna construir/mostrar custo estimado STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Construir estaleiro naval (para compra e manutenção de navios). Shift alterna construir/mostrar custo estimado -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Construir doca naval. Ctrl permite juntar estações. Shift alterna construir/mostar custo estimado +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Construir doca naval. Ctrl+Clique para selecionar outra estação para se juntar. Pressione também Shift para mostrar apenas o custo estimado STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Esta bóia de posição pode ser usada para marcar pontos de rota adicionais. Shift alterna construção/mostra de custos estimados STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Construir aqueduto. Shift alterna construir/mostrar custo estimado STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Definir área de água.{}Construir um canal, a não ser que a tecla Ctrl esteja pressionada a nível do mar, nesse caso inundará as zonas circundantes @@ -3311,11 +3312,11 @@ STR_MAPGEN_VARIETY :{BLACK}Variedad STR_MAPGEN_GENERATE :{WHITE}Gerar STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Criar o mapa e jogar OpenTTD! STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}Definições de NewGRF -STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Mostrar definições de NewGRF +STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Abrir definições de NewGRF STR_MAPGEN_AI_SETTINGS :{BLACK}Definições de IA STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}Mostrar definições de IA STR_MAPGEN_GS_SETTINGS :{BLACK}Definições de Script de Jogo -STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Mostrar definições de script de jogo +STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}Abrir definições de script de jogo ###length 21 STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH :Inglês @@ -3935,7 +3936,7 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} e mais {NUM} ... -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nomes de indústrias - clique no nome para centrar-se na indústria. Ctrl+Clique abre um novo visualizador na localização da indústria +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nomes de indústrias - clique no nome para centrar a visualização na indústria. Ctrl+Clique para abrir um novo visualizador na localização da indústria STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Carga aceite: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Carga produzida: {SILVER}{STRING} STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Todos os tipos de carga @@ -4091,7 +4092,7 @@ STR_CARGO_TYPE_FILTER_NONE :Nenhum ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de veículos ferroviários - clique num veículo para informações STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de veículos rodoviários - clique num veículo para informações -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de selecção de barcos. Clique num navio para informações. Ctrl+Clique para alternar/ocultar o tipo de barco +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de seleção de navios. Clique num navio para informações. Ctrl+Clique para mostrar/ocultar este tipo de navio STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de aeronaves - clique na aeronave para informações ###length VEHICLE_TYPES @@ -4166,7 +4167,7 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} ve STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Comboios - arraste o veículo com o botão esquerdo do rato para acrescentar/retirar do comboio; clique com o botão direito para informações. Pressionando a tecla Ctrl aplica ambas as funções à cadeia seguinte +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Comboios - arraste o veículo com o botão esquerdo do rato para acrescentar/retirar do comboio; clique com o botão direito para informações. Ctrl+Clique para aplicar ambas as funções à cadeia seguinte STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Veículos - clique com o botão direito num veículo para informações STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Navios - clique com o botão direito num navio para informações STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aeronave - Clique com o botão direito na aeronave para informações @@ -4214,7 +4215,7 @@ STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Esta aç STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Esta ação irá comprar uma cópia de uma aeronave. Clique neste botão e de seguida, numa aeronave que se encontre dentro ou fora do hangar. Ctrl+Clique irá partilhar as ordens. Shift+Clique mostra a estimativa de custo, sem comprar ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrar visualização na localização do depósito ferroviário. Ctrl+Clique abre um novo visualizador na localização do depósito ferroviário +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrar visualização na localização do depósito ferroviário. Ctrl+Clique para abrir um novo visualizador na localização do depósito ferroviário STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrar visualização na localização da garagem de veículos rodoviários. Ctrl+Clique abre um novo visualizador na localização da garagem STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centrar visualização na localização do estaleiro naval. Ctrl+Clique abre um novo visualizador na localização do estaleiro naval STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrar visualização na localização do hangar. Ctrl+Clique abre um novo visualizador na localização do hangar @@ -4331,7 +4332,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK} Central ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mandar comboio para o depósito. Ctrl+Clique fará apenas manutenção STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mandar veículo para a garagem. Ctrl+Clique fará apenas manutenção -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mandar navio para o estaleiro. Ctrl+Clique fará apenas manutenção +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mandar navio para o estaleiro. Ctrl+Clique para fazer apenas manutenção STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mandar aeronave para o hangar. Ctrl+Clique fará apenas manutenção ###length VEHICLE_TYPES @@ -4343,7 +4344,7 @@ STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Esta aç STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Forçar comboio a prosseguir sem esperar pelo sinal STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Inverter direcção do comboio STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Forçar veículo a dar a volta -STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Centrar visualização no destino da ordem. Ctrl+Clique abre um novo visualizador na localização do destino da ordem +STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Centrar visualização no destino da ordem. Ctrl+Clique para abrir um novo visualizador na localização do destino da ordem ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Converter comboio para transportar outro tipo de carga @@ -4372,6 +4373,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Ação a # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}A carregar / descarregar STR_VEHICLE_STATUS_LEAVING :{LTBLUE}A partir +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Em espera por desagrupar STR_VEHICLE_STATUS_CRASHED :{RED}Acidentado! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Avariado STR_VEHICLE_STATUS_STOPPED :{RED}Parado @@ -4385,6 +4387,7 @@ STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Sem ord STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Dirige-se a {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Dirige-se para {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção em {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}Desagrupar e efetuar manutenção em {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}Não é possível chegar a {STATION}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}Não é possível chegar a {WAYPOINT}, {VELOCITY} @@ -4551,6 +4554,11 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Mercadoria disp STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ir sempre STR_ORDER_DROP_SERVICE_DEPOT :Manutenção, se necessária STR_ORDER_DROP_HALT_DEPOT :Parar +STR_ORDER_DROP_UNBUNCH :Desagrupar + +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dados de veículo para ida à base @@ -4619,6 +4627,7 @@ STR_ORDER_REFIT_ORDER :(Adaptar para { STR_ORDER_REFIT_STOP_ORDER :(Adaptar para {STRING} e parar) STR_ORDER_STOP_ORDER :(Parar) +STR_ORDER_WAIT_TO_UNBUNCH :(esperar por desagrupar) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Não pode usar a estação){POP_COLOUR} {STRING} {STATION} {STRING} @@ -4823,6 +4832,7 @@ STR_AI_SETTINGS_CLOSE :{BLACK}Fechar STR_AI_SETTINGS_RESET :{BLACK}Repor STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_SETTING_DEVIATION :{STRING}: {ORANGE}[{STRING}, {STRING}] +STR_AI_SETTINGS_JUST_DEVIATION :[{STRING}, {STRING}] # Textfile window @@ -5089,6 +5099,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Não é STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Tipo de depósito errado # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... só pode ter uma ordem de desagrupar +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... não é possível usar ordens de carga completa quando o veículo tem uma ordem de desagrupar +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... não é possível desagrupar um veículo com ordem de carga completa +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... não é possível usar ordens condicionais quando um veículo tem uma ordem de desagrupar +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... não é possível desagrupar um veículo com uma ordem condicional # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} é muito longo depois de substituído diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 9466182fec..7c9137a9a9 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -4416,6 +4416,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Merge mereu STR_ORDER_DROP_SERVICE_DEPOT :Service dacă este nevoie STR_ORDER_DROP_HALT_DEPOT :Stop +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Datele vehiculului pe care se bazează # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 697b17954f..02ee735444 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1074,6 +1074,7 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Компания «{STRING}» получает субсидию!{}{}Перевозка {STRING.gen} по маршруту {STRING} - {STRING} будет оплачиваться в четырёхкратном размере в течение {UNITS_YEARS_OR_MINUTES}! STR_NEWS_ROAD_REBUILDING_MONTHS :{BIG_FONT}{BLACK}Хаос на дорогах г.{NBSP}{TOWN}!{}{}Реконструкция дорожной сети, профинансированная компанией «{STRING}», принесёт водителям полгода страданий! +STR_NEWS_ROAD_REBUILDING_MINUTES :{BIG_FONT}{BLACK}Хаос на дорогах г.{NBSP}{TOWN}!{}{}Реконструкция дорожной сети, профинансированная компанией «{STRING}», принесёт водителям 6{NBSP}минут страданий! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Транспортный монополист! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS :{BIG_FONT}{BLACK}Администрация г.{NBSP}{TOWN} предоставила компании «{STRING}» эксклюзивные транспортные права сроком на 12 месяцев! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES :{BIG_FONT}{BLACK}Администрация г.{NBSP}{TOWN} предоставила компании «{STRING}» эксклюзивные транспортные права сроком на 12 минут! @@ -1577,7 +1578,7 @@ STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES :Позволя STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Разрешить покупать эксклюзивные транспортные права: {STRING} ###length 2 -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Если компания покапает эксклюзивные транспортные права, то на станции конкурентов не будет поступать груз и не будут приходить пассажиры в течение года +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Если компания покапает эксклюзивные транспортные права, то на станции конкурентов не будет поступать груз и не будут приходить пассажиры в течение 12{NBSP}месяцев STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES :Если компания покапает эксклюзивные транспортные права, то на станции конкурентов не будет поступать груз и не будут приходить пассажиры в течение 12{NBSP}минут. STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Разрешить финансирование строительства зданий: {STRING} @@ -1636,7 +1637,8 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :у всех STR_CONFIG_SETTING_WARN_INCOME_LESS :Предупреждать, если доход ТС отрицателен: {STRING} ###length 2 -STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Включает сообщения о транспортых средствах, не принёсших прибыли по итогам прошедшего года +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Включает сообщения о транспортных средствах, не принёсших прибыли по итогам прошедшего года. +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT_PERIOD :Включает сообщения о транспортных средствах, не принёсших прибыли по итогам прошедшего цикла. STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Транспорт не будет выходить из эксплуатации: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :При включении все транспортные средства остаются доступными для покупки в любое время после начала их производства @@ -2079,6 +2081,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Год, нач STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Выбор сигналов (Ctrl+щелчок): {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Выбор предлагаемых типов сигналов при их модификации с помощью Ctrl+щелчка по установленному сигналу ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :Только текущая группа STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :все отображаемые STR_CONFIG_SETTING_SIGNAL_GUI_MODE :Типы сигналов в панели строительства: {STRING} @@ -2968,7 +2971,7 @@ STR_RAIL_NAME_MAGLEV.n :Магнитн # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Направление депо -STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Выбор направления депо +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Выбор ориентации депо # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Точка пути @@ -2977,7 +2980,7 @@ STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Выбо # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Выбор ж/д станции STR_STATION_BUILD_ORIENTATION :{BLACK}Направление -STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Выберите направление ж/д станции +STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Выберите ориентацию ж/д станции STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Количество путей STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Укажите количество платформ ж/д станции STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Длина платформы @@ -3066,13 +3069,13 @@ STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Выбо # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Направление остановки -STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Выберите направление остановки +STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Выберите ориентацию остановки STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Ориентация терминала STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Выберите направление грузового терминала STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Направление пассажирской трамвайной остановки STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Выберите направление пассажирской трамвайной остановки STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Направление грузовой трамвайной остановки -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Выберите направление грузовой трамвайной остановки +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Выберите ориентацию грузовой трамвайной станции # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Судоходные коммуникации @@ -3088,7 +3091,7 @@ STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Созд # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Направление дока -STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Выберите направление дока +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Выберите ориентацию дока # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Пристань @@ -4701,6 +4704,7 @@ STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Пока STR_ORDERS_LIST_TOOLTIP :{BLACK}Список заданий - щёлкните задание для выделения. Ctrl+щелчок - обзор станции назначения. STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Конец заданий - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Конец общих заданий - - @@ -4738,6 +4742,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Всегда STR_ORDER_DROP_SERVICE_DEPOT :Если требуется STR_ORDER_DROP_HALT_DEPOT :Стоп +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Параметр транспорта для сравнения # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index c9c85f1841..795a880397 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -4520,6 +4520,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Uvek STR_ORDER_DROP_SERVICE_DEPOT :Servis po potrebi STR_ORDER_DROP_HALT_DEPOT :Zaustavljanje +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Skok na osnovu podatka o vozilu # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index dcfd3150b3..dde82b7bdc 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -1516,11 +1516,11 @@ 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} 个月前 -STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} 个月后 +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :前 {COMMA} 个月 +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :后 {COMMA} 个月 STR_CONFIG_SETTING_AUTORENEW_MONEY :启动自动更新需要的最少现金:{STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :启动自动更新车辆时需要保留的最少现金 @@ -1830,7 +1830,7 @@ STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :汽车默认保 STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :如果没有为汽车指定保养周期,设定汽车的默认保养周期 STR_CONFIG_SETTING_SERVINT_AIRCRAFT :飞机默认保养周期:{STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :如果没有为飞机指定保养周期,设定飞机的默认保养周期 -STR_CONFIG_SETTING_SERVINT_SHIPS :船只的默认保养周期:{STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS :船只默认保养周期:{STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :如果没有为船只设定保养周期,按照这里设定的默认保养周期执行 STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}日 / 分钟 / % ###setting-zero-is-special @@ -1932,6 +1932,7 @@ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :设置电子信 STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :在以下信号类型中循环: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :选择用Ctrl+点击的方式切换信号灯类型时的备选类型 ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_GROUP :仅当前信号组 STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :全部可见 STR_CONFIG_SETTING_SIGNAL_GUI_MODE :显示信号类型: {STRING} @@ -2829,7 +2830,7 @@ STR_STATION_CLASS_WAYP_WAYPOINT :默认路点 # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}信号选择 -STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}选择是否显示高级信号灯类型 +STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}切换显示逻辑信号机 STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}通过信号灯(悬臂){}是最基本的信号灯,只允许一列车进入该信号灯以后的区间 STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}入口信号灯(悬臂){}在下一轨道区间上至少有一个出口信号灯是绿色时此信号亮绿灯,否则亮红灯 STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}出口信号灯(悬臂){}信号显示条件与通过信号灯相同,但是它的状态可以触发入口及复合信号灯 @@ -3762,7 +3763,7 @@ STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}评价 STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}显示车站评价 STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH :{BLACK}每月供应数量与本地评价: -STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :每分钟供应量与本地评价: +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :{BLACK}每分钟供应量与本地评价: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}群组方式 @@ -4375,6 +4376,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}当前 # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}装载/卸货 STR_VEHICLE_STATUS_LEAVING :{LTBLUE}发车 +STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}等待班次均匀发车时间 STR_VEHICLE_STATUS_CRASHED :{RED}已撞毁! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}抛锚 STR_VEHICLE_STATUS_STOPPED :{RED}停运 @@ -4388,6 +4390,7 @@ STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}没有 STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}正在前往{WAYPOINT},{VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}正在前往 {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}正在服务于 {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}正前往 {DEPOT} 以维护与调节班次, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}不能到达 {STATION}, {VELOCITY} STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}不能到达 {WAYPOINT}, {VELOCITY} @@ -4518,6 +4521,7 @@ STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}切换 STR_ORDERS_LIST_TOOLTIP :{BLACK}调度列表{}单击一个调度指令以选定{}CTRL+左键{}将视点移动到相应的车站 STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :-- 调度计划结束 -- STR_ORDERS_END_OF_SHARED_ORDERS :- - 共享调度计划结束 - - @@ -4554,6 +4558,11 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :可用类型 STR_ORDER_DROP_GO_ALWAYS_DEPOT :一直前进 STR_ORDER_DROP_SERVICE_DEPOT :若需要则维护 STR_ORDER_DROP_HALT_DEPOT :停留 +STR_ORDER_DROP_UNBUNCH :班次均匀 + +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}跳过所需的车辆数据值 @@ -4622,6 +4631,7 @@ STR_ORDER_REFIT_ORDER :(改装为 {STR STR_ORDER_REFIT_STOP_ORDER :(改装为{STRING}并停留) STR_ORDER_STOP_ORDER :(停留) +STR_ORDER_WAIT_TO_UNBUNCH :(班次均匀) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(不能使用车站){POP_COLOUR} {STRING} {STATION} {STRING} @@ -5093,6 +5103,11 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}在附 STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :车库类型错误 # Depot unbunching related errors +STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}……载具只能有一项班次均匀命令 +STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}……不能对有班次均匀的载具应用满载命令 +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}……不能对有满载命令的载具应用班次均匀 +STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}……不能对有班次均匀的载具应用条件性命令 +STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}……不能对有条件性命令的载具应用班次均匀 # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE}在更新后总长会过长 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 34a211b4d0..1b19d1497c 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -4400,6 +4400,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vždy choď STR_ORDER_DROP_SERVICE_DEPOT :Servis, ak je potrebný STR_ORDER_DROP_HALT_DEPOT :Zastav +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Údaje vozidla na základe ktorých sa vykoná skok # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index fd5e978eae..d89253cd40 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -3999,6 +3999,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vedno pojdi STR_ORDER_DROP_SERVICE_DEPOT :Servisiraj po potrebi STR_ORDER_DROP_HALT_DEPOT :Stop +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Podatki vozila na osnovni preskok # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index e463f153c3..eb35523a30 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -4544,6 +4544,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ir siempre STR_ORDER_DROP_SERVICE_DEPOT :Mantenimiento si es necesario STR_ORDER_DROP_HALT_DEPOT :Detenerse +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Datos del vehículo en los que se basará para realizar el salto de orden # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index b9a3de3ccf..56973c07d5 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -4284,6 +4284,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ir siempre STR_ORDER_DROP_SERVICE_DEPOT :Mantto. si es necesario STR_ORDER_DROP_HALT_DEPOT :Detenerse +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Datos del vehículo para recorridos condicionales # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index a34cf3ffdf..9e8b6eb911 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -4362,6 +4362,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Åk alltid STR_ORDER_DROP_SERVICE_DEPOT :Service vid behov STR_ORDER_DROP_HALT_DEPOT :Stanna +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Fordonsdata att basera hopp på # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index a3129f5430..9729f6aa95 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -3831,6 +3831,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :எப்போ STR_ORDER_DROP_SERVICE_DEPOT :தேவைப்பட்டால் பராமரிப்பிற்கு செல் STR_ORDER_DROP_HALT_DEPOT :நிறுத்து +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}அடிப்படை ஜம்பிங் செய்ய வாகனத் தரவு # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 1f8e184d20..f0e4c5de86 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -3955,6 +3955,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :ไปทุก STR_ORDER_DROP_SERVICE_DEPOT :เข้าซ่อมบำรุงหากต้องการ STR_ORDER_DROP_HALT_DEPOT :หยุด +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}ข้อมูลยานพาหนะที่จะข้ามไป # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 537d032aff..70c108842b 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -4355,6 +4355,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :總是進行 STR_ORDER_DROP_SERVICE_DEPOT :若需要則維護 STR_ORDER_DROP_HALT_DEPOT :停留 +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}跳躍指令依據 # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index fff9c88647..db7ff8022a 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -4393,6 +4393,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Her zaman git STR_ORDER_DROP_SERVICE_DEPOT :Gerekiyorsa bakıma gir STR_ORDER_DROP_HALT_DEPOT :Dur +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dallanmanın temel alacağı araç verisi # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 269ad8cf9a..52d3b67253 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -4444,6 +4444,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Завжди п STR_ORDER_DROP_SERVICE_DEPOT :Прямувати при потребі в техогляді STR_ORDER_DROP_HALT_DEPOT :Прямувати і зупинитись +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Дані транспорту для базування наказу # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index 50248b0f26..3f5410a63b 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -2627,6 +2627,10 @@ STR_ORDER_INDEX :{COMMA}:{NBSP} +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 937aa977bd..ec8e88bc06 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -4421,6 +4421,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Chạy suốt STR_ORDER_DROP_SERVICE_DEPOT :Bảo trì nếu cần STR_ORDER_DROP_HALT_DEPOT :Dừng +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dữ kiện của phương tiện để xác định # Conditional order variables, must follow order of OrderConditionVariable enum diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index fed34c0368..9232a66892 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -3979,6 +3979,10 @@ STR_ORDER_DROP_GO_ALWAYS_DEPOT :Mynd bob tro STR_ORDER_DROP_SERVICE_DEPOT :Gwasanaethu os oes angen STR_ORDER_DROP_HALT_DEPOT :Stopio +# Depot action tooltips, one per vehicle type +###length VEHICLE_TYPES +###next-name-looks-similar + STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Data cerbyd i seilio'r naid arno # Conditional order variables, must follow order of OrderConditionVariable enum From 4b94457bf1ac5dbb8e165759c80a68a8b3746759 Mon Sep 17 00:00:00 2001 From: Koen Bussemaker Date: Sun, 4 Feb 2024 15:01:28 +0100 Subject: [PATCH 15/17] Fix #11802: Made determining water region edge traversability more robust --- src/pathfinder/water_regions.cpp | 57 ++++++++++++++++---------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/src/pathfinder/water_regions.cpp b/src/pathfinder/water_regions.cpp index 03cecf8e04..557b588d42 100644 --- a/src/pathfinder/water_regions.cpp +++ b/src/pathfinder/water_regions.cpp @@ -77,7 +77,11 @@ public: bool IsInitialized() const { return this->initialized; } - void Invalidate() { this->initialized = false; } + void Invalidate() + { + if (!IsInitialized()) Debug(map, 3, "Invalidated water region ({},{})", GetWaterRegionX(this->tile_area.tile), GetWaterRegionY(this->tile_area.tile)); + this->initialized = false; + } /** * Returns a set of bits indicating whether an edge tile on a particular side is traversable or not. These @@ -120,16 +124,7 @@ public: this->has_cross_region_aqueducts = false; this->tile_patch_labels.fill(INVALID_WATER_REGION_PATCH); - - for (const TileIndex tile : this->tile_area) { - if (IsAqueductTile(tile)) { - const TileIndex other_aqueduct_end = GetOtherBridgeEnd(tile); - if (!tile_area.Contains(other_aqueduct_end)) { - this->has_cross_region_aqueducts = true; - break; - } - } - } + this->edge_traversability_bits.fill(0); TWaterRegionPatchLabel current_label = 1; TWaterRegionPatchLabel highest_assigned_label = 0; @@ -158,7 +153,18 @@ public: for (const Trackdir dir : SetTrackdirBitIterator(valid_dirs)) { /* By using a TrackFollower we "play by the same rules" as the actual ship pathfinder */ CFollowTrackWater ft; - if (ft.Follow(tile, dir) && this->tile_area.Contains(ft.m_new_tile)) tiles_to_check.push_back(ft.m_new_tile); + if (ft.Follow(tile, dir)) { + if (this->tile_area.Contains(ft.m_new_tile)) { + tiles_to_check.push_back(ft.m_new_tile); + } else if (!ft.m_is_bridge) { + assert(DistanceManhattan(ft.m_new_tile, tile) == 1); + const auto side = DiagdirBetweenTiles(tile, ft.m_new_tile); + const int local_x_or_y = DiagDirToAxis(side) == AXIS_X ? TileY(tile) - TileY(this->tile_area.tile) : TileX(tile) - TileX(this->tile_area.tile); + SetBit(this->edge_traversability_bits[side], local_x_or_y); + } else { + this->has_cross_region_aqueducts = true; + } + } } } @@ -167,18 +173,6 @@ public: this->number_of_patches = highest_assigned_label; this->initialized = true; - - /* Calculate the traversability (whether the tile can be entered / exited) for all edges. Note that - * we always follow the same X and Y scanning direction, this is important for comparisons later on! */ - this->edge_traversability_bits.fill(0); - const int top_x = TileX(tile_area.tile); - const int top_y = TileY(tile_area.tile); - for (int i = 0; i < WATER_REGION_EDGE_LENGTH; ++i) { - if (GetWaterTracks(TileXY(top_x + i, top_y)) & TRACK_BIT_3WAY_NW) SetBit(this->edge_traversability_bits[DIAGDIR_NW], i); // NW edge - if (GetWaterTracks(TileXY(top_x + i, top_y + WATER_REGION_EDGE_LENGTH - 1)) & TRACK_BIT_3WAY_SE) SetBit(this->edge_traversability_bits[DIAGDIR_SE], i); // SE edge - if (GetWaterTracks(TileXY(top_x, top_y + i)) & TRACK_BIT_3WAY_NE) SetBit(this->edge_traversability_bits[DIAGDIR_NE], i); // NE edge - if (GetWaterTracks(TileXY(top_x + WATER_REGION_EDGE_LENGTH - 1, top_y + i)) & TRACK_BIT_3WAY_SW) SetBit(this->edge_traversability_bits[DIAGDIR_SW], i); // SW edge - } } /** @@ -278,10 +272,17 @@ WaterRegionPatchDesc GetWaterRegionPatchInfo(TileIndex tile) */ void InvalidateWaterRegion(TileIndex tile) { - const int index = GetWaterRegionIndex(tile); - _water_regions[index].Invalidate(); - - Debug(map, 3, "Invalidated water region ({},{})", GetWaterRegionX(tile), GetWaterRegionY(tile)); + if (!IsValidTile(tile)) return; + const int water_region_index = GetWaterRegionIndex(tile); + _water_regions[water_region_index].Invalidate(); + + /* When updating the water region we look into the first tile of adjacent water regions to determine edge + * traversability. This means that if we invalidate any region edge tiles we might also change the traversability + * of the adjacent region. This code ensures the adjacent regions also get invalidated in such a case. */ + for (DiagDirection side = DIAGDIR_BEGIN; side < DIAGDIR_END; side++) { + const int adjacent_region_index = GetWaterRegionIndex(TileAddByDiagDir(tile, side)); + if (adjacent_region_index != water_region_index) _water_regions[adjacent_region_index].Invalidate(); + } } /** From 35c89d57f8dc2ab6f3237301f8deb36665e4f65b Mon Sep 17 00:00:00 2001 From: Koen Bussemaker Date: Sun, 4 Feb 2024 15:07:44 +0100 Subject: [PATCH 16/17] Codechange: Added debug printing for Water Regions --- src/misc_gui.cpp | 3 +++ src/pathfinder/water_regions.cpp | 32 ++++++++++++++++++++++++++++++++ src/pathfinder/water_regions.h | 2 ++ 3 files changed, 37 insertions(+) diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 2e9928e793..adea0e237f 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -29,6 +29,7 @@ #include "rev.h" #include "timer/timer.h" #include "timer/timer_window.h" +#include "pathfinder/water_regions.h" #include "widgets/misc_widget.h" @@ -128,6 +129,8 @@ public: Debug(misc, LANDINFOD_LEVEL, "m6 = 0x{:x}", tile.m6()); Debug(misc, LANDINFOD_LEVEL, "m7 = 0x{:x}", tile.m7()); Debug(misc, LANDINFOD_LEVEL, "m8 = 0x{:x}", tile.m8()); + + PrintWaterRegionDebugInfo(tile); #undef LANDINFOD_LEVEL } diff --git a/src/pathfinder/water_regions.cpp b/src/pathfinder/water_regions.cpp index 557b588d42..115213491a 100644 --- a/src/pathfinder/water_regions.cpp +++ b/src/pathfinder/water_regions.cpp @@ -182,6 +182,33 @@ public: { if (!this->initialized) ForceUpdate(); } + + void PrintDebugInfo() + { + Debug(map, 9, "Water region {},{} labels and edge traversability = ...", GetWaterRegionX(tile_area.tile), GetWaterRegionY(tile_area.tile)); + + const size_t max_element_width = std::to_string(this->number_of_patches).size(); + + std::array traversability_NW{0}; + for (auto bitIndex : SetBitIterator(edge_traversability_bits[DIAGDIR_NW])) *(traversability_NW.rbegin() + bitIndex) = 1; + Debug(map, 9, " {:{}}", fmt::join(traversability_NW, " "), max_element_width); + Debug(map, 9, " +{:->{}}+", "", WATER_REGION_EDGE_LENGTH * (max_element_width + 1) + 1); + + for (int y = 0; y < WATER_REGION_EDGE_LENGTH; ++y) { + std::string line{}; + for (int x = 0; x < WATER_REGION_EDGE_LENGTH; ++x) { + const auto label = this->tile_patch_labels[x + y * WATER_REGION_EDGE_LENGTH]; + const std::string label_str = label == INVALID_WATER_REGION_PATCH ? "." : std::to_string(label); + line = fmt::format("{:{}}", label_str, max_element_width) + " " + line; + } + Debug(map, 9, "{} | {}| {}", GB(this->edge_traversability_bits[DIAGDIR_SW], y, 1), line, GB(this->edge_traversability_bits[DIAGDIR_NE], y, 1)); + } + + Debug(map, 9, " +{:->{}}+", "", WATER_REGION_EDGE_LENGTH * (max_element_width + 1) + 1); + std::array traversability_SE{0}; + for (auto bitIndex : SetBitIterator(edge_traversability_bits[DIAGDIR_SE])) *(traversability_SE.rbegin() + bitIndex) = 1; + Debug(map, 9, " {:{}}", fmt::join(traversability_SE, " "), max_element_width); + } }; std::vector _water_regions; @@ -372,3 +399,8 @@ void AllocateWaterRegions() } } } + +void PrintWaterRegionDebugInfo(TileIndex tile) +{ + GetUpdatedWaterRegion(tile).PrintDebugInfo(); +} diff --git a/src/pathfinder/water_regions.h b/src/pathfinder/water_regions.h index 0ecb94cd8a..88a9df8ef3 100644 --- a/src/pathfinder/water_regions.h +++ b/src/pathfinder/water_regions.h @@ -64,4 +64,6 @@ void VisitWaterRegionPatchNeighbors(const WaterRegionPatchDesc &water_region_pat void AllocateWaterRegions(); +void PrintWaterRegionDebugInfo(TileIndex tile); + #endif /* WATER_REGIONS_H */ From 60b6c6c7eeef5f1035abb70872d1fd7b377d7b5d Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Sun, 4 Feb 2024 23:35:16 +0100 Subject: [PATCH 17/17] Doc: Prepare for 14.0-beta2 release (#11988) Co-authored-by: Charles Pigott Co-authored-by: Michael Lutz --- changelog.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/changelog.txt b/changelog.txt index 93f314b3df..046c3868e4 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,15 @@ +14.0-beta2 (2023-02-04) +------------------------------------------------------------------------ +Change: [NewGRF] Improved support for redefining default cargo types (#11719) +Fix #11982: Crash when trying to place signals on things other than plain rails (#11977) +Fix #11975: Inconsistent behaviour when changing first AI company settings (#11976) +Fix #11972: Year cut off in graph windows (#11974) +Fix #11968: Crash when opening orders window of new vehicles (#11973) +Fix #11966: Monospace text in windows may not have been fully scrollable (#11981) +Fix #11802: Made determining water region edge traversability more robust (#11986) +Fix: Second colour vehicle-type default liveries were not being updated (#11971) + + 14.0-beta1 (2023-02-03) ------------------------------------------------------------------------ Feature: Order option to unbunch vehicles at depot (#11945)