From 80bd5ad727a4abe29fe53484f93aead8e85e0e9c Mon Sep 17 00:00:00 2001 From: Charles Pigott Date: Wed, 26 Apr 2023 12:56:14 +0100 Subject: [PATCH 01/19] Codechange: Use std::strto* variants everywhere (#10720) --- src/company_gui.cpp | 4 ++-- src/console.cpp | 2 +- src/console_cmds.cpp | 2 +- src/debug.cpp | 4 ++-- src/fileio.cpp | 2 +- src/fios.cpp | 2 +- src/newgrf_debug_gui.cpp | 2 +- src/openttd.cpp | 6 +++--- src/settings.cpp | 6 +++--- src/stdafx.h | 1 - src/strgen/strgen.cpp | 6 +++--- src/strgen/strgen_base.cpp | 6 +++--- src/strings.cpp | 4 ++-- src/timetable_gui.cpp | 2 +- 14 files changed, 24 insertions(+), 25 deletions(-) diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 8d9f2d2db6..cf523142ea 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -1766,7 +1766,7 @@ public: if (str == nullptr) return; /* Set a new company manager face number */ if (!StrEmpty(str)) { - this->face = strtoul(str, nullptr, 10); + this->face = std::strtoul(str, nullptr, 10); ScaleAllCompanyManagerFaceBits(this->face); ShowErrorMessage(STR_FACE_FACECODE_SET, INVALID_STRING_ID, WL_INFO); this->UpdateData(); @@ -2714,7 +2714,7 @@ struct CompanyWindow : Window default: NOT_REACHED(); case WID_C_GIVE_MONEY: { - Money money = (Money)(strtoull(str, nullptr, 10) / _currency->rate); + Money money = (Money)(std::strtoull(str, nullptr, 10) / _currency->rate); uint32 money_c = Clamp(ClampToI32(money), 0, 20000000); // Clamp between 20 million and 0 Command::Post(STR_ERROR_CAN_T_GIVE_MONEY, money_c, (CompanyID)this->window_number); diff --git a/src/console.cpp b/src/console.cpp index 393dca2754..fd0082e4be 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -146,7 +146,7 @@ bool GetArgumentInteger(uint32 *value, const char *arg) return true; } - *value = strtoul(arg, &endptr, 0); + *value = std::strtoul(arg, &endptr, 0); return arg != endptr; } diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index e307d49f4f..74e380eec9 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -1131,7 +1131,7 @@ DEF_CONSOLE_CMD(ConNewGame) return true; } - StartNewGameWithoutGUI((argc == 2) ? strtoul(argv[1], nullptr, 10) : GENERATE_NEW_SEED); + StartNewGameWithoutGUI((argc == 2) ? std::strtoul(argv[1], nullptr, 10) : GENERATE_NEW_SEED); return true; } diff --git a/src/debug.cpp b/src/debug.cpp index 25c90fa12c..85c187afe8 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -174,7 +174,7 @@ void SetDebugString(const char *s, void (*error_func)(const std::string &)) if (*s >= '0' && *s <= '9') { const DebugLevel *i; - v = strtoul(s, &end, 0); + v = std::strtoul(s, &end, 0); s = end; for (i = debug_level; i != endof(debug_level); ++i) { @@ -201,7 +201,7 @@ void SetDebugString(const char *s, void (*error_func)(const std::string &)) } if (*s == '=') s++; - v = strtoul(s, &end, 0); + v = std::strtoul(s, &end, 0); s = end; if (found != nullptr) { new_levels[found->name] = v; diff --git a/src/fileio.cpp b/src/fileio.cpp index 04f6408664..9a41a281e6 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -538,7 +538,7 @@ bool TarScanner::AddFile(const std::string &filename, size_t basepath_length, co /* Calculate the size of the file.. for some strange reason this is stored as a string */ strecpy(buf, th.size, lastof(buf)); - size_t skip = strtoul(buf, &end, 8); + size_t skip = std::strtoul(buf, &end, 8); switch (th.typeflag) { case '\0': diff --git a/src/fios.cpp b/src/fios.cpp index b07db3c8b1..793a4fd433 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -111,7 +111,7 @@ const FiosItem *FileList::FindItem(const char *file) /* If no name matches, try to parse it as number */ char *endptr; - int i = strtol(file, &endptr, 10); + int i = std::strtol(file, &endptr, 10); if (file == endptr || *endptr != '\0') i = -1; if (IsInsideMM(i, 0, this->size())) return &this->at(i); diff --git a/src/newgrf_debug_gui.cpp b/src/newgrf_debug_gui.cpp index 2a8a4b40ba..01c0826d33 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -618,7 +618,7 @@ struct NewGRFInspectWindow : Window { { if (StrEmpty(str)) return; - NewGRFInspectWindow::var60params[GetFeatureNum(this->window_number)][this->current_edit_param - 0x60] = strtol(str, nullptr, 16); + NewGRFInspectWindow::var60params[GetFeatureNum(this->window_number)][this->current_edit_param - 0x60] = std::strtol(str, nullptr, 16); this->SetDirty(); } diff --git a/src/openttd.cpp b/src/openttd.cpp index 01de330ade..283ea903d9 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -286,8 +286,8 @@ static void ParseResolution(Dimension *res, const char *s) return; } - res->width = std::max(strtoul(s, nullptr, 0), 64UL); - res->height = std::max(strtoul(t + 1, nullptr, 0), 64UL); + res->width = std::max(std::strtoul(s, nullptr, 0), 64UL); + res->height = std::max(std::strtoul(t + 1, nullptr, 0), 64UL); } @@ -637,7 +637,7 @@ int openttd_main(int argc, char *argv[]) _skip_all_newgrf_scanning += 1; break; } - case 'G': scanner->generation_seed = strtoul(mgo.opt, nullptr, 10); break; + case 'G': scanner->generation_seed = std::strtoul(mgo.opt, nullptr, 10); break; case 'c': _config_file = mgo.opt; break; case 'x': scanner->save_config = false; break; case 'X': only_local_path = true; break; diff --git a/src/settings.cpp b/src/settings.cpp index bab8e2d095..87e9c02208 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -174,7 +174,7 @@ const uint16 INIFILE_VERSION = (IniFileVersion)(IFV_MAX_VERSION - 1); ///< Curre size_t OneOfManySettingDesc::ParseSingleValue(const char *str, size_t len, const std::vector &many) { /* check if it's an integer */ - if (isdigit(*str)) return strtoul(str, nullptr, 0); + if (isdigit(*str)) return std::strtoul(str, nullptr, 0); size_t idx = 0; for (auto one : many) { @@ -245,7 +245,7 @@ static int ParseIntList(const char *p, T *items, int maxitems) default: { if (n == maxitems) return -1; // we don't accept that many numbers char *end; - unsigned long v = strtoul(p, &end, 0); + unsigned long v = std::strtoul(p, &end, 0); if (p == end) return -1; // invalid character (not a number) if (sizeof(T) < sizeof(v)) v = Clamp(v, std::numeric_limits::min(), std::numeric_limits::max()); items[n++] = v; @@ -377,7 +377,7 @@ void ManyOfManySettingDesc::FormatValue(char *buf, const char *last, const void size_t IntSettingDesc::ParseValue(const char *str) const { char *end; - size_t val = strtoul(str, &end, 0); + size_t val = std::strtoul(str, &end, 0); if (end == str) { ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_VALUE); msg.SetDParamStr(0, str); diff --git a/src/stdafx.h b/src/stdafx.h index f09cf88f72..cf2500bc97 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -251,7 +251,6 @@ # define strcasecmp stricmp # define strncasecmp strnicmp -# define strtoull _strtoui64 /* MSVC doesn't have these :( */ # define S_ISDIR(mode) (mode & S_IFDIR) diff --git a/src/strgen/strgen.cpp b/src/strgen/strgen.cpp index b0dad3f58e..3407a3e441 100644 --- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -117,7 +117,7 @@ struct FileStringReader : StringReader { void FileStringReader::HandlePragma(char *str) { if (!memcmp(str, "id ", 3)) { - this->data.next_string_id = strtoul(str + 3, nullptr, 0); + this->data.next_string_id = std::strtoul(str + 3, nullptr, 0); } else if (!memcmp(str, "name ", 5)) { strecpy(_lang.name, str + 5, lastof(_lang.name)); } else if (!memcmp(str, "ownname ", 8)) { @@ -143,14 +143,14 @@ void FileStringReader::HandlePragma(char *str) strecpy(_lang.digit_decimal_separator, strcmp(str, "{NBSP}") == 0 ? NBSP : str, lastof(_lang.digit_decimal_separator)); } else if (!memcmp(str, "winlangid ", 10)) { const char *buf = str + 10; - long langid = strtol(buf, nullptr, 16); + long langid = std::strtol(buf, nullptr, 16); if (langid > (long)UINT16_MAX || langid < 0) { FatalError("Invalid winlangid {}", buf); } _lang.winlangid = (uint16)langid; } else if (!memcmp(str, "grflangid ", 10)) { const char *buf = str + 10; - long langid = strtol(buf, nullptr, 16); + long langid = std::strtol(buf, nullptr, 16); if (langid >= 0x7F || langid < 0) { FatalError("Invalid grflangid {}", buf); } diff --git a/src/strgen/strgen_base.cpp b/src/strgen/strgen_base.cpp index 6c8ddccc1c..4f293dc41c 100644 --- a/src/strgen/strgen_base.cpp +++ b/src/strgen/strgen_base.cpp @@ -309,7 +309,7 @@ bool ParseRelNum(char **buf, int *value, int *offset) rel = true; s++; } - int v = strtol(s, &end, 0); + int v = std::strtol(s, &end, 0); if (end == s) return false; if (rel || v < 0) { *value += v; @@ -319,7 +319,7 @@ bool ParseRelNum(char **buf, int *value, int *offset) if (offset != nullptr && *end == ':') { /* Take the Nth within */ s = end + 1; - *offset = strtol(s, &end, 0); + *offset = std::strtol(s, &end, 0); if (end == s) return false; } *buf = end; @@ -509,7 +509,7 @@ static const CmdStruct *ParseCommandString(const char **str, char *param, int *a if (*s >= '0' && *s <= '9') { char *end; - *argno = strtoul(s, &end, 0); + *argno = std::strtoul(s, &end, 0); if (*end != ':') StrgenFatal("missing arg #"); s = end + 1; } diff --git a/src/strings.cpp b/src/strings.cpp index e6f96c4ee5..d359b858c6 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -874,7 +874,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg memset(sub_args_need_free, 0, sizeof(sub_args_need_free)); char *p; - uint32 stringid = strtoul(str, &p, 16); + uint32 stringid = std::strtoul(str, &p, 16); if (*p != ':' && *p != '\0') { while (*p != '\0') p++; str = p; @@ -926,7 +926,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg bool lookup = (l == SCC_ENCODED); if (lookup) s += len; - param = strtoull(s, &p, 16); + param = std::strtoull(s, &p, 16); if (lookup) { if (param >= TAB_SIZE_GAMESCRIPT) { diff --git a/src/timetable_gui.cpp b/src/timetable_gui.cpp index 65b3b26de7..d803ca4537 100644 --- a/src/timetable_gui.cpp +++ b/src/timetable_gui.cpp @@ -667,7 +667,7 @@ struct TimetableWindow : Window { if (str == nullptr) return; const Vehicle *v = this->vehicle; - uint64 val = StrEmpty(str) ? 0 : strtoul(str, nullptr, 10); + uint64 val = StrEmpty(str) ? 0 : std::strtoul(str, nullptr, 10); auto [order_id, mtf] = PackTimetableArgs(v, this->sel_index, query_widget == WID_VT_CHANGE_SPEED); switch (query_widget) { From 173ed81dbe8ca4cca450ff4853950f198e682e18 Mon Sep 17 00:00:00 2001 From: Owen Rudge Date: Wed, 26 Apr 2023 14:21:29 +0100 Subject: [PATCH 02/19] Change: [Actions] Upgrade import-codesign-certs dependency in macOS build workflow --- .github/workflows/release-macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-macos.yml b/.github/workflows/release-macos.yml index b7a3201566..2d93bb5023 100644 --- a/.github/workflows/release-macos.yml +++ b/.github/workflows/release-macos.yml @@ -81,7 +81,7 @@ jobs: echo "::endgroup::" - name: Import code signing certificates - uses: Apple-Actions/import-codesign-certs@v1 + uses: Apple-Actions/import-codesign-certs@v2 with: # The certificates in a PKCS12 file encoded as a base64 string p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }} From 3105d0b09ed6322e4f588c601cdc621608e9a922 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Wed, 19 Apr 2023 20:37:21 +0200 Subject: [PATCH 03/19] Codechange: replace text-buf printf with fmt::format --- src/network/network_chat_gui.cpp | 5 ++--- src/newgrf_debug_gui.cpp | 2 +- src/textbuf.cpp | 16 ++-------------- src/textbuf_type.h | 3 +-- 4 files changed, 6 insertions(+), 20 deletions(-) diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp index 2ed59e9a52..6a0d2cb916 100644 --- a/src/network/network_chat_gui.cpp +++ b/src/network/network_chat_gui.cpp @@ -28,7 +28,6 @@ #include "table/strings.h" -#include /* va_list */ #include #include "../safeguards.h" @@ -429,9 +428,9 @@ struct NetworkChatWindow : public Window { /* Change to the found name. Add ': ' if we are at the start of the line (pretty) */ if (pre_buf == tb_buf) { - this->message_editbox.text.Print("%s: ", cur_name); + this->message_editbox.text.Assign(fmt::format("{}: ", cur_name)); } else { - this->message_editbox.text.Print("%s %s", pre_buf, cur_name); + this->message_editbox.text.Assign(fmt::format("{} {}", pre_buf, cur_name)); } this->SetDirty(); diff --git a/src/newgrf_debug_gui.cpp b/src/newgrf_debug_gui.cpp index 01c0826d33..ae9ef58002 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -403,7 +403,7 @@ struct NewGRFInspectWindow : Window { offset -= this->vscroll->GetPosition(); if (offset < 0 || offset >= this->vscroll->GetCapacity()) return; - ::DrawString(r.Shrink(WidgetDimensions::scaled.frametext).Shrink(0, offset * this->resize.step_height, 0, 0), buf, TC_BLACK); + ::DrawString(r.Shrink(WidgetDimensions::scaled.frametext).Shrink(0, offset * this->resize.step_height, 0, 0), string, TC_BLACK); } /** diff --git a/src/textbuf.cpp b/src/textbuf.cpp index 30cef7b0ce..e9e996a30e 100644 --- a/src/textbuf.cpp +++ b/src/textbuf.cpp @@ -400,21 +400,9 @@ void Textbuf::Assign(StringID string) * Copy a string into the textbuffer. * @param text Source. */ -void Textbuf::Assign(const char *text) +void Textbuf::Assign(const std::string_view text) { - strecpy(this->buf, text, &this->buf[this->max_bytes - 1]); - this->UpdateSize(); -} - -/** - * Print a formatted string into the textbuffer. - */ -void Textbuf::Print(const char *format, ...) -{ - va_list va; - va_start(va, format); - vseprintf(this->buf, &this->buf[this->max_bytes - 1], format, va); - va_end(va); + strecpy(this->buf, text.data(), &this->buf[this->max_bytes - 1]); this->UpdateSize(); } diff --git a/src/textbuf_type.h b/src/textbuf_type.h index 14e92cbb3d..2385129adc 100644 --- a/src/textbuf_type.h +++ b/src/textbuf_type.h @@ -47,8 +47,7 @@ struct Textbuf { ~Textbuf(); void Assign(StringID string); - void Assign(const char *text); - void CDECL Print(const char *format, ...) WARN_FORMAT(2, 3); + void Assign(const std::string_view text); void DeleteAll(); bool InsertClipboard(); From 630d3bc0536252751627ab307b2284006cc4757a Mon Sep 17 00:00:00 2001 From: Rubidium Date: Wed, 19 Apr 2023 21:38:09 +0200 Subject: [PATCH 04/19] Codechange: use fmt::format instead of printf for the NewGRF profiler --- src/newgrf_debug_gui.cpp | 25 +++++++++---------------- src/newgrf_profiling.cpp | 2 +- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/newgrf_debug_gui.cpp b/src/newgrf_debug_gui.cpp index ae9ef58002..2ee3bcf79c 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -389,17 +389,10 @@ struct NewGRFInspectWindow : Window { * Helper function to draw a string (line) in the window. * @param r The (screen) rectangle we must draw within * @param offset The offset (in lines) we want to draw for - * @param format The format string + * @param string The string to draw */ - void WARN_FORMAT(4, 5) DrawString(const Rect &r, int offset, const char *format, ...) const + void DrawString(const Rect &r, int offset, const std::string &string) const { - char buf[1024]; - - va_list va; - va_start(va, format); - vseprintf(buf, lastof(buf), format, va); - va_end(va); - offset -= this->vscroll->GetPosition(); if (offset < 0 || offset >= this->vscroll->GetCapacity()) return; @@ -470,9 +463,9 @@ struct NewGRFInspectWindow : Window { if (!avail) continue; if (HasVariableParameter(niv->var)) { - this->DrawString(r, i++, " %02x[%02x]: %08x (%s)", niv->var, param, value, niv->name); + this->DrawString(r, i++, fmt::format(" {:02x}[{:02x}]: {:08x} ({})", niv->var, param, value, niv->name)); } else { - this->DrawString(r, i++, " %02x: %08x (%s)", niv->var, value, niv->name); + this->DrawString(r, i++, fmt::format(" {:02x}: {:08x} ({})", niv->var, value, niv->name)); } } } @@ -481,13 +474,13 @@ struct NewGRFInspectWindow : Window { const int32 *psa = nih->GetPSAFirstPosition(index, this->caller_grfid); if (psa_size != 0 && psa != nullptr) { if (nih->PSAWithParameter()) { - this->DrawString(r, i++, "Persistent storage [%08X]:", BSWAP32(this->caller_grfid)); + this->DrawString(r, i++, fmt::format("Persistent storage [{:08X}]:", BSWAP32(this->caller_grfid))); } else { this->DrawString(r, i++, "Persistent storage:"); } assert(psa_size % 4 == 0); for (uint j = 0; j < psa_size; j += 4, psa += 4) { - this->DrawString(r, i++, " %i: %i %i %i %i", j, psa[0], psa[1], psa[2], psa[3]); + this->DrawString(r, i++, fmt::format(" {}: {} {} {} {}", j, psa[0], psa[1], psa[2], psa[3])); } } @@ -520,7 +513,7 @@ struct NewGRFInspectWindow : Window { char buffer[64]; GetString(buffer, string, lastof(buffer)); - this->DrawString(r, i++, " %02x: %s (%s)", nip->prop, buffer, nip->name); + this->DrawString(r, i++, fmt::format(" {:02x}: {} ({})", nip->prop, buffer, nip->name)); } } @@ -538,9 +531,9 @@ struct NewGRFInspectWindow : Window { } if (!HasBit(value, nic->cb_bit)) continue; - this->DrawString(r, i++, " %03x: %s", nic->cb_id, nic->name); + this->DrawString(r, i++, fmt::format(" {:03x}: {}", nic->cb_id, nic->name)); } else { - this->DrawString(r, i++, " %03x: %s (unmasked)", nic->cb_id, nic->name); + this->DrawString(r, i++, fmt::format(" {:03x}: {} (unmasked)", nic->cb_id, nic->name)); } } } diff --git a/src/newgrf_profiling.cpp b/src/newgrf_profiling.cpp index e84d808527..15d9c8fd9b 100644 --- a/src/newgrf_profiling.cpp +++ b/src/newgrf_profiling.cpp @@ -111,7 +111,7 @@ uint32 NewGRFProfiler::Finish() fputs("Tick,Sprite,Feature,Item,CallbackID,Microseconds,Depth,Result\n", f); for (const Call &c : this->calls) { - fprintf(f, OTTD_PRINTF64U ",%u,0x%X,%u,0x%X,%u,%u,%u\n", c.tick, c.root_sprite, c.feat, c.item, (uint)c.cb, c.time, c.subs, c.result); + fputs(fmt::format("{},{},{:#X},{},{:#X},{},{},{}\n", c.tick, c.root_sprite, c.feat, c.item, (uint)c.cb, c.time, c.subs, c.result).c_str(), f); total_microseconds += c.time; } From 75cd790ab9ea7fc882df2edfb3a4e4d58095bd61 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Wed, 19 Apr 2023 21:44:56 +0200 Subject: [PATCH 05/19] Codechange: use fmt::format for FormatHexNumber --- src/stdafx.h | 15 --------------- src/strings.cpp | 3 ++- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/src/stdafx.h b/src/stdafx.h index cf2500bc97..a2f7fb416f 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -298,21 +298,6 @@ #endif #define PACK(type_dec) PACK_N(type_dec, 1) -/* MSVCRT of course has to have a different syntax for long long *sigh* */ -#if defined(_MSC_VER) -# define OTTD_PRINTF64 "%I64d" -# define OTTD_PRINTF64U "%I64u" -# define OTTD_PRINTFHEX64 "%I64x" -#elif defined(__MINGW32__) -# define OTTD_PRINTF64 "%I64d" -# define OTTD_PRINTF64U "%I64llu" -# define OTTD_PRINTFHEX64 "%I64x" -#else -# define OTTD_PRINTF64 "%lld" -# define OTTD_PRINTF64U "%llu" -# define OTTD_PRINTFHEX64 "%llx" -#endif - /* * When making a (pure) debug build, the compiler will by default disable * inlining of functions. This has a detremental effect on the performance of diff --git a/src/strings.cpp b/src/strings.cpp index d359b858c6..7a604f635e 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -39,6 +39,7 @@ #include "newgrf_engine.h" #include "core/backup_type.hpp" #include +#include #include "table/strings.h" #include "table/control_codes.h" @@ -382,7 +383,7 @@ static char *FormatZerofillNumber(char *buff, int64 number, int64 count, const c static char *FormatHexNumber(char *buff, uint64 number, const char *last) { - return buff + seprintf(buff, last, "0x" OTTD_PRINTFHEX64, number); + return strecpy(buff, fmt::format("0x{:X}", number).c_str(), last); } /** From fce4b5ea6933e25f215b2b18715ccec10ba6f5fe Mon Sep 17 00:00:00 2001 From: Rubidium Date: Wed, 19 Apr 2023 22:15:20 +0200 Subject: [PATCH 06/19] Codechange: use Debug over printf for dedicated forking output --- src/dedicated.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/dedicated.cpp b/src/dedicated.cpp index fe3cd7cfb8..92cead038c 100644 --- a/src/dedicated.cpp +++ b/src/dedicated.cpp @@ -9,6 +9,7 @@ #include "stdafx.h" #include "fileio_func.h" +#include "debug.h" #include std::string _log_file; ///< File to reroute output of a forked OpenTTD to @@ -20,15 +21,6 @@ std::unique_ptr _log_fd; ///< File to reroute output of a for #include "safeguards.h" -#if defined(SUNOS) && !defined(_LP64) && !defined(_I32LPx) -/* Solaris has, in certain situation, pid_t defined as long, while in other - * cases it has it defined as int... this handles all cases nicely. - */ -# define PRINTF_PID_T "%ld" -#else -# define PRINTF_PID_T "%d" -#endif - void DedicatedFork() { /* Fork the program */ @@ -59,8 +51,8 @@ void DedicatedFork() default: /* We're the parent */ - printf("Loading dedicated server...\n"); - printf(" - Forked to background with pid " PRINTF_PID_T "\n", pid); + Debug(net, 0, "Loading dedicated server..."); + Debug(net, 0, " - Forked to background with pid {}", pid); exit(0); } } From c8ff6a9f7c319f0623fb763838a904ef88abcb5a Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 25 Apr 2023 17:51:45 +0200 Subject: [PATCH 07/19] Codechange: replace str_fmt with std::string constructs --- src/console_cmds.cpp | 4 ++-- src/string.cpp | 18 ------------------ src/string_func.h | 2 -- 3 files changed, 2 insertions(+), 22 deletions(-) diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 74e380eec9..b16320bbd6 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -385,7 +385,8 @@ DEF_CONSOLE_CMD(ConSave) } if (argc == 2) { - char *filename = str_fmt("%s.sav", argv[1]); + std::string filename = argv[1]; + filename += ".sav"; IConsolePrint(CC_DEFAULT, "Saving map..."); if (SaveOrLoad(filename, SLO_SAVE, DFT_GAME_FILE, SAVE_DIR) != SL_OK) { @@ -393,7 +394,6 @@ DEF_CONSOLE_CMD(ConSave) } else { IConsolePrint(CC_INFO, "Map successfully saved to '{}'.", filename); } - free(filename); return true; } diff --git a/src/string.cpp b/src/string.cpp index 6ce46ba29b..86170a54b5 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -144,24 +144,6 @@ char *stredup(const char *s, const char *last) return tmp; } -/** - * Format, "printf", into a newly allocated string. - * @param str The formatting string. - * @return The formatted string. You must free this! - */ -char *CDECL str_fmt(const char *str, ...) -{ - char buf[4096]; - va_list va; - - va_start(va, str); - int len = vseprintf(buf, lastof(buf), str, va); - va_end(va); - char *p = MallocT(len + 1); - memcpy(p, buf, len + 1); - return p; -} - /** * Format a byte array into a continuous hex string. * @param data Array to format diff --git a/src/string_func.h b/src/string_func.h index a5d3499c76..955bfc8bd4 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -38,8 +38,6 @@ char *stredup(const char *src, const char *last = nullptr) NOACCESS(2); int CDECL seprintf(char *str, const char *last, const char *format, ...) WARN_FORMAT(3, 4) NOACCESS(2); int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap) WARN_FORMAT(3, 0) NOACCESS(2); -char *CDECL str_fmt(const char *str, ...) WARN_FORMAT(1, 2); - std::string FormatArrayAsHex(span data); void StrMakeValidInPlace(char *str, const char *last, StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK) NOACCESS(2); From 9fe853f7b5c3fba5afdd1302417e9773e5e32810 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 25 Apr 2023 18:03:11 +0200 Subject: [PATCH 08/19] Codechange: use fmt::format instead of vseprintf for midi command formatting --- src/music/os2_m.cpp | 12 ++++-------- src/safeguards.h | 2 +- src/string.cpp | 23 +++++------------------ src/string_func.h | 1 - 4 files changed, 10 insertions(+), 28 deletions(-) diff --git a/src/music/os2_m.cpp b/src/music/os2_m.cpp index 4736065678..449caf3738 100644 --- a/src/music/os2_m.cpp +++ b/src/music/os2_m.cpp @@ -12,6 +12,7 @@ #include "os2_m.h" #include "midifile.hpp" #include "../base_media_base.h" +#include "../3rdparty/fmt/format.h" #define INCL_DOS #define INCL_OS2MM @@ -36,14 +37,9 @@ * @param cmd The command to send. * @return The result of sending it. */ -static long CDECL MidiSendCommand(const char *cmd, ...) +static long CDECL MidiSendCommand(const std::string_view cmd) { - va_list va; - char buf[512]; - va_start(va, cmd); - vseprintf(buf, lastof(buf), cmd, va); - va_end(va); - return mciSendString(buf, nullptr, 0, nullptr, 0); + return mciSendString(cmd.data(), nullptr, 0, nullptr, 0); } /** OS/2's music player's factory. */ @@ -56,7 +52,7 @@ void MusicDriver_OS2::PlaySong(const MusicSongInfo &song) MidiSendCommand("close all"); if (filename.empty()) return; - if (MidiSendCommand("open %s type sequencer alias song", filename.c_str()) != 0) { + if (MidiSendCommand(fmt::format("open {} type sequencer alias song", filename)) != 0) { return; } diff --git a/src/safeguards.h b/src/safeguards.h index aca461175f..d56b0015a0 100644 --- a/src/safeguards.h +++ b/src/safeguards.h @@ -44,7 +44,7 @@ #define sprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD #define snprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD -/* Use vseprintf instead. */ +/* Use fmt::format instead. */ #define vsprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD #define vsnprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD diff --git a/src/string.cpp b/src/string.cpp index 86170a54b5..ff91f95ca3 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -50,23 +50,6 @@ #include "safeguards.h" #undef vsnprintf -/** - * Safer implementation of vsnprintf; same as vsnprintf except: - * - last instead of size, i.e. replace sizeof with lastof. - * - return gives the amount of characters added, not what it would add. - * @param str buffer to write to up to last - * @param last last character we may write to - * @param format the formatting (see snprintf) - * @param ap the list of arguments for the format - * @return the number of added characters - */ -int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap) -{ - ptrdiff_t diff = last - str; - if (diff < 0) return 0; - return std::min(static_cast(diff), vsnprintf(str, diff + 1, format, ap)); -} - /** * Appends characters from one string to another. * @@ -536,10 +519,14 @@ int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap) */ int CDECL seprintf(char *str, const char *last, const char *format, ...) { + ptrdiff_t diff = last - str; + if (diff < 0) return 0; + va_list ap; va_start(ap, format); - int ret = vseprintf(str, last, format, ap); + int ret = std::min(static_cast(diff), vsnprintf(str, diff + 1, format, ap)); + va_end(ap); return ret; } diff --git a/src/string_func.h b/src/string_func.h index 955bfc8bd4..816f85cf57 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -36,7 +36,6 @@ char *strecpy(char *dst, const char *src, const char *last) NOACCESS(3); char *stredup(const char *src, const char *last = nullptr) NOACCESS(2); int CDECL seprintf(char *str, const char *last, const char *format, ...) WARN_FORMAT(3, 4) NOACCESS(2); -int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap) WARN_FORMAT(3, 0) NOACCESS(2); std::string FormatArrayAsHex(span data); From 57f2d70fefe3a12e7e861d9f0adc33f87ed80589 Mon Sep 17 00:00:00 2001 From: PeterN Date: Thu, 27 Apr 2023 09:04:18 +0100 Subject: [PATCH 09/19] Change: Use cstdint instead of rolling our own types. (#10651) --- src/3rdparty/squirrel/include/squirrel.h | 8 +-- src/linkgraph/linkgraph.cpp | 2 +- src/stdafx.h | 77 +++--------------------- 3 files changed, 15 insertions(+), 72 deletions(-) diff --git a/src/3rdparty/squirrel/include/squirrel.h b/src/3rdparty/squirrel/include/squirrel.h index 0c3f608952..9dd4d7a75d 100644 --- a/src/3rdparty/squirrel/include/squirrel.h +++ b/src/3rdparty/squirrel/include/squirrel.h @@ -32,9 +32,9 @@ #include "../../../string_type.h" -typedef __int64 SQInteger; -typedef unsigned __int64 SQUnsignedInteger; -typedef unsigned __int64 SQHash; /*should be the same size of a pointer*/ +typedef int64_t SQInteger; +typedef uint64_t SQUnsignedInteger; +typedef uint64_t SQHash; /*should be the same size of a pointer*/ typedef int SQInt32; @@ -44,7 +44,7 @@ typedef double SQFloat; typedef float SQFloat; #endif -typedef __int64 SQRawObjectVal; //must be 64bits +typedef int64_t SQRawObjectVal; //must be 64bits #define SQ_OBJECT_RAWINIT() { _unVal.raw = 0; } typedef void* SQUserPointer; diff --git a/src/linkgraph/linkgraph.cpp b/src/linkgraph/linkgraph.cpp index 95d521e5ff..c639bdc59f 100644 --- a/src/linkgraph/linkgraph.cpp +++ b/src/linkgraph/linkgraph.cpp @@ -74,7 +74,7 @@ void LinkGraph::Compress() if (edge.capacity < (1 << 16)) { edge.travel_time_sum = edge.travel_time_sum * new_capacity / edge.capacity; } else if (edge.travel_time_sum != 0) { - edge.travel_time_sum = std::max(1ULL, edge.travel_time_sum / 2); + edge.travel_time_sum = std::max(1, edge.travel_time_sum / 2); } edge.capacity = new_capacity; edge.usage /= 2; diff --git a/src/stdafx.h b/src/stdafx.h index a2f7fb416f..57e8a1ae8b 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -35,7 +35,6 @@ # include # define _DEFAULT_SOURCE # define _GNU_SOURCE -# define TROUBLED_INTS #endif #if defined(__HAIKU__) || defined(__CYGWIN__) @@ -57,46 +56,9 @@ # endif #endif -/* The conditions for these constants to be available are way too messy; so check them one by one */ -#if !defined(UINT64_MAX) -# define UINT64_MAX (18446744073709551615ULL) -#endif -#if !defined(INT64_MAX) -# define INT64_MAX (9223372036854775807LL) -#endif -#if !defined(INT64_MIN) -# define INT64_MIN (-INT64_MAX - 1) -#endif -#if !defined(UINT32_MAX) -# define UINT32_MAX (4294967295U) -#endif -#if !defined(INT32_MAX) -# define INT32_MAX (2147483647) -#endif -#if !defined(INT32_MIN) -# define INT32_MIN (-INT32_MAX - 1) -#endif -#if !defined(UINT16_MAX) -# define UINT16_MAX (65535U) -#endif -#if !defined(INT16_MAX) -# define INT16_MAX (32767) -#endif -#if !defined(INT16_MIN) -# define INT16_MIN (-INT16_MAX - 1) -#endif -#if !defined(UINT8_MAX) -# define UINT8_MAX (255) -#endif -#if !defined(INT8_MAX) -# define INT8_MAX (127) -#endif -#if !defined(INT8_MIN) -# define INT8_MIN (-INT8_MAX - 1) -#endif - #include #include +#include #include #include #include @@ -105,10 +67,6 @@ #include #include -#ifndef SIZE_MAX -# define SIZE_MAX ((size_t)-1) -#endif - #if defined(UNIX) || defined(__MINGW32__) # include #endif @@ -343,36 +301,21 @@ #define debug_inline inline #endif -typedef unsigned char byte; +typedef uint8_t byte; /* This is already defined in unix, but not in QNX Neutrino (6.x) or Cygwin. */ #if (!defined(UNIX) && !defined(__HAIKU__)) || defined(__QNXNTO__) || defined(__CYGWIN__) typedef unsigned int uint; #endif -#if defined(TROUBLED_INTS) - /* Haiku's types for uint32/int32/uint64/int64 are different than what - * they are on other platforms; not in length, but how to print them. - * So make them more like the other platforms, to make printf() etc a - * little bit easier. */ -# define uint32 uint32_ugly_hack -# define int32 int32_ugly_hack -# define uint64 uint64_ugly_hack -# define int64 int64_ugly_hack - typedef unsigned int uint32_ugly_hack; - typedef signed int int32_ugly_hack; - typedef unsigned __int64 uint64_ugly_hack; - typedef signed __int64 int64_ugly_hack; -#else - typedef unsigned char uint8; - typedef signed char int8; - typedef unsigned short uint16; - typedef signed short int16; - typedef unsigned int uint32; - typedef signed int int32; - typedef unsigned __int64 uint64; - typedef signed __int64 int64; -#endif /* !TROUBLED_INTS */ +typedef uint8_t uint8; +typedef int8_t int8; +typedef uint16_t uint16; +typedef int16_t int16; +typedef uint32_t uint32; +typedef int32_t int32; +typedef uint64_t uint64; +typedef int64_t int64; #if !defined(WITH_PERSONAL_DIR) # define PERSONAL_DIR "" From f5fad88723abde9c62aa50d08814e276dd206119 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Thu, 27 Apr 2023 17:21:29 +0200 Subject: [PATCH 10/19] Change: base autosaves intervals on real time (instead of game time) (#10655) There are two fundamental issues with autosave: - When fast-forwarding, it saves way too often - When paused, it never saves Both makes no sense. Autosaves are meant to prevent you from accidentally losing your work. The emphasis on "your" work. To solve both issues, the autosave now works on real time. You can select every 10 / 30 / 60 / 120 minutes, which are similar to what the setting was in game-months. When you pause, autosaving will stop. Unless you make any change to the game; then it will continue to make autosaves, even so the game is paused. Unpausing / pausing resets this mechanism. --- src/command.cpp | 3 ++ src/lang/english.txt | 8 ++-- src/misc_cmd.cpp | 5 +++ src/openttd.cpp | 57 ++++++++++++++++--------- src/openttd.h | 2 + src/settings_gui.cpp | 9 ++-- src/timer/CMakeLists.txt | 2 + src/timer/timer_game_calendar.h | 1 - src/timer/timer_game_realtime.cpp | 69 +++++++++++++++++++++++++++++++ src/timer/timer_game_realtime.h | 59 ++++++++++++++++++++++++++ 10 files changed, 187 insertions(+), 28 deletions(-) create mode 100644 src/timer/timer_game_realtime.cpp create mode 100644 src/timer/timer_game_realtime.h diff --git a/src/command.cpp b/src/command.cpp index 49a72db30c..a8efcebb23 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -401,6 +401,9 @@ CommandCost CommandHelperBase::InternalExecuteProcessResult(Commands cmd, Comman SubtractMoneyFromCompany(res_exec); + /* Record if there was a command issues during pause; ignore pause/other setting related changes. */ + if (_pause_mode != PM_UNPAUSED && _command_proc_table[cmd].type != CMDT_SERVER_SETTING) _pause_mode |= PM_COMMAND_DURING_PAUSE; + /* update signals if needed */ UpdateSignalsInBuffer(); diff --git a/src/lang/english.txt b/src/lang/english.txt index ec9d72dc5d..52575bd4a3 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -983,10 +983,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select i # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Off -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Every month -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Every 3 months -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Every 6 months -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Every 12 months +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :Every 10 minutes +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :Every 30 minutes +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :Every 60 minutes +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Every 120 minutes STR_GAME_OPTIONS_LANGUAGE :{BLACK}Language STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Select the interface language to use diff --git a/src/misc_cmd.cpp b/src/misc_cmd.cpp index 25fc827f67..7b3553810a 100644 --- a/src/misc_cmd.cpp +++ b/src/misc_cmd.cpp @@ -173,6 +173,11 @@ CommandCost CmdPause(DoCommandFlag flags, PauseMode mode, bool pause) _pause_mode |= mode; } else { _pause_mode &= ~mode; + + /* If the only remaining reason to be paused is that we saw a command during pause, unpause. */ + if (_pause_mode == PM_COMMAND_DURING_PAUSE) { + _pause_mode = PM_UNPAUSED; + } } NetworkHandlePauseChange(prev_mode, mode); diff --git a/src/openttd.cpp b/src/openttd.cpp index 283ea903d9..f9182b255d 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -70,6 +70,7 @@ #include "misc_cmd.h" #include "timer/timer.h" #include "timer/timer_game_calendar.h" +#include "timer/timer_game_realtime.h" #include "timer/timer_game_tick.h" #include "linkgraph/linkgraphschedule.h" @@ -103,12 +104,12 @@ bool _request_newgrf_scan = false; NewGRFScanCallback *_request_newgrf_scan_callback = nullptr; /** Available settings for autosave intervals. */ -static const TimerGameCalendar::Month _autosave_months[] = { - 0, ///< never - 1, ///< every month - 3, ///< every 3 months - 6, ///< every 6 months - 12, ///< every 12 months +static const std::chrono::milliseconds _autosave_ticks[] = { + std::chrono::minutes::zero(), ///< never + std::chrono::minutes(10), + std::chrono::minutes(30), + std::chrono::minutes(60), + std::chrono::minutes(120), }; /** @@ -1033,6 +1034,9 @@ void SwitchToMode(SwitchMode new_mode) /* Make sure all AI controllers are gone at quitting game */ if (new_mode != SM_SAVE_GAME) AI::KillAll(); + /* When we change mode, reset the autosave. */ + if (new_mode != SM_SAVE_GAME) ChangeAutosaveFrequency(true); + switch (new_mode) { case SM_EDITOR: // Switch to scenario editor MakeNewEditorWorld(); @@ -1415,23 +1419,35 @@ void StateGameLoop() assert(IsLocalCompany()); } -static IntervalTimer _autosave_interval({TimerGameCalendar::MONTH, TimerGameCalendar::Priority::AUTOSAVE}, [](auto) +/** Interval for regular autosaves. Initialized at zero to disable till settings are loaded. */ +static IntervalTimer _autosave_interval({std::chrono::milliseconds::zero(), TimerGameRealtime::AUTOSAVE}, [](auto) { - if (_settings_client.gui.autosave == 0) return; - if ((TimerGameCalendar::month % _autosave_months[_settings_client.gui.autosave]) != 0) return; + /* We reset the command-during-pause mode here, so we don't continue + * to make auto-saves when nothing more is changing. */ + _pause_mode &= ~PM_COMMAND_DURING_PAUSE; _do_autosave = true; SetWindowDirty(WC_STATUS_BAR, 0); + + static FiosNumberedSaveName _autosave_ctr("autosave"); + DoAutoOrNetsave(_autosave_ctr); + + _do_autosave = false; + SetWindowDirty(WC_STATUS_BAR, 0); }); /** - * Create an autosave. The default name is "autosave#.sav". However with - * the setting 'keep_all_autosave' the name defaults to company-name + date + * Reset the interval of the autosave. + * + * If reset is not set, this does not set the elapsed time on the timer, + * so if the interval is smaller, it might result in an autosave being done + * immediately. + * + * @param reset Whether to reset the timer back to zero, or to continue. */ -static void DoAutosave() +void ChangeAutosaveFrequency(bool reset) { - static FiosNumberedSaveName _autosave_ctr("autosave"); - DoAutoOrNetsave(_autosave_ctr); + _autosave_interval.SetInterval({_autosave_ticks[_settings_client.gui.autosave], TimerGameRealtime::AUTOSAVE}, reset); } /** @@ -1469,11 +1485,14 @@ void GameLoop() ProcessAsyncSaveFinish(); - /* autosave game? */ - if (_do_autosave) { - DoAutosave(); - _do_autosave = false; - SetWindowDirty(WC_STATUS_BAR, 0); + if (_game_mode == GM_NORMAL) { + static auto last_time = std::chrono::steady_clock::now(); + auto now = std::chrono::steady_clock::now(); + auto delta_ms = std::chrono::duration_cast(now - last_time); + if (delta_ms.count() != 0) { + TimerManager::Elapsed(delta_ms); + last_time = now; + } } /* switch game mode? */ diff --git a/src/openttd.h b/src/openttd.h index 1534016fd6..0c1547178c 100644 --- a/src/openttd.h +++ b/src/openttd.h @@ -66,6 +66,7 @@ enum PauseMode : byte { PM_PAUSED_ACTIVE_CLIENTS = 1 << 4, ///< A game paused for 'min_active_clients' PM_PAUSED_GAME_SCRIPT = 1 << 5, ///< A game paused by a game script PM_PAUSED_LINK_GRAPH = 1 << 6, ///< A game paused due to the link graph schedule lagging + PM_COMMAND_DURING_PAUSE = 1 << 7, ///< A game paused, and a command executed during the pause; resets on autosave /** Pause mode bits when paused for network reasons. */ PMB_PAUSED_NETWORK = PM_PAUSED_ACTIVE_CLIENTS | PM_PAUSED_JOIN, @@ -87,5 +88,6 @@ void SwitchToMode(SwitchMode new_mode); bool RequestNewGRFScan(struct NewGRFScanCallback *callback = nullptr); void OpenBrowser(const char *url); +void ChangeAutosaveFrequency(bool reset); #endif /* OPENTTD_H */ diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 31a79b8331..87add4bfba 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -51,10 +51,10 @@ static const StringID _autosave_dropdown[] = { STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF, - STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH, - STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS, - STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS, - STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS, + STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES, + STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES, + STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES, + STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES, INVALID_STRING_ID, }; @@ -595,6 +595,7 @@ struct GameOptionsWindow : Window { case WID_GO_AUTOSAVE_DROPDOWN: // Autosave options _settings_client.gui.autosave = index; + ChangeAutosaveFrequency(false); this->SetDirty(); break; diff --git a/src/timer/CMakeLists.txt b/src/timer/CMakeLists.txt index 37612481b8..f4f82e1a5a 100644 --- a/src/timer/CMakeLists.txt +++ b/src/timer/CMakeLists.txt @@ -1,6 +1,8 @@ add_files( timer_game_calendar.cpp timer_game_calendar.h + timer_game_realtime.cpp + timer_game_realtime.h timer_game_tick.cpp timer_game_tick.h timer_window.cpp diff --git a/src/timer/timer_game_calendar.h b/src/timer/timer_game_calendar.h index 4932647ecb..133051ae11 100644 --- a/src/timer/timer_game_calendar.h +++ b/src/timer/timer_game_calendar.h @@ -42,7 +42,6 @@ public: /* All other may have a Random() call in them, so order is important. * For safety, you can only setup a single timer on a single priority. */ - AUTOSAVE, COMPANY, DISASTER, ENGINE, diff --git a/src/timer/timer_game_realtime.cpp b/src/timer/timer_game_realtime.cpp new file mode 100644 index 0000000000..379924d139 --- /dev/null +++ b/src/timer/timer_game_realtime.cpp @@ -0,0 +1,69 @@ +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** + * @file timer_game_realtime.cpp + * This file implements the timer logic for the real time game-timer. + */ + +#include "stdafx.h" +#include "openttd.h" +#include "timer.h" +#include "timer_game_realtime.h" + +#include "safeguards.h" + +template<> +void IntervalTimer::Elapsed(TimerGameRealtime::TElapsed delta) +{ + if (this->period.period == std::chrono::milliseconds::zero()) return; + if (this->period.flag == TimerGameRealtime::PeriodFlags::AUTOSAVE && _pause_mode != PM_UNPAUSED && (_pause_mode & PM_COMMAND_DURING_PAUSE) == 0) return; + if (this->period.flag == TimerGameRealtime::PeriodFlags::UNPAUSED && _pause_mode != PM_UNPAUSED) return; + + this->storage.elapsed += delta; + + uint count = 0; + while (this->storage.elapsed >= this->period.period) { + this->storage.elapsed -= this->period.period; + count++; + } + + if (count > 0) { + this->callback(count); + } +} + +template<> +void TimeoutTimer::Elapsed(TimerGameRealtime::TElapsed delta) +{ + if (this->fired) return; + if (this->period.period == std::chrono::milliseconds::zero()) return; + if (this->period.flag == TimerGameRealtime::PeriodFlags::AUTOSAVE && _pause_mode != PM_UNPAUSED && (_pause_mode & PM_COMMAND_DURING_PAUSE) == 0) return; + if (this->period.flag == TimerGameRealtime::PeriodFlags::UNPAUSED && _pause_mode != PM_UNPAUSED) return; + + this->storage.elapsed += delta; + + if (this->storage.elapsed >= this->period.period) { + this->callback(); + this->fired = true; + } +} + +template<> +void TimerManager::Elapsed(TimerGameRealtime::TElapsed delta) +{ + for (auto timer : TimerManager::GetTimers()) { + timer->Elapsed(delta); + } +} + +#ifdef WITH_ASSERT +template<> +void TimerManager::Validate(TimerGameRealtime::TPeriod period) +{ +} +#endif /* WITH_ASSERT */ diff --git a/src/timer/timer_game_realtime.h b/src/timer/timer_game_realtime.h new file mode 100644 index 0000000000..22432501b3 --- /dev/null +++ b/src/timer/timer_game_realtime.h @@ -0,0 +1,59 @@ +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file timer_game_realtime.h Definition of the real time game-timer */ + +#ifndef TIMER_GAME_REALTIME_H +#define TIMER_GAME_REALTIME_H + +#include + +/** + * Timer that represents real time for game-related purposes. + * + * For pausing, there are several modes: + * - Continue to tick during pause (PeriodFlags::ALWAYS). + * - Stop ticking when paused (PeriodFlags::UNPAUSED). + * - Only tick when unpaused or when there was a Command executed recently (recently: since last autosave) (PeriodFlags::AUTOSAVE). + * + * @note The lowest possible interval is 1ms, although realistic the lowest + * interval is 27ms. This timer is only updated when the game-thread makes + * a tick, which happens every 27ms. + * @note Callbacks are executed in the game-thread. + */ +class TimerGameRealtime { +public: + enum PeriodFlags { + ALWAYS, ///< Always run, even when paused. + UNPAUSED, ///< Only run when not paused. + AUTOSAVE, ///< Only run when not paused or there was a Command executed recently. + }; + + struct TPeriod { + std::chrono::milliseconds period; + PeriodFlags flag; + + TPeriod(std::chrono::milliseconds period, PeriodFlags flag) : period(period), flag(flag) {} + + bool operator < (const TPeriod &other) const + { + if (this->flag != other.flag) return this->flag < other.flag; + return this->period < other.period; + } + + bool operator == (const TPeriod &other) const + { + return this->flag == other.flag && this->period == other.period; + } + }; + using TElapsed = std::chrono::milliseconds; + struct TStorage { + std::chrono::milliseconds elapsed; + }; +}; + +#endif /* TIMER_GAME_REALTIME_H */ From a255b615145526d449ffa0aa60127c7cd4d9cebb Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Thu, 27 Apr 2023 20:15:09 +0200 Subject: [PATCH 11/19] Change: [CI] Use a custom name for matrix runs (#10723) By default, GitHub adds all arguments of the matrix between (). This is fine sometimes, but in other times it becomes a very lengthy line. With this commit, we decide what is between those (), making it a lot more readable. --- .github/workflows/ci-build.yml | 37 +++++++++++++++------------ .github/workflows/release-windows.yml | 4 +-- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 4567a5833b..f02a926a4c 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -69,24 +69,29 @@ jobs: echo "::endgroup::" linux: - name: Linux - strategy: fail-fast: false matrix: include: - - compiler: clang + - name: Clang + compiler: clang cxxcompiler: clang++ - libsdl: libsdl2-dev - - compiler: gcc + libraries: libsdl2-dev + - name: GCC - SDL2 + compiler: gcc cxxcompiler: g++ - libsdl: libsdl2-dev - - compiler: gcc + libraries: libsdl2-dev + - name: GCC - SDL1.2 + compiler: gcc cxxcompiler: g++ - libsdl: libsdl1.2-dev - - compiler: gcc + libraries: libsdl1.2-dev + - name: GCC - Dedicated + compiler: gcc cxxcompiler: g++ extra-cmake-parameters: -DOPTION_DEDICATED=ON -DCMAKE_CXX_FLAGS_INIT="-DRANDOM_DEBUG" + # Compile without SDL / SDL2, as that should compile fine too. + + name: Linux (${{ matrix.name }}) runs-on: ubuntu-20.04 env: @@ -111,7 +116,7 @@ jobs: libicu-dev \ liblzma-dev \ liblzo2-dev \ - ${{ matrix.libsdl }} \ + ${{ matrix.libraries }} \ zlib1g-dev \ # EOF echo "::endgroup::" @@ -156,8 +161,6 @@ jobs: ctest -j $(nproc) --timeout 120 macos: - name: Mac OS - strategy: fail-fast: false matrix: @@ -165,6 +168,8 @@ jobs: - arch: x64 full_arch: x86_64 + name: Mac OS (${{ matrix.arch }}) + runs-on: macos-latest env: MACOSX_DEPLOYMENT_TARGET: 10.13 @@ -247,14 +252,14 @@ jobs: ctest -j $(sysctl -n hw.logicalcpu) --timeout 120 windows: - name: Windows - strategy: fail-fast: false matrix: os: [windows-latest, windows-2019] arch: [x86, x64] + name: Windows (${{ matrix.os }} / ${{ matrix.arch }}) + runs-on: ${{ matrix.os }} steps: @@ -338,8 +343,6 @@ jobs: msys2: - name: msys2 - strategy: fail-fast: false matrix: @@ -349,6 +352,8 @@ jobs: - msystem: MINGW32 arch: i686 + name: MinGW (${{ matrix.arch }}) + runs-on: windows-latest steps: diff --git a/.github/workflows/release-windows.yml b/.github/workflows/release-windows.yml index af67ffb18f..dd51b12734 100644 --- a/.github/workflows/release-windows.yml +++ b/.github/workflows/release-windows.yml @@ -9,8 +9,6 @@ on: jobs: windows: - name: Windows - strategy: fail-fast: false matrix: @@ -22,6 +20,8 @@ jobs: - arch: arm64 host: x64_arm64 + name: Windows (${{ matrix.arch }}}) + runs-on: windows-latest steps: From d33993cca3703c9b5dd7624c93cf68dc0deb215c Mon Sep 17 00:00:00 2001 From: translators Date: Thu, 27 Apr 2023 18:39:56 +0000 Subject: [PATCH 12/19] Update: Translations from eints --- 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 | 4 ---- src/lang/bulgarian.txt | 4 ---- src/lang/catalan.txt | 4 ---- src/lang/croatian.txt | 4 ---- src/lang/czech.txt | 4 ---- src/lang/danish.txt | 4 ---- src/lang/dutch.txt | 4 ---- src/lang/english_AU.txt | 4 ---- src/lang/english_US.txt | 4 ---- src/lang/esperanto.txt | 4 ---- src/lang/estonian.txt | 4 ---- src/lang/faroese.txt | 4 ---- src/lang/finnish.txt | 4 ---- src/lang/french.txt | 4 ---- src/lang/frisian.txt | 4 ---- src/lang/gaelic.txt | 4 ---- src/lang/galician.txt | 4 ---- src/lang/german.txt | 4 ---- src/lang/greek.txt | 4 ---- src/lang/hebrew.txt | 4 ---- src/lang/hindi.txt | 1 - src/lang/hungarian.txt | 4 ---- src/lang/icelandic.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 | 4 ---- src/lang/latin.txt | 4 ---- src/lang/latvian.txt | 4 ---- src/lang/lithuanian.txt | 4 ---- src/lang/luxembourgish.txt | 4 ---- src/lang/macedonian.txt | 1 - src/lang/malay.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 | 4 ---- src/lang/romanian.txt | 4 ---- src/lang/russian.txt | 4 ---- src/lang/serbian.txt | 4 ---- src/lang/simplified_chinese.txt | 4 ---- 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 ---- 61 files changed, 238 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index bf58be2f68..ecd0d1d83e 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -951,10 +951,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Kies int # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Af -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Elke maand -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Elke 3 maande -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Elke 6 maande -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Elke 12 maande STR_GAME_OPTIONS_LANGUAGE :{BLACK}Taal STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Kies die koppelvlak taal om te gebruik diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index db0c27e3dd..d01abed5df 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -942,10 +942,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}اختا # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :بدون -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :كل شهر -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :كل 3 اشهر -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :كل 6 اشهر -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :كل سنة STR_GAME_OPTIONS_LANGUAGE :{BLACK}لغة STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}اختر لغة الواجهه diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 9b732bb855..a525cfe4b5 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -922,10 +922,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Aukeratu # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Ez -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hilabetero -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :3 hilabetero -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :6 hilabetero -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :12 hilabetero STR_GAME_OPTIONS_LANGUAGE :{BLACK}Hizkuntza STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Aukeratu interfazean erabiltzeko hizkuntza diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 5a74a01ace..11a1965ecd 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -1260,10 +1260,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Інтэ # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Выключана -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Штомесяц -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Кожныя 3 месяцы -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Кожныя 6 месяцаў -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Кожныя 12 месяцаў STR_GAME_OPTIONS_LANGUAGE :{BLACK}Мова STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Выбраць мову інтэрфэйсу diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 05dd6fc6f3..020b00652e 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -984,10 +984,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecion # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Desativado -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :A cada mês -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :A cada 3 meses -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :A cada 6 meses -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :A cada 12 meses STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecionar o idioma da interface do jogo diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 0ec3a15f13..cd8f5394e3 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -930,10 +930,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Инте # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :изключено -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :всеки месец -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :всеки 3 месеца -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :всеки 6 месеца -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :всеки 12 месеца STR_GAME_OPTIONS_LANGUAGE :{BLACK}Език STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Избор на език diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index f9696bf7cf..cfb1ebb2cb 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -984,10 +984,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Seleccio # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Inactiu -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Cada mes -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Cada 3 mesos -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Cada 6 mesos -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Cada 12 mesos STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecciona l'idioma de la interfície diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 9bc3f38d08..dd73627d90 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -1051,10 +1051,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Odaberi # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Isključeno -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Svaki mjesec -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Svaka 3 mjeseca -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Svakih 6 mjeseci -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Svakih 12 mjeseci STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jezik STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Odaberi jezik sučelja diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 17509f4bd8..36d1518247 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -1069,10 +1069,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Volba in # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Vypnuto -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Každý měsíc -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Každé 3 měsíce -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Každých 6 měsíců -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Každých 12 měsíců STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jazyk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Zvolit jazyk uživatelského rozhraní diff --git a/src/lang/danish.txt b/src/lang/danish.txt index db0b5e0866..159d73d2d5 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -983,10 +983,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vælg in # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Fra -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hver måned -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Hver 3. måned -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hver 6. måned -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Hver 12. måned STR_GAME_OPTIONS_LANGUAGE :{BLACK}Sprog STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Vælg sprog til brugerfladen diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 75e041b55c..e960b225cd 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -983,10 +983,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tijdsduu # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Uit -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Iedere maand -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Iedere 3 maanden -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Iedere 6 maanden -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Iedere 12 maanden STR_GAME_OPTIONS_LANGUAGE :{BLACK}Taal STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Taal selecteren voor gebruikersscherm diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index cd7312addb..75116da80a 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -983,10 +983,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select i # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Off -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Every month -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Every 3 months -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Every 6 months -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Every 12 months STR_GAME_OPTIONS_LANGUAGE :{BLACK}Language STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Select the interface language to use diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 155810f55a..6840461364 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -983,10 +983,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select i # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Off -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Every month -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Every 3 months -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Every 6 months -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Every 12 months STR_GAME_OPTIONS_LANGUAGE :{BLACK}Language STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Select the interface language to use diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index bafdcb85c7..706f30958b 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -914,10 +914,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Elektu i # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Malaktiva -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Je ĉiu monato -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Je ĉiuj 3 monatoj -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Je ĉiuj 6 monatoj -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Je ĉiuj 12 monatoj STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingvo STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Elektu uzotan interfacan lingvon diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 7ee4b4fbaf..749cac99f7 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -1039,10 +1039,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vali sal # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Väljas -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :1 kuu -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :3 kuud -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :6 kuud -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :12 kuud STR_GAME_OPTIONS_LANGUAGE :{BLACK}Keel STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Valib kasutajaliideses kasutatava keele diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index 093bb895a9..647eb3a0c1 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -902,10 +902,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vel tít # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Sløkt -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hvønn mánað -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Hvønn 3 mánað -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hvønn 6 mánað -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Einaferð um árið STR_GAME_OPTIONS_LANGUAGE :{BLACK}Mál STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Vel mál at nýta í takførisflatu diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index bcdf3c2df4..cc04ab496e 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -983,10 +983,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Valitse # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Pois -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Kuukausittain -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Joka 3. kuukausi -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Joka 6. kuukausi -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Kerran vuodessa STR_GAME_OPTIONS_LANGUAGE :{BLACK}Kieli STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Valitse käyttöliittymän kieli diff --git a/src/lang/french.txt b/src/lang/french.txt index c82717ff41..309645c240 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -984,10 +984,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Sélecti # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Désactivée -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Tous les mois -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Tous les 3 mois -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Tous les 6 mois -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Tous les 12 mois STR_GAME_OPTIONS_LANGUAGE :{BLACK}Langue STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Sélectionner la langue à utiliser pour l'interface diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index b45ead94bb..dc618244d3 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -947,10 +947,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selektea # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Ut -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Eltse moanne -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Eltse 3 moannen -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Eltse 6 moannen -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Eltse 12 moannen STR_GAME_OPTIONS_LANGUAGE :{BLACK}Taal STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selektearje de interfacetaal diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index c55c2100d1..b3488166c3 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -1135,10 +1135,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tagh dè # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Dheth -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Gach mìos -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Gach 3s mìos -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Gach 6mh mìos -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Gach bliadhna STR_GAME_OPTIONS_LANGUAGE :{BLACK}Cànan STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Tagh cànan an eadar-aghaidh a chleachdas tu diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 6d16900508..c05eb34423 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -984,10 +984,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Seleccio # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Apagado -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Cada mes -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Cada 3 meses -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Cada 6 meses -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Cada 12 meses STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingua STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecciona a lingua para a interface diff --git a/src/lang/german.txt b/src/lang/german.txt index 2d92843a6e..e6b59ba305 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -983,10 +983,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Abstand # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Aus -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Jeden Monat -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Alle 3 Monate -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Alle 6 Monate -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Alle 12 Monate STR_GAME_OPTIONS_LANGUAGE :{BLACK}Sprache STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Sprache für die Spieloberfläche auswählen diff --git a/src/lang/greek.txt b/src/lang/greek.txt index e0ddb756ad..62efac4c4f 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -1088,10 +1088,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Επιλ # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Ανενεργό -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Κάθε μήνα -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Κάθε 3 μήνες -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Κάθε 6 μήνες -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Κάθε 12 μήνες STR_GAME_OPTIONS_LANGUAGE :{BLACK}Γλώσσα STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Επιλογή της γλώσσας του παιχνιδιού diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index b7d193dd7d..4b2f027b00 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -953,10 +953,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}בחר # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :כבוי -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :מידי חודש -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :כל 3 חודשים -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :כל 6 חודשים -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :כל 12 חודשים STR_GAME_OPTIONS_LANGUAGE :{BLACK}שפה STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}בחר את שפת הממשק diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index 1ea63d23dc..378d273fd7 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -278,7 +278,6 @@ STR_GAME_OPTIONS_CURRENCY_HKD :हाँग # Autosave dropdown ###length 5 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :प्रत्येक माह STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}% पूर्ण) diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 96bae4af2a..20cff2367d 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -1046,10 +1046,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Az autom # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Nincs -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Minden hónapban -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :3 havonta -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :6 havonta -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :12 havonta STR_GAME_OPTIONS_LANGUAGE :{BLACK}Nyelv STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Válassz nyelvet diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 6ba3e68ea0..518316136b 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -901,10 +901,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tíðni # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Aldrei -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Mánaðarlega -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Ársfjórðungslega -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hálfsárslega -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Árlega STR_GAME_OPTIONS_LANGUAGE :{BLACK}Tungumál STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Tungumál viðmóts diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index d2bbb2dab3..0310b26948 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -982,10 +982,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pilih se # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Mati -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Setiap bulan -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Setiap 3 bulan -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Setiap 6 bulan -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Setiap 12 bulan STR_GAME_OPTIONS_LANGUAGE :{BLACK}Bahasa STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Pilih antar muka bahasa yang akan dipergunakan diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 1b35e6a89e..25e33a2d5c 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -971,10 +971,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Roghnaig # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :As -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Gach mí -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Gach 3 mí -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Gach 6 mí -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Gach 12 mí STR_GAME_OPTIONS_LANGUAGE :{BLACK}Teanga STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Roghnaigh an teanga comhéadain le húsáid diff --git a/src/lang/italian.txt b/src/lang/italian.txt index a7995cc936..5ad0dc825a 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -985,10 +985,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selezion # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Mai -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Ogni mese -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Ogni 3 mesi -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Ogni 6 mesi -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Ogni 12 mesi STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingua STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Seleziona la lingua da utilizzare per l'interfaccia diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index e4a0d2e6fd..4031f90df8 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -982,10 +982,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}自動 # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :しない -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :毎月 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :3ヶ月毎 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :6ヶ月毎 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :12ヶ月毎 STR_GAME_OPTIONS_LANGUAGE :{BLACK}言語 STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}ゲームの言語を選択します diff --git a/src/lang/korean.txt b/src/lang/korean.txt index b065aaf7fe..c202ecead4 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -984,10 +984,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}게임 # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :사용 안 함 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :매달 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :3개월마다 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :6개월마다 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :12개월마다 STR_GAME_OPTIONS_LANGUAGE :{BLACK}언어 STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}사용할 언어를 선택하세요 diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 14d8e6904c..b2f3ce56a9 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -1127,10 +1127,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Eligere # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Numquam -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Singulis mensibus -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Ternis mensibus -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Senis mensibus -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Duodenis mensibus STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingua STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Eligere linguam interfaciei diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 253fbff1a0..725de934bf 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -984,10 +984,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izvēlē # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Izslēgta -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :katru mēnesi -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :katrus 3 mēnešus -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :katrus 6 mēnešus -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :katrus 12 mēnešus STR_GAME_OPTIONS_LANGUAGE :{BLACK}Valoda STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Saskarnes valodas izvēle diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index b25b0c4bbf..68f35a6f17 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -1182,10 +1182,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pasirink # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Išjungta -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Kiekvieną mėnesį -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Kas 3 mėnesius -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Kas 6 mėnesius -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Kas 12 mėnesių STR_GAME_OPTIONS_LANGUAGE :{BLACK}Kalba STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Pasirinkite aplinkos kalbą diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index a4ad44de64..e2888ab09b 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -982,10 +982,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Wiel den # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Aus -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :All Mount -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :All 3 Méint -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :All 6 Méint -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :All 12 Méint STR_GAME_OPTIONS_LANGUAGE :{BLACK}Sprooch STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Wielt d'Interfacesprooch aus diff --git a/src/lang/macedonian.txt b/src/lang/macedonian.txt index c6064c65dc..2a1b9468cc 100644 --- a/src/lang/macedonian.txt +++ b/src/lang/macedonian.txt @@ -795,7 +795,6 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци # Autosave dropdown ###length 5 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Секој месец diff --git a/src/lang/malay.txt b/src/lang/malay.txt index ab2a36db3a..2106ebc6bb 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -905,10 +905,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pilih te # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Matikan -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Setiap bulan -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Setiap 3 bulan -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Setiap 6 bulan -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Setiap 12 bulan STR_GAME_OPTIONS_LANGUAGE :{BLACK}Bahasa STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Pilih bahasa antaramuka yang ingin digunakan diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index 679d7d56b7..51064d20ea 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -727,10 +727,6 @@ STR_GAME_OPTIONS_CURRENCY_SKK :स्लोव # Autosave dropdown ###length 5 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :दर महिने -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :दर ३ महिने -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :दर ६ महिने -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :दर १२ महिने STR_GAME_OPTIONS_LANGUAGE :{BLACK}भाषा diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index b02d7b25f8..fc3142a6b8 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -975,10 +975,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Velg int # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Av -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hver måned -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Hver 3. måned -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hver 6. måned -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Hver 12. måned STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Velg språk som skal brukes diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index baf7ad2a2c..d52faaf271 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -932,10 +932,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vel inte # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Av -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Kvar månad -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Kvar 3. månad -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Kvart halvår -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Kvart år STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Vel språk som skal nyttast diff --git a/src/lang/persian.txt b/src/lang/persian.txt index cdb62ffcdd..451d73b66f 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -922,10 +922,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK} انت # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :خاموش -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :هر ماه -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :هر ۳ ماه -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :هر ۶ ماه -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :هر ۱۲ ماه STR_GAME_OPTIONS_LANGUAGE :{BLACK}زبان STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}زبان واسط کاربری را برای استفاده انتخاب کنید diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 0df0f9c208..c1be0a1e64 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -1363,10 +1363,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Częstot # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Wył. -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Co 1 miesiąc -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Co 3 miesiące -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Co 6 miesięcy -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Co 12 miesięcy STR_GAME_OPTIONS_LANGUAGE :{BLACK}Język STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Wybierz język interfejsu diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 8c90122a3a..fb4c4bca4a 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -984,10 +984,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Seleccio # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Desativado -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Cada mês -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Cada 3 meses -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Cada 6 meses -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Cada 12 meses STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Seleccionar o idioma da interface do jogo diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index b954a2313a..49cbe1da46 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -982,10 +982,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Alege in # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Dezactivată -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :În fiecare lună -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :La fiecare 3 luni -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :La fiecare 6 luni -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :La fiecare 12 luni STR_GAME_OPTIONS_LANGUAGE :{BLACK}Limba STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Alege limba în care doreşti afişată interfaţa diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 1b2e61a71b..7b9045d519 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1128,10 +1128,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Инте # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Отключено -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Каждый месяц -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Каждые 3 месяца -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Каждые 6 месяцев -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Каждый год STR_GAME_OPTIONS_LANGUAGE :{BLACK}Язык STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Язык пользовательского интерфейса diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 029dc38ad3..6aab30213c 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -1177,10 +1177,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izbor vr # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Isključeno -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Svakog meseca -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Svaka 3 meseca -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Svakih 6 meseci -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Svakih 12 meseci STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jezik STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Odaberi jezik za interfejs diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 3456f9a67c..b9402b39ce 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -982,10 +982,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}选择 # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :关闭 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :每月 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :每 3 个月 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :每 6 个月 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :每 12 个月 STR_GAME_OPTIONS_LANGUAGE :{BLACK}语言 STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}选择界面语言 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 9e7317fb5d..43d7307c08 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -1051,10 +1051,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Výber i # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Vypnuté -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Každý mesiac -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Každé 3 mesiace -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Každých 6 mesiacov -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Každých 12 mesiacov STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jazyk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Výber jazyka rozhrania diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index f2843a6ace..2a1c0fdd81 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -1087,10 +1087,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izberi # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Izključeno -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Vsak mesec -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Vsake 3 mesece -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Vsakih 6 mesecev -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Vsakih 12 mesecev STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jezik STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Izberi jezik vmesnika diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 1051b74fed..dcc5e7f1f9 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -983,10 +983,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecci # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Desactivado -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Cada mes -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Cada 3 meses -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Cada 6 meses -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Cada 12 meses STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecciona el idioma a emplear en interfaz del juego diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index a25ec4a60c..93491d79ed 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -983,10 +983,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Elegir e # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Desactivado -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Cada mes -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Cada 3 meses -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Cada 6 meses -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Cada 12 meses STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Elegir el idioma de la interfaz diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index c641d67bcb..0662577c24 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -982,10 +982,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Välj in # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Avstängd -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Varje månad -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Var 3:e månad -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Var 6:e månad -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Var 12:e månad STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Välj vilket språk som ska användas diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 6177cb032d..b80acf556e 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -942,10 +942,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}தா # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Off -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :ஒவ்வொரு மாதமும் -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :மூன்று மாதங்களுக்கு ஒரு முறை -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :ஆறு மாதங்களுக்கு ஒரு முறை -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :ஒவ்வொரு வருடமும் STR_GAME_OPTIONS_LANGUAGE :{BLACK}மொழி STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் மொழியினை தேர்ந்தெடு diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 47ef4e9b4e..c1dd64f777 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -947,10 +947,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}เล # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :ปิด -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :ทุกๆเดือน -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :ทุก 3 เดือน -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :ทุก 6 เดือน -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :ทุก 12 เดือน STR_GAME_OPTIONS_LANGUAGE :{BLACK}ภาษา STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}เลือกภาษาที่จะใช้ diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index f0c499408b..1d2f06cca9 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -982,10 +982,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}選擇 # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :關閉 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :每個月 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :每 3 個月 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :每 6 個月 -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :每 12 個月 STR_GAME_OPTIONS_LANGUAGE :{BLACK}語言 STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}選擇要用的介面語言 diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 4e8d9f7d8e..e82de93b4e 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -984,10 +984,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Otomatik # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Kapalı -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Her ay -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Her üç ayda bir -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Her altı ayda bir -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Her oniki ayda bir STR_GAME_OPTIONS_LANGUAGE :{BLACK}Dil STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Görünen dili seçin diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 6e6d17d7bf..ec371ee0d6 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -1110,10 +1110,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Вибе # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :вимкнено -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :щомісяця -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :кожні три місяці -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :кожні півроку -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :щороку STR_GAME_OPTIONS_LANGUAGE :{BLACK}Мова STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Виберіть мову інтерфейса користувача diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index 4469fcb764..c83a03c6f8 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -897,10 +897,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}خودم # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :بند -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :ہر مہینے -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :ہر سہ ماہی -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :ہر شش ماہی -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :ہر سال STR_GAME_OPTIONS_LANGUAGE :{BLACK}زبان STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}استعمال کرنے کےلئے زبان اختیار کئیجیے diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index c1dbc0354e..0477944982 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -983,10 +983,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Lựa ch # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Tắt -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hàng tháng -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Hàng quý -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hàng nửa năm -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Hàng năm STR_GAME_OPTIONS_LANGUAGE :{BLACK}Ngôn ngữ STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Lựa chọn sử dụng ngôn ngữ giao diện diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index a201c79111..b615414410 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -934,10 +934,6 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Dewiswch # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Diffodd Awtogadw -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Bob mis -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Bob 3 mis -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Bob 6 mis -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Bob 12 mis STR_GAME_OPTIONS_LANGUAGE :{BLACK}Iaith STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Dewiswch yr iaith rhyngwyneb i'w defnyddio From 33c4fbff8ff6a24f6ed840c72eeb6478b07b37fd Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 27 Apr 2023 20:11:37 +0200 Subject: [PATCH 13/19] Codechange: use fmt::format_to instead of seprintf to fill load crash message --- src/saveload/afterload.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 7e7f3ffe64..3f607bac18 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -381,16 +381,16 @@ static void CDECL HandleSavegameLoadCrash(int signum) { ResetSignalHandlers(); - char buffer[8192]; - char *p = buffer; - p += seprintf(p, lastof(buffer), "Loading your savegame caused OpenTTD to crash.\n"); + std::string message; + message.reserve(1024); + message += "Loading your savegame caused OpenTTD to crash.\n"; for (const GRFConfig *c = _grfconfig; !_saveload_crash_with_missing_newgrfs && c != nullptr; c = c->next) { _saveload_crash_with_missing_newgrfs = HasBit(c->flags, GCF_COMPATIBLE) || c->status == GCS_NOT_FOUND; } if (_saveload_crash_with_missing_newgrfs) { - p += seprintf(p, lastof(buffer), + message += "This is most likely caused by a missing NewGRF or a NewGRF that\n" "has been loaded as replacement for a missing NewGRF. OpenTTD\n" "cannot easily determine whether a replacement NewGRF is of a newer\n" @@ -401,7 +401,7 @@ static void CDECL HandleSavegameLoadCrash(int signum) "cases, OpenTTD will load the savegame and not crash, but this is an\n" "exception.\n" "Please load the savegame with the appropriate NewGRFs installed.\n" - "The missing/compatible NewGRFs are:\n"); + "The missing/compatible NewGRFs are:\n"; for (const GRFConfig *c = _grfconfig; c != nullptr; c = c->next) { if (HasBit(c->flags, GCF_COMPATIBLE)) { @@ -410,21 +410,21 @@ static void CDECL HandleSavegameLoadCrash(int signum) char replaced_md5[40]; md5sumToString(original_md5, lastof(original_md5), c->original_md5sum); md5sumToString(replaced_md5, lastof(replaced_md5), replaced->md5sum); - p += seprintf(p, lastof(buffer), "NewGRF %08X (checksum %s) not found.\n Loaded NewGRF \"%s\" (checksum %s) with same GRF ID instead.\n", BSWAP32(c->ident.grfid), original_md5, c->filename, replaced_md5); + fmt::format_to(std::back_inserter(message), "NewGRF {:08X} (checksum {}) not found.\n Loaded NewGRF \"{}\" (checksum {}) with same GRF ID instead.\n", BSWAP32(c->ident.grfid), original_md5, c->filename, replaced_md5); } if (c->status == GCS_NOT_FOUND) { char buf[40]; md5sumToString(buf, lastof(buf), c->ident.md5sum); - p += seprintf(p, lastof(buffer), "NewGRF %08X (%s) not found; checksum %s.\n", BSWAP32(c->ident.grfid), c->filename, buf); + fmt::format_to(std::back_inserter(message), "NewGRF {:08X} ({}) not found; checksum {}.\n", BSWAP32(c->ident.grfid), c->filename, buf); } } } else { - p += seprintf(p, lastof(buffer), + message += "This is probably caused by a corruption in the savegame.\n" - "Please file a bug report and attach this savegame.\n"); + "Please file a bug report and attach this savegame.\n"; } - ShowInfoI(buffer); + ShowInfoI(message); SignalHandlerPointer call = nullptr; switch (signum) { From ef3beef7e9d4dfa42baee6b8fa76d8663046440c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 27 Apr 2023 20:57:46 +0200 Subject: [PATCH 14/19] Codechange: use fmt::format_to instead of seprintf to write the savegame info --- src/openttd.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/openttd.cpp b/src/openttd.cpp index f9182b255d..bcb6855702 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -243,32 +243,32 @@ static void WriteSavegameInfo(const char *name) GamelogInfo(_load_check_data.gamelog_action, _load_check_data.gamelog_actions, &last_ottd_rev, &ever_modified, &removed_newgrfs); - char buf[8192]; - char *p = buf; - p += seprintf(p, lastof(buf), "Name: %s\n", name); - p += seprintf(p, lastof(buf), "Savegame ver: %d\n", _sl_version); - p += seprintf(p, lastof(buf), "NewGRF ver: 0x%08X\n", last_ottd_rev); - p += seprintf(p, lastof(buf), "Modified: %d\n", ever_modified); + std::string message; + message.reserve(1024); + fmt::format_to(std::back_inserter(message), "Name: {}\n", name); + fmt::format_to(std::back_inserter(message), "Savegame ver: {}\n", _sl_version); + fmt::format_to(std::back_inserter(message), "NewGRF ver: 0x{:08X}\n", last_ottd_rev); + fmt::format_to(std::back_inserter(message), "Modified: {}\n", ever_modified); if (removed_newgrfs) { - p += seprintf(p, lastof(buf), "NewGRFs have been removed\n"); + fmt::format_to(std::back_inserter(message), "NewGRFs have been removed\n"); } - p = strecpy(p, "NewGRFs:\n", lastof(buf)); + message += "NewGRFs:\n"; if (_load_check_data.HasNewGrfs()) { for (GRFConfig *c = _load_check_data.grfconfig; c != nullptr; c = c->next) { char md5sum[33]; md5sumToString(md5sum, lastof(md5sum), HasBit(c->flags, GCF_COMPATIBLE) ? c->original_md5sum : c->ident.md5sum); - p += seprintf(p, lastof(buf), "%08X %s %s\n", c->ident.grfid, md5sum, c->filename); + fmt::format_to(std::back_inserter(message), "{:08X} {} {}\n", c->ident.grfid, md5sum, c->filename); } } /* ShowInfo put output to stderr, but version information should go * to stdout; this is the only exception */ #if !defined(_WIN32) - printf("%s\n", buf); + printf("%s\n", message.c_str()); #else - ShowInfoI(buf); + ShowInfoI(message); #endif } From 6a8b4f3e10cf64644b294b0c83fea896d21b0af6 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 27 Apr 2023 20:59:34 +0200 Subject: [PATCH 15/19] Codechange: use fmt::format_to instead of seprintf to fill the PNG metadata --- src/screenshot.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/screenshot.cpp b/src/screenshot.cpp index 569ec8fcb1..f0176b31d5 100644 --- a/src/screenshot.cpp +++ b/src/screenshot.cpp @@ -315,26 +315,26 @@ static bool MakePNGImage(const char *name, ScreenshotCallback *callb, void *user text[0].text_length = strlen(_openttd_revision); text[0].compression = PNG_TEXT_COMPRESSION_NONE; - char buf[8192]; - char *p = buf; - p += seprintf(p, lastof(buf), "Graphics set: %s (%u)\n", BaseGraphics::GetUsedSet()->name.c_str(), BaseGraphics::GetUsedSet()->version); - p = strecpy(p, "NewGRFs:\n", lastof(buf)); + std::string message; + message.reserve(1024); + fmt::format_to(std::back_inserter(message), "Graphics set: {} ({})\n", BaseGraphics::GetUsedSet()->name, BaseGraphics::GetUsedSet()->version); + message += "NewGRFs:\n"; for (const GRFConfig *c = _game_mode == GM_MENU ? nullptr : _grfconfig; c != nullptr; c = c->next) { - p += seprintf(p, lastof(buf), "%08X ", BSWAP32(c->ident.grfid)); - p = md5sumToString(p, lastof(buf), c->ident.md5sum); - p += seprintf(p, lastof(buf), " %s\n", c->filename); + char buf[33]; + md5sumToString(buf, lastof(buf), c->ident.md5sum); + fmt::format_to(std::back_inserter(message), "{:08X} {} {}\n", BSWAP32(c->ident.grfid), buf, c->filename); } - p = strecpy(p, "\nCompanies:\n", lastof(buf)); + message += "\nCompanies:\n"; for (const Company *c : Company::Iterate()) { if (c->ai_info == nullptr) { - p += seprintf(p, lastof(buf), "%2i: Human\n", (int)c->index); + fmt::format_to(std::back_inserter(message), "{:2d}: Human\n", (int)c->index); } else { - p += seprintf(p, lastof(buf), "%2i: %s (v%d)\n", (int)c->index, c->ai_info->GetName(), c->ai_info->GetVersion()); + fmt::format_to(std::back_inserter(message), "{:2d}: {} (v{})\n", (int)c->index, c->ai_info->GetName(), c->ai_info->GetVersion()); } } text[1].key = const_cast("Description"); - text[1].text = buf; - text[1].text_length = p - buf; + text[1].text = const_cast(message.c_str()); + text[1].text_length = message.size(); text[1].compression = PNG_TEXT_COMPRESSION_zTXt; png_set_text(png_ptr, info_ptr, text, 2); #endif /* PNG_TEXT_SUPPORTED */ From b221fa3c5ac7313275ace89f8f79f595f723af6a Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 27 Apr 2023 22:45:40 +0200 Subject: [PATCH 16/19] Codechange: use fmt::format_to instead of seprintf to create the search URL --- src/network/network_content_gui.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/network/network_content_gui.cpp b/src/network/network_content_gui.cpp index 2f3375f2a5..fc3ef55ccb 100644 --- a/src/network/network_content_gui.cpp +++ b/src/network/network_content_gui.cpp @@ -350,27 +350,27 @@ class NetworkContentListWindow : public Window, ContentCallback { /** Search external websites for content */ void OpenExternalSearch() { - char url[1024]; - const char *last = lastof(url); + std::string url; + url.reserve(1024); - char *pos = strecpy(url, "https://grfsearch.openttd.org/?", last); + url += "https://grfsearch.openttd.org/?"; if (this->auto_select) { - pos = strecpy(pos, "do=searchgrfid&q=", last); + url += "do=searchgrfid&q="; bool first = true; for (const ContentInfo *ci : this->content) { if (ci->state != ContentInfo::DOES_NOT_EXIST) continue; - if (!first) pos = strecpy(pos, ",", last); + if (!first) url.push_back(','); first = false; - pos += seprintf(pos, last, "%08X", ci->unique_id); - pos = strecpy(pos, ":", last); - pos = md5sumToString(pos, last, ci->md5sum); + char buf[33]; + md5sumToString(buf, lastof(buf), ci->md5sum); + fmt::format_to(std::back_inserter(url), "{:08X}:{}", ci->unique_id, buf); } } else { - pos = strecpy(pos, "do=searchtext&q=", last); + url += "do=searchtext&q="; /* Escape search term */ for (const char *search = this->filter_editbox.text.buf; *search != '\0'; search++) { @@ -379,15 +379,14 @@ class NetworkContentListWindow : public Window, ContentCallback { /* Escape special chars, such as &%,= */ if (*search < 0x30) { - pos += seprintf(pos, last, "%%%02X", *search); - } else if (pos < last) { - *pos = *search; - *++pos = '\0'; + fmt::format_to(std::back_inserter(url), "%{:02X}", *search); + } else { + url.push_back(*search); } } } - OpenBrowser(url); + OpenBrowser(url.c_str()); } /** From 3ed8c35dfeb047f0c8a89ecd4e517674a088ce04 Mon Sep 17 00:00:00 2001 From: translators Date: Fri, 28 Apr 2023 18:42:10 +0000 Subject: [PATCH 17/19] Update: Translations from eints italian: 4 changes by Rivarossi russian: 4 changes by Ln-Wolf finnish: 4 changes by hpiirai turkish: 4 changes by densxd dutch: 6 changes by Afoklala portuguese: 4 changes by azulcosta --- src/lang/dutch.txt | 7 ++++++- src/lang/finnish.txt | 4 ++++ src/lang/italian.txt | 4 ++++ src/lang/portuguese.txt | 4 ++++ src/lang/russian.txt | 4 ++++ src/lang/turkish.txt | 4 ++++ 6 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index e960b225cd..c526220c44 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -983,6 +983,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tijdsduu # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Uit +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :Elke 10 minuten +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :Elke 30 minuten +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :Elke 60 minuten +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Elke 120 minuten STR_GAME_OPTIONS_LANGUAGE :{BLACK}Taal STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Taal selecteren voor gebruikersscherm @@ -1708,7 +1712,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :De hoeveelheid STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Onderhoudstermijnen in procenten: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Selecteer of onderhoud van de voertuigen wordt geactiveerd door verstreken tijd sinds het laatste onderhoud of door het zakken van de betrouwbaarheid met een bepaald percentage van de maximale betrouwbaarheid +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Als deze optie is ingeschakeld, proberen voertuigen in onderhoud te gaan als de betrouwbaarheid met een bepaald percentage van de maximale betrouwbaarheid is gezakt.{}{}Als bijvoorbeeld de maximale betrouwbaarheid 90% is en de onderhoudstermijn is 20%, dan probeert het voertuig in onderhoud te gaan als de betrouwbaarheid tot 72% daalt. STR_CONFIG_SETTING_SERVINT_TRAINS :Standaardonderhoudstermijn voor treinen: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Standaardonderhoudstermijn instellen voor nieuwe treinen als er geen expliciete onderhoudstermijn is ingesteld voor het voertuig @@ -5106,6 +5110,7 @@ STR_ERROR_NO_BUOY :{WHITE}Er is ge STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan geen dienstregeling opzetten voor dit voertuig... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Voertuigen kunnen alleen wachten op stations STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Dit voertuig stopt niet op dit station +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... dienstregeling is niet compleet # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... te veel bordjes diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index cc04ab496e..f8bf160a56 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -983,6 +983,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Valitse # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Pois +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :10 minuutin välein +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :30 minuutin välein +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :60 minuutin välein +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :120 minuutin välein STR_GAME_OPTIONS_LANGUAGE :{BLACK}Kieli STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Valitse käyttöliittymän kieli diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 5ad0dc825a..00c3c0433e 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -985,6 +985,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selezion # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Mai +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :Ogni 10 minuti +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :Ogni 30 minuti +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :Ogni 60 minuti +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Ogni 120 minuti STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingua STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Seleziona la lingua da utilizzare per l'interfaccia diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index fb4c4bca4a..daee396cad 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -984,6 +984,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Seleccio # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Desativado +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :A cada 10 minutos +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :A cada 30 minutos +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :A cada 60 minutos +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :A cada 120 minutos STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Seleccionar o idioma da interface do jogo diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 7b9045d519..4e749da706 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1128,6 +1128,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Инте # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Отключено +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :каждые 10 минут +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :каждые 30 минут +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :каждые 60 минут +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :каждые 120 минут STR_GAME_OPTIONS_LANGUAGE :{BLACK}Язык STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Язык пользовательского интерфейса diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index e82de93b4e..aefade6202 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -984,6 +984,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Otomatik # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Kapalı +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :Her 10 dakikada +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :Her 30 dakikada +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :Her 60 dakikada +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Her 120 dakikada STR_GAME_OPTIONS_LANGUAGE :{BLACK}Dil STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Görünen dili seçin From 23c46e1abfe53de5336968565c55de5428efcff1 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Fri, 28 Apr 2023 21:07:56 +0100 Subject: [PATCH 18/19] Fix: #10735: {POP_COLOUR} fails if string is drawn with extra flags. --- src/gfx_layout.h | 3 ++- src/gfx_type.h | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gfx_layout.h b/src/gfx_layout.h index 15248a277d..c9790556ea 100644 --- a/src/gfx_layout.h +++ b/src/gfx_layout.h @@ -47,7 +47,8 @@ struct FontState { */ inline void SetColour(TextColour c) { - assert(c >= TC_BLUE && c <= TC_BLACK); + assert((c & TC_COLOUR_MASK) >= TC_BLUE && (c & TC_COLOUR_MASK) <= TC_BLACK); + assert((c & (TC_COLOUR_MASK | TC_FLAGS_MASK)) == c); if ((this->cur_colour & TC_FORCED) == 0) this->cur_colour = c; } diff --git a/src/gfx_type.h b/src/gfx_type.h index 12d2b2c794..50ac4f6892 100644 --- a/src/gfx_type.h +++ b/src/gfx_type.h @@ -279,6 +279,9 @@ enum TextColour { TC_IS_PALETTE_COLOUR = 0x100, ///< Colour value is already a real palette colour index, not an index of a StringColour. TC_NO_SHADE = 0x200, ///< Do not add shading to this text colour. TC_FORCED = 0x400, ///< Ignore colour changes from strings. + + TC_COLOUR_MASK = 0xFF, ///< Mask to test if TextColour (without flags) is within limits. + TC_FLAGS_MASK = 0x700, ///< Mask to test if TextColour (with flags) is within limits. }; DECLARE_ENUM_AS_BIT_SET(TextColour) From 1a24016964b33a2be9f09b0dde03a75c631b647e Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Fri, 28 Apr 2023 21:16:13 +0100 Subject: [PATCH 19/19] Fix: Set TC_NO_SHADE only for shaded engine in purchase list. Additionally use TC_FORCE to prevent additional colours in the shaded text. --- src/build_vehicle_gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index 8202891d32..51cc8f9270 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -1036,7 +1036,7 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li const Engine *e = Engine::Get(item.engine_id); bool hidden = HasBit(e->company_hidden, _local_company); StringID str = hidden ? STR_HIDDEN_ENGINE_NAME : STR_ENGINE_NAME; - TextColour tc = (item.engine_id == selected_id) ? TC_WHITE : (TC_NO_SHADE | ((hidden | shaded) ? TC_GREY : TC_BLACK)); + TextColour tc = (item.engine_id == selected_id) ? TC_WHITE : ((hidden | shaded) ? (TC_GREY | TC_FORCED | TC_NO_SHADE) : TC_BLACK); if (show_count) { /* relies on show_count to find 'Vehicle in use' panel of autoreplace window */