mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2026-07-15 23:29:42 +00:00
Compare commits
23 Commits
16.0-beta2
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 3f2f61c49b | |||
| 162c629766 | |||
| 9bea75a8d1 | |||
| 150da36869 | |||
| e065da15ff | |||
| 2d48e82bbb | |||
| fa4b9819c0 | |||
| 7126fcafcc | |||
| 659208ab57 | |||
| 143af1098d | |||
| 68f5a8a0fd | |||
| 121df5b461 | |||
| 1d1c603494 | |||
| af60d6b7cd | |||
| fe31736981 | |||
| 80d0c7763a | |||
| 6b553caa74 | |||
| 2c48b1efb9 | |||
| e3dfd59df0 | |||
| 0366278c9d | |||
| 808ae7f270 | |||
| d1ec9f4897 | |||
| 922d38f1c0 |
@@ -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.
|
||||
|
||||
@@ -30,7 +30,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Setup vcpkg
|
||||
id: vcpkg
|
||||
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
xcode-version: latest-stable
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Setup vcpkg
|
||||
id: vcpkg
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Setup MSYS2
|
||||
uses: msys2/setup-msys2@v2
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Setup vcpkg
|
||||
id: vcpkg
|
||||
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Setup vcpkg
|
||||
id: vcpkg
|
||||
|
||||
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 4
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 4
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 4
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Check for unused strings
|
||||
run: |
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
@@ -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
@@ -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];
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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' : '-',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
@@ -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;
|
||||
|
||||
|
||||
@@ -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
@@ -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();
|
||||
|
||||
|
||||
@@ -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
@@ -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...
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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…
|
||||
|
||||
@@ -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}Εμφάνιση λεπτομεριών αποδόσεων
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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 mō 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 mō 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 mō 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 mō 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 mō ngā uara o ngā utu utanga
|
||||
STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Kaua he utanga e whakaaria ki te kauwhata mō ngā uara o ngā utu utanga
|
||||
STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Hohokona te kauwhata mō 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 mō 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 mō 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 mō 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!
|
||||
|
||||
|
||||
@@ -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
@@ -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 :Выберите коллекцию домов для отображения
|
||||
|
||||
|
||||
@@ -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
@@ -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...
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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
@@ -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()) {
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 <>
|
||||
|
||||
@@ -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
@@ -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();
|
||||
|
||||
@@ -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
@@ -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(),
|
||||
|
||||
@@ -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 <>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -143,7 +143,7 @@ SaveLoadTable GetCargoPacketDesc()
|
||||
}
|
||||
|
||||
struct CAPAChunkHandler : ChunkHandler {
|
||||
CAPAChunkHandler() : ChunkHandler('CAPA', ChunkType::Table) {}
|
||||
CAPAChunkHandler() : ChunkHandler("CAPA", ChunkType::Table) {}
|
||||
|
||||
void Save() const override
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user