Compare commits

..

23 Commits

Author SHA1 Message Date
Peter Nelson 3f2f61c49b Codechange: Make TextfileType a scoped enum (#15864) 2026-07-15 23:21:59 +01:00
dependabot[bot] 162c629766 Upgrade: Bump the actions group with 3 updates (#15816)
Bumps the actions group with 3 updates: [actions/checkout](https://github.com/actions/checkout), [actions/cache](https://github.com/actions/cache) and [cloudflare/wrangler-action](https://github.com/cloudflare/wrangler-action).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

Updates `actions/cache` from 5 to 6
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v5...v6)

Updates `cloudflare/wrangler-action` from 3 to 4
- [Release notes](https://github.com/cloudflare/wrangler-action/releases)
- [Changelog](https://github.com/cloudflare/wrangler-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/wrangler-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: cloudflare/wrangler-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 23:29:04 +02:00
Tyler Trahan 9bea75a8d1 Codechange: Use sprite array instead of magic number for snowy rocks (#15835) 2026-07-15 15:10:35 -04:00
Rubidium 150da36869 Codechange: remove compiler flags allowing multi character literals 2026-07-15 20:07:08 +02:00
Rubidium e065da15ff Codechange: remove multichar literals from FillSetDetails 2026-07-15 19:13:18 +02:00
Rubidium 2d48e82bbb Codechange: remove unneeded packing of ChunkHeader and WAVE_DOWNLOAD 2026-07-15 18:07:49 +02:00
Rubidium fa4b9819c0 Codechange: use Label for CargoLabel, RailTypeLabel and RoadTypeLabel 2026-07-15 18:07:22 +02:00
Jonathan G Rennison 7126fcafcc Fix: Rail depot overbuild did not handle associated reservation (#15860) 2026-07-15 07:40:37 -04:00
translators 659208ab57 Update: Translations from eints
estonian: 30 changes by JooReb
catalan: 84 changes by J0anJosep
2026-07-15 06:36:15 +00:00
Rubidium 143af1098d Codechange: remove support for ICC (Intel's deprecated compiler) 2026-07-14 19:47:06 +02:00
Rubidium 68f5a8a0fd Codechange: use Label for Action14 NodeID 2026-07-14 18:27:28 +02:00
Rubidium 121df5b461 Codechange: simplify BMP header creation 2026-07-14 18:27:14 +02:00
Rubidium 1d1c603494 Codechange: use Label for NewGRF class global ids 2026-07-14 14:04:54 +02:00
Rubidium af60d6b7cd Codechange: use Label for the tags in a Wave file 2026-07-14 12:46:14 +02:00
Rubidium fe31736981 Codechange: use Label for the SaveLoadFormatTag over multi-character-literals 2026-07-14 11:49:15 +02:00
Rubidium 80d0c7763a Codechange: use Label for the ChunkId over multi-character-literals 2026-07-14 11:49:15 +02:00
translators 6b553caa74 Update: Translations from eints
hungarian: 3 changes by vargaviktor
2026-07-14 06:34:46 +00:00
Peter Nelson 2c48b1efb9 Change: limit purchase list rows to 1.5x original design height 2026-07-13 23:15:08 +01:00
Peter Nelson e3dfd59df0 Change: clip content in purchase list to each row 2026-07-13 23:15:08 +01:00
Enova 0366278c9d Codechange: Support ID_LIKE in build targeting (#15818) 2026-07-13 23:15:22 +02:00
Rubidium 808ae7f270 Codechange: [Windows] Use SetThreadDescription over magic exception 2026-07-13 18:41:39 +02:00
translators d1ec9f4897 Update: Translations from eints
english (au): 7 changes by krysclarke
chinese (traditional): 12 changes by KogentaSan
english (us): 13 changes by 2TallTyler
korean: 17 changes by telk5093
greek: 7 changes by gh658804
hungarian: 4 changes by vargaviktor
russian: 13 changes by Ln-Wolf
finnish: 18 changes by hpiirai
maori (new zealand): 17 changes by Kyle-McDangersword
turkish: 34 changes by jnmbk
portuguese: 8 changes by jcteotonio
esperanto: 18 changes by slashdevslashurandom
portuguese (brazilian): 7 changes by pasantoro
2026-07-13 07:48:17 +00:00
Peter Nelson 922d38f1c0 Codechange: Make IniFileVersion a scoped enum and format comments similar to SaveLoadVersion (#15848) 2026-07-12 19:28:06 +01:00
133 changed files with 978 additions and 685 deletions
+2 -2
View File
@@ -18,14 +18,14 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Fix dubious ownership
run: |
git config --global --add safe.directory ${GITHUB_WORKSPACE}
- name: Setup cache
uses: actions/cache@v5
uses: actions/cache@v6
with:
# If you change this version, change the numbers in the image configuration step,
# .github/workflows/preview-build.yml (2x) and os/emscripten/Dockerfile too.
+1 -1
View File
@@ -30,7 +30,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Setup vcpkg
id: vcpkg
+1 -1
View File
@@ -32,7 +32,7 @@ jobs:
xcode-version: latest-stable
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Setup vcpkg
id: vcpkg
+1 -1
View File
@@ -21,7 +21,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Setup vcpkg
id: vcpkg
+1 -1
View File
@@ -25,7 +25,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Setup vcpkg
id: vcpkg
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 4
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 4
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 4
+2 -2
View File
@@ -15,7 +15,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
ref: ${{ github.event.pull_request.head.sha }}
@@ -25,7 +25,7 @@ jobs:
git checkout -b pr${{ github.event.pull_request.number }}
- name: Setup cache
uses: actions/cache@v5
uses: actions/cache@v6
with:
path: /emsdk/upstream/emscripten/cache
# If you change this version, change the numbers in the image configuration step,
+1 -1
View File
@@ -41,7 +41,7 @@ jobs:
echo "number=$(cat pr/number)" >> $GITHUB_OUTPUT
- name: Publish preview
uses: cloudflare/wrangler-action@v3
uses: cloudflare/wrangler-action@v4
with:
apiToken: ${{ secrets.PREVIEW_CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.PREVIEW_CLOUDFLARE_ACCOUNT_ID }}
+3 -3
View File
@@ -30,14 +30,14 @@ jobs:
steps:
- name: Checkout (Release)
if: github.event_name == 'release'
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
# We generate a changelog; for this we need the full git log.
fetch-depth: 0
- name: Checkout (Manual)
if: github.event_name == 'workflow_dispatch'
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
ref: ${{ github.event.inputs.ref }}
# We generate a changelog; for this we need the full git log.
@@ -45,7 +45,7 @@ jobs:
- name: Checkout (Trigger)
if: github.event_name == 'repository_dispatch'
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
ref: ${{ github.event.client_payload.ref }}
# We generate a changelog; for this we need the full git log.
@@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Check for finding script functions that require company/deity mode enforcement/checks
run: |
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Check for unused strings
run: |
-20
View File
@@ -56,11 +56,6 @@ macro(compile_flags)
# This flag disables the broken optimisation to work around the bug
add_compile_options(/d2ssa-rse-)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
add_compile_options(
-Wno-multichar
)
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
add_compile_options(
-W
@@ -78,9 +73,6 @@ macro(compile_flags)
-Wnon-virtual-dtor
-Wsuggest-override
# We use 'ABCD' multichar for SaveLoad chunks identifiers
-Wno-multichar
# Prevent optimisation supposing enums are in a range specified by the standard
# For details, see http://gcc.gnu.org/PR43680 and PR#5246.
-fno-strict-enums
@@ -126,18 +118,6 @@ macro(compile_flags)
endif()
endif()
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
add_compile_options(
-Wall
# warning #873: function ... ::operator new ... has no corresponding operator delete ...
-wd873
# warning #1292: unknown attribute "fallthrough"
-wd1292
# warning #1899: multicharacter character literal (potential portability problem)
-wd1899
# warning #2160: anonymous union qualifier is ignored
-wd2160
)
else()
message(FATAL_ERROR "No warning flags are set for this compiler yet; please consider creating a Pull Request to add support for this compiler.")
endif()
+15 -6
View File
@@ -191,17 +191,26 @@ elseif(UNIX)
set(PLATFORM "unknown")
else()
if(EXISTS "/etc/os-release")
file(STRINGS "/etc/os-release" OS_RELEASE_CONTENTS REGEX "^ID=")
string(REGEX MATCH "ID=(.*)" _ ${OS_RELEASE_CONTENTS})
set(DISTRO_ID ${CMAKE_MATCH_1})
if(DISTRO_ID STREQUAL "arch")
file(STRINGS "/etc/os-release" OS_RELEASE_LIKE_CONTENTS REGEX "^ID_LIKE=")
if (OS_RELEASE_LIKE_CONTENTS)
string(REGEX MATCH "ID_LIKE=\\\"?([^\\\"]+)" _ ${OS_RELEASE_LIKE_CONTENTS})
string(REGEX MATCHALL "([^ ]+)" DISTRO_LIKE_IDS ${CMAKE_MATCH_1})
endif()
if (DISTRO_LIKE_IDS)
set(DISTRO_IDS ${DISTRO_LIKE_IDS})
else()
file(STRINGS "/etc/os-release" OS_RELEASE_CONTENTS REGEX "^ID=")
string(REGEX MATCH "ID=(.*)" _ ${OS_RELEASE_CONTENTS})
set(DISTRO_IDS ${CMAKE_MATCH_1})
endif()
if("arch" IN_LIST DISTRO_IDS)
set(PLATFORM "arch")
set(CPACK_GENERATOR "TXZ")
elseif(DISTRO_ID STREQUAL "fedora" OR DISTRO_ID STREQUAL "rhel")
elseif("fedora" IN_LIST DISTRO_IDS OR "rhel" IN_LIST DISTRO_IDS)
set(PLATFORM "fedora")
set(CPACK_GENERATOR "RPM")
include(PackageRPM)
elseif(DISTRO_ID STREQUAL "ubuntu" OR DISTRO_ID STREQUAL "debian" OR DISTRO_ID STREQUAL "linuxmint")
elseif("debian" IN_LIST DISTRO_IDS OR "ubuntu" IN_LIST DISTRO_IDS OR "linuxmint" IN_LIST DISTRO_IDS)
file(STRINGS "/etc/os-release" OS_RELEASE_CODENAME REGEX "^VERSION_CODENAME=")
string(REGEX MATCH "VERSION_CODENAME=(.*)" _ ${OS_RELEASE_CODENAME})
set(RELEASE_CODENAME ${CMAKE_MATCH_1})
+5 -5
View File
@@ -70,11 +70,11 @@ static constexpr std::initializer_list<NWidgetPart> _nested_ai_config_widgets =
NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize),
NWidget(NWID_HORIZONTAL, NWidContainerFlag::EqualSize),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_AIC_OPEN_URL), SetResize(1, 0), SetFill(1, 0), SetStringTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_AIC_TEXTFILE + TFT_README), SetFill(1, 1), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_README, STR_TEXTFILE_VIEW_README_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_AIC_TEXTFILE + TextfileType::Readme), SetFill(1, 1), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_README, STR_TEXTFILE_VIEW_README_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL, NWidContainerFlag::EqualSize),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_AIC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 1), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_AIC_TEXTFILE + TFT_LICENSE), SetFill(1, 1), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_LICENCE, STR_TEXTFILE_VIEW_LICENCE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_AIC_TEXTFILE + TextfileType::Changelog), SetFill(1, 1), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_AIC_TEXTFILE + TextfileType::License), SetFill(1, 1), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_LICENCE, STR_TEXTFILE_VIEW_LICENCE_TOOLTIP),
EndContainer(),
EndContainer(),
EndContainer(),
@@ -215,7 +215,7 @@ struct AIConfigWindow : public Window {
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
{
if (widget >= WID_AIC_TEXTFILE && widget < WID_AIC_TEXTFILE + TFT_CONTENT_END) {
if (widget >= WID_AIC_TEXTFILE && widget < WID_AIC_TEXTFILE + TextfileType::ContentEnd) {
if (this->selected_slot == CompanyID::Invalid() || AIConfig::GetConfig(this->selected_slot) == nullptr) return;
ShowScriptTextfileWindow(this, static_cast<TextfileType>(widget - WID_AIC_TEXTFILE), this->selected_slot);
@@ -326,7 +326,7 @@ struct AIConfigWindow : public Window {
this->SetWidgetDisabledState(WID_AIC_MOVE_DOWN, !IsEditable(this->selected_slot) || !IsEditable(static_cast<CompanyID>(this->selected_slot + 1)));
this->SetWidgetDisabledState(WID_AIC_OPEN_URL, this->selected_slot == CompanyID::Invalid() || config->GetInfo() == nullptr || config->GetInfo()->GetURL().empty());
for (TextfileType tft : EnumRange(TFT_CONTENT_BEGIN, TFT_CONTENT_END)) {
for (TextfileType tft : EnumRange(TextfileType::ContentBegin, TextfileType::ContentEnd)) {
this->SetWidgetDisabledState(WID_AIC_TEXTFILE + tft, this->selected_slot == CompanyID::Invalid() || !config->GetTextfile(tft, this->selected_slot).has_value());
}
}
+21 -7
View File
@@ -47,6 +47,22 @@ const IniItem *BaseSet<T>::GetMandatoryItem(std::string_view full_filename, cons
return nullptr;
}
/**
* Helper to decode a 4 character short name into an uint32_t representation.
* @param shortname The short name.
* @return The uint32_t representation.
*/
constexpr uint32_t DecodeShortName(std::string_view shortname)
{
/* The short name is documented to be exactly 4 characters long, see docs/ob[gms]_format.txt. */
shortname = shortname.substr(0, 4);
uint32_t encoded = 0;
for (size_t i = 0; i < shortname.size(); i++) {
encoded |= static_cast<uint8_t>(shortname[i]) << (i * 8);
}
return encoded;
}
/**
* Read the set information from a loaded ini.
* @param ini the ini to read from
@@ -85,9 +101,7 @@ bool BaseSet<T>::FillSetDetails(const IniFile &ini, const std::string &path, con
item = this->GetMandatoryItem(full_filename, *metadata, "shortname");
if (item == nullptr) return false;
for (uint i = 0; (*item->value)[i] != '\0' && i < 4; i++) {
this->shortname |= ((uint8_t)(*item->value)[i]) << (i * 8);
}
this->shortname = DecodeShortName(*item->value);
item = this->GetMandatoryItem(full_filename, *metadata, "version");
if (item == nullptr) return false;
@@ -111,10 +125,10 @@ bool BaseSet<T>::FillSetDetails(const IniFile &ini, const std::string &path, con
const IniGroup *origin = ini.GetGroup("origin");
auto file_names = BaseSet<T>::GetFilenames();
bool original_set =
std::byteswap(this->shortname) == 'TTDD' || // TTD DOS graphics, TTD DOS music
std::byteswap(this->shortname) == 'TTDW' || // TTD WIN graphics, TTD WIN music
std::byteswap(this->shortname) == 'TTDO' || // TTD sound
std::byteswap(this->shortname) == 'TTOD'; // TTO music
this->shortname == DecodeShortName("TTDD") || // TTD DOS graphics, TTD DOS music
this->shortname == DecodeShortName("TTDW") || // TTD WIN graphics, TTD WIN music
this->shortname == DecodeShortName("TTDO") || // TTD sound
this->shortname == DecodeShortName("TTOD"); // TTO music
for (uint i = 0; i < BaseSet<T>::NUM_FILES; i++) {
MD5File *file = &this->files[i];
+8 -3
View File
@@ -962,7 +962,7 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li
const int offset = (rtl ? -circle_width : circle_width) / 2;
const int level_width = rtl ? -WidgetDimensions::scaled.hsep_indent : WidgetDimensions::scaled.hsep_indent;
for (auto it = first; it != last; ++it) {
for (auto it = first; it != last; ++it, ir = ir.Translate(0, step_size)) {
const auto &item = *it;
const Engine *e = Engine::Get(item.engine_id);
@@ -971,6 +971,13 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li
bool is_folded = item.flags.Test(EngineDisplayFlag::IsFolded);
bool shaded = item.flags.Test(EngineDisplayFlag::Shaded);
/* Set up clipping area for the row, keeping coordinates relative to the window. */
DrawPixelInfo tmp_dpi;
if (!FillDrawPixelInfo(&tmp_dpi, ir)) continue;
tmp_dpi.left += ir.left;
tmp_dpi.top += ir.top;
AutoRestoreBackup dpi_backup(_cur_dpi, &tmp_dpi);
Rect textr = ir.Shrink(WidgetDimensions::scaled.matrix);
Rect tr = ir.Indent(indent, rtl);
@@ -1146,8 +1153,6 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li
/* The left/right bounds are adjusted to not overlap with the sort detail that is on the left/right depending on the RTL setting. */
DrawString(tr.left + (rtl ? sort_detail_width : 0), tr.right - (rtl ? 0 : sort_detail_width), textr.top + normal_text_y_offset, name, tc);
ir = ir.Translate(0, step_size);
}
}
+34 -34
View File
@@ -10,11 +10,11 @@
#ifndef CARGO_TYPE_H
#define CARGO_TYPE_H
#include "core/strong_typedef_type.hpp"
#include "core/label_type.hpp"
#include "core/enum_type.hpp"
/** Globally unique label of a cargo type. */
using CargoLabel = StrongType::Typedef<uint32_t, struct CargoLabelTag, StrongType::Compare>;
using CargoLabel = Label<struct CargoLabelTag>;
/**
* Cargo slots to indicate a cargo type within a game.
@@ -28,48 +28,48 @@ DECLARE_INCREMENT_DECREMENT_OPERATORS(CargoType)
*/
/* Temperate */
static constexpr CargoLabel CT_PASSENGERS{'PASS'};
static constexpr CargoLabel CT_COAL{'COAL'};
static constexpr CargoLabel CT_MAIL{'MAIL'};
static constexpr CargoLabel CT_OIL{'OIL_'};
static constexpr CargoLabel CT_LIVESTOCK{'LVST'};
static constexpr CargoLabel CT_GOODS{'GOOD'};
static constexpr CargoLabel CT_GRAIN{'GRAI'};
static constexpr CargoLabel CT_WOOD{'WOOD'};
static constexpr CargoLabel CT_IRON_ORE{'IORE'};
static constexpr CargoLabel CT_STEEL{'STEL'};
static constexpr CargoLabel CT_VALUABLES{'VALU'};
static constexpr CargoLabel CT_PASSENGERS{"PASS"};
static constexpr CargoLabel CT_COAL{"COAL"};
static constexpr CargoLabel CT_MAIL{"MAIL"};
static constexpr CargoLabel CT_OIL{"OIL_"};
static constexpr CargoLabel CT_LIVESTOCK{"LVST"};
static constexpr CargoLabel CT_GOODS{"GOOD"};
static constexpr CargoLabel CT_GRAIN{"GRAI"};
static constexpr CargoLabel CT_WOOD{"WOOD"};
static constexpr CargoLabel CT_IRON_ORE{"IORE"};
static constexpr CargoLabel CT_STEEL{"STEL"};
static constexpr CargoLabel CT_VALUABLES{"VALU"};
/* Arctic */
static constexpr CargoLabel CT_WHEAT{'WHEA'};
static constexpr CargoLabel CT_PAPER{'PAPR'};
static constexpr CargoLabel CT_GOLD{'GOLD'};
static constexpr CargoLabel CT_FOOD{'FOOD'};
static constexpr CargoLabel CT_WHEAT{"WHEA"};
static constexpr CargoLabel CT_PAPER{"PAPR"};
static constexpr CargoLabel CT_GOLD{"GOLD"};
static constexpr CargoLabel CT_FOOD{"FOOD"};
/* Tropic */
static constexpr CargoLabel CT_RUBBER{'RUBR'};
static constexpr CargoLabel CT_FRUIT{'FRUT'};
static constexpr CargoLabel CT_MAIZE{'MAIZ'};
static constexpr CargoLabel CT_COPPER_ORE{'CORE'};
static constexpr CargoLabel CT_WATER{'WATR'};
static constexpr CargoLabel CT_DIAMONDS{'DIAM'};
static constexpr CargoLabel CT_RUBBER{"RUBR"};
static constexpr CargoLabel CT_FRUIT{"FRUT"};
static constexpr CargoLabel CT_MAIZE{"MAIZ"};
static constexpr CargoLabel CT_COPPER_ORE{"CORE"};
static constexpr CargoLabel CT_WATER{"WATR"};
static constexpr CargoLabel CT_DIAMONDS{"DIAM"};
/* Toyland */
static constexpr CargoLabel CT_SUGAR{'SUGR'};
static constexpr CargoLabel CT_TOYS{'TOYS'};
static constexpr CargoLabel CT_BATTERIES{'BATT'};
static constexpr CargoLabel CT_CANDY{'SWET'};
static constexpr CargoLabel CT_TOFFEE{'TOFF'};
static constexpr CargoLabel CT_COLA{'COLA'};
static constexpr CargoLabel CT_COTTON_CANDY{'CTCD'};
static constexpr CargoLabel CT_BUBBLES{'BUBL'};
static constexpr CargoLabel CT_PLASTIC{'PLST'};
static constexpr CargoLabel CT_FIZZY_DRINKS{'FZDR'};
static constexpr CargoLabel CT_SUGAR{"SUGR"};
static constexpr CargoLabel CT_TOYS{"TOYS"};
static constexpr CargoLabel CT_BATTERIES{"BATT"};
static constexpr CargoLabel CT_CANDY{"SWET"};
static constexpr CargoLabel CT_TOFFEE{"TOFF"};
static constexpr CargoLabel CT_COLA{"COLA"};
static constexpr CargoLabel CT_COTTON_CANDY{"CTCD"};
static constexpr CargoLabel CT_BUBBLES{"BUBL"};
static constexpr CargoLabel CT_PLASTIC{"PLST"};
static constexpr CargoLabel CT_FIZZY_DRINKS{"FZDR"};
/** Dummy label for engines that carry no cargo; they actually carry 0 passengers. */
static constexpr CargoLabel CT_NONE = CT_PASSENGERS;
static constexpr CargoLabel CT_INVALID{UINT32_MAX}; ///< Invalid cargo type.
static constexpr CargoLabel CT_INVALID{"\xFF\xFF\xFF\xFF"}; ///< Invalid cargo type.
static constexpr CargoType NUM_ORIGINAL_CARGO{12}; ///< Original number of cargo types.
static constexpr CargoType NUM_CARGO{64}; ///< Maximum number of cargo types in a game.
+1 -3
View File
@@ -136,9 +136,7 @@ static void DrawTile_Clear(TileInfo *ti)
uint8_t density = GetClearDensity(ti->tile);
DrawGroundSprite(_clear_land_sprites_snow_desert[density] + SlopeToSpriteOffset(ti->tileh), PAL_NONE);
if (GetClearGround(ti->tile) == ClearGround::Rocks) {
/* There 4 levels of snowy overlay rocks, each with 19 sprites. */
++density;
DrawGroundSprite(SPR_OVERLAY_ROCKS_BASE + (density * 19) + SlopeToSpriteOffset(ti->tileh), PAL_NONE);
DrawGroundSprite(_clear_land_sprites_snowy_rocks[density] + SlopeToSpriteOffset(ti->tileh), PAL_NONE);
}
DrawBridgeMiddle(ti, {});
+5 -21
View File
@@ -2792,22 +2792,6 @@ static bool ConFramerateWindow(std::span<std::string_view> argv)
return true;
}
/**
* Format a label as a string.
* If all elements are visible ASCII (excluding space) then the label will be formatted as a string of 4 characters,
* otherwise it will be output as an 8-digit hexadecimal value.
* @param label Label to format.
* @return string representation of label.
**/
static std::string FormatLabel(uint32_t label)
{
if (std::isgraph(GB(label, 24, 8)) && std::isgraph(GB(label, 16, 8)) && std::isgraph(GB(label, 8, 8)) && std::isgraph(GB(label, 0, 8))) {
return fmt::format("{:c}{:c}{:c}{:c}", GB(label, 24, 8), GB(label, 16, 8), GB(label, 8, 8), GB(label, 0, 8));
}
return fmt::format("{:08X}", label);
}
/** List all road types and their configuration. */
static void ConDumpRoadTypes()
{
@@ -2821,7 +2805,7 @@ static void ConDumpRoadTypes()
std::map<uint32_t, const GRFFile *> grfs;
for (RoadType rt : EnumRange(ROADTYPE_END)) {
const RoadTypeInfo *rti = GetRoadTypeInfo(rt);
if (rti->label == 0) continue;
if (rti->label.Empty()) continue;
GrfID grfid{};
const GRFFile *grf = rti->grffile[RoadSpriteType::Ground];
if (grf != nullptr) {
@@ -2831,7 +2815,7 @@ static void ConDumpRoadTypes()
IConsolePrint(CC_DEFAULT, " {:02d} {} {}, Flags: {}{}{}{}{}, GRF: {:08X}, {}",
(uint)rt,
RoadTypeIsTram(rt) ? "Tram" : "Road",
FormatLabel(rti->label),
rti->label.AsString(),
rti->flags.Test(RoadTypeFlag::Catenary) ? 'c' : '-',
rti->flags.Test(RoadTypeFlag::NoLevelCrossing) ? 'l' : '-',
rti->flags.Test(RoadTypeFlag::NoHouses) ? 'X' : '-',
@@ -2860,7 +2844,7 @@ static void ConDumpRailTypes()
std::map<uint32_t, const GRFFile *> grfs;
for (RailType rt : EnumRange(RAILTYPE_END)) {
const RailTypeInfo *rti = GetRailTypeInfo(rt);
if (rti->label == 0) continue;
if (rti->label.Empty()) continue;
GrfID grfid{};
const GRFFile *grf = rti->grffile[RailSpriteType::Ground];
if (grf != nullptr) {
@@ -2869,7 +2853,7 @@ static void ConDumpRailTypes()
}
IConsolePrint(CC_DEFAULT, " {:02d} {}, Flags: {}{}{}{}{}{}, GRF: {:08X}, {}",
(uint)rt,
FormatLabel(rti->label),
rti->label.AsString(),
rti->flags.Test(RailTypeFlag::Catenary) ? 'c' : '-',
rti->flags.Test(RailTypeFlag::NoLevelCrossing) ? 'l' : '-',
rti->flags.Test(RailTypeFlag::Hidden) ? 'h' : '-',
@@ -2917,7 +2901,7 @@ static void ConDumpCargoTypes()
IConsolePrint(CC_DEFAULT, " {:02d} Bit: {:2d}, Label: {}, Callback mask: 0x{:02X}, Cargo class: {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}, GRF: {:08X}, {}",
spec->Index(),
spec->bitnum,
FormatLabel(spec->label.base()),
spec->label.AsString(),
spec->callback_mask.base(),
spec->classes.Test(CargoClass::Passengers) ? 'p' : '-',
spec->classes.Test(CargoClass::Mail) ? 'm' : '-',
+2
View File
@@ -13,6 +13,8 @@ add_files(
geometry_func.hpp
geometry_type.hpp
kdtree.hpp
label.cpp
label_type.hpp
math_func.cpp
math_func.hpp
multimap.hpp
+29
View File
@@ -0,0 +1,29 @@
/*
* 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 <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/** @file label.cpp Implementation of label functions. */
#include "../stdafx.h"
#include "label_type.hpp"
#include "../string_func.h"
#include "../safeguards.h"
/**
* Get the label as a \c std::string.
* If the label is all \c std::isgraph characters, it will return these characters as string,
* otherwise it will format it as a 8-digit hexadecimal.
* @return The label as string.
*/
std::string BaseLabel::AsString() const
{
if (std::ranges::all_of(*this, [](uint8_t c) { return std::isgraph(c); })) {
return std::string{reinterpret_cast<const char *>(this->data()), this->size()};
}
return FormatArrayAsHex(*this);
}
+72
View File
@@ -0,0 +1,72 @@
/*
* 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 <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/** @file label_type.hpp A type for 4 character labels/tags/ids in files that should be read/shown as is. */
#ifndef LABEL_TYPE_HPP
#define LABEL_TYPE_HPP
/** Base for a four character label/tag/id. */
struct BaseLabel : std::array<uint8_t, 4> {
/**
* Check whether the label is empty.
* @return \c true iff the label is empty, i.e. all zeros.
*/
constexpr inline bool Empty() const
{
return std::ranges::all_of(*this, [](uint8_t b) { return b == 0; });
};
/**
* Get the label as a \c std::string.
* If the label is all \c std::isgraph characters, it will return these characters as string,
* otherwise it will format it as a 8-digit hexadecimal.
* @return The label as string.
*/
std::string AsString() const;
};
/**
* A four character label/tag/id.
* @tparam Tag Type to distinguish labels/tags/ids of different types.
*/
template <typename Tag>
struct Label : BaseLabel {
/** Create an empty label, i.e. all zeros. */
constexpr Label()
{
std::ranges::fill(*this, 0);
}
/**
* Create a label with the given 4 letter character string.
* @param label The label value.
* @note This defines 5 characters, but the 5th character is assumed to null-terminator.
*/
constexpr Label(const char (&label)[5])
{
std::copy(label, label + this->size(), this->begin());
}
/**
* Create a label with the given 4 bytes.
* @param label The label value.
*/
constexpr Label(const uint8_t (&label)[4])
{
std::copy(label, label + this->size(), this->begin());
}
/**
* Default spaceship operator.
* @param other The label to compare to.
* @return The comparison ordering.
*/
constexpr std::strong_ordering operator<=>(const Label<Tag> &other) const = default;
};
#endif /* LABEL_TYPE_HPP */
+10 -6
View File
@@ -176,7 +176,7 @@ static void InitBlocksizeForVehicles(VehicleType type, EngineImageType image_typ
{
int max_extend_left = 0;
int max_extend_right = 0;
uint max_height = 0;
uint height = 0;
for (const Engine *e : Engine::IterateType(type)) {
if (!e->IsEnabled()) continue;
@@ -192,7 +192,7 @@ static void InitBlocksizeForVehicles(VehicleType type, EngineImageType image_typ
case VehicleType::Ship: GetShipSpriteSize(eid, x, y, x_offs, y_offs, image_type); break;
case VehicleType::Aircraft: GetAircraftSpriteSize(eid, x, y, x_offs, y_offs, image_type); break;
}
if (y > max_height) max_height = y;
if (y > height) height = y;
if (-x_offs > max_extend_left) max_extend_left = -x_offs;
if ((int)x + x_offs > max_extend_right) max_extend_right = x + x_offs;
}
@@ -200,15 +200,19 @@ static void InitBlocksizeForVehicles(VehicleType type, EngineImageType image_typ
int min_extend = ScaleSpriteTrad(16);
int max_extend = ScaleSpriteTrad(98);
/* Limit sprite height to limits based on original design height to prevent window size running away. */
int min_height = ScaleSpriteTrad(GetVehicleHeight(type));
int max_height = min_height + min_height / 2;
switch (image_type) {
case EngineImageType::InDepot:
_base_block_sizes_depot[type].height = std::max<uint>(ScaleSpriteTrad(GetVehicleHeight(type)), max_height);
_base_block_sizes_depot[type].extend_left = Clamp(max_extend_left, min_extend, max_extend);
_base_block_sizes_depot[type].height = Clamp(height, min_height, max_height);
_base_block_sizes_depot[type].extend_left = Clamp(max_extend_left, min_extend, max_extend);
_base_block_sizes_depot[type].extend_right = Clamp(max_extend_right, min_extend, max_extend);
break;
case EngineImageType::Purchase:
_base_block_sizes_purchase[type].height = std::max<uint>(ScaleSpriteTrad(GetVehicleHeight(type)), max_height);
_base_block_sizes_purchase[type].extend_left = Clamp(max_extend_left, min_extend, max_extend);
_base_block_sizes_purchase[type].height = Clamp(height, min_height, max_height);
_base_block_sizes_purchase[type].extend_left = Clamp(max_extend_left, min_extend, max_extend);
_base_block_sizes_purchase[type].extend_right = Clamp(max_extend_right, min_extend, max_extend);
break;
+5 -5
View File
@@ -59,11 +59,11 @@ static constexpr std::initializer_list<NWidgetPart> _nested_gs_config_widgets =
NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize),
NWidget(NWID_HORIZONTAL, NWidContainerFlag::EqualSize),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_GSC_OPEN_URL), SetResize(1, 0), SetFill(1, 0), SetStringTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_GSC_TEXTFILE + TFT_README), SetFill(1, 1), SetResize(1, 0), SetMinimalSize(93, 0), SetStringTip(STR_TEXTFILE_VIEW_README, STR_TEXTFILE_VIEW_README_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_GSC_TEXTFILE + TextfileType::Readme), SetFill(1, 1), SetResize(1, 0), SetMinimalSize(93, 0), SetStringTip(STR_TEXTFILE_VIEW_README, STR_TEXTFILE_VIEW_README_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL, NWidContainerFlag::EqualSize),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_GSC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 1), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_GSC_TEXTFILE + TFT_LICENSE), SetFill(1, 1), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_LICENCE, STR_TEXTFILE_VIEW_LICENCE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_GSC_TEXTFILE + TextfileType::Changelog), SetFill(1, 1), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_GSC_TEXTFILE + TextfileType::License), SetFill(1, 1), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_LICENCE, STR_TEXTFILE_VIEW_LICENCE_TOOLTIP),
EndContainer(),
EndContainer(),
EndContainer(),
@@ -225,7 +225,7 @@ struct GSConfigWindow : public Window {
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
{
if (widget >= WID_GSC_TEXTFILE && widget < WID_GSC_TEXTFILE + TFT_CONTENT_END) {
if (widget >= WID_GSC_TEXTFILE && widget < WID_GSC_TEXTFILE + TextfileType::ContentEnd) {
if (GameConfig::GetConfig() == nullptr) return;
ShowScriptTextfileWindow(this, static_cast<TextfileType>(widget - WID_GSC_TEXTFILE), OWNER_DEITY);
@@ -396,7 +396,7 @@ struct GSConfigWindow : public Window {
const GameConfig *config = GameConfig::GetConfig();
this->SetWidgetDisabledState(WID_GSC_OPEN_URL, config->GetInfo() == nullptr || config->GetInfo()->GetURL().empty());
for (TextfileType tft : EnumRange(TFT_CONTENT_BEGIN, TFT_CONTENT_END)) {
for (TextfileType tft : EnumRange(TextfileType::ContentBegin, TextfileType::ContentEnd)) {
this->SetWidgetDisabledState(WID_GSC_TEXTFILE + tft, !config->GetTextfile(tft, OWNER_DEITY).has_value());
}
this->RebuildVisibleSettings();
+1 -1
View File
@@ -62,7 +62,7 @@ static std::optional<std::string> FindGameManualFilePath(std::string_view filena
/** Window class displaying the game manual textfile viewer. */
struct GameManualTextfileWindow : public TextfileWindow {
GameManualTextfileWindow(std::string_view filename, Subdirectory subdir) : TextfileWindow(nullptr, TFT_GAME_MANUAL)
GameManualTextfileWindow(std::string_view filename, Subdirectory subdir) : TextfileWindow(nullptr, TextfileType::GameManual)
{
this->ConstructWindow();
+7
View File
@@ -647,14 +647,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Histórico de Carga
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Produzido
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Mostrar/Ocultar gráfico das cargas produzidas por esta indústria
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Transportado
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Mostrar/Ocultar gráfico das cargas transportadas a partir desta indústria
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Entregue
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Mostrar/Ocultar gráfico das cargas entregues a esta indústria
STR_GRAPH_INDUSTRY_RANGE_WAITING :Aguardando
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Mostrar/Ocultar gráfico das cargas aguardando nesta indústria
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Histórico de Carga
STR_GRAPH_TOWN_RANGE_PRODUCED :Produzido
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Mostrar/Ocultar gráfico das cargas produzidas por esta localidade
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Transportado
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Mostrar/Ocultar gráfico das cargas transportadas a partir desta localidade
STR_GRAPH_TOWN_RANGE_DELIVERED :Entregue
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Mostrar/Ocultar gráfico das cargas entregues a esta localidade
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Mostrar avaliações detalhadas de desempenho
+84 -54
View File
@@ -526,6 +526,7 @@ STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Construcció d'
STR_LANDSCAPING_MENU_LANDSCAPING :Modificació del paisatge
STR_LANDSCAPING_MENU_PLANT_TREES :Planta arbres
STR_LANDSCAPING_MENU_PLACE_SIGN :Situa un senyal
STR_LANDSCAPING_MENU_PLACE_OBJECT :Situa objectes
# Music menu
STR_TOOLBAR_SOUND_MUSIC :So/música
@@ -646,14 +647,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Historial de càrregues
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Produït
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Mostra/amaga el gràfic de càrrega produïda per aquesta indústria.
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Transportat
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Mostra/amaga el gràfic de càrrega transportada d'aquesta indústria.
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Entregades
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Mostra/amaga el gràfic de càrrega entregada a aquesta indústria.
STR_GRAPH_INDUSTRY_RANGE_WAITING :En espera
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Mostra/amaga el gràfic de càrrega en espera en aquesta indústria.
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Historial de càrregues
STR_GRAPH_TOWN_RANGE_PRODUCED :Produït
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Mostra/amaga el gràfic de càrrega produïda per aquesta població.
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Transportades
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Mostra/amaga el gràfic de càrrega transportada des d'aquesta població.
STR_GRAPH_TOWN_RANGE_DELIVERED :Entregat
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Mostra/amaga el gràfic de càrrega entregada a aquesta població.
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Mostra ratis de rendiment detallats
@@ -1352,8 +1360,12 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HIGH :Alt
STR_CONFIG_SETTING_RECESSIONS :Recessions: {STRING}
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si està activat, poden haver recessions periòdicament. Durant una recessió, tota la producció és significativament més baixa, tornant al nivell previ quan s'acabi el període de recessió.
STR_CONFIG_SETTING_TRAIN_FLIP_REVERSE :Permet que els trens donin la volta quan inverteixen el sentit: {STRING}
###length 3
STR_CONFIG_SETTING_TRAIN_FLIP_REVERSE_ALL :Tots
STR_CONFIG_SETTING_TRAIN_FLIP_REVERSE_END_OF_LINE_ONLY :Només al final de línia
STR_CONFIG_SETTING_TRAIN_FLIP_REVERSE_NONE :Cap
STR_CONFIG_SETTING_DISASTERS :Catàstrofes: {STRING}
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Permet o no que passin catàstrofes que puguin bloquejar o destruir ocasionalment vehicles o infraestructures
@@ -1361,12 +1373,12 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Permet o no que
STR_CONFIG_SETTING_CITY_APPROVAL :Actitud de les alcaldies de les poblacions: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Establiu com afecta al prestigi de les companyies el soroll i els danys ambientals que provoquen. Aquest prestigi influirà en la futura acceptació o denegació d'accions de construcció a la població.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Alçada màxima del mapa: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Altitud màxima del mapa: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Estableix l'alçada màxima del terreny del mapa. Amb «Automàtica», s'escollirà un valor adequat després que es generi el terreny.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
###setting-zero-is-special
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :Automàtica
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}No es pot escollir aquest límit d'alçada del mapa. Hi ha almenys una muntanya al mapa que és més alta.
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}No es pot escollir aquest límit d'altitud del mapa. Hi ha almenys una muntanya al mapa que és més alta.
STR_CONFIG_SETTING_AUTOSLOPE :Permet la modificació del terreny sota edificis, rails, etc.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permet modelar el terreny sota les vies, els edificis i altres elements sense eliminar-los.
@@ -1558,7 +1570,11 @@ STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Escala la produ
STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Escala la producció de càrrega de les indústries segons aquest percentatge.
STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}{NBSP}%
STR_CONFIG_SETTING_CARGO_AGING_RATE :Caiguda del valor de la càrrega respecte el temps: {STRING}
STR_CONFIG_SETTING_CARGO_AGING_RATE_HELPTEXT :Ajusta la rapidesa amb la qual decreix el valor de la càrrega dels vehicles.
STR_CONFIG_SETTING_CARGO_AGING_RATE_VALUE :{NUM}{NBSP}%
###setting-zero-is-special
STR_CONFIG_SETTING_CARGO_AGING_RATE_ZERO :Sense caiguda
STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenova el vehicle quan sigui vell: {STRING}
STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Si està activat, quan un vehicle arriba al final de la seva vida útil es substitueix automàticament quan es compleixen les condicions d'autorenovació.
@@ -1795,7 +1811,11 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostra als hora
STR_CONFIG_SETTING_QUICKGOTO :Creació ràpida d'ordres per a vehicles: {STRING}
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Preselecciona el botó 'Vés a' quan s'obri la finestra d'ordres
STR_CONFIG_SETTING_DEFAULT_RAIL_ROAD_TYPE :Tipus de rail, carretera o tramvia per defecte (després de la càrrega d'una desada o en una nova partida): {STRING}
###length 3
STR_CONFIG_SETTING_DEFAULT_RAIL_ROAD_TYPE_FIRST :El primer disponible
STR_CONFIG_SETTING_DEFAULT_RAIL_ROAD_TYPE_LAST :L'últim disponible
STR_CONFIG_SETTING_DEFAULT_RAIL_ROAD_TYPE_MOST_USED :El que més es fa servir
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Mostra els camins reservats: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Dóna a les vies reservades un color diferent per visualitzar problemes d'encaminament de trens
@@ -1902,6 +1922,8 @@ STR_CONFIG_SETTING_STATION_LENGTH_LOADING_PENALTY_HELPTEXT :Quan s'activa,
STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Activa límits de velocitat per als vagons: {STRING}
STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Si està activat, també utilitza els límits de velocitat dels vagons per a decidir la velocitat màxima del tren.
STR_CONFIG_SETTING_AIRCRAFT_RANGE :Activa l'abast màxim de les aeronaus: {STRING}
STR_CONFIG_SETTING_AIRCRAFT_RANGE_HELPTEXT :Quan l'opció està activada, els NewGRF poden limitar l'abast màxim de les aeronaus.
STR_CONFIG_SETTING_DISABLE_ELRAILS :Desactiva vies electrificades: {STRING}
STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Activant aquest paràmetre es desactiva el requeriment d'electrificar les vies per poder fer-hi circular locomotores elèctriques
@@ -2209,22 +2231,22 @@ STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permetre als tr
STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Canvia el valor de l'ajustament
# Config errors
STR_CONFIG_ERROR :{WHITE}S'ha produït un error en el fitxer de configuració...
STR_CONFIG_ERROR_ARRAY :{WHITE}...error en la matriu «{STRING}».
STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}...valor «{STRING}» invàlid per a «{STRING}».
STR_CONFIG_ERROR :S'ha produït un error en el fitxer de configuració...
STR_CONFIG_ERROR_ARRAY :Error a la matriu «{STRING}».
STR_CONFIG_ERROR_INVALID_VALUE :Valor «{STRING}» no vàlid per a «{STRING}».
STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}...caràcters finals (espai, nova línia...) al final de la configuració de l'opció «{STRING}».
STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}...s'ignorarà el fitxer NewGRF «{STRING}» perquè l'identificador del NewGRF és el mateix que el de «{STRING}».
STR_CONFIG_ERROR_INVALID_GRF :{WHITE}...s'ignorarà el fitxer NewGRF invàlid «{STRING}»: {STRING}
STR_CONFIG_ERROR_DUPLICATE_GRFID :S'ignorarà el fitxer NewGRF «{STRING}» perquè l'identificador del NewGRF és el mateix que el de «{STRING}».
STR_CONFIG_ERROR_INVALID_GRF :S'ignorarà el fitxer NewGRF invàlid «{STRING}»: {STRING}
STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :no s'ha trobat.
STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :insegur per a ús estàtic.
STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :NewGRF del sistema
STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :no és compatible amb aquesta versió de l'OpenTTD.
STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :desconegut.
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}...el nivell de compressió «{STRING}» no és vàlid.
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}...el format de partida «{STRING}» no està disponible. Es revertirà a «{STRING}».
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :El nivell de compressió «{STRING}» no és vàlid.
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :El format de partida «{STRING}» no està disponible. Es revertirà a «{STRING}».
STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :s'ignorarà el conjunt de gràfics base «{STRING}» perquè no s'ha trobat.
STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}...s'ignorarà el conjunt de sons base «{STRING}» perquè no s'ha trobat.
STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}...s'ignorarà el conjunt de peces de música «{STRING}» perquè no s'ha trobat.
STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :S'ignorarà el conjunt de sons base «{STRING}» perquè no s'ha trobat.
STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :S'ignorarà el conjunt de peces de música «{STRING}» perquè no s'ha trobat.
# Video initialization errors
STR_VIDEO_DRIVER_ERROR :{WHITE}S'ha produït un error en la configuració de vídeo...
@@ -2301,8 +2323,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Juga am
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Eruga màgica (treu indústries i altres objectes inamovibles): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Els túnels es poden creuar: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}Els avions a reacció en aeroports petits tindran menys accidents: {ORANGE}{STRING}
STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Edita l'alçada màxima del mapa: {ORANGE}{NUM}
STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Edita l'alçada màxima del terreny en el mapa
STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Edita l'altitud màxima del mapa: {ORANGE}{NUM}
STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Edita l'altitud màxima del terreny en el mapa
STR_CHEAT_CHANGE_DATE :{LTBLUE}Canvia la data: {ORANGE}{DATE_SHORT}
STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Canvia l'any actual
STR_CHEAT_SETUP_PROD :{LTBLUE}Activa la modificació dels valors de producció: {ORANGE}{STRING}
@@ -3081,6 +3103,8 @@ STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Situa à
STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Defineix àrea de desert.{}Amb Ctrl+clic, es treu l'àrea de desert.
STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Augmenta la mida de l'àrea de terreny a rebaixar/elevar
STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Disminueix la mida de l'àrea de terreny a rebaixar/elevar
STR_TERRAFORM_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Rebaixa una cantonada del terreny. Si la mida és 1×1 i amb Clic+arrossega, es rebaixa la primera cantonada seleccionada i s'anivella l'àrea a la nova alçària. Amb Ctrl+clic+arrossega, se selecciona l'àrea en diagonal. Amb Maj, només es mostrarà el cost estimat de l'acció.
STR_TERRAFORM_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Eleva una cantonada del terreny. Si la mida és 1×1 i amb Clic+arrossega, s'eleva la primera cantonada seleccionada i s'anivella l'àrea a la nova alçària. Amb Ctrl+clic+arrossega, se selecciona l'àrea en diagonal. Amb Maj, només es mostrarà el cost estimat de l'acció.
STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Genera un terreny aleatori
STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Crea un escenari nou
STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Restableix el paisatge
@@ -3490,7 +3514,7 @@ STR_SE_MAPGEN_CAPTION :{WHITE}Tipus d'
STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Terreny pla
STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generar un terreny pla
STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Terreny aleatori
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Alçada del terreny pla:
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Alçària del terreny pla:
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Trieu l'altura de la terra per damunt del nivell de la mar.
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN_TOOLTIP :{BLACK}Mou l'alçada del terreny pla un pas avall
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP_TOOLTIP :{BLACK}Mou l'alçada del terreny pla un pas amunt
@@ -3692,7 +3716,7 @@ STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Un vehic
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Un vehicle «{1:ENGINE}» ha canviat la seva capacitat mentre estava fora del dipòsit o no ha canviat el tipus de càrrega a transportar.
STR_BROKEN_VEHICLE_LENGTH :El tren «{VEHICLE}» propietat de «{COMPANY}» té una llargada incorrecta, probablement a causa de problemes amb els NewGRF. La partida podria dessincronitzar-se o fallar.
STR_NEWGRF_BUGGY :{WHITE}El NewGRF «{0:STRING}» dóna informació incorrecta.
STR_NEWGRF_BUGGY :El NewGRF «{0:STRING}» dóna informació incorrecta.
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}La informació de càrrega/remodelació de «{1:ENGINE}» no encaixa amb la llista de compres després de la construcció. Això podria causar un mal funcionament de la funció autorenova/substitueix.
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :«{1:STRING}» ha provocat un bucle infinit en la crida de producció.
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}'Callback' {1:HEX} ha retornat un resultat desconegut/invàlid {2:HEX}
@@ -4737,6 +4761,7 @@ STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Necessita revis
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Sempre
STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Temps de vida restant (anys)
STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Fiabilitat màxima
STR_ORDER_CONDITIONAL_DRIVING_BACKWARDS :Marxa enrere
###next-name-looks-similar
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Com comparar les dades del vehicle al valor donat
@@ -5059,7 +5084,7 @@ STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... no s
STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... no s'ha pogut convertir el tipus d'imatge. Es necessita una imatge PNG de 8 o 24-bit
STR_ERROR_PNGMAP_MISC :{WHITE}... alguna cosa ha anat malament (probablement un fitxer corrupte)
STR_ERROR_BMPMAP :{WHITE}Impossible carregar el terreny des del BMP...
STR_ERROR_BMPMAP :Impossible carregar el terreny des del BMP...
STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... no s'ha pogut convertir el tipus d'imatge
STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... l'imatge és massa gran
@@ -5074,7 +5099,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Només s
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Captura de pantalla enorme
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}La captura de pantalla tindrà una resolució de {COMMA} x {COMMA} píxels. Es tardarà una estona a fer la captura. Vols continuar?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Mapa d'alçades desat correctament amb el nom «{STRING}». El cim més alt té alçada {NUM}.
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Mapa d'altituds desat correctament amb el nom «{STRING}». El cim més alt té altitud {NUM}.
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Captura de pantalla desada correctament com a '{STRING}'
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Error en la captura de pantalla!
@@ -5095,7 +5120,7 @@ STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}No es po
STR_ERROR_SITE_UNSUITABLE :{WHITE}... lloc inadequat
STR_ERROR_ALREADY_BUILT :{WHITE}... ja construït
STR_ERROR_OWNED_BY :{WHITE}... propietat de {STRING}
STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... l'àrea és propietat d'una altra companyia
STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :L'àrea és propietat d'una altra companyia.
STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... s'ha arribat al límit de neteja de paisatge
STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... s'ha arribat al límit de neteja de cel·les
STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... s'ha arribat al límit de plantat d'arbres
@@ -5131,7 +5156,7 @@ STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CUR
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}No es pot amortitzar préstec...
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}No es poden regalar els diners deixats pel banc...
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}No podeu donar diners a aquesta companyia...
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}No pots comprar la companyia...
STR_ERROR_CAN_T_BUY_COMPANY :No es pot comprar la companyia...
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}No es pot construir la seu de la companyia...
# Town related errors
@@ -5140,7 +5165,7 @@ STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}No es po
STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}No es pot construir una població aquí...
STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}No es pot expandir la població...
STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... massa prop d'una altra població
STR_ERROR_TOO_MANY_TOWNS :{WHITE}... massa poblacions
STR_ERROR_TOO_MANY_TOWNS :Massa poblacions
STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}...no queda espai al mapa.
STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Obres en progrés
STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}No es pot eliminar aquesta població...{}{}Hi ha una estació, un dipòsit o una cel·la pertanyent a la població que no pot ser eliminada
@@ -5148,7 +5173,7 @@ STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no h
STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}La casa no es pot construir...
# Industry related errors
STR_ERROR_TOO_MANY_INDUSTRIES :massa indústries
STR_ERROR_TOO_MANY_INDUSTRIES :Massa indústries
STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}No es poden generar indústries...
STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Aquí no es pot construir {STRING}...
STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Aquí no es pot construir aquest tipus d'indústria...
@@ -5156,7 +5181,7 @@ STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}No es po
STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... massa prop d'altres indústries
STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}...abans s'ha de fundar una població.
STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... només un permès per població
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... només es pot construir en poblacions de més de 1200 hab.
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :Només es pot construir en poblacions de més de 1200 habitants.
STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... només es pot construir en àrees de selva tropical
STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... només es pot construir en àrees de desert
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... només es pot construir en poblacions (substituint cases)
@@ -5174,10 +5199,10 @@ STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :Canvieu els par
# Station construction related errors
STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Aquí no es pot construir una estació de tren...
STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}No es pot construir una parada d'autobús...
STR_ERROR_CAN_T_BUILD_BUS_STATION :No es pot construir una parada d'autobús...
STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}No es pot construir estació de mercaderies...
STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}No puc construir l'estació de tramvies de passatgers
STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}No puc construir l'estació de tramvies de càrrega
STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :No es pot construir l'estació de tramvies de càrrega
STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Aquí no es pot construir un port...
STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :Aquí no es pot construir un aeroport...
@@ -5185,10 +5210,10 @@ STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Fusiona
STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... estació massa extensa
STR_ERROR_STATION_DISALLOWED_NUMBER_TRACKS :{WHITE}... nombre de vies no vàlid
STR_ERROR_STATION_DISALLOWED_LENGTH :{WHITE}... llargada no vàlida
STR_ERROR_TOO_MANY_STATIONS_LOADING :massa estacions/àrees de càrrega
STR_ERROR_TOO_MANY_STATION_SPECS :hi ha massa parts d'estacions de tren.
STR_ERROR_TOO_MANY_BUS_STOPS :massa parades d'autobús
STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Masses estacions de càrrega
STR_ERROR_TOO_MANY_STATIONS_LOADING :Massa estacions/àrees de càrrega
STR_ERROR_TOO_MANY_STATION_SPECS :Hi ha massa parts d'estacions de tren.
STR_ERROR_TOO_MANY_BUS_STOPS :Massa parades d'autobús
STR_ERROR_TOO_MANY_TRUCK_STOPS :Massa estacions de càrrega
STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Massa prop d'un altre moll
STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Massa prop d'un altre aeroport
STR_ERROR_CAN_T_RENAME_STATION :{WHITE}No es pot canviar el nom de l'estació...
@@ -5254,17 +5279,18 @@ STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Tipus de rail i
STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}No es pot moure el vehicle...
STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}La màquina posterior sempre ha de seguir la seva parella davantera
STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Incapaç de trobar el camí a la cotxera local
STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Impossible trobar la cotxera local
STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :No es pot trobar el camí a la cotxera local.
STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :Impossible trobar la cotxera local
STR_ERROR_UNABLE_TO_FIND_LOCAL_HANGAR :Impossible trobar l'hangar local
STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Tipus de cotxera incorrecta
# Depot unbunching related errors
STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... cada llista d'ordres només pot tenir una ordre d'espaiar.
STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... no es poden fer servir ordres de càrrega completa quan el vehicle té una ordre d'espaiat.
STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :no es poden espaiar vehicles que tenen una ordre de càrrega completa.
STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... no pot fer servir ordres condicionals quan un vehicle té una ordre d'espaiat.
STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :els vehicles no es poden espaiar si tenen ordres condicionals.
STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :No es poden espaiar vehicles que tenen una ordre de càrrega completa.
STR_ERROR_UNBUNCHING_NO_CONDITIONAL :No poden fer servir ordres condicionals quan un vehicle té una ordre d'espaiat.
STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :Els vehicles no es poden espaiar si tenen ordres condicionals.
# Autoreplace related errors
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} és massa llarg després de la substitució
@@ -5306,7 +5332,7 @@ STR_ERROR_NO_SUITABLE_ROAD :{WHITE}No hi ha
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}No hi ha vies de tramvia adequades.
# Waterway construction errors
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Aquí no es poden construir canals...
STR_ERROR_CAN_T_BUILD_CANALS :Aquí no es poden construir canals...
STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Aquí no es pot construir una resclosa...
STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Aquí no es poden posar rius...
STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}...s'ha de construir sobre l'aigua.
@@ -5323,23 +5349,27 @@ STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... el t
STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Aquí no es poden plantar arbres...
# Bridge related errors
STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Aquí no es pot construir el pont...
STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :Aquí no es pot construir el pont...
STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}...abans s'ha d'enderrocar el pont.
STR_ERROR_CAN_T_START_AND_END_ON :no es pot començar i acabar a la mateixa posició.
STR_ERROR_CAN_T_START_AND_END_ON :No es pot començar i acabar a la mateixa posició.
STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Les capçaleres del pont no són al mateix nivell
STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}El pont és massa baix pel terreny
STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :El pont és massa baix per al terreny.
STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}El pont és massa alt per a aquest terreny.
STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Inici i final han d'estar en línia recta
STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... els extrems del pont han d'estar tots dos a terra
STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... el pont és massa llarg
STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}El pont acabaria fora del mapa
STR_ERROR_BRIDGE_TOO_LOW_FOR_STATION :{WHITE}El pont és {HEIGHT} massa baix per a l'estació.
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROADSTOP :{WHITE}El pont és {HEIGHT} massa baix per a la parada de carretera.
STR_ERROR_BRIDGE_TOO_LOW_FOR_DOCK :{WHITE}El pont és {HEIGHT} massa baix per al moll.
STR_ERROR_BRIDGE_TOO_LOW_FOR_BUOY :{WHITE}El pont és {HEIGHT} massa baix per a la boia.
STR_ERROR_BRIDGE_TOO_LOW_FOR_RAIL_WAYPOINT :{WHITE}El pont és {HEIGHT} massa baix per al punt de pas.
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROAD_WAYPOINT :{WHITE}El pont és {HEIGHT} massa baix per al punt de pas de carretera.
STR_ERROR_BRIDGE_TOO_LOW_FOR_LOCK :{WHITE}El pont és {HEIGHT} massa baix per a la resclosa.
STR_ERROR_BRIDGE_TOO_LOW_FOR_STATION :El pont és {HEIGHT} massa baix per a l'estació.
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROADSTOP :El pont és {HEIGHT} massa baix per a la parada de carretera.
STR_ERROR_BRIDGE_TOO_LOW_FOR_DOCK :El pont és {HEIGHT} massa baix per al moll.
STR_ERROR_BRIDGE_TOO_LOW_FOR_BUOY :El pont és {HEIGHT} massa baix per a la boia.
STR_ERROR_BRIDGE_TOO_LOW_FOR_RAIL_WAYPOINT :El pont és {HEIGHT} massa baix per al punt de pas.
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROAD_WAYPOINT :El pont és {HEIGHT} massa baix per al punt de pas de carretera.
STR_ERROR_BRIDGE_TOO_LOW_FOR_LOCK :El pont és {HEIGHT} massa baix per a la resclosa.
STR_ERROR_BRIDGE_TOO_LOW_FOR_TRAIN_DEPOT :El pont és {HEIGHT} massa baix per a la cotxera de trens.
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROADVEH_DEPOT :El pont és {HEIGHT} massa baix per a les cotxeres de vehicles de carretera.
STR_ERROR_BRIDGE_TOO_LOW_FOR_SHIP_DEPOT :El pont és {HEIGHT} massa baix per a la drassana.
STR_ERROR_BRIDGE_TOO_LOW_FOR_OBJECT :El pont és {HEIGHT} massa baix per a l'objecte.
# Tunnel related errors
STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Aquí no es pot construir el túnel...
@@ -5351,7 +5381,7 @@ STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Impossib
STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... túnel massa llarg
# Object related errors
STR_ERROR_TOO_MANY_OBJECTS :massa objectes
STR_ERROR_TOO_MANY_OBJECTS :Massa objectes
STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}No es pot construir l'objecte...
STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objecte en el camí
STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... seu de la companyia en el camí
@@ -5409,9 +5439,9 @@ STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}No es po
###length VEHICLE_TYPES
STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}No es pot comprar el vehicle ferroviari...
STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}No es pot comprar l'automòbil...
STR_ERROR_CAN_T_BUY_SHIP :{WHITE}No es pot comprar el vaixell...
STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}No es pot comprar l'avió...
STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :No es pot comprar l'automòbil...
STR_ERROR_CAN_T_BUY_SHIP :No es pot comprar el vaixell...
STR_ERROR_CAN_T_BUY_AIRCRAFT :No es pot comprar l'aeronau...
###length VEHICLE_TYPES
STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}No es pot canviar el nom del tipus de vehicle ferroviari...
@@ -5437,10 +5467,10 @@ STR_ERROR_CAN_T_AUTOREPLACE_ROAD_VEHICLE :{WHITE}Hi ha ve
STR_ERROR_CAN_T_AUTOREPLACE_SHIP :{WHITE}Hi ha vaixells que no es poden autoreemplaçar...
STR_ERROR_CAN_T_AUTOREPLACE_AIRCRAFT :{WHITE}Hi ha aeronaus que no es poden autoreemplaçar...
STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Massa vehicles en joc
STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :Massa vehicles en joc
STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}No es pot canviar l'interval de les revisions...
STR_ERROR_VEHICLE_IS_DESTROYED :vehicle destruït
STR_ERROR_VEHICLE_IS_DESTROYED :Vehicle destruït
STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}... no tots els vehicles són idèntics.
@@ -5465,7 +5495,7 @@ STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}L'avió
# Order related errors
STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}...no hi ha més espai disponible per ordres.
STR_ERROR_TOO_MANY_ORDERS :massa ordres
STR_ERROR_TOO_MANY_ORDERS :Massa ordres
STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}No es pot afegir una nova ordre...
STR_ERROR_CAN_T_DELETE_THIS_ORDER :Aquesta ordre no es pot esborrar...
STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}No es pot modificar aquesta ordre...
@@ -5473,8 +5503,8 @@ STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Impossib
STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Impossible saltar l'ordre actual...
STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Impossible saltar l'ordre seleccionada...
STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... el vehicle no pot anar a totes les estacions
STR_ERROR_CAN_T_ADD_ORDER :el vehicle no pot anar a aquesta estació.
STR_ERROR_CAN_T_ADD_ORDER_SHARED :un vehicle que comparteix aquesta ordre no pot anar a aquesta estació.
STR_ERROR_CAN_T_ADD_ORDER :El vehicle no pot anar a aquesta estació.
STR_ERROR_CAN_T_ADD_ORDER_SHARED :Un vehicle que comparteix aquesta ordre no pot anar a aquesta estació.
STR_ERROR_CAN_T_COPY_ORDER_VEHICLE_LIST :{WHITE}... no tots els vehicles tenen les mateixes ordres.
STR_ERROR_CAN_T_SHARE_ORDER_VEHICLE_LIST :{WHITE}... no tots els vehicles comparteixen ordres.
@@ -5507,7 +5537,7 @@ STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... l'ho
STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... l'horari encara no ha començat.
# Sign related errors
STR_ERROR_TOO_MANY_SIGNS :massa senyals
STR_ERROR_TOO_MANY_SIGNS :Massa senyals
STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Aquí no es pot situar un senyal...
STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}No es pot canviar el nom del senyal...
STR_ERROR_CAN_T_DELETE_SIGN :El senyal no es pot esborrar...
+7
View File
@@ -646,14 +646,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Cargo History
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Produced
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Toggle graph of cargo produced by this industry
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Transported
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Toggle graph of cargo transported from this industry
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Delivered
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Toggle graph of cargo delivered to this industry
STR_GRAPH_INDUSTRY_RANGE_WAITING :Waiting
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Toggle graph of cargo waiting at this industry
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Cargo History
STR_GRAPH_TOWN_RANGE_PRODUCED :Produced
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Toggle graph of cargo produced by this town
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Transported
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Toggle graph of cargo transported from this town
STR_GRAPH_TOWN_RANGE_DELIVERED :Delivered
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Toggle graph of cargo delivered to this town
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Show detailed performance ratings
+13 -6
View File
@@ -646,14 +646,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Cargo History
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Produced
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Toggle graph of cargo produced by this industry
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Transported
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Toggle graph of cargo transported from this industry
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Delivered
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Toggle graph of cargo delivered to this industry
STR_GRAPH_INDUSTRY_RANGE_WAITING :Waiting
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Toggle graph of cargo waiting at this industry
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Cargo History
STR_GRAPH_TOWN_RANGE_PRODUCED :Produced
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Toggle graph of cargo produced by this town
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Transported
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Toggle graph of cargo transported from this town
STR_GRAPH_TOWN_RANGE_DELIVERED :Delivered
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Toggle graph of cargo delivered to this town
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Show detailed performance ratings
@@ -2887,22 +2894,22 @@ STR_PICKER_COLLECTION_DELETE_QUERY :Delete collecti
STR_PICKER_COLLECTION_DELETE_QUERY_TEXT :{YELLOW}Are you sure you want to delete this collection?
STR_PICKER_COLLECTION_DELETE_QUERY_DISABLED_TEXT :{YELLOW}Are you sure you want to delete this collection? There are items from disabled NewGRFs in it!
STR_PICKER_STATION_CLASS_TOOLTIP :Select a station class to display
STR_PICKER_STATION_CLASS_TOOLTIP :Select a station class to display. Ctrl+Click to add or remove in saved items
STR_PICKER_STATION_TYPE_TOOLTIP :Select a station type to build. Ctrl+Click to add or remove in saved items
STR_PICKER_STATION_COLLECTION_TOOLTIP :Select a collection of stations to display
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Select a waypoint class to display
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Select a waypoint class to display. Ctrl+Click to add or remove in saved items
STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Select a waypoint to build. Ctrl+Click to add or remove in saved items
STR_PICKER_WAYPOINT_COLLECTION_TOOLTIP :Select a collection of waypoints to display
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Select a bus station class to display
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Select a bus station class to display. Ctrl+Click to add or remove in saved items
STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Select a bus station type to build. Ctrl+Click to add or remove in saved items
STR_PICKER_ROADSTOP_BUS_COLLECTION_TOOLTIP :Select a collection of bus stations to display
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Select a truck station class to display
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Select a truck station class to display. Ctrl+Click to add or remove in saved items
STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Select a truck station type to build. Ctrl+Click to add or remove in saved items
STR_PICKER_ROADSTOP_TRUCK_COLLECTION_TOOLTIP :Select a collection of truck stations to display
STR_PICKER_OBJECT_CLASS_TOOLTIP :Select an object class to display
STR_PICKER_OBJECT_CLASS_TOOLTIP :Select an object class to display. Ctrl+Click to add or remove in saved items
STR_PICKER_OBJECT_TYPE_TOOLTIP :Select an object type to build. Ctrl+Click to add or remove in saved items. Ctrl+Click+Drag to select the area diagonally. Also press Shift to show cost estimate only
STR_PICKER_OBJECT_COLLECTION_TOOLTIP :Select a collection of objects to display
STR_PICKER_HOUSE_CLASS_TOOLTIP :Select a town zone to display
STR_PICKER_HOUSE_CLASS_TOOLTIP :Select a town zone to display. Ctrl+Click to add or remove in saved items
STR_PICKER_HOUSE_TYPE_TOOLTIP :Select a house type to build. Ctrl+Click to add or remove in saved items
STR_PICKER_HOUSE_COLLECTION_TOOLTIP :Select a collection of houses to display
+18 -7
View File
@@ -734,14 +734,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Historio de ŝarĝo
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Produktita
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Baskuli diagramon de ŝarĝoj, produktataj de tiu ĉi entrepreno
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Transportita
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Baskuligi diagramon de ŝarĝoj, transportataj de tiu ĉi entrepreno
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Liverita
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Baskuligi diagramon de ŝarĝoj, liverataj al tiu ĉi entrepreno
STR_GRAPH_INDUSTRY_RANGE_WAITING :Atendita
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Baskuligi diagramon de ŝarĝoj, atendantaj ĉe tiu ĉi entrepreno
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Historio de ŝarĝo
STR_GRAPH_TOWN_RANGE_PRODUCED :Provizita
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Baskuligi diagramon de ŝarĝoj, produktataj de tiu ĉi urbo
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Transportita
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Baskuligi diagramon de ŝarĝoj, transportataj de tiu ĉi urbo
STR_GRAPH_TOWN_RANGE_DELIVERED :Liverita
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Baskuligi diagramon de ŝarĝoj, liverataj al tiu ĉi urbo
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Montri detalaj rendimentpritaksoj
@@ -1751,7 +1758,7 @@ STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :originala
STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :plibonigita
STR_CONFIG_SETTING_ROAD_SIDE :Trafikflanko: {STRING}
STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Elektu, sur kiu flanko de la vojo veturas stratveturiloj
STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Elektu, sur kiu flanko de la vojo veturas stratveturiloj.{}Ĉi tio povas ankaŭ influi la grafikojn de signaliloj.{}Rekomencado de la ludo povas esti bezonata por tuta efekto
###length 2
STR_CONFIG_SETTING_ROAD_SIDE_LEFT :maldekstra
@@ -2980,22 +2987,22 @@ STR_PICKER_COLLECTION_DELETE_QUERY :Forigi kolekton
STR_PICKER_COLLECTION_DELETE_QUERY_TEXT :{YELLOW}Ĉu vi certas, ke vi volas forigi ĉi tiun kolekton?
STR_PICKER_COLLECTION_DELETE_QUERY_DISABLED_TEXT :{YELLOW}Ĉu vi certas, ke vi volas forigi ĉi tiun kolekton? Ĝi enhavas erojn de malŝaltitaj NewGRF-dosieroj!
STR_PICKER_STATION_CLASS_TOOLTIP :Elektu klason de stacioj por montri
STR_PICKER_STATION_CLASS_TOOLTIP :Elektu klason de stacioj por montri. Stir+Klaku por aldoni aŭ forigi en la listo de konservitaj eroj
STR_PICKER_STATION_TYPE_TOOLTIP :Elektu tipon de stacio por konstrui. Stir-klako aldonas aŭ forigas la stacion kiel konservita
STR_PICKER_STATION_COLLECTION_TOOLTIP :Elekti kolekton de stacioj por montrado
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Elektu klason de vojpunktoj por montri
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Elektu klason de vojpunktoj por montri. Stir+Klaku por aldoni aŭ forigi en la listo de konservitaj eroj
STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Elektu vojpunkton por konstrui. Stir-klako aldonas aŭ forigas la vojpunkton kiel konservita
STR_PICKER_WAYPOINT_COLLECTION_TOOLTIP :Elekti kolekton de vojpunktoj por montrado
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Elektu klason de bushaltejoj por montri
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Elektu klason de bushaltejoj por montri. Stir+Klaku por aldoni aŭ forigi en la listo de konservitaj eroj
STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Elektu tipon de bushaltejo por konstrui. Stir-klako aldonas aŭ forigas la bushaltejon kiel konservita
STR_PICKER_ROADSTOP_BUS_COLLECTION_TOOLTIP :Elekti kolekton de bushaltejoj por montrado
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Elektu klason de ŝarĝstacioj por montri
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Elektu klason de ŝarĝstacioj por montri. Stir+Klaku por aldoni aŭ forigi en la listo de konservitaj eroj
STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Elektu tipon de ŝarĝstacio por konstrui. Stir-klako aldonas aŭ forigas la ŝarĝstacion kiel konservita
STR_PICKER_ROADSTOP_TRUCK_COLLECTION_TOOLTIP :Elekti kolekton de ŝarĝstacioj por montrado
STR_PICKER_OBJECT_CLASS_TOOLTIP :Elektu klason de objektoj por montri
STR_PICKER_OBJECT_CLASS_TOOLTIP :Elektu klason de objektoj por montri. Stir+Klaku por aldoni aŭ forigi en la listo de konservitaj eroj
STR_PICKER_OBJECT_TYPE_TOOLTIP :Elektu tipon de objekto por konstrui. Stir-klako aldonas aŭ forigas la objekton kiel konservita. Stir-klako kaj ŝovo elektas diagonalan areon. Ankaŭ premu majuskligan klavon por nur montri kostotakson
STR_PICKER_OBJECT_COLLECTION_TOOLTIP :Elekti kolekton de objektoj por montrado
STR_PICKER_HOUSE_CLASS_TOOLTIP :Elektu urbodistrikton por montri
STR_PICKER_HOUSE_CLASS_TOOLTIP :Elektu urbodistrikton por montri. Stir+Klaku por aldoni aŭ forigi en la listo de konservitaj eroj
STR_PICKER_HOUSE_TYPE_TOOLTIP :Elektu tipon de domo por konstrui. Stir-klako aldonas aŭ forigas la objekton kiel konservita
STR_PICKER_HOUSE_COLLECTION_TOOLTIP :Elekti kolekton de domoj por montrado
@@ -5465,6 +5472,10 @@ STR_ERROR_BRIDGE_TOO_LOW_FOR_BUOY :ponto estas tro
STR_ERROR_BRIDGE_TOO_LOW_FOR_RAIL_WAYPOINT :ponto estas tro malalta (je {HEIGHT}) por relvojpunkto
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROAD_WAYPOINT :ponto estas tro malalta (je {HEIGHT}) por strata vojpunkto
STR_ERROR_BRIDGE_TOO_LOW_FOR_LOCK :ponto estas tro malalta (je {HEIGHT}) por kluzo
STR_ERROR_BRIDGE_TOO_LOW_FOR_TRAIN_DEPOT :ponto estas {HEIGHT} tro malalta por vagonartenejo
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROADVEH_DEPOT :ponto estas {HEIGHT} tro malalta por stratveturila garaĝo
STR_ERROR_BRIDGE_TOO_LOW_FOR_SHIP_DEPOT :ponto estas {HEIGHT} tro malalta por ŝipgaraĝo
STR_ERROR_BRIDGE_TOO_LOW_FOR_OBJECT :ponto estas {HEIGHT} tro malalta por objekto
# Tunnel related errors
STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :Ne povas konstrui tunelon ĉi tie...
+30 -19
View File
@@ -703,14 +703,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Kaubaveo Ajalugu
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Toodetud
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Lülita tööstuse toodetud kauba graafik
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Transporditud
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Lülita tööstusest viidud kauba graafik
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Toimetatud
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Lülita tööstusesse viidud kauba graafik
STR_GRAPH_INDUSTRY_RANGE_WAITING :Ootamine
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Lülita tööstuses ootava kauba graafik
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Kaubaveo Ajalugu
STR_GRAPH_TOWN_RANGE_PRODUCED :Toodetud
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Lülita asulas toodetud kauba graafik
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Transporditud
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Lülita asulast viidud kauba graafik
STR_GRAPH_TOWN_RANGE_DELIVERED :Toimetatud
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Lülita asulasse viidud kauba graafik
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Näita põhjalike tegevushinnanguid
@@ -796,7 +803,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Vali 'uu
STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}'Ezy Street' stiilis muusikaprogrammi valimine
STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Vali 'isiklik 1' programm
STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vali 'isiklik 2' programm
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Vahelda lugude segamine sisse/välja
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Vahelda lugude segamine
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Näita muusikalugude valimise akent
# Playlist window
@@ -1667,8 +1674,8 @@ STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Originaalne gen
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Algupärane
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_TERRAIN_TYPE :Maapinna tüüp: {STRING}
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Maastiku mägisus
STR_CONFIG_SETTING_TERRAIN_TYPE :Maksimaalse kõrguse seadistus : {STRING}
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Vali maapinna küngaste ja mägede kõrgus
STR_CONFIG_SETTING_INDUSTRY_DENSITY :Tööstustihedus: {STRING}
STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Määrab, kui palju tööstuseid tekib, ning kui palju neid mängu kestel olema peaks
@@ -1731,8 +1738,8 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Päripäeva
STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Kõrguse level kui kõrgele lapik kaart läheb: {STRING}
###length 2
STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Üks või enam ruutu põhjaäärel pole tühjad
STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Üks või enam ääreruutu pole vesi
STR_CONFIG_SETTING_EDGES_NOT_EMPTY :Üks või enam ruutu põhjaäärel pole tühjad
STR_CONFIG_SETTING_EDGES_NOT_WATER :Üks või enam ääreruutu pole vesi
STR_CONFIG_SETTING_STATION_SPREAD :Jaama küljepikkuse ülempiirang: {STRING}
STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Jaama ühe külje pikkuse ülempiirang. Suur väärtus teeb mängu aeglaseks
@@ -2287,14 +2294,14 @@ STR_CONFIG_ERROR_ARRAY :vigane massiivi
STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... väärtus «{STRING}» on «{STRING}» jaoks kõlbmatu
STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... seadistuse lõpule järgnevad tähed '{STRING}'
STR_CONFIG_ERROR_DUPLICATE_GRFID :vigast NewGRF-i '{STRING}' ei arvestata: korduv NewGRF-i ID '{STRING}'
STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... eiratakse kõlbmatut NewGRF-i «{STRING}»: {STRING}
STR_CONFIG_ERROR_INVALID_GRF :eiratakse kõlbmatut NewGRF-i «{STRING}»: {STRING}
STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ei leitud
STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :muutumatus kasutuses ohtlik
STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :süsteem NewGRF
STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :Mitteühilduv selle OpenTTD versiooniga
STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :tundmatu
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... tihendusaste «{STRING}» ei sobi
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... mängu salvestamise vormingut «{STRING}» ei ole. Taastatakse «{STRING}»
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :tihendusaste «{STRING}» ei sobi
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :mängu salvestamise vormingut «{STRING}» ei ole. Taastatakse «{STRING}»
STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :eiratakse põhigraafika komplekti {STRING}: ei leitud
STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :eiratakse põhihelide komplekti {STRING}: ei leitud
STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :eiratakse põhimuusika komplekti «{STRING}»: ei leitud
@@ -2490,7 +2497,7 @@ STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Kuupäev
STR_NETWORK_SERVER_LIST_PLAY_TIME_SHORT :{BLACK}{NUM}t {NUM}m
STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION :{BLACK}Mängitud aeg
STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP :{BLACK}Mängitud aeg, kui{}mäng ei olnud pausil
STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Suhtluskeel, serveri osa, jne.
STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Serveri ühildavus ja autentimise info
STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Loendis mängu klõpsamine valib selle
STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Server, kus sa viimati mängisid:
@@ -3746,10 +3753,10 @@ STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Ettevaat
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Sa soovid muuta jooksvat mängu. See võib OpenTTD kokku jooksutada ja rikkuda pooleli oleva mängu. Ära nende vigade kohta vearaportit edasta.{}Kas sa oled jätkamises täiesti kindel?
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ei saa faili lisada: korduv GRF ID
STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Sobivat faili ei leitud (ühilduv GRF fail on laaditud)
STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Sobivat faili ei leitud (ühilduv NewGRF fail on laaditud)
STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Ei saa faili lisada: NewGRF failide limiit on saavutatud
STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Puuduvatele failidele on laaditud ühilduvad GRF failid
STR_NEWGRF_COMPATIBLE_LOAD_WARNING :Puuduvatele failidele on laaditud ühilduvad NewGRF failid
STR_NEWGRF_DISABLED_WARNING :{WHITE}Puuduvad GRF failid on välja lülitatud
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Puuduolevad NewGRF failid
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Seisatuse lõpetamine võib põhjustada OpenTTD krahhi. Ära teavita järgnevatest krahhidest.{}Oled sa tõepoolest veendunud, et sa soovid seisatuse lõpetada?
@@ -3768,9 +3775,9 @@ STR_NEWGRF_BROKEN_VEHICLE_LENGTH :Depoost väljas
STR_NEWGRF_BROKEN_CAPACITY :Sõiduki '{1:ENGINE}' kandevõimet muudeti, kuid sõiduk ei olnud depoos ega ümberseadistamisel
STR_BROKEN_VEHICLE_LENGTH :Ettevõtte {1:COMPANY} rongil {0:VEHICLE} pikkus on kõlbmatu. Midagi on valesti NewGRF-iga. Mäng võib kokku joosta või sünkroonist välja minna
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' sisaldab väära teavet.
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Veose/ümberseadistamise teave sõidukil '{1:ENGINE}' erineb ehitamisaegsest ostunimekirjast. Seetõttu võib uuendamisel või asendamisel ümberseadistamine ebaõnnestuda
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' põhjustas toodangu tagasikutsumises lõpmatu korduse
STR_NEWGRF_BUGGY :NewGRF '{STRING}' sisaldab väära teavet.
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :Veose/ümberseadistamise teave sõidukil '{1:ENGINE}' erineb ehitamisaegsest ostunimekirjast. Seetõttu võib uuendamisel või asendamisel ümberseadistamine ebaõnnestuda
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :'{1:STRING}' põhjustas toodangu tagasikutsumises lõpmatu korduse
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :Tagasikutse {1:HEX} tulemus {2:HEX} on kõlbmatu
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' vastas vigase veoseliigiga toodangu callback'is asukohas {2:HEX}
@@ -5015,7 +5022,7 @@ STR_AI_GAME_SCRIPT :{BLACK}GameScri
STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Kontrolli GameScripti logi. Ctrl+klõps avab uues aknas
STR_ERROR_AI_NO_AI_FOUND :Laadimiseks sobivat AI-d ei leitud.{}See AI on makett, ning ei tee midagi.{}AI-sid alla saab laadida kasutades 'aineste allalaadimise' süsteemi.
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Üks skriptidest jooksis kokku. Palun teatada sellest skripti autorit koos ekraanipildiga AI/GamesScripti debugimise aknast
STR_ERROR_AI_PLEASE_REPORT_CRASH :Üks skriptidest jooksis kokku. Palun teatada sellest skripti autorit koos ekraanipildiga AI/GamesScripti debugimise aknast
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/GameScripti debugimise akent saab kasutada ainult serveris
# AI configuration window
@@ -5331,7 +5338,7 @@ STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... koos
STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Ühildamatud rööbasteetüübid
STR_ERROR_CAN_T_MOVE_VEHICLE :Sõidukit ei saa liigutada...
STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Tagumine vedur järgneb alati eesmisele
STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :tagumine vedur järgneb alati eesmisele
STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :ei leia teed kohalikku depoosse
STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :ei leia üles kohalikku depood
STR_ERROR_UNABLE_TO_FIND_LOCAL_HANGAR :ei leia üles kohalikku angaari
@@ -5419,6 +5426,10 @@ STR_ERROR_BRIDGE_TOO_LOW_FOR_BUOY :sild on {HEIGHT
STR_ERROR_BRIDGE_TOO_LOW_FOR_RAIL_WAYPOINT :sild on {HEIGHT} liiga madalal raudtee meldepunkti jaoks
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROAD_WAYPOINT :sild on {HEIGHT} liiga madalal tee meldepunkti jaoks
STR_ERROR_BRIDGE_TOO_LOW_FOR_LOCK :sild on {HEIGHT} liiga madalal luku jaoks
STR_ERROR_BRIDGE_TOO_LOW_FOR_TRAIN_DEPOT :sild on {HEIGHT} liiga madalal depoo jaoks
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROADVEH_DEPOT :sild on {HEIGHT} liiga madalal depoo jaoks
STR_ERROR_BRIDGE_TOO_LOW_FOR_SHIP_DEPOT :sild on {HEIGHT} liiga madalal depoo jaoks
STR_ERROR_BRIDGE_TOO_LOW_FOR_OBJECT :sild on {HEIGHT} liiga madalal objekti jaoks
# Tunnel related errors
STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :Siia ei saa tunnelit ehitada...
@@ -5460,7 +5471,7 @@ STR_ERROR_AIRCRAFT_IN_THE_WAY :õhusõiduk on
STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Sõiduk pole saadaval
STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Sõiduk pole saadaval
STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Laev pole saadaval
STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Õhusõiduk pole saadaval
STR_ERROR_AIRCRAFT_NOT_AVAILABLE :õhusõiduk pole saadaval
###length VEHICLE_TYPES
STR_ERROR_CAN_T_REFIT_TRAIN :Ei saa rongi ümberseadistada...
@@ -5545,7 +5556,7 @@ STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :õhusõiduk len
# Order related errors
STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :korraldustele pole rohkem ruumi
STR_ERROR_TOO_MANY_ORDERS :Liiga palju korraldusi
STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Ei saa lisada uut korraldust...
STR_ERROR_CAN_T_INSERT_NEW_ORDER :Ei saa lisada uut korraldust...
STR_ERROR_CAN_T_DELETE_THIS_ORDER :Seda korraldust ei saa kustutada...
STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Seda korraldust ei saa muuta...
STR_ERROR_CAN_T_MOVE_THIS_ORDER :Seda korraldust ei saa liigutada...
@@ -5561,7 +5572,7 @@ STR_ERROR_CAN_T_SHARE_ORDER_LIST :Korralduste nim
STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :Korralduste jagamist ei saa peatada...
STR_ERROR_CAN_T_COPY_ORDER_LIST :Korralduste nimekirja ei saa kopeerida...
STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... liiga kaugel eelmisest sihtpunktist
STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... ebapiisav õhusõiduki lennuulatus
STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :ebapiisav õhusõiduki lennuulatus
# Extra messages which go on the third line of errors, explaining why orders failed
STR_ERROR_NO_RAIL_STATION :Ei ole ühtegi rongijaama
+18 -7
View File
@@ -646,14 +646,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} rahtihistoria
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Tuotettu
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Valitse, näytetäänkö tämän laitoksen tuottaman rahdin kuvaaja
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Kuljetettu
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Valitse, näytetäänkö tältä laitokselta kuljetetun rahdin kuvaaja
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Toimitettu
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Valitse, näytetäänkö tälle laitokselle toimitetun rahdin kuvaaja
STR_GRAPH_INDUSTRY_RANGE_WAITING :Odottava
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Valitse, näytetäänkö tällä laitoksella odottavan rahdin kuvaaja
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} rahtihistoria
STR_GRAPH_TOWN_RANGE_PRODUCED :Tuotettu
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Valitse, näytetäänkö tämän kunnan tuottaman rahdin kuvaaja
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Kuljetettu
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Valitse, näytetäänkö tästä kunnasta kuljetetun rahdin kuvaaja
STR_GRAPH_TOWN_RANGE_DELIVERED :Toimitettu
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Valitse, näytetäänkö tähän kuntaan toimitetun rahdin kuvaaja
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Näytä tarkat suorituskykyarviot
@@ -2887,22 +2894,22 @@ STR_PICKER_COLLECTION_DELETE_QUERY :Poista kokoelma
STR_PICKER_COLLECTION_DELETE_QUERY_TEXT :{YELLOW}Haluatko varmasti poistaa tämän kokoelman?
STR_PICKER_COLLECTION_DELETE_QUERY_DISABLED_TEXT :{YELLOW}Haluatko varmasti poistaa tämän kokoelman? Se sisältää kohteita käytöstä poistetuista NewGRF:istä!
STR_PICKER_STATION_CLASS_TOOLTIP :Valitse näytettävä asemien luokka
STR_PICKER_STATION_CLASS_TOOLTIP :Valitse näytettävä asemien luokka. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_STATION_TYPE_TOOLTIP :Valitse rakennettavan aseman tyyppi. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_STATION_COLLECTION_TOOLTIP :Valitse näytettävä asemakokoelma
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Valitse näytettävä reittipisteiden luokka
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Valitse näytettävä reittipisteiden luokka. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Valitse rakennettava reittipiste. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_WAYPOINT_COLLECTION_TOOLTIP :Valitse näytettävä reittipistekokoelma
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Valitse näytettävä linja-autopysäkkien luokka
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Valitse näytettävä linja-autopysäkkien luokka. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Valitse rakennettavan linja-autopysäkin tyyppi. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_ROADSTOP_BUS_COLLECTION_TOOLTIP :Valitse näytettävä linja-autoasemakokoelma
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Valitse näytettävä lastauslaitureiden luokka
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Valitse näytettävä lastauslaitureiden luokka. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Valitse rakennettavan lastauslaiturin tyyppi. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_ROADSTOP_TRUCK_COLLECTION_TOOLTIP :Valitse näytettävä lastauslaiturikokoelma
STR_PICKER_OBJECT_CLASS_TOOLTIP :Valitse näytettävä objektien luokka
STR_PICKER_OBJECT_CLASS_TOOLTIP :Valitse näytettävä objektien luokka. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_OBJECT_TYPE_TOOLTIP :Valitse rakennettavan objektin tyyppi. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista. Ctrl+napsautus+veto valitsee alueen vinottain. Paina lisäksi vaihtonäppäintä nähdäksesi vain kustannusarvion
STR_PICKER_OBJECT_COLLECTION_TOOLTIP :Valitse näytettävä objektikokoelma
STR_PICKER_HOUSE_CLASS_TOOLTIP :Valitse näytettävä kunnan vyöhyke
STR_PICKER_HOUSE_CLASS_TOOLTIP :Valitse näytettävä kunnan vyöhyke. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_HOUSE_TYPE_TOOLTIP :Valitse rakennettavan talon tyyppi. Ctrl+napsautus lisää tallennettuihin tai poistaa tallennetuista
STR_PICKER_HOUSE_COLLECTION_TOOLTIP :Valitse näytettävä talokokoelma
@@ -3002,7 +3009,7 @@ STR_ROAD_NAME_TRAM :Raitiotie
# Road depot construction window
STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Autovarikon suunta
STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Valitse autovarikon suunta
STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Valitse ajoneuvovarikon suunta
STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Raitiotievarikon suunta
STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Valitse raitiotievarikon suunta
@@ -5360,6 +5367,10 @@ STR_ERROR_BRIDGE_TOO_LOW_FOR_BUOY :silta on {HEIGH
STR_ERROR_BRIDGE_TOO_LOW_FOR_RAIL_WAYPOINT :silta on {HEIGHT} liian matala rautatien reittipisteen ylle
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROAD_WAYPOINT :silta on {HEIGHT} liian matala tien reittipisteen ylle
STR_ERROR_BRIDGE_TOO_LOW_FOR_LOCK :silta on {HEIGHT} liian matala sulun ylle
STR_ERROR_BRIDGE_TOO_LOW_FOR_TRAIN_DEPOT :silta on {HEIGHT} liian matala junavarikon ylle
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROADVEH_DEPOT :silta on {HEIGHT} liian matala ajoneuvovarikon ylle
STR_ERROR_BRIDGE_TOO_LOW_FOR_SHIP_DEPOT :silta on {HEIGHT} liian matala telakan ylle
STR_ERROR_BRIDGE_TOO_LOW_FOR_OBJECT :silta on {HEIGHT} liian matala objektin ylle
# Tunnel related errors
STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :Tähän ei voi rakentaa tunnelia…
+7
View File
@@ -739,14 +739,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Ιστορικό Εμπορευμάτων
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Παράχθηκε/αν
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Εναλλαγή γραφήματος φορτίου που παράγεται από αυτή την βιομηχανία
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Μεταφέρθηκε/αν
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Εναλλαγή γραφήματος φορτίου που μεταφέρεται από αυτή την βιομηχανία
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Παραδόθηκε
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Εναλλαγή γραφήματος φορτίου που μεταφέρεται σε αυτή την βιομηχανία
STR_GRAPH_INDUSTRY_RANGE_WAITING :Αναμονή
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Εναλλαγή γραφήματος φορτίου που περιμένει σε αυτή την βιομηχανία
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Ιστορικό Εμπορευμάτων
STR_GRAPH_TOWN_RANGE_PRODUCED :Παράχθηκε/αν
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Εναλλαγή γραφήματος φορτίου που παράγεται από αυτή την πόλη
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Μεταφέρθηκε/αν
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Εναλλαγή γραφήματος φορτίου που μεταφέρεται από αυτή την πόλη
STR_GRAPH_TOWN_RANGE_DELIVERED :Παραδόθηκε
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Εναλλαγή γραφήματος φορτίου που μεταφέρεται σε αυτή την πόλη
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Εμφάνιση λεπτομεριών αποδόσεων
+7
View File
@@ -709,14 +709,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Rakománytörténet
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Előállított
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Ezen iparág által által előállított rakomány grafikonjának mutatása be/ki
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Szállítva
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Ezen iparágtól szállított rakomány grafikonjának mutatása be/ki
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Leszállítva
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Ezen iparághoz szállított rakomány grafikonjának mutatása be/ki
STR_GRAPH_INDUSTRY_RANGE_WAITING :Várakozik
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Ezen iparágnál várakozó rakomány grafikonjának mutatása be/ki
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Rakománytörténet
STR_GRAPH_TOWN_RANGE_PRODUCED :Előállított
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Az ebben a városban előállított rakomány grafikonjának mutatása be/ki
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Elszállítva
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Az ebből a városból szállított rakomány grafikonjának mutatása be/ki
STR_GRAPH_TOWN_RANGE_DELIVERED :Leszállítva
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Az ebbe a városba szállított rakomány grafikonjának mutatása be/ki
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Részletes teljesítményértékelés mutatása
+17 -6
View File
@@ -647,14 +647,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - 화물 그래프
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :생산량
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :이 산업시설에서 생산된 화물양 그래프를 표시하거나 숨깁니다
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :수송량
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :이 산업시설에서 수송된 화물양 그래프를 표시하거나 숨깁니다
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :수송됨
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :이 산업시설로 수송된 화물양 그래프를 표시하거나 숨깁니다
STR_GRAPH_INDUSTRY_RANGE_WAITING :대기 중
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :이 산업시설의 대기 화물양 그래프를 표시하거나 숨깁니다
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - 화물 이력
STR_GRAPH_TOWN_RANGE_PRODUCED :생산
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :이 도시에서 생산된 화물양 그래프를 표시하거나 숨깁니다
STR_GRAPH_TOWN_RANGE_TRANSPORTED :수송됨
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :이 도시에서 수송된 화물양 그래프를 표시하거나 숨깁니다
STR_GRAPH_TOWN_RANGE_DELIVERED :수송됨
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :이 도시로 수송된 화물양 그래프를 표시하거나 숨깁니다
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}상세 성취도를 봅니다.
@@ -2888,22 +2895,22 @@ STR_PICKER_COLLECTION_DELETE_QUERY :모음집 삭
STR_PICKER_COLLECTION_DELETE_QUERY_TEXT :{YELLOW}정말 이 모음집을 삭제하시겠습니까?
STR_PICKER_COLLECTION_DELETE_QUERY_DISABLED_TEXT :{YELLOW}정말 이 모음집을 삭제하시겠습니까? (비활성화된 NewGRF에서 온 항목을 포함하고 있습니다)
STR_PICKER_STATION_CLASS_TOOLTIP :표시할 역 종류를 선택하세요
STR_PICKER_STATION_CLASS_TOOLTIP :표시할 역 종류를 선택하세요. CTRL + 클릭하면 즐겨찾기된 항목에 추가/제거가 가능합니다
STR_PICKER_STATION_TYPE_TOOLTIP :설치하려는 역 종류를 선택하세요. CTRL+클릭하면 즐겨찾기 추가/제거가 가능합니다
STR_PICKER_STATION_COLLECTION_TOOLTIP :표시할 역 모음집을 선택하세요
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :표시할 경유지 종류를 선택하세요
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :표시할 경유지 종류를 선택하세요. CTRL + 클릭하면 즐겨찾기된 항목에 추가/제거가 가능합니다
STR_PICKER_WAYPOINT_TYPE_TOOLTIP :설치하려는 경유지를 선택하세요. CTRL+클릭하면 즐겨찾기 추가/제거가 가능합니다
STR_PICKER_WAYPOINT_COLLECTION_TOOLTIP :표시할 경유지 모음집을 선택하세요
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :표시할 버스 정류장 종류를 선택하세요
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :표시할 버스 정류장 종류를 선택하세요. CTRL + 클릭하면 즐겨찾기된 항목에 추가/제거가 가능합니다
STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :설치하려는 버스 정류장 종류를 선택하세요. CTRL+클릭하면 즐겨찾기 추가/제거가 가능합니다
STR_PICKER_ROADSTOP_BUS_COLLECTION_TOOLTIP :표시할 버스 정류장 모음집을 선택하세요
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :표시할 트럭 적하장 종류를 선택하세요
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :표시할 트럭 적하장 종류를 선택하세요. CTRL + 클릭하면 즐겨찾기된 항목에 추가/제거가 가능합니다
STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :설치하려는 트럭 적하장 종류를 선택하세요. CTRL+클릭하면 즐겨찾기 추가/제거가 가능합니다
STR_PICKER_ROADSTOP_TRUCK_COLLECTION_TOOLTIP :표시할 트럭 적하장 모음집을 선택하세요
STR_PICKER_OBJECT_CLASS_TOOLTIP :표시할 오브젝트 종류를 선택하세요
STR_PICKER_OBJECT_CLASS_TOOLTIP :표시할 오브젝트 종류를 선택하세요. CTRL + 클릭하면 즐겨찾기된 항목에 추가/제거가 가능합니다
STR_PICKER_OBJECT_TYPE_TOOLTIP :설치하려는 오브젝트 종류를 선택합니다. CTRL+클릭+드래그하면 대각선 방향의 영역을 선택할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_PICKER_OBJECT_COLLECTION_TOOLTIP :표시할 오브젝트 모음집을 선택하세요
STR_PICKER_HOUSE_CLASS_TOOLTIP :표시할 도시 구역을 선택하세요
STR_PICKER_HOUSE_CLASS_TOOLTIP :표시할 도시 구역을 선택하세요. CTRL + 클릭하면 즐겨찾기된 항목에 추가/제거가 가능합니다
STR_PICKER_HOUSE_TYPE_TOOLTIP :지으려는 건물 종류를 선택하세요. CTRL+클릭하면 즐겨찾기 추가/제거가 가능합니다
STR_PICKER_HOUSE_COLLECTION_TOOLTIP :표시할 건물 모음집을 선택하세요
@@ -5361,6 +5368,10 @@ STR_ERROR_BRIDGE_TOO_LOW_FOR_BUOY :다리 밑에
STR_ERROR_BRIDGE_TOO_LOW_FOR_RAIL_WAYPOINT :다리 밑에 철도 경유지를 두기에는 다리 높이가 {HEIGHT}만큼 낮습니다
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROAD_WAYPOINT :다리 밑에 도로 경유지를 두기에는 다리 높이가 {HEIGHT}만큼 낮습니다
STR_ERROR_BRIDGE_TOO_LOW_FOR_LOCK :다리 밑에 항구를 두기에는 다리 높이가 {HEIGHT}만큼 낮습니다
STR_ERROR_BRIDGE_TOO_LOW_FOR_TRAIN_DEPOT :다리 밑에 차량기지를 두기에는 다리 높이가 {HEIGHT}만큼 낮습니다
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROADVEH_DEPOT :다리 밑에 차고지를 두기에는 다리 높이가 {HEIGHT}만큼 낮습니다
STR_ERROR_BRIDGE_TOO_LOW_FOR_SHIP_DEPOT :다리 밑에 정박소를 두기에는 다리 높이가 {HEIGHT}만큼 낮습니다
STR_ERROR_BRIDGE_TOO_LOW_FOR_OBJECT :다리 밑에 오브젝트를 두기에는 다리 높이가 {HEIGHT}만큼 낮습니다
# Tunnel related errors
STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :여기에 터널을 지을 수 없습니다...
+17 -10
View File
@@ -395,7 +395,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Huakina
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Huakina te pārongo whānui mō te umanga
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Huakina te puka paki
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Huakina te rārangi whāinga
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Huakina ngā kauwhata o te umanga me ngā uara o ngā utu utanga
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Huakina ngā kauwhata te umanga me ngā uara o ngā utu utanga
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Huakina te tūtohi rīki umanga
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Huakina te rārangi ahumahi, te ara tukutuku rānei, whakatūria rānei he ahumahi
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Huakina te rārangi o ngā tereina o te umanga. Pātaki+Pāwhiri kia whakaari, huna rānei i ngā rōpū waka, kia tauaro ki te tautuhinga kua kōwhiria
@@ -490,9 +490,9 @@ STR_SUBSIDIES_MENU_SUBSIDIES :Pūtea āwhina
# Graph menu
STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Kauwhata monihua
STR_GRAPH_MENU_INCOME_GRAPH :Kauwhata moniwhiwhi
STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Kauwhata o te utanga kua tuku
STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Kauwhata te utanga kua tuku
STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Kauwhata hītori tutukinga
STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Kauwhata o te uara o te umanga
STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Kauwhata te uara o te umanga
STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Uara o ngā utu utanga
# Company league menu
@@ -621,7 +621,7 @@ STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Kauwhata
STR_GRAPH_INCOME_CAPTION :{WHITE}Kauwhata moniwhiwhi
STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Waeine utanga kua tukuna
STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Arotake tutukinga o te umanga (arotake mōrahi=1000)
STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Kauwhata o te uara o te umanga
STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Kauwhata te uara o te umanga
STR_GRAPH_LAST_24_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}24 meneti kua hipa
STR_GRAPH_LAST_72_MINUTES_TIME_LABEL :{TINY_FONT}{BLACK}72 meneti kua hipa
@@ -639,27 +639,34 @@ STR_GRAPH_CARGO_PAYMENT_RATES_SECONDS :{TINY_FONT}{BLA
STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Utu o te kawe i te 10 waeine (10 000 rita rānei) o te utanga ki te mamao o te 20 tapawhā
STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Katoa
STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Kore
STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Whakaaria ngā momo utanga katoa ki te kauwhata o ngā uara o ngā utu utanga
STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Kaua he utanga e whakaaria ki te kauwhata o ngā uara o ngā utu utanga
STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Hohokona te kauwhata o tēnei momo utanga
STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Whakaaria ngā momo utanga katoa ki te kauwhata ngā uara o ngā utu utanga
STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Kaua he utanga e whakaaria ki te kauwhata ngā uara o ngā utu utanga
STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Hohokona te kauwhata tēnei momo utanga
STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING}
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Hītori Utanga
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Kua whakaputaia
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Hohokona te kauwhata mō te utanga kua whakaputaia e tēnei ahumahi
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Kua kawea
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Hohokona te kauwhata mō te utanga kua kawea mai i tēnei ahumahi
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Kua tukuna
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Hohokona te kauwhata mō te utanga kua kawea ki tēnei ahumahi
STR_GRAPH_INDUSTRY_RANGE_WAITING :Kei te tatari
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Hohokona te kauwhata mō te utanga e tatari nei i tēnei ahumahi
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Hītori Utanga
STR_GRAPH_TOWN_RANGE_PRODUCED :Kua whakaputaia
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Hohokona te kauwhata mō te utanga kua whakaputaia e tēnei tāone
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Kawe
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Hohokona te kauwhata mō te utanga kua kawea mai i tēnei tāone
STR_GRAPH_TOWN_RANGE_DELIVERED :Kua tukuna
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Hohokona te kauwhata mō te utanga kua kawea ki tēnei tāone
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Whakaaria ngā taipitopito arotake tutukinga
# Graph key window
STR_GRAPH_KEY_CAPTION :{WHITE}Pātohu o ngā kauwhata umanga
STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Hohokona te kauwhata o tēnei umanga
STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Hohokona te kauwhata tēnei umanga
# Company league window
STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Tūtohi Rīki Umanga
@@ -3774,7 +3781,7 @@ STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Kāwanat
STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Whakaaturia he pārongo mō te kāwanatanga ārohe
STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Panonitia te ingoa o te tāone
STR_TOWN_VIEW_CARGO_GRAPH :Kauwhata utanga
STR_TOWN_VIEW_CARGO_GRAPH_TOOLTIP :Whakaaria he kauwhata o te hītori o te utanga o te tāone
STR_TOWN_VIEW_CARGO_GRAPH_TOOLTIP :Whakaaria he kauwhata te hītori o te utanga o te tāone
STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Whakamakoha
STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Whakarahia te tāone
@@ -4108,7 +4115,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Whakaput
STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% kua kawea)
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Nekehia te tirohanga matua ki te tauwāhi o te ahumahi. Pātaki+Pāwhiri kia huaki i tētahi atu tirohanga i te tauwāhi o te ahumahi
STR_INDUSTRY_VIEW_CARGO_GRAPH :{BLACK}Kauwhata utanga
STR_INDUSTRY_VIEW_CARGO_GRAPH_TOOLTIP :{BLACK}Ka whakaaria te kauwhata o te hītori o te utanga o te ahumahi
STR_INDUSTRY_VIEW_CARGO_GRAPH_TOOLTIP :{BLACK}Ka whakaaria te kauwhata te hītori o te utanga o te ahumahi
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Kōeke whakaputa: {YELLOW}{COMMA}%
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Kua pānui te ahumahi ka katia ākuanei!
+8 -1
View File
@@ -642,19 +642,26 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA
STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Nenhum
STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Mostrar todas as cargas no gráfico
STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Não mostrar cargas no gráfico
STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Alternar o gráfico para este tipo de carga
STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Mostrar/Ocultar gráfico para este tipo de carga
STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING}
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}Histórico da Carga - {INDUSTRY}
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Produzido
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Mostrar/Ocultar gráfico da carga produzida por esta indústria
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Transportado
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Mostrar/Ocultar gráfico da carga transportada a partir desta indústria
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Entregue
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Mostrar/Ocultar gráfico da carga entregue a esta indústria
STR_GRAPH_INDUSTRY_RANGE_WAITING :Em Espera
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Mostrar/Ocultar gráfico da carga em espera nesta indústria
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}Histórico da Carga - {TOWN}
STR_GRAPH_TOWN_RANGE_PRODUCED :Produzido
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Mostrar/Ocultar gráfico da carga produzida por esta localidade
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Transportado
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Mostrar/Ocultar gráfico da carga transportada a partir desta localidade
STR_GRAPH_TOWN_RANGE_DELIVERED :Entregue
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Mostrar/Ocultar gráfico da carga entregue a esta localidade
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Exibir classificações detalhadas de desempenho
+13 -6
View File
@@ -784,14 +784,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Продукция
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Произведено
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Переключить отображение графика грузов, произведённых на предприятии
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Перевезено
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Переключить отображение графика перевезённых грузов, произведённых на предприятии
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Доставлено
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Переключить отображение графика грузов, доставленных на предприятие
STR_GRAPH_INDUSTRY_RANGE_WAITING :В ожидании
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Переключить отображение графика грузов, ожидающих погрузки
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Пассажиры и грузы
STR_GRAPH_TOWN_RANGE_PRODUCED :Произведено
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Переключить отображение графика грузов, произведённых в городе
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Перевезено
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Переключить отображение графика перевезённых грузов, произведённых в городе
STR_GRAPH_TOWN_RANGE_DELIVERED :Доставлено
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Переключить отображение графика грузов, доставленных в город
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Показать составляющие части рейтинга
@@ -3058,22 +3065,22 @@ STR_PICKER_COLLECTION_DELETE_QUERY :Удалить
STR_PICKER_COLLECTION_DELETE_QUERY_TEXT :{YELLOW}Удалить эту коллекцию?
STR_PICKER_COLLECTION_DELETE_QUERY_DISABLED_TEXT :{YELLOW}Вы уверены, что хотите удалить эту коллекцию? В ней содержатся объекты из отключённых модулей NewGRF!
STR_PICKER_STATION_CLASS_TOOLTIP :Выберите тип станций для отображения
STR_PICKER_STATION_CLASS_TOOLTIP :Выберите тип станций для отображения. Ctrl+щелчок для добавления в сохранённые или удаления.
STR_PICKER_STATION_TYPE_TOOLTIP :Выберите станцию для строительства. Ctrl+щелчок добавит её в «избранное» или удалит.
STR_PICKER_STATION_COLLECTION_TOOLTIP :Выберите коллекцию станций для отображения
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Выберите тип маршрутных точек для отображения
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Выберите тип маршрутных точек для отображения. Ctrl+щелчок для добавления в сохранённые или удаления.
STR_PICKER_WAYPOINT_TYPE_TOOLTIP :Выберите маршрутную точку для строительства. Ctrl+щелчок добавит её в «избранное» или удалит.
STR_PICKER_WAYPOINT_COLLECTION_TOOLTIP :Выберите коллекцию маршрутных точек для отображения
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Выберите тип остановок для отображения
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Выберите тип остановок для отображения. Ctrl+щелчок для добавления в сохранённые или удаления.
STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :Выберите остановку для строительства. Ctrl+щелчок добавит её в «избранное» или удалит.
STR_PICKER_ROADSTOP_BUS_COLLECTION_TOOLTIP :Выберите коллекцию автобусных остановок для отображения
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Выберите тип грузовых терминалов для отображения
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Выберите тип грузовых терминалов для отображения. Ctrl+щелчок для добавления в сохранённые или удаления.
STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :Выберите грузовой терминал для строительства. Ctrl+щелчок добавит его в «избранное» или удалит.
STR_PICKER_ROADSTOP_TRUCK_COLLECTION_TOOLTIP :Выберите коллекцию грузовых терминалов для отображения
STR_PICKER_OBJECT_CLASS_TOOLTIP :Выберите тип объектов для отображения
STR_PICKER_OBJECT_CLASS_TOOLTIP :Выберите тип объектов для отображения. Ctrl+щелчок для добавления в сохранённые или удаления.
STR_PICKER_OBJECT_TYPE_TOOLTIP :Выберите объект для строительства. Ctrl+щелчок добавит его в «избранное» или удалит. Ctrl+перетаскивание - выбор диагональной области. При нажатом Shift - оценка стоимости строительства.
STR_PICKER_OBJECT_COLLECTION_TOOLTIP :Выберите коллекцию объектов для отображения
STR_PICKER_HOUSE_CLASS_TOOLTIP :Выберите городскую зону для отображения соответствующих строений
STR_PICKER_HOUSE_CLASS_TOOLTIP :Выберите городскую зону для отображения соответствующих строений. Ctrl+щелчок для добавления в сохранённые или удаления.
STR_PICKER_HOUSE_TYPE_TOOLTIP :Выберите здание для строительства. Ctrl+щелчок добавит его в «избранное» или удалит.
STR_PICKER_HOUSE_COLLECTION_TOOLTIP :Выберите коллекцию домов для отображения
+12 -5
View File
@@ -646,14 +646,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - 貨物記錄
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :已產出
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :切換顯示該工業產生的貨物圖表
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :已運送
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :已接受
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :切換顯示該工業的貨物運輸圖表
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :已交付
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :切換顯示該工業的貨物交付圖表
STR_GRAPH_INDUSTRY_RANGE_WAITING :庫存
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :切換顯示該工業的待運貨物圖表
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - 貨物記錄
STR_GRAPH_TOWN_RANGE_PRODUCED :已產出
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :切換顯示該市鎮貨物產量圖表
STR_GRAPH_TOWN_RANGE_TRANSPORTED :已運送
STR_GRAPH_TOWN_RANGE_DELIVERED :已接受
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :切換顯示從該市鎮運輸的貨物圖表
STR_GRAPH_TOWN_RANGE_DELIVERED :已交付
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :切換顯示運往該市鎮的貨物圖表
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}顯示詳細營運評比
@@ -689,7 +696,7 @@ STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}車站
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}最低損益:
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}最低收入:
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}最高收入:
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}已運送
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}已交付
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}貨物:
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}資金:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}貸款:
@@ -3762,9 +3769,9 @@ STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX :{BLACK}上分
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}市鎮成長所需貨物:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}需要 {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} 必須是冬天
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} 已運送
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} 已交付
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (仍然需要)
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN}(已運送
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN}(已交付
STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}該市鎮每隔 {ORANGE}{UNITS_DAYS_OR_SECONDS}{BLACK}擴張一次
STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}該市鎮每隔 {ORANGE}{UNITS_DAYS_OR_SECONDS}{BLACK}擴張一次(正接受資助)
STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}市鎮{RED}不在{BLACK}成長
+34 -11
View File
@@ -526,6 +526,7 @@ STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Havalimanı in
STR_LANDSCAPING_MENU_LANDSCAPING :Peyzaj
STR_LANDSCAPING_MENU_PLANT_TREES :Ağaç dik
STR_LANDSCAPING_MENU_PLACE_SIGN :Tabela dik
STR_LANDSCAPING_MENU_PLACE_OBJECT :Nesneyi yerleştir
# Music menu
STR_TOOLBAR_SOUND_MUSIC :Ses/müzik
@@ -646,14 +647,21 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Kargo Geçmişi
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Üretilen
STR_GRAPH_INDUSTRY_RANGE_PRODUCED_TOOLTIP :Bu sanayide üretilen kargonun grafiğini aç
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Taşınan
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED_TOOLTIP :Bu sanayiden taşınan kargonun grafiğini aç
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Taşınan
STR_GRAPH_INDUSTRY_RANGE_DELIVERED_TOOLTIP :Bu sanayiye getirilen kargonun grafiğini aç
STR_GRAPH_INDUSTRY_RANGE_WAITING :Bekleyen
STR_GRAPH_INDUSTRY_RANGE_WAITING_TOOLTIP :Bu sanayide bekleyen kargonun grafiğini aç
STR_GRAPH_TOWN_CARGO_CAPTION :{WHITE}{TOWN} - Kargo Geçmişi
STR_GRAPH_TOWN_RANGE_PRODUCED :Üretilen Kaynak
STR_GRAPH_TOWN_RANGE_PRODUCED_TOOLTIP :Bu kasabada üretilen kargonun grafiğini aç
STR_GRAPH_TOWN_RANGE_TRANSPORTED :Taşınan
STR_GRAPH_TOWN_RANGE_TRANSPORTED_TOOLTIP :Bu kasabadan taşınan kargonun grafiğini aç
STR_GRAPH_TOWN_RANGE_DELIVERED :Teslim edildi
STR_GRAPH_TOWN_RANGE_DELIVERED_TOOLTIP :Bu kasabaya getirilen kargonun grafiğini aç
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Detaylı performans oranlarını göster
@@ -1563,7 +1571,11 @@ STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE :Fabrikaların k
STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT :Fabrikaların kargo üretimini bu yüzdeye göre ölçeklendirin
STR_CONFIG_SETTING_CARGO_SCALE_VALUE :{NUM}%
STR_CONFIG_SETTING_CARGO_AGING_RATE :Kargonun zamanla bozulma hızını ölçeklendirin: {STRING}
STR_CONFIG_SETTING_CARGO_AGING_RATE_HELPTEXT :Yüklü kargonun değerinin zamanla ne kadar hızlı düşeceğini ayarlayın
STR_CONFIG_SETTING_CARGO_AGING_RATE_VALUE :%{NUM}
###setting-zero-is-special
STR_CONFIG_SETTING_CARGO_AGING_RATE_ZERO :Bozulma yok
STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Araç eskiyince otomatik olarak yenile: {STRING}
STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Etkinleştirildiğinde, yenileme koşulları sağlandığı takdirde ömrünün sonuna yaklaşan bir araç otomatik olarak yenilenir.
@@ -1655,12 +1667,12 @@ STR_CONFIG_SETTING_TREE_PLACER_NONE :Hiçbiri
STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Özgün
STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Gelişmiş
STR_CONFIG_SETTING_ROAD_SIDE :Yol araçları: {STRING}
STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Sürüş yönünü seçin
STR_CONFIG_SETTING_ROAD_SIDE :Yol araçları sürüş yönü: {STRING}
STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Yol araçlarının sürüş yönünü seçin.{}Bu aynı zamanda sinyal tarafını ve semafor grafiklerini de etkileyebilir.{}Bu değişikliğin tamamen geçerli olması için oyunu yeni yüklemeniz gerekebilir
###length 2
STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Soldan trafik
STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Sağdan trafik
STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Sol
STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Sağ
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Yükseklik haritasını döndür: {STRING}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Yükseklik haritası dosyasının oyun dünyasına sığacak şekilde hangi yöne doğru döndürüleceğini seçin
@@ -1800,7 +1812,12 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Zaman çizelgel
STR_CONFIG_SETTING_QUICKGOTO :Araç talimatlarının hızlı oluşturulması: {STRING}
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Komutlar penceresi açılırken "git" düğmesini otomatik olarak seç
STR_CONFIG_SETTING_DEFAULT_RAIL_ROAD_TYPE :Öntanımlı ray, yol, ve tramvay yolu türü (yeni oyun/oyun yükleme sonrası): {STRING}
STR_CONFIG_SETTING_DEFAULT_RAIL_ROAD_TYPE_HELPTEXT :Yeni bir oyuna başlarken veya oyun yükledikten sonra seçilecek ray, yol ve tramvay yolu türü. 'ilk keşfedilen' en eski türü seçer, 'son keşfedilen' en yenisini seçer, 'çok kullanılan' oyundaki mevcut durumda en çok kullanılanı seçer
###length 3
STR_CONFIG_SETTING_DEFAULT_RAIL_ROAD_TYPE_FIRST :İlk keşfedilen
STR_CONFIG_SETTING_DEFAULT_RAIL_ROAD_TYPE_LAST :Son keşfedilen
STR_CONFIG_SETTING_DEFAULT_RAIL_ROAD_TYPE_MOST_USED :Çok kullanılan
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Raylar için yol ayrılmalarını göster: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Trenlerin güzergah tabanlı bloklara girmeyi reddetmesine dair sorunları engellemek için ayrılmış (rezerve) raylar için farklı bir renk kullan.
@@ -2878,22 +2895,22 @@ STR_PICKER_COLLECTION_DELETE_QUERY :Koleksiyonu sil
STR_PICKER_COLLECTION_DELETE_QUERY_TEXT :{YELLOW}Bu koleksiyonu silmek istediğinizden emin misiniz?
STR_PICKER_COLLECTION_DELETE_QUERY_DISABLED_TEXT :{YELLOW}Bu koleksiyonu silmek istediğinizden emin misiniz? İçinde etkinleştirilmemiş NewGRF'lerden öğeler var!
STR_PICKER_STATION_CLASS_TOOLTIP :Görüntülenecek istasyon sınıfını seçin
STR_PICKER_STATION_CLASS_TOOLTIP :Görüntülenecek istasyon sınıfını seçin. Ctrl+Tıklayarak kayıtlı öğeler arasında ekleme veya çıkarma yapın
STR_PICKER_STATION_TYPE_TOOLTIP :İnşa edilecek istasyon türünü seçin. Kayıtlı öğelerde ekleme çıkarma için Ctrl+Tıklayabilirsiniz
STR_PICKER_STATION_COLLECTION_TOOLTIP :Görüntülenecek istasyon koleksiyonunu seçin
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Görüntülenecek bir yol noktası türünü seçin
STR_PICKER_WAYPOINT_CLASS_TOOLTIP :Görüntülenecek bir yol noktası türünü seçin. Ctrl+Tıklayarak kayıtlı öğeler arasında ekleme veya çıkarma yapın
STR_PICKER_WAYPOINT_TYPE_TOOLTIP :İnşa edilecek yerimini seçin. Kayıtlı öğelerde ekleme çıkarma için Ctrl+Tıklayabilirsiniz
STR_PICKER_WAYPOINT_COLLECTION_TOOLTIP :Görüntülenecek yerimi koleksiyonunu seçin
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Görüntülenecek otobüs istasyonunu seçin
STR_PICKER_ROADSTOP_BUS_CLASS_TOOLTIP :Görüntülenecek otobüs istasyonunu seçin. Ctrl+Tıklayarak kayıtlı öğeler arasında ekleme veya çıkarma yapın
STR_PICKER_ROADSTOP_BUS_TYPE_TOOLTIP :İnşa edilecek otobüs istasyonunu seçin. Kayıtlı öğelerde ekleme çıkarma için Ctrl+Tıklayabilirsiniz
STR_PICKER_ROADSTOP_BUS_COLLECTION_TOOLTIP :Görüntülenecek otobüs durağı koleksiyonunu seçin
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Görüntülenecek bir kamyon istasyonu türünü seçin
STR_PICKER_ROADSTOP_TRUCK_CLASS_TOOLTIP :Görüntülenecek bir kamyon istasyonu türünü seçin. Ctrl+Tıklayarak kayıtlı öğeler arasında ekleme veya çıkarma yapın
STR_PICKER_ROADSTOP_TRUCK_TYPE_TOOLTIP :İnşa edilecek bir tür kamyon istasyonu seçin. Kaydedilen öğelerde eklemek veya kaldırmak istiyorsanız Ctrl+Tık ile yapabilirsiniz.
STR_PICKER_ROADSTOP_TRUCK_COLLECTION_TOOLTIP :Görüntülenecek kamyon istasyonu koleksiyonu seçin
STR_PICKER_OBJECT_CLASS_TOOLTIP :Görüntülenecek öğe sınıfını seçin
STR_PICKER_OBJECT_CLASS_TOOLTIP :Görüntülenecek öğe sınıfını seçin. Ctrl+Tıklayarak kayıtlı öğeler arasında ekleme veya çıkarma yapın
STR_PICKER_OBJECT_TYPE_TOOLTIP :İnşa edilecek nesne türünü seçin. Kayıtlı öğelerde ekleme çıkarma için Ctrl+tıklayabilirsiniz. Ctrl+Tıkla+Sürükle yaparak köşeden köşeye seçim yapabilirsiniz. Shift'e basarak sadece fiyat önizlemesi yapabilirsiniz
STR_PICKER_OBJECT_COLLECTION_TOOLTIP :Görüntülenecek nesne koleksiyonunu seçin
STR_PICKER_HOUSE_CLASS_TOOLTIP :Görüntülemek için bir şehir bölgesi seçin
STR_PICKER_HOUSE_CLASS_TOOLTIP :Görüntülemek için bir şehir bölgesi seçin. Ctrl+Tıklayarak kayıtlı öğeler arasında ekleme veya çıkarma yapın
STR_PICKER_HOUSE_TYPE_TOOLTIP :Bir konut türü seçin. Kaydedilmiş öğelere eklemek veya kaldırmak için Ctrl+Tıklayın
STR_PICKER_HOUSE_COLLECTION_TOOLTIP :Görüntülenecek ev koleksiyonunu seçin
@@ -3084,10 +3101,12 @@ STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Arazinin
# Land generation window (SE)
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Arazi Yapımı
STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Haritaya kayalık koy
STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Haritaya kayalık koy.{}Ctrl+Tıklayarak kayalıkları kaldırın
STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Çöl alanı tanımla.{}Kaldırmak için Ctrl + Sol Tık'a basın.
STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}yükseltme/alçaltma alanını arttır
STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Yükseltme/alçaltma alanını arttır
STR_TERRAFORM_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Bir köşeyi veya araziyi alçalt. Boyut 1x1 ise ilk seçilen köşeyi alçaltmak ve seçilen alanı yeni köşeye göre düzleştirmek için için Tıkla+Sürükle yapın. Köşegen alan seçmek için Ctrl+Tıkla+Sürükle yapın. Shift'e basılı tutarsanız sadece maliyetini gösterir
STR_TERRAFORM_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Bir köşeyi veya araziyi yükselt. Boyut 1x1 ise ilk seçilen köşeyi yükseltmek ve seçilen alanı yeni köşeye göre düzleştirmek için için Tıkla+Sürükle yapın. Köşegen alan seçmek için Ctrl+Tıkla+Sürükle yapın. Shift'e basılı tutarsanız sadece maliyetini gösterir
STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Rastgele harita yarat
STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Yeni senaryo oluştur
STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Haritayı sıfırla
@@ -5349,6 +5368,10 @@ STR_ERROR_BRIDGE_TOO_LOW_FOR_BUOY :köprü şamand
STR_ERROR_BRIDGE_TOO_LOW_FOR_RAIL_WAYPOINT :Köprü ray imi için {HEIGHT} fazla alçak
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROAD_WAYPOINT :köprü karayolu imi için {HEIGHT} fazla alçak
STR_ERROR_BRIDGE_TOO_LOW_FOR_LOCK :köprü kilit için {HEIGHT} fazla alçak
STR_ERROR_BRIDGE_TOO_LOW_FOR_TRAIN_DEPOT :köprü tren garı için {HEIGHT} alçak
STR_ERROR_BRIDGE_TOO_LOW_FOR_ROADVEH_DEPOT :köprü kara taşıtı garajı için {HEIGHT} alçak
STR_ERROR_BRIDGE_TOO_LOW_FOR_SHIP_DEPOT :köprü tersane için {HEIGHT} alçak
STR_ERROR_BRIDGE_TOO_LOW_FOR_OBJECT :köprü nesne için {HEIGHT} alçak
# Tunnel related errors
STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :Buraya tünel yapılamaz...
+8 -8
View File
@@ -146,18 +146,18 @@ private:
};
/** A RIFF chunk header. */
PACK_N(struct ChunkHeader {
struct ChunkHeader {
FOURCC type; ///< Chunk type.
DWORD length; ///< Length of the chunk, not including the chunk header itself.
}, 2);
};
/** Buffer format for a DLS wave download. */
PACK_N(struct WAVE_DOWNLOAD {
DMUS_DOWNLOADINFO dlInfo;
ULONG ulOffsetTable[2];
DMUS_WAVE dmWave;
DMUS_WAVEDATA dmWaveData;
}, 2);
struct WAVE_DOWNLOAD {
DMUS_DOWNLOADINFO dlInfo; ///< Request header for the to be downloaded wave data.
ULONG ulOffsetTable[2]; ///< Offsets to the \c dmWave and \c dmWaveData fields.
DMUS_WAVE dmWave; ///< Definition of the wave chunk to download.
DMUS_WAVEDATA dmWaveData; ///< The buffer the wave chunk data is written to.
};
struct PlaybackSegment {
uint32_t start, end;
+5 -5
View File
@@ -796,7 +796,7 @@ public:
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
{
if (widget >= WID_NCL_TEXTFILE && widget < WID_NCL_TEXTFILE + TFT_CONTENT_END) {
if (widget >= WID_NCL_TEXTFILE && widget < WID_NCL_TEXTFILE + TextfileType::ContentEnd) {
if (this->selected == nullptr || this->selected->state != ContentInfo::State::AlreadyHere) return;
ShowContentTextfileWindow(this, (TextfileType)(widget - WID_NCL_TEXTFILE), this->selected);
@@ -1003,7 +1003,7 @@ public:
this->SetWidgetDisabledState(WID_NCL_SELECT_ALL, !show_select_all);
this->SetWidgetDisabledState(WID_NCL_SELECT_UPDATE, !show_select_upgrade || !this->filter_data.string_filter.IsEmpty());
this->SetWidgetDisabledState(WID_NCL_OPEN_URL, this->selected == nullptr || this->selected->url.empty());
for (TextfileType tft : EnumRange(TFT_CONTENT_BEGIN, TFT_CONTENT_END)) {
for (TextfileType tft : EnumRange(TextfileType::ContentBegin, TextfileType::ContentEnd)) {
this->SetWidgetDisabledState(WID_NCL_TEXTFILE + tft, this->selected == nullptr || this->selected->state != ContentInfo::State::AlreadyHere || !this->selected->GetTextfile(tft).has_value());
}
}
@@ -1085,11 +1085,11 @@ static constexpr std::initializer_list<NWidgetPart> _nested_network_content_list
NWidget(NWID_VERTICAL),
NWidget(NWID_HORIZONTAL, NWidContainerFlag::EqualSize),
NWidget(WWT_PUSHTXTBTN, Colours::White, WID_NCL_OPEN_URL), SetResize(1, 0), SetFill(1, 0), SetStringTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::White, WID_NCL_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_README, STR_TEXTFILE_VIEW_README_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::White, WID_NCL_TEXTFILE + TextfileType::Readme), SetFill(1, 0), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_README, STR_TEXTFILE_VIEW_README_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL, NWidContainerFlag::EqualSize),
NWidget(WWT_PUSHTXTBTN, Colours::White, WID_NCL_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::White, WID_NCL_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_LICENCE, STR_TEXTFILE_VIEW_LICENCE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::White, WID_NCL_TEXTFILE + TextfileType::Changelog), SetFill(1, 0), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::White, WID_NCL_TEXTFILE + TextfileType::License), SetFill(1, 0), SetResize(1, 0), SetStringTip(STR_TEXTFILE_VIEW_LICENCE, STR_TEXTFILE_VIEW_LICENCE_TOOLTIP),
EndContainer(),
EndContainer(),
EndContainer(),
+2 -2
View File
@@ -2480,6 +2480,6 @@ struct SurveyResultTextfileWindow : public TextfileWindow {
*/
void ShowSurveyResultTextfileWindow(Window *parent)
{
parent->CloseChildWindowById(WindowClass::Textfile, TFT_SURVEY_RESULT);
new SurveyResultTextfileWindow(parent, TFT_SURVEY_RESULT);
parent->CloseChildWindowById(WindowClass::Textfile, TextfileType::SurveyResult);
new SurveyResultTextfileWindow(parent, TextfileType::SurveyResult);
}
+22 -26
View File
@@ -701,28 +701,22 @@ static void CalculateRefitMasks()
_gted[engine].cargo_disallowed = {CargoClass::Liquid};
} else if (e->type == VehicleType::Ship) {
CargoLabel label = GetActiveCargoLabel(ei->cargo_label);
switch (label.base()) {
case CT_PASSENGERS.base():
/* Ferries */
_gted[engine].cargo_allowed = {CargoClass::Passengers};
_gted[engine].cargo_disallowed = {};
break;
case CT_OIL.base():
/* Tankers */
_gted[engine].cargo_allowed = {CargoClass::Liquid};
_gted[engine].cargo_disallowed = {};
break;
default:
/* Cargo ships */
if (_settings_game.game_creation.landscape == LandscapeType::Toyland) {
/* No tanker in toyland :( */
_gted[engine].cargo_allowed = {CargoClass::Mail, CargoClass::Armoured, CargoClass::Express, CargoClass::Bulk, CargoClass::PieceGoods, CargoClass::Liquid};
_gted[engine].cargo_disallowed = {CargoClass::Passengers};
} else {
_gted[engine].cargo_allowed = {CargoClass::Mail, CargoClass::Armoured, CargoClass::Express, CargoClass::Bulk, CargoClass::PieceGoods};
_gted[engine].cargo_disallowed = {CargoClass::Liquid, CargoClass::Passengers};
}
break;
if (label == CT_PASSENGERS) {
/* Ferries */
_gted[engine].cargo_allowed = {CargoClass::Passengers};
_gted[engine].cargo_disallowed = {};
} else if (label == CT_OIL) {
/* Tankers */
_gted[engine].cargo_allowed = {CargoClass::Liquid};
_gted[engine].cargo_disallowed = {};
} else if (_settings_game.game_creation.landscape == LandscapeType::Toyland) {
/* No tanker in toyland :( so include liquids in the cargo ships */
_gted[engine].cargo_allowed = {CargoClass::Mail, CargoClass::Armoured, CargoClass::Express, CargoClass::Bulk, CargoClass::PieceGoods, CargoClass::Liquid};
_gted[engine].cargo_disallowed = {CargoClass::Passengers};
} else {
/* Cargo ships */
_gted[engine].cargo_allowed = {CargoClass::Mail, CargoClass::Armoured, CargoClass::Express, CargoClass::Bulk, CargoClass::PieceGoods};
_gted[engine].cargo_disallowed = {CargoClass::Liquid, CargoClass::Passengers};
}
e->VehInfo<ShipVehicleInfo>().old_refittable = true;
} else if (e->type == VehicleType::Train && e->VehInfo<RailVehicleInfo>().railveh_type != RailVehicleType::Wagon) {
@@ -945,10 +939,12 @@ void FinaliseCargoArray()
for (CargoSpec &cs : CargoSpec::array) {
if (cs.town_production_effect == TownProductionEffect::Invalid) {
/* Set default town production effect by cargo label. */
switch (cs.label.base()) {
case CT_PASSENGERS.base(): cs.town_production_effect = TownProductionEffect::Passengers; break;
case CT_MAIL.base(): cs.town_production_effect = TownProductionEffect::Mail; break;
default: cs.town_production_effect = TownProductionEffect::None; break;
if (cs.label == CT_PASSENGERS) {
cs.town_production_effect = TownProductionEffect::Passengers;
} else if (cs.label == CT_MAIL) {
cs.town_production_effect = TownProductionEffect::Mail;
} else {
cs.town_production_effect = TownProductionEffect::None;
}
}
if (!cs.IsValid()) {
+25
View File
@@ -250,4 +250,29 @@ void ShowNewGRFError();
GrfSpecFeature GetGrfSpecFeature(VehicleType type);
VehicleType GetVehicleType(GrfSpecFeature feature);
/**
* Flatten a NewGRF related label to a 32 bits integer.
* @param label The label to flatten.
* @return The flattened label.
*/
template <typename T> requires std::is_base_of_v<BaseLabel, T>
constexpr uint32_t FlattenNewGRFLabel(T label) { return label[0] << 24 | label[1] << 16 | label[2] << 8 | label[3]; }
/**
* Unflatten a NewGRF related label from a 32 bits integer.
* @param value The value to decode.
* @return The unflattened label.
*/
template <typename T> requires std::is_base_of_v<BaseLabel, T>
constexpr T UnflattenNewGRFLabel(uint32_t value)
{
uint8_t buf[]{
static_cast<uint8_t>(GB(value, 24, 8)),
static_cast<uint8_t>(GB(value, 16, 8)),
static_cast<uint8_t>(GB(value, 8, 8)),
static_cast<uint8_t>(GB(value, 0, 8))
};
return buf;
}
#endif /* NEWGRF_H */
+1 -1
View File
@@ -136,7 +136,7 @@ static ChangeInfoResult CargoReserveInfo(uint first, uint last, int prop, ByteRe
break;
case 0x17: // Cargo label
cs->label = CargoLabel{std::byteswap(buf.ReadDWord())};
cs->label = buf.ReadLabel<CargoLabel>();
BuildCargoLabelMap();
MaybeInstallFallbackCargoLabel(id, last, cs->label);
break;
+1 -1
View File
@@ -53,7 +53,7 @@ static ChangeInfoResult LoadTranslationTable(uint first, uint last, ByteReader &
translation_table.clear();
translation_table.reserve(last);
for (uint id = first; id < last; ++id) {
translation_table.push_back(T(std::byteswap(buf.ReadDWord())));
translation_table.push_back(buf.ReadLabel<T>());
}
GRFFile *grf_override = GetCurrentGRFOverride();
+3 -7
View File
@@ -96,7 +96,7 @@ static ChangeInfoResult ObjectChangeInfo(uint first, uint last, int prop, ByteRe
}
switch (prop) {
case 0x08: { // Class ID
case 0x08: // Class ID
/* Allocate space for this object. */
if (spec == nullptr) {
spec = std::make_unique<ObjectSpec>();
@@ -104,16 +104,12 @@ static ChangeInfoResult ObjectChangeInfo(uint first, uint last, int prop, ByteRe
spec->size = OBJECT_SIZE_1X1; // Default for NewGRFs that manage to not set it (1x1)
}
/* Swap classid because we read it in BE. */
uint32_t classid = buf.ReadDWord();
spec->class_index = ObjectClass::Allocate(std::byteswap(classid));
spec->class_index = ObjectClass::Allocate(buf.ReadLabel<ObjectClass::GlobalID>());
break;
}
case 0x09: { // Class name
case 0x09: // Class name
AddStringForMapping(GRFStringID{buf.ReadWord()}, [spec = spec.get()](StringID str) { ObjectClass::Get(spec->class_index)->name = str; });
break;
}
case 0x0A: // Object name
AddStringForMapping(GRFStringID{buf.ReadWord()}, &spec->name);
+3 -6
View File
@@ -83,8 +83,7 @@ static ChangeInfoResult RailTypeChangeInfo(uint first, uint last, int prop, Byte
* default rail types. */
int n = buf.ReadByte();
for (int j = 0; j != n; j++) {
RailTypeLabel label = buf.ReadDWord();
RailType resolved_rt = GetRailTypeByLabel(std::byteswap(label), false);
RailType resolved_rt = GetRailTypeByLabel(buf.ReadLabel<RailTypeLabel>(), false);
if (resolved_rt != INVALID_RAILTYPE) {
switch (prop) {
case 0x0F: rti->powered_railtypes.Set(resolved_rt); [[fallthrough]]; // Powered implies compatible.
@@ -175,9 +174,7 @@ static ChangeInfoResult RailTypeReserveInfo(uint first, uint last, int prop, Byt
switch (prop) {
case 0x08: // Label of rail type
{
RailTypeLabel rtl = buf.ReadDWord();
rtl = std::byteswap(rtl);
RailTypeLabel rtl = buf.ReadLabel<RailTypeLabel>();
RailType rt = GetRailTypeByLabel(rtl, false);
if (rt == INVALID_RAILTYPE) {
/* Set up new rail type */
@@ -204,7 +201,7 @@ static ChangeInfoResult RailTypeReserveInfo(uint first, uint last, int prop, Byt
if (type_map[id] != INVALID_RAILTYPE) {
int n = buf.ReadByte();
for (int j = 0; j != n; j++) {
_railtypes[type_map[id]].alternate_labels.insert(std::byteswap(buf.ReadDWord()));
_railtypes[type_map[id]].alternate_labels.insert(buf.ReadLabel<RailTypeLabel>());
}
break;
}
+2 -4
View File
@@ -88,15 +88,13 @@ static ChangeInfoResult RoadStopChangeInfo(uint first, uint last, int prop, Byte
}
switch (prop) {
case 0x08: { // Road Stop Class ID
case 0x08: // Road Stop Class ID
if (rs == nullptr) {
rs = std::make_unique<RoadStopSpec>();
}
uint32_t classid = buf.ReadDWord();
rs->class_index = RoadStopClass::Allocate(std::byteswap(classid));
rs->class_index = RoadStopClass::Allocate(buf.ReadLabel<RoadStopClass::GlobalID>());
break;
}
case 0x09: // Road stop type
rs->stop_type = (RoadStopAvailabilityType)buf.ReadByte();
+3 -6
View File
@@ -77,8 +77,7 @@ static ChangeInfoResult RoadTypeChangeInfo(uint first, uint last, int prop, Byte
* default road types. */
int n = buf.ReadByte();
for (int j = 0; j != n; j++) {
RoadTypeLabel label = buf.ReadDWord();
RoadType resolved_rt = GetRoadTypeByLabel(std::byteswap(label), false);
RoadType resolved_rt = GetRoadTypeByLabel(buf.ReadLabel<RoadTypeLabel>(), false);
if (resolved_rt != INVALID_ROADTYPE) {
switch (prop) {
case 0x0F:
@@ -161,9 +160,7 @@ static ChangeInfoResult RoadTypeReserveInfo(uint first, uint last, int prop, Byt
for (uint id = first; id < last; ++id) {
switch (prop) {
case 0x08: { // Label of road type
RoadTypeLabel rtl = buf.ReadDWord();
rtl = std::byteswap(rtl);
RoadTypeLabel rtl = buf.ReadLabel<RoadTypeLabel>();
RoadType rt = GetRoadTypeByLabel(rtl, false);
if (rt == INVALID_ROADTYPE) {
/* Set up new road type */
@@ -192,7 +189,7 @@ static ChangeInfoResult RoadTypeReserveInfo(uint first, uint last, int prop, Byt
if (type_map[id] != INVALID_ROADTYPE) {
int n = buf.ReadByte();
for (int j = 0; j != n; j++) {
_roadtypes[type_map[id]].alternate_labels.insert(std::byteswap(buf.ReadDWord()));
_roadtypes[type_map[id]].alternate_labels.insert(buf.ReadLabel<RoadTypeLabel>());
}
break;
}
+2 -5
View File
@@ -49,17 +49,14 @@ static ChangeInfoResult StationChangeInfo(uint first, uint last, int prop, ByteR
}
switch (prop) {
case 0x08: { // Class ID
case 0x08: // Class ID
/* Property 0x08 is special; it is where the station is allocated */
if (statspec == nullptr) {
statspec = std::make_unique<StationSpec>();
}
/* Swap classid because we read it in BE meaning WAYP or DFLT */
uint32_t classid = buf.ReadDWord();
statspec->class_index = StationClass::Allocate(std::byteswap(classid));
statspec->class_index = StationClass::Allocate(buf.ReadLabel<StationClass::GlobalID>());
break;
}
case 0x09: { // Define sprite layout
uint16_t tiles = buf.ReadExtendedByte();
+24 -22
View File
@@ -246,6 +246,8 @@ using TextHandler = bool(*)(GRFLanguage langid, std::string_view str);
*/
using BranchHandler = bool(*)(ByteReader &buf);
using NodeID = Label<struct NodeIDTag>; ///< Label type of the nodes in the \c AllowedSubtags.
/**
* Data structure to store the allowed id/type combinations for action 14. The
* data can be represented as a tree with 3 types of nodes:
@@ -257,7 +259,7 @@ struct AllowedSubtags {
/** Custom 'span' of subtags. Required because std::span with an incomplete type is UB. */
using Span = std::pair<const AllowedSubtags *, const AllowedSubtags *>;
uint32_t id; ///< The identifier for this node.
NodeID id; ///< The identifier for this node.
std::variant<DataHandler, TextHandler, BranchHandler, Span> handler; ///< The handler for this node.
};
@@ -299,13 +301,13 @@ static bool ChangeGRFParamValueNames(ByteReader &buf)
/** Action14 parameter tags */
static constexpr AllowedSubtags _tags_parameters[] = {
AllowedSubtags{'NAME', ChangeGRFParamName},
AllowedSubtags{'DESC', ChangeGRFParamDescription},
AllowedSubtags{'TYPE', ChangeGRFParamType},
AllowedSubtags{'LIMI', ChangeGRFParamLimits},
AllowedSubtags{'MASK', ChangeGRFParamMask},
AllowedSubtags{'VALU', ChangeGRFParamValueNames},
AllowedSubtags{'DFLT', ChangeGRFParamDefault},
AllowedSubtags{"NAME", ChangeGRFParamName},
AllowedSubtags{"DESC", ChangeGRFParamDescription},
AllowedSubtags{"TYPE", ChangeGRFParamType},
AllowedSubtags{"LIMI", ChangeGRFParamLimits},
AllowedSubtags{"MASK", ChangeGRFParamMask},
AllowedSubtags{"VALU", ChangeGRFParamValueNames},
AllowedSubtags{"DFLT", ChangeGRFParamDefault},
};
/**
@@ -343,20 +345,20 @@ static bool HandleParameterInfo(ByteReader &buf)
/** Action14 tags for the INFO node */
static constexpr AllowedSubtags _tags_info[] = {
AllowedSubtags{'NAME', ChangeGRFName},
AllowedSubtags{'DESC', ChangeGRFDescription},
AllowedSubtags{'URL_', ChangeGRFURL},
AllowedSubtags{'NPAR', ChangeGRFNumUsedParams},
AllowedSubtags{'PALS', ChangeGRFPalette},
AllowedSubtags{'BLTR', ChangeGRFBlitter},
AllowedSubtags{'VRSN', ChangeGRFVersion},
AllowedSubtags{'MINV', ChangeGRFMinVersion},
AllowedSubtags{'PARA', HandleParameterInfo},
AllowedSubtags{"NAME", ChangeGRFName},
AllowedSubtags{"DESC", ChangeGRFDescription},
AllowedSubtags{"URL_", ChangeGRFURL},
AllowedSubtags{"NPAR", ChangeGRFNumUsedParams},
AllowedSubtags{"PALS", ChangeGRFPalette},
AllowedSubtags{"BLTR", ChangeGRFBlitter},
AllowedSubtags{"VRSN", ChangeGRFVersion},
AllowedSubtags{"MINV", ChangeGRFMinVersion},
AllowedSubtags{"PARA", HandleParameterInfo},
};
/** Action14 root tags */
static constexpr AllowedSubtags _tags_root[] = {
AllowedSubtags{'INFO', std::make_pair(std::begin(_tags_info), std::end(_tags_info))},
AllowedSubtags{"INFO", std::make_pair(std::begin(_tags_info), std::end(_tags_info))},
};
@@ -406,7 +408,7 @@ static bool SkipUnknownInfo(ByteReader &buf, uint8_t type)
* @param subtags Allowed subtags.
* @return Whether all tags could be handled.
*/
static bool HandleNode(uint8_t type, uint32_t id, ByteReader &buf, std::span<const AllowedSubtags> subtags)
static bool HandleNode(uint8_t type, NodeID id, ByteReader &buf, std::span<const AllowedSubtags> subtags)
{
/* Visitor to get a subtag handler's type. */
struct type_visitor {
@@ -445,11 +447,11 @@ static bool HandleNode(uint8_t type, uint32_t id, ByteReader &buf, std::span<con
};
for (const auto &tag : subtags) {
if (tag.id != std::byteswap(id) || std::visit(type_visitor{}, tag.handler) != type) continue;
if (tag.id != id || std::visit(type_visitor{}, tag.handler) != type) continue;
return std::visit(evaluate_visitor{buf}, tag.handler);
}
GrfMsg(2, "StaticGRFInfo: unknown type/id combination found, type={:c}, id={:x}", type, id);
GrfMsg(2, "StaticGRFInfo: unknown type/id combination found, type={:c}, id={}", type, id.AsString());
return SkipUnknownInfo(buf, type);
}
@@ -463,7 +465,7 @@ static bool HandleNodes(ByteReader &buf, std::span<const AllowedSubtags> subtags
{
uint8_t type = buf.ReadByte();
while (type != 0) {
uint32_t id = buf.ReadDWord();
NodeID id = buf.ReadLabel<NodeID>();
if (!HandleNode(type, id, buf, subtags)) return false;
type = buf.ReadByte();
}
+2 -2
View File
@@ -57,11 +57,11 @@ static CargoType TranslateCargo(GrfSpecFeature feature, uint8_t ctype)
CargoType cargo_type = GetCargoTypeByLabel(cl);
if (!IsValidCargoType(cargo_type)) {
GrfMsg(5, "TranslateCargo: Cargo '{:c}{:c}{:c}{:c}' unsupported, skipping.", GB(cl.base(), 24, 8), GB(cl.base(), 16, 8), GB(cl.base(), 8, 8), GB(cl.base(), 0, 8));
GrfMsg(5, "TranslateCargo: Cargo '{}' unsupported, skipping.", cl.AsString());
return INVALID_CARGO;
}
GrfMsg(6, "TranslateCargo: Cargo '{:c}{:c}{:c}{:c}' mapped to cargo type {}.", GB(cl.base(), 24, 8), GB(cl.base(), 16, 8), GB(cl.base(), 8, 8), GB(cl.base(), 0, 8), cargo_type);
GrfMsg(6, "TranslateCargo: Cargo '{}' mapped to cargo type {}.", cl.AsString(), cargo_type);
return cargo_type;
}
+8 -8
View File
@@ -217,31 +217,31 @@ static void SkipIf(ByteReader &buf)
if (condtype >= 0x0B) {
/* Tests that ignore 'param' */
switch (condtype) {
case 0x0B: result = !IsValidCargoType(GetCargoTypeByLabel(CargoLabel(std::byteswap(cond_val))));
case 0x0B: result = !IsValidCargoType(GetCargoTypeByLabel(UnflattenNewGRFLabel<CargoLabel>(cond_val)));
break;
case 0x0C: result = IsValidCargoType(GetCargoTypeByLabel(CargoLabel(std::byteswap(cond_val))));
case 0x0C: result = IsValidCargoType(GetCargoTypeByLabel(UnflattenNewGRFLabel<CargoLabel>(cond_val)));
break;
case 0x0D: result = GetRailTypeByLabel(std::byteswap(cond_val)) == INVALID_RAILTYPE;
case 0x0D: result = GetRailTypeByLabel(UnflattenNewGRFLabel<RailTypeLabel>(cond_val)) == INVALID_RAILTYPE;
break;
case 0x0E: result = GetRailTypeByLabel(std::byteswap(cond_val)) != INVALID_RAILTYPE;
case 0x0E: result = GetRailTypeByLabel(UnflattenNewGRFLabel<RailTypeLabel>(cond_val)) != INVALID_RAILTYPE;
break;
case 0x0F: {
RoadType rt = GetRoadTypeByLabel(std::byteswap(cond_val));
RoadType rt = GetRoadTypeByLabel(UnflattenNewGRFLabel<RoadTypeLabel>(cond_val));
result = rt == INVALID_ROADTYPE || !RoadTypeIsRoad(rt);
break;
}
case 0x10: {
RoadType rt = GetRoadTypeByLabel(std::byteswap(cond_val));
RoadType rt = GetRoadTypeByLabel(UnflattenNewGRFLabel<RoadTypeLabel>(cond_val));
result = rt != INVALID_ROADTYPE && RoadTypeIsRoad(rt);
break;
}
case 0x11: {
RoadType rt = GetRoadTypeByLabel(std::byteswap(cond_val));
RoadType rt = GetRoadTypeByLabel(UnflattenNewGRFLabel<RoadTypeLabel>(cond_val));
result = rt == INVALID_ROADTYPE || !RoadTypeIsTram(rt);
break;
}
case 0x12: {
RoadType rt = GetRoadTypeByLabel(std::byteswap(cond_val));
RoadType rt = GetRoadTypeByLabel(UnflattenNewGRFLabel<RoadTypeLabel>(cond_val));
result = rt != INVALID_ROADTYPE && RoadTypeIsTram(rt);
break;
}
+13
View File
@@ -10,6 +10,7 @@
#ifndef NEWGRF_BYTEREADER_H
#define NEWGRF_BYTEREADER_H
#include "../core/label_type.hpp"
#include "../core/string_consumer.hpp"
class OTTDByteReaderSignal { };
@@ -94,6 +95,18 @@ public:
return this->consumer.ReadUntilChar('\0', StringConsumer::SKIP_ONE_SEPARATOR);
}
/**
* Read a label.
* @return The read label.
*/
template <typename T> requires std::is_base_of_v<BaseLabel, T>
T ReadLabel()
{
T label{};
std::ranges::copy(this->consumer.Read(label.size()), label.data());
return label;
}
size_t Remaining() const
{
return this->consumer.GetBytesLeft();
+4 -4
View File
@@ -30,10 +30,10 @@
template <>
/* static */ void AirportClass::InsertDefaults()
{
AirportClass::Get(AirportClass::Allocate('SMAL'))->name = STR_AIRPORT_CLASS_SMALL;
AirportClass::Get(AirportClass::Allocate('LARG'))->name = STR_AIRPORT_CLASS_LARGE;
AirportClass::Get(AirportClass::Allocate('HUB_'))->name = STR_AIRPORT_CLASS_HUB;
AirportClass::Get(AirportClass::Allocate('HELI'))->name = STR_AIRPORT_CLASS_HELIPORTS;
AirportClass::Get(AirportClass::Allocate("SMAL"))->name = STR_AIRPORT_CLASS_SMALL;
AirportClass::Get(AirportClass::Allocate("LARG"))->name = STR_AIRPORT_CLASS_LARGE;
AirportClass::Get(AirportClass::Allocate("HUB_"))->name = STR_AIRPORT_CLASS_HUB;
AirportClass::Get(AirportClass::Allocate("HELI"))->name = STR_AIRPORT_CLASS_HELIPORTS;
}
template <>
+1 -1
View File
@@ -31,7 +31,7 @@ GrfSpecFeature CargoResolverObject::GetFeature() const
uint32_t CargoResolverObject::GetDebugID() const
{
return this->cargospec->label.base();
return FlattenNewGRFLabel(this->cargospec->label);
}
/**
+11 -5
View File
@@ -10,6 +10,7 @@
#ifndef NEWGRF_CLASS_H
#define NEWGRF_CLASS_H
#include "core/label_type.hpp"
#include "newgrf_type.h"
#include "strings_type.h"
@@ -45,12 +46,17 @@ private:
public:
using spec_type = Tspec;
using index_type = Tindex;
using GlobalID = Label<NewGRFClass<Tspec, Tindex>>; ///< Type for the global identifier of the class.
uint32_t global_id; ///< Global ID for class, e.g. 'DFLT', 'WAYP', etc.
StringID name; ///< Name of this class.
GlobalID global_id; ///< Global ID for class, e.g. 'DFLT', 'WAYP', etc.
StringID name; ///< Name of this class.
/* Public constructor as emplace_back needs access. */
NewGRFClass(uint32_t global_id, StringID name) : global_id(global_id), name(name) { }
/**
* Create the class.
* @param global_id The globally unique identifier of the class.
* @param name The name of the class.
*/
NewGRFClass(GlobalID global_id, StringID name) : global_id(global_id), name(name) { }
/**
* Get read-only span of specs of this class.
@@ -90,7 +96,7 @@ public:
bool IsUIAvailable(uint index) const;
static void Reset();
static Tindex Allocate(uint32_t global_id);
static Tindex Allocate(GlobalID global_id);
static void Assign(Tspec *spec);
static uint GetClassCount();
static uint GetUIClassCount();
+1 -1
View File
@@ -29,7 +29,7 @@ void NewGRFClass<Tspec, Tindex>::Reset()
* second time, this first allocation will be given.
*/
template <typename Tspec, typename Tindex>
Tindex NewGRFClass<Tspec, Tindex>::Allocate(uint32_t global_id)
Tindex NewGRFClass<Tspec, Tindex>::Allocate(GlobalID global_id)
{
auto found = std::ranges::find(NewGRFClass::classes, global_id, &NewGRFClass::global_id);
+5 -5
View File
@@ -925,7 +925,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
{
if (widget >= WID_NS_NEWGRF_TEXTFILE && widget < WID_NS_NEWGRF_TEXTFILE + TFT_CONTENT_END) {
if (widget >= WID_NS_NEWGRF_TEXTFILE && widget < WID_NS_NEWGRF_TEXTFILE + TextfileType::ContentEnd) {
if (this->active_sel == nullptr && this->avail_sel == nullptr) return;
ShowNewGRFTextfileWindow(this, (TextfileType)(widget - WID_NS_NEWGRF_TEXTFILE), this->active_sel != nullptr ? this->active_sel : this->avail_sel);
@@ -1252,7 +1252,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
);
const GRFConfig *selected_config = (this->avail_sel == nullptr) ? this->active_sel : this->avail_sel;
for (TextfileType tft : EnumRange(TFT_CONTENT_BEGIN, TFT_CONTENT_END)) {
for (TextfileType tft : EnumRange(TextfileType::ContentBegin, TextfileType::ContentEnd)) {
this->SetWidgetDisabledState(WID_NS_NEWGRF_TEXTFILE + tft, selected_config == nullptr || !selected_config->GetTextfile(tft).has_value());
}
this->SetWidgetDisabledState(WID_NS_OPEN_URL, selected_config == nullptr || !selected_config->GetURL().has_value());
@@ -1846,13 +1846,13 @@ static constexpr std::initializer_list<NWidgetPart> _nested_newgrf_infopanel_wid
NWidget(NWID_HORIZONTAL, NWidContainerFlag::EqualSize),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_NS_OPEN_URL), SetFill(1, 0), SetResize(1, 0),
SetStringTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_NS_NEWGRF_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_NS_NEWGRF_TEXTFILE + TextfileType::Readme), SetFill(1, 0), SetResize(1, 0),
SetStringTip(STR_TEXTFILE_VIEW_README, STR_TEXTFILE_VIEW_README_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL, NWidContainerFlag::EqualSize),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_NS_NEWGRF_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_NS_NEWGRF_TEXTFILE + TextfileType::Changelog), SetFill(1, 0), SetResize(1, 0),
SetStringTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_NS_NEWGRF_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0),
NWidget(WWT_PUSHTXTBTN, Colours::Yellow, WID_NS_NEWGRF_TEXTFILE + TextfileType::License), SetFill(1, 0), SetResize(1, 0),
SetStringTip(STR_TEXTFILE_VIEW_LICENCE, STR_TEXTFILE_VIEW_LICENCE_TOOLTIP),
EndContainer(),
EndContainer(),
+4 -4
View File
@@ -136,8 +136,8 @@ void ResetObjects()
}
/* Set class for originals. */
_object_specs[OBJECT_LIGHTHOUSE].class_index = ObjectClass::Allocate('LTHS');
_object_specs[OBJECT_TRANSMITTER].class_index = ObjectClass::Allocate('TRNS');
_object_specs[OBJECT_LIGHTHOUSE].class_index = ObjectClass::Allocate("LTHS");
_object_specs[OBJECT_TRANSMITTER].class_index = ObjectClass::Allocate("TRNS");
/* Reset any overrides that have been set. */
_object_mngr.ResetOverride();
@@ -146,8 +146,8 @@ void ResetObjects()
template <>
/* static */ void ObjectClass::InsertDefaults()
{
ObjectClass::Get(ObjectClass::Allocate('LTHS'))->name = STR_OBJECT_CLASS_LTHS;
ObjectClass::Get(ObjectClass::Allocate('TRNS'))->name = STR_OBJECT_CLASS_TRNS;
ObjectClass::Get(ObjectClass::Allocate("LTHS"))->name = STR_OBJECT_CLASS_LTHS;
ObjectClass::Get(ObjectClass::Allocate("TRNS"))->name = STR_OBJECT_CLASS_TRNS;
}
template <>
+3 -3
View File
@@ -76,7 +76,7 @@ GrfSpecFeature RailTypeResolverObject::GetFeature() const
uint32_t RailTypeResolverObject::GetDebugID() const
{
return this->railtype_scope.rti->label;
return FlattenNewGRFLabel(this->railtype_scope.rti->label);
}
/**
@@ -152,7 +152,7 @@ RailType GetRailTypeTranslation(uint8_t railtype, const GRFFile *grffile)
{
if (grffile == nullptr || grffile->railtype_list.empty()) {
/* No railtype table present. Return railtype as-is (if valid), so it works for original railtypes. */
if (railtype >= RAILTYPE_END || GetRailTypeInfo(static_cast<RailType>(railtype))->label == 0) return INVALID_RAILTYPE;
if (railtype >= RAILTYPE_END || GetRailTypeInfo(static_cast<RailType>(railtype))->label.Empty()) return INVALID_RAILTYPE;
return static_cast<RailType>(railtype);
} else {
@@ -205,7 +205,7 @@ void ConvertRailTypes()
railtype_conversion_map.push_back(rt);
/* Conversion is needed if the rail type is in a different position than the list. */
if (it->label != 0 && rt != std::distance(std::begin(_railtype_list), it)) needs_conversion = true;
if (!it->label.Empty() && rt != std::distance(std::begin(_railtype_list), it)) needs_conversion = true;
}
if (!needs_conversion) return;
+4 -4
View File
@@ -25,9 +25,6 @@ struct TileInfo;
/** The maximum amount of roadstops a single GRF is allowed to add */
static const int NUM_ROADSTOPS_PER_GRF = UINT16_MAX - 1;
static const uint32_t ROADSTOP_CLASS_LABEL_DEFAULT = 'DFLT';
static const uint32_t ROADSTOP_CLASS_LABEL_WAYPOINT = 'WAYP';
/** Class IDs for stations. */
using RoadStopClassID = PoolID<uint16_t, struct RoadStopClassIDTag, UINT16_MAX, UINT16_MAX>;
@@ -164,6 +161,9 @@ struct RoadStopSpec : NewGRFSpecBase<RoadStopClassID> {
using RoadStopClass = NewGRFClass<RoadStopSpec, RoadStopClassID>;
static const RoadStopClass::GlobalID ROADSTOP_CLASS_LABEL_DEFAULT{"DFLT"}; ///< Class label for default road stops.
static const RoadStopClass::GlobalID ROADSTOP_CLASS_LABEL_WAYPOINT{"WAYP"}; ///< Class label for default road waypoints.
std::optional<SpriteLayoutProcessor> GetRoadStopLayout(TileInfo *ti, const RoadStopSpec *spec, BaseStation *st, StationType type, int view, std::span<int32_t> regs100 = {});
void DrawRoadStopTile(int x, int y, RoadType roadtype, const RoadStopSpec *spec, StationType type, int view);
@@ -191,7 +191,7 @@ void RoadStopUpdateCachedTriggers(BaseStation *st);
*/
inline bool IsWaypointClass(const RoadStopClass &cls)
{
return cls.global_id == ROADSTOP_CLASS_LABEL_WAYPOINT || GB(cls.global_id, 24, 8) == UINT8_MAX;
return cls.global_id == ROADSTOP_CLASS_LABEL_WAYPOINT || cls.global_id[0] == UINT8_MAX;
}
#endif /* NEWGRF_ROADSTATION_H */
+2 -2
View File
@@ -122,7 +122,7 @@ GrfSpecFeature RoadTypeResolverObject::GetFeature() const
uint32_t RoadTypeResolverObject::GetDebugID() const
{
return this->roadtype_scope.rti->label;
return FlattenNewGRFLabel(this->roadtype_scope.rti->label);
}
/**
@@ -238,7 +238,7 @@ void ConvertRoadTypes()
roadtype_conversion_map.push_back(rt);
/* Conversion is needed if the road type is in a different position than the list. */
if (it->label != 0 && rt != std::distance(std::begin(_roadtype_list), it)) needs_conversion = true;
if (!it->label.Empty() && rt != std::distance(std::begin(_roadtype_list), it)) needs_conversion = true;
}
if (!needs_conversion) return;
+4 -4
View File
@@ -98,9 +98,6 @@ struct StationResolverObject : public SpecializedResolverObject<StationRandomTri
uint32_t GetDebugID() const override;
};
static const uint32_t STATION_CLASS_LABEL_DEFAULT = 'DFLT';
static const uint32_t STATION_CLASS_LABEL_WAYPOINT = 'WAYP';
/** Class IDs for stations. */
using StationClassID = PoolID<uint16_t, struct StationClassIDTag, UINT16_MAX, UINT16_MAX>;
@@ -188,6 +185,9 @@ struct StationSpec : NewGRFSpecBase<StationClassID> {
/** Class containing information relating to station classes. */
using StationClass = NewGRFClass<StationSpec, StationClassID>;
static const StationClass::GlobalID STATION_CLASS_LABEL_DEFAULT{"DFLT"}; ///< Class label for default rail station.
static const StationClass::GlobalID STATION_CLASS_LABEL_WAYPOINT{"WAYP"}; ///< Class label for default rail waypoints.
const StationSpec *GetStationSpec(TileIndex t);
/**
@@ -208,7 +208,7 @@ inline uint16_t GetStationLayoutKey(uint8_t platforms, uint8_t length)
*/
inline bool IsWaypointClass(const StationClass &cls)
{
return cls.global_id == STATION_CLASS_LABEL_WAYPOINT || GB(cls.global_id, 24, 8) == UINT8_MAX;
return cls.global_id == STATION_CLASS_LABEL_WAYPOINT || cls.global_id[0] == UINT8_MAX;
}
/* Evaluate a tile's position within a station, and return the result a bitstuffed format. */
+5 -31
View File
@@ -16,6 +16,7 @@
#include <windows.h>
#include <fcntl.h>
#include <mmsystem.h>
#include <processthreadsapi.h>
#include <regstr.h>
#define NO_SHOBJIDL_SORTDIRECTION /**< Avoid multiple definition of SORT_ASCENDING. */
#include <shlobj.h> /* SHGetFolderPath */
@@ -533,36 +534,9 @@ int Win32StringContains(std::string_view str, std::string_view value, bool case_
return -1; // Failure indication.
}
#ifdef _MSC_VER
/* Based on code from MSDN: https://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx */
const DWORD MS_VC_EXCEPTION = 0x406D1388;
PACK_N(struct THREADNAME_INFO {
DWORD dwType; ///< Must be 0x1000.
LPCSTR szName; ///< Pointer to name (in user addr space).
DWORD dwThreadID; ///< Thread ID (-1=caller thread).
DWORD dwFlags; ///< Reserved for future use, must be zero.
}, 8);
/**
* Signal thread name to any attached debuggers.
*/
void SetCurrentThreadName(const std::string &thread_name)
void SetCurrentThreadName(const std::string &name)
{
THREADNAME_INFO info;
info.dwType = 0x1000;
info.szName = thread_name.c_str();
info.dwThreadID = -1;
info.dwFlags = 0;
#pragma warning(push)
#pragma warning(disable: 6320 6322)
__try {
RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(ULONG_PTR), (ULONG_PTR*)&info);
} __except (EXCEPTION_EXECUTE_HANDLER) {
}
#pragma warning(pop)
using SetThreadDescriptionProc = HRESULT(WINAPI *)(HANDLE, PCWSTR);
static const SetThreadDescriptionProc std_proc = GetKernel32Function("SetThreadDescription");
if (std_proc != nullptr) std_proc(GetCurrentThread(), OTTD2FS(name).c_str());
}
#else
void SetCurrentThreadName(const std::string &) {}
#endif
+2 -2
View File
@@ -108,7 +108,7 @@ RailTypes AddDateIntroducedRailTypes(RailTypes current, TimerGameCalendar::Date
for (RailType rt : EnumRange(RAILTYPE_END)) {
const RailTypeInfo *rti = GetRailTypeInfo(rt);
/* Unused rail type. */
if (rti->label == 0) continue;
if (rti->label.Empty()) continue;
/* Not date introduced. */
if (!IsInsideMM(rti->introduction_date, 0, CalendarTime::MAX_DATE.base())) continue;
@@ -197,7 +197,7 @@ RailTypes GetRailTypes(bool introduces)
RailType GetRailTypeByLabel(RailTypeLabel label, bool allow_alternate_labels)
{
extern RailTypeInfo _railtypes[RAILTYPE_END];
if (label == 0) return INVALID_RAILTYPE;
if (label.Empty()) return INVALID_RAILTYPE;
auto it = std::ranges::find(_railtypes, label, &RailTypeInfo::label);
if (it == std::end(_railtypes) && allow_alternate_labels) {
+14 -3
View File
@@ -136,7 +136,7 @@ void InitRailTypes()
ResolveRailTypeGUISprites(&rti);
_railtypes_hidden_mask.Set(rt, rti.flags.Test(RailTypeFlag::Hidden));
if (rti.label == 0) continue;
if (rti.label.Empty()) continue;
_sorted_railtypes.push_back(rt);
}
std::sort(_sorted_railtypes.begin(), _sorted_railtypes.end(), CompareRailTypes);
@@ -149,7 +149,7 @@ void InitRailTypes()
*/
RailType AllocateRailType(RailTypeLabel label)
{
auto it = std::ranges::find(_railtypes, 0, &RailTypeInfo::label);
auto it = std::ranges::find(_railtypes, RailTypeLabel{}, &RailTypeInfo::label);
if (it == std::end(_railtypes)) return INVALID_RAILTYPE;
RailTypeInfo &rti = *it;
@@ -990,15 +990,21 @@ CommandCost CmdBuildTrainDepot(DoCommandFlags flags, TileIndex tile, RailType ra
/* Allow the user to rotate the depot instead of having to destroy it and build it again */
bool rotate_existing_depot = false;
Train *v = nullptr;
if (IsRailDepotTile(tile) && railtype == GetRailType(tile)) {
CommandCost ret = CheckTileOwnership(tile);
if (ret.Failed()) return ret;
if (dir == GetRailDepotDirection(tile)) return CommandCost();
DiagDirection old_dir = GetRailDepotDirection(tile);
if (dir == old_dir) return CommandCost();
ret = EnsureNoVehicleOnGround(tile);
if (ret.Failed()) return ret;
if (HasDepotReservation(tile)) {
v = GetTrainForReservation(tile, DiagDirToDiagTrack(old_dir));
}
rotate_existing_depot = true;
}
@@ -1015,7 +1021,10 @@ CommandCost CmdBuildTrainDepot(DoCommandFlags flags, TileIndex tile, RailType ra
}
if (flags.Test(DoCommandFlag::Execute)) {
if (v != nullptr) FreeTrainTrackReservation(v);
if (rotate_existing_depot) {
SetDepotReservation(tile, false);
SetRailDepotExitDirection(tile, dir);
} else {
Depot *d = Depot::Create(tile);
@@ -1030,6 +1039,8 @@ CommandCost CmdBuildTrainDepot(DoCommandFlags flags, TileIndex tile, RailType ra
MarkTileDirtyByTile(tile);
AddSideToSignalBuffer(tile, DiagDirection::Invalid, _current_company);
YapfNotifyTrackLayoutChange(tile, DiagDirToDiagTrack(dir));
if (v != nullptr) TryPathReserve(v, true);
}
cost.AddCost(_price[Price::BuildDepotTrain]);
+6 -5
View File
@@ -11,13 +11,14 @@
#define RAIL_TYPE_H
#include "core/enum_type.hpp"
#include "core/label_type.hpp"
typedef uint32_t RailTypeLabel;
using RailTypeLabel = Label<struct RailTypeLabelTag>;
static const RailTypeLabel RAILTYPE_LABEL_RAIL = 'RAIL';
static const RailTypeLabel RAILTYPE_LABEL_ELECTRIC = 'ELRL';
static const RailTypeLabel RAILTYPE_LABEL_MONO = 'MONO';
static const RailTypeLabel RAILTYPE_LABEL_MAGLEV = 'MGLV';
static const RailTypeLabel RAILTYPE_LABEL_RAIL{"RAIL"};
static const RailTypeLabel RAILTYPE_LABEL_ELECTRIC{"ELRL"};
static const RailTypeLabel RAILTYPE_LABEL_MONO{"MONO"};
static const RailTypeLabel RAILTYPE_LABEL_MAGLEV{"MGLV"};
/**
* Enumeration for all possible railtypes.
+3 -3
View File
@@ -124,7 +124,7 @@ bool HasRoadTypeAvail(const CompanyID company, RoadType roadtype)
{
if (company == OWNER_DEITY || company == OWNER_TOWN || _game_mode == GameMode::Editor || _generating_world) {
const RoadTypeInfo *rti = GetRoadTypeInfo(roadtype);
if (rti->label == 0) return false;
if (rti->label.Empty()) return false;
/* Not yet introduced at this date. */
if (IsInsideMM(rti->introduction_date, 0, CalendarTime::MAX_DATE.base()) && rti->introduction_date > TimerGameCalendar::date) return false;
@@ -181,7 +181,7 @@ RoadTypes AddDateIntroducedRoadTypes(RoadTypes current, TimerGameCalendar::Date
for (RoadType rt : EnumRange(ROADTYPE_END)) {
const RoadTypeInfo *rti = GetRoadTypeInfo(rt);
/* Unused road type. */
if (rti->label == 0) continue;
if (rti->label.Empty()) continue;
/* Not date introduced. */
if (!IsInsideMM(rti->introduction_date, 0, CalendarTime::MAX_DATE.base())) continue;
@@ -265,7 +265,7 @@ RoadTypes GetRoadTypes(bool introduces)
RoadType GetRoadTypeByLabel(RoadTypeLabel label, bool allow_alternate_labels)
{
extern RoadTypeInfo _roadtypes[ROADTYPE_END];
if (label == 0) return INVALID_ROADTYPE;
if (label.Empty()) return INVALID_ROADTYPE;
auto it = std::ranges::find(_roadtypes, label, &RoadTypeInfo::label);
if (it == std::end(_roadtypes) && allow_alternate_labels) {
+6 -6
View File
@@ -117,7 +117,7 @@ void InitRoadTypes()
ResolveRoadTypeGUISprites(&rti);
_roadtypes_hidden_mask.Set(rt, rti.flags.Test(RoadTypeFlag::Hidden));
if (rti.label == 0) continue;
if (rti.label.Empty()) continue;
_sorted_roadtypes.push_back(rt);
}
std::sort(_sorted_roadtypes.begin(), _sorted_roadtypes.end(), CompareRoadTypes);
@@ -131,7 +131,7 @@ void InitRoadTypes()
*/
RoadType AllocateRoadType(RoadTypeLabel label, RoadTramType rtt)
{
auto it = std::ranges::find(_roadtypes, 0, &RoadTypeInfo::label);
auto it = std::ranges::find(_roadtypes, RoadTypeLabel{}, &RoadTypeInfo::label);
if (it == std::end(_roadtypes)) return INVALID_ROADTYPE;
RoadTypeInfo &rti = *it;
@@ -1579,7 +1579,7 @@ static SpriteID GetRoadGroundSprite(const TileInfo *ti, Roadside roadside, const
/* Draw original road base sprite */
SpriteID image = SPR_ROAD_Y + offset;
if (DrawRoadAsSnowOrDesert(snow_or_desert, roadside)) {
image += 19;
image += NUM_SLOPES;
} else {
switch (roadside) {
case Roadside::Barren:
@@ -1591,7 +1591,7 @@ static SpriteID GetRoadGroundSprite(const TileInfo *ti, Roadside roadside, const
break;
default:
image -= 19;
image -= NUM_SLOPES;
break; // Paved
}
}
@@ -1744,7 +1744,7 @@ static void DrawTile_Road(TileInfo *ti)
Roadside roadside = GetRoadside(ti->tile);
if (DrawRoadAsSnowOrDesert(IsOnSnowOrDesert(ti->tile), roadside)) {
image += 19;
image += NUM_SLOPES;
} else {
switch (roadside) {
case Roadside::Barren:
@@ -1755,7 +1755,7 @@ static void DrawTile_Road(TileInfo *ti)
break;
default:
image -= 19;
image -= NUM_SLOPES;
break; // Paved
}
}
+4 -3
View File
@@ -11,11 +11,12 @@
#define ROAD_TYPE_H
#include "core/enum_type.hpp"
#include "core/label_type.hpp"
typedef uint32_t RoadTypeLabel;
using RoadTypeLabel = Label<struct RoadTypeLabelTag>;
static const RoadTypeLabel ROADTYPE_LABEL_ROAD = 'ROAD';
static const RoadTypeLabel ROADTYPE_LABEL_TRAM = 'ELRL';
static const RoadTypeLabel ROADTYPE_LABEL_ROAD{"ROAD"};
static const RoadTypeLabel ROADTYPE_LABEL_TRAM{"ELRL"};
/**
* The different roadtypes we support
+1 -1
View File
@@ -73,7 +73,7 @@ static void SaveReal_AIPL(int arg)
}
struct AIPLChunkHandler : ChunkHandler {
AIPLChunkHandler() : ChunkHandler('AIPL', ChunkType::Table) {}
AIPLChunkHandler() : ChunkHandler("AIPL", ChunkType::Table) {}
void Load() const override
{
+2 -2
View File
@@ -15,11 +15,11 @@
#include "../safeguards.h"
struct APIDChunkHandler : NewGRFMappingChunkHandler {
APIDChunkHandler() : NewGRFMappingChunkHandler('APID', _airport_mngr) {}
APIDChunkHandler() : NewGRFMappingChunkHandler("APID", _airport_mngr) {}
};
struct ATIDChunkHandler : NewGRFMappingChunkHandler {
ATIDChunkHandler() : NewGRFMappingChunkHandler('ATID', _airporttile_mngr) {}
ATIDChunkHandler() : NewGRFMappingChunkHandler("ATID", _airporttile_mngr) {}
};
static const ATIDChunkHandler ATID;
+1 -1
View File
@@ -23,7 +23,7 @@ static const SaveLoad _animated_tile_desc[] = {
};
struct ANITChunkHandler : ChunkHandler {
ANITChunkHandler() : ChunkHandler('ANIT', ChunkType::Table) {}
ANITChunkHandler() : ChunkHandler("ANIT", ChunkType::Table) {}
void Save() const override
{
+1 -1
View File
@@ -26,7 +26,7 @@ static const SaveLoad _engine_renew_desc[] = {
};
struct ERNWChunkHandler : ChunkHandler {
ERNWChunkHandler() : ChunkHandler('ERNW', ChunkType::Table) {}
ERNWChunkHandler() : ChunkHandler("ERNW", ChunkType::Table) {}
void Save() const override
{
+2 -2
View File
@@ -45,7 +45,7 @@ static CargoMonitorID FixupCargoMonitor(CargoMonitorID number)
/** #_cargo_deliveries monitoring map. */
struct CMDLChunkHandler : ChunkHandler {
CMDLChunkHandler() : ChunkHandler('CMDL', ChunkType::Table) {}
CMDLChunkHandler() : ChunkHandler("CMDL", ChunkType::Table) {}
void Save() const override
{
@@ -88,7 +88,7 @@ struct CMDLChunkHandler : ChunkHandler {
/** #_cargo_pickups monitoring map. */
struct CMPUChunkHandler : ChunkHandler {
CMPUChunkHandler() : ChunkHandler('CMPU', ChunkType::Table) {}
CMPUChunkHandler() : ChunkHandler("CMPU", ChunkType::Table) {}
void Save() const override
{
+1 -1
View File
@@ -143,7 +143,7 @@ SaveLoadTable GetCargoPacketDesc()
}
struct CAPAChunkHandler : ChunkHandler {
CAPAChunkHandler() : ChunkHandler('CAPA', ChunkType::Table) {}
CAPAChunkHandler() : ChunkHandler("CAPA", ChunkType::Table) {}
void Save() const override
{
+1 -1
View File
@@ -39,7 +39,7 @@ static const SaveLoad _cheats_desc[] = {
struct CHTSChunkHandler : ChunkHandler {
CHTSChunkHandler() : ChunkHandler('CHTS', ChunkType::Table) {}
CHTSChunkHandler() : ChunkHandler("CHTS", ChunkType::Table) {}
void Save() const override
{
+1 -1
View File
@@ -551,7 +551,7 @@ static const SaveLoad _company_desc[] = {
};
struct PLYRChunkHandler : ChunkHandler {
PLYRChunkHandler() : ChunkHandler('PLYR', ChunkType::Table) {}
PLYRChunkHandler() : ChunkHandler("PLYR", ChunkType::Table) {}
void Save() const override
{
+1 -1
View File
@@ -30,7 +30,7 @@ static const SaveLoad _depot_desc[] = {
};
struct DEPTChunkHandler : ChunkHandler {
DEPTChunkHandler() : ChunkHandler('DEPT', ChunkType::Table) {}
DEPTChunkHandler() : ChunkHandler("DEPT", ChunkType::Table) {}
void Save() const override
{
+4 -4
View File
@@ -19,7 +19,7 @@
/** Prices in pre 126 savegames */
struct PRICChunkHandler : ChunkHandler {
PRICChunkHandler() : ChunkHandler('PRIC', ChunkType::ReadOnly) {}
PRICChunkHandler() : ChunkHandler("PRIC", ChunkType::ReadOnly) {}
void Load() const override
{
@@ -32,7 +32,7 @@ struct PRICChunkHandler : ChunkHandler {
/** Cargo payment rates in pre 126 savegames */
struct CAPRChunkHandler : ChunkHandler {
CAPRChunkHandler() : ChunkHandler('CAPR', ChunkType::ReadOnly) {}
CAPRChunkHandler() : ChunkHandler("CAPR", ChunkType::ReadOnly) {}
void Load() const override
{
@@ -58,7 +58,7 @@ static const SaveLoad _economy_desc[] = {
/** Economy variables */
struct ECMYChunkHandler : ChunkHandler {
ECMYChunkHandler() : ChunkHandler('ECMY', ChunkType::Table) {}
ECMYChunkHandler() : ChunkHandler("ECMY", ChunkType::Table) {}
void Save() const override
{
@@ -89,7 +89,7 @@ static const SaveLoad _cargopayment_desc[] = {
};
struct CAPYChunkHandler : ChunkHandler {
CAPYChunkHandler() : ChunkHandler('CAPY', ChunkType::Table) {}
CAPYChunkHandler() : ChunkHandler("CAPY", ChunkType::Table) {}
void Save() const override
{
+3 -3
View File
@@ -62,7 +62,7 @@ Engine *GetTempDataEngine(EngineID index, VehicleType type, uint16_t local_id)
}
struct ENGNChunkHandler : ChunkHandler {
ENGNChunkHandler() : ChunkHandler('ENGN', ChunkType::Table) {}
ENGNChunkHandler() : ChunkHandler("ENGN", ChunkType::Table) {}
void Save() const override
{
@@ -135,7 +135,7 @@ void ResetTempEngineData()
}
struct ENGSChunkHandler : ChunkHandler {
ENGSChunkHandler() : ChunkHandler('ENGS', ChunkType::ReadOnly) {}
ENGSChunkHandler() : ChunkHandler("ENGS", ChunkType::ReadOnly) {}
void Load() const override
{
@@ -162,7 +162,7 @@ static const SaveLoad _engine_id_mapping_desc[] = {
};
struct EIDSChunkHandler : ChunkHandler {
EIDSChunkHandler() : ChunkHandler('EIDS', ChunkType::Table) {}
EIDSChunkHandler() : ChunkHandler("EIDS", ChunkType::Table) {}
void Save() const override
{
+2 -2
View File
@@ -52,7 +52,7 @@ static void SaveReal_GSDT(int)
}
struct GSDTChunkHandler : ChunkHandler {
GSDTChunkHandler() : ChunkHandler('GSDT', ChunkType::Table) {}
GSDTChunkHandler() : ChunkHandler("GSDT", ChunkType::Table) {}
void Load() const override
{
@@ -153,7 +153,7 @@ static const SaveLoad _game_language_desc[] = {
};
struct GSTRChunkHandler : ChunkHandler {
GSTRChunkHandler() : ChunkHandler('GSTR', ChunkType::Table) {}
GSTRChunkHandler() : ChunkHandler("GSTR", ChunkType::Table) {}
void Load() const override
{
+1 -1
View File
@@ -375,7 +375,7 @@ static const SaveLoad _gamelog_desc[] = {
};
struct GLOGChunkHandler : ChunkHandler {
GLOGChunkHandler() : ChunkHandler('GLOG', ChunkType::Table) {}
GLOGChunkHandler() : ChunkHandler("GLOG", ChunkType::Table) {}
void LoadCommon(Gamelog &gamelog) const
{
+1 -1
View File
@@ -26,7 +26,7 @@ static const SaveLoad _goals_desc[] = {
};
struct GOALChunkHandler : ChunkHandler {
GOALChunkHandler() : ChunkHandler('GOAL', ChunkType::Table) {}
GOALChunkHandler() : ChunkHandler("GOAL", ChunkType::Table) {}
void Save() const override
{
+1 -1
View File
@@ -30,7 +30,7 @@ static const SaveLoad _group_desc[] = {
};
struct GRPSChunkHandler : ChunkHandler {
GRPSChunkHandler() : ChunkHandler('GRPS', ChunkType::Table) {}
GRPSChunkHandler() : ChunkHandler("GRPS", ChunkType::Table) {}
void Save() const override
{
+5 -5
View File
@@ -211,7 +211,7 @@ static const SaveLoad _industry_desc[] = {
};
struct INDYChunkHandler : ChunkHandler {
INDYChunkHandler() : ChunkHandler('INDY', ChunkType::Table) {}
INDYChunkHandler() : ChunkHandler("INDY", ChunkType::Table) {}
void Save() const override
{
@@ -303,11 +303,11 @@ struct INDYChunkHandler : ChunkHandler {
};
struct IIDSChunkHandler : NewGRFMappingChunkHandler {
IIDSChunkHandler() : NewGRFMappingChunkHandler('IIDS', _industry_mngr) {}
IIDSChunkHandler() : NewGRFMappingChunkHandler("IIDS", _industry_mngr) {}
};
struct TIDSChunkHandler : NewGRFMappingChunkHandler {
TIDSChunkHandler() : NewGRFMappingChunkHandler('TIDS', _industile_mngr) {}
TIDSChunkHandler() : NewGRFMappingChunkHandler("TIDS", _industile_mngr) {}
};
/** Description of the data to save and load in #IndustryBuildData. */
@@ -317,7 +317,7 @@ static const SaveLoad _industry_builder_desc[] = {
/** Industry builder. */
struct IBLDChunkHandler : ChunkHandler {
IBLDChunkHandler() : ChunkHandler('IBLD', ChunkType::Table) {}
IBLDChunkHandler() : ChunkHandler("IBLD", ChunkType::Table) {}
void Save() const override
{
@@ -348,7 +348,7 @@ static const SaveLoad _industrytype_builder_desc[] = {
/** Industry-type build data. */
struct ITBLChunkHandler : ChunkHandler {
ITBLChunkHandler() : ChunkHandler('ITBL', ChunkType::Table) {}
ITBLChunkHandler() : ChunkHandler("ITBL", ChunkType::Table) {}
void Save() const override
{
+2 -2
View File
@@ -34,7 +34,7 @@ void AfterLoadLabelMaps()
}
struct RAILChunkHandler : ChunkHandler {
RAILChunkHandler() : ChunkHandler('RAIL', ChunkType::Table) {}
RAILChunkHandler() : ChunkHandler("RAIL", ChunkType::Table) {}
static inline const SaveLoad description[] = {
SLE_VAR(LabelObject<RailTypeLabel>, label, VarTypes::U32),
@@ -69,7 +69,7 @@ struct RAILChunkHandler : ChunkHandler {
};
struct ROTTChunkHandler : ChunkHandler {
ROTTChunkHandler() : ChunkHandler('ROTT', ChunkType::Table) {}
ROTTChunkHandler() : ChunkHandler("ROTT", ChunkType::Table) {}
static inline const SaveLoad description[] = {
SLE_VAR(LabelObject<RoadTypeLabel>, label, VarTypes::U32),
+2 -2
View File
@@ -27,7 +27,7 @@ static const SaveLoad _league_table_elements_desc[] = {
};
struct LEAEChunkHandler : ChunkHandler {
LEAEChunkHandler() : ChunkHandler('LEAE', ChunkType::Table) {}
LEAEChunkHandler() : ChunkHandler("LEAE", ChunkType::Table) {}
void Save() const override
{
@@ -58,7 +58,7 @@ static const SaveLoad _league_tables_desc[] = {
};
struct LEATChunkHandler : ChunkHandler {
LEATChunkHandler() : ChunkHandler('LEAT', ChunkType::Table) {}
LEATChunkHandler() : ChunkHandler("LEAT", ChunkType::Table) {}
void Save() const override
{
+3 -3
View File
@@ -259,7 +259,7 @@ void AfterLoadLinkGraphs()
* All link graphs.
*/
struct LGRPChunkHandler : ChunkHandler {
LGRPChunkHandler() : ChunkHandler('LGRP', ChunkType::Table) {}
LGRPChunkHandler() : ChunkHandler("LGRP", ChunkType::Table) {}
void Save() const override
{
@@ -287,7 +287,7 @@ struct LGRPChunkHandler : ChunkHandler {
* All link graph jobs.
*/
struct LGRJChunkHandler : ChunkHandler {
LGRJChunkHandler() : ChunkHandler('LGRJ', ChunkType::Table) {}
LGRJChunkHandler() : ChunkHandler("LGRJ", ChunkType::Table) {}
void Save() const override
{
@@ -315,7 +315,7 @@ struct LGRJChunkHandler : ChunkHandler {
* Link graph schedule.
*/
struct LGRSChunkHandler : ChunkHandler {
LGRSChunkHandler() : ChunkHandler('LGRS', ChunkType::Table) {}
LGRSChunkHandler() : ChunkHandler("LGRS", ChunkType::Table) {}
void Save() const override
{
+11 -11
View File
@@ -27,7 +27,7 @@ static const SaveLoad _map_desc[] = {
};
struct MAPSChunkHandler : ChunkHandler {
MAPSChunkHandler() : ChunkHandler('MAPS', ChunkType::Table) {}
MAPSChunkHandler() : ChunkHandler("MAPS", ChunkType::Table) {}
void Save() const override
{
@@ -67,7 +67,7 @@ struct MAPSChunkHandler : ChunkHandler {
static const uint MAP_SL_BUF_SIZE = 4096;
struct MAPTChunkHandler : ChunkHandler {
MAPTChunkHandler() : ChunkHandler('MAPT', ChunkType::Riff) {}
MAPTChunkHandler() : ChunkHandler("MAPT", ChunkType::Riff) {}
void Load() const override
{
@@ -94,7 +94,7 @@ struct MAPTChunkHandler : ChunkHandler {
};
struct MAPHChunkHandler : ChunkHandler {
MAPHChunkHandler() : ChunkHandler('MAPH', ChunkType::Riff) {}
MAPHChunkHandler() : ChunkHandler("MAPH", ChunkType::Riff) {}
void Load() const override
{
@@ -121,7 +121,7 @@ struct MAPHChunkHandler : ChunkHandler {
};
struct MAPOChunkHandler : ChunkHandler {
MAPOChunkHandler() : ChunkHandler('MAPO', ChunkType::Riff) {}
MAPOChunkHandler() : ChunkHandler("MAPO", ChunkType::Riff) {}
void Load() const override
{
@@ -148,7 +148,7 @@ struct MAPOChunkHandler : ChunkHandler {
};
struct MAP2ChunkHandler : ChunkHandler {
MAP2ChunkHandler() : ChunkHandler('MAP2', ChunkType::Riff) {}
MAP2ChunkHandler() : ChunkHandler("MAP2", ChunkType::Riff) {}
void Load() const override
{
@@ -178,7 +178,7 @@ struct MAP2ChunkHandler : ChunkHandler {
};
struct M3LOChunkHandler : ChunkHandler {
M3LOChunkHandler() : ChunkHandler('M3LO', ChunkType::Riff) {}
M3LOChunkHandler() : ChunkHandler("M3LO", ChunkType::Riff) {}
void Load() const override
{
@@ -205,7 +205,7 @@ struct M3LOChunkHandler : ChunkHandler {
};
struct M3HIChunkHandler : ChunkHandler {
M3HIChunkHandler() : ChunkHandler('M3HI', ChunkType::Riff) {}
M3HIChunkHandler() : ChunkHandler("M3HI", ChunkType::Riff) {}
void Load() const override
{
@@ -232,7 +232,7 @@ struct M3HIChunkHandler : ChunkHandler {
};
struct MAP5ChunkHandler : ChunkHandler {
MAP5ChunkHandler() : ChunkHandler('MAP5', ChunkType::Riff) {}
MAP5ChunkHandler() : ChunkHandler("MAP5", ChunkType::Riff) {}
void Load() const override
{
@@ -259,7 +259,7 @@ struct MAP5ChunkHandler : ChunkHandler {
};
struct MAPEChunkHandler : ChunkHandler {
MAPEChunkHandler() : ChunkHandler('MAPE', ChunkType::Riff) {}
MAPEChunkHandler() : ChunkHandler("MAPE", ChunkType::Riff) {}
void Load() const override
{
@@ -299,7 +299,7 @@ struct MAPEChunkHandler : ChunkHandler {
};
struct MAP7ChunkHandler : ChunkHandler {
MAP7ChunkHandler() : ChunkHandler('MAP7', ChunkType::Riff) {}
MAP7ChunkHandler() : ChunkHandler("MAP7", ChunkType::Riff) {}
void Load() const override
{
@@ -326,7 +326,7 @@ struct MAP7ChunkHandler : ChunkHandler {
};
struct MAP8ChunkHandler : ChunkHandler {
MAP8ChunkHandler() : ChunkHandler('MAP8', ChunkType::Riff) {}
MAP8ChunkHandler() : ChunkHandler("MAP8", ChunkType::Riff) {}
void Load() const override
{
+2 -2
View File
@@ -121,7 +121,7 @@ static const SaveLoad _date_check_desc[] = {
* @note currently some unrelated stuff is just put here.
*/
struct DATEChunkHandler : ChunkHandler {
DATEChunkHandler() : ChunkHandler('DATE', ChunkType::Table) {}
DATEChunkHandler() : ChunkHandler("DATE", ChunkType::Table) {}
void Save() const override
{
@@ -165,7 +165,7 @@ static const SaveLoad _view_desc[] = {
};
struct VIEWChunkHandler : ChunkHandler {
VIEWChunkHandler() : ChunkHandler('VIEW', ChunkType::Table) {}
VIEWChunkHandler() : ChunkHandler("VIEW", ChunkType::Table) {}
void Save() const override
{
+1 -1
View File
@@ -62,7 +62,7 @@ void NewGRFMappingChunkHandler::Load() const
}
struct NGRFChunkHandler : ChunkHandler {
NGRFChunkHandler() : ChunkHandler('NGRF', ChunkType::Table) {}
NGRFChunkHandler() : ChunkHandler("NGRF", ChunkType::Table) {}
static inline std::array<uint32_t, GRFConfig::MAX_NUM_PARAMS> param;
static inline uint8_t num_params;
+8 -2
View File
@@ -13,10 +13,16 @@
#include "../newgrf_commons.h"
#include "saveload.h"
/** Chunk handler for data of the OverrideManagerBase. */
struct NewGRFMappingChunkHandler : ChunkHandler {
OverrideManagerBase &mapping;
OverrideManagerBase &mapping; ///< The override manager to save/load.
NewGRFMappingChunkHandler(uint32_t id, OverrideManagerBase &mapping) : ChunkHandler(id, ChunkType::Table), mapping(mapping) {}
/**
* Create the handler.
* @param id The identifier of the chunk
* @param mapping The override manager to save/load.
*/
NewGRFMappingChunkHandler(ChunkId id, OverrideManagerBase &mapping) : ChunkHandler(id, ChunkType::Table), mapping(mapping) {}
void Save() const override;
void Load() const override;
};
+2 -2
View File
@@ -30,7 +30,7 @@ static const SaveLoad _object_desc[] = {
};
struct OBJSChunkHandler : ChunkHandler {
OBJSChunkHandler() : ChunkHandler('OBJS', ChunkType::Table) {}
OBJSChunkHandler() : ChunkHandler("OBJS", ChunkType::Table) {}
void Save() const override
{
@@ -67,7 +67,7 @@ struct OBJSChunkHandler : ChunkHandler {
};
struct OBIDChunkHandler : NewGRFMappingChunkHandler {
OBIDChunkHandler() : NewGRFMappingChunkHandler('OBID', _object_mngr) {}
OBIDChunkHandler() : NewGRFMappingChunkHandler("OBID", _object_mngr) {}
};
static const OBIDChunkHandler OBID;

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