Merge branch 'master' into jgrpp
# Conflicts: # src/airport_gui.cpp # src/blitter/32bpp_optimized.cpp # src/blitter/32bpp_simple.cpp # src/blitter/32bpp_sse2.cpp # src/blitter/8bpp_optimized.cpp # src/blitter/8bpp_simple.cpp # src/blitter/null.cpp # src/build_vehicle_gui.cpp # src/company_gui.cpp # src/crashlog.cpp # src/dropdown.cpp # src/dropdown_type.h # src/genworld_gui.cpp # src/gfx.cpp # src/main_gui.cpp # src/newgrf_debug_gui.cpp # src/news_gui.cpp # src/news_type.h # src/openttd.cpp # src/order_gui.cpp # src/settings.cpp # src/settings_gui.cpp # src/signs.cpp # src/smallmap_gui.cpp # src/spritecache.cpp # src/spriteloader/grf.cpp # src/texteff.cpp # src/toolbar_gui.cpp # src/town_cmd.cpp # src/vehicle.cpp # src/vehicle_gui.cpp # src/video/opengl.cpp # src/viewport.cpp # src/waypoint_cmd.cpp # src/zoom_type.h
This commit is contained in:
@@ -148,6 +148,7 @@ add_files(
|
|||||||
driver.cpp
|
driver.cpp
|
||||||
driver.h
|
driver.h
|
||||||
dropdown.cpp
|
dropdown.cpp
|
||||||
|
dropdown_common_type.h
|
||||||
dropdown_func.h
|
dropdown_func.h
|
||||||
dropdown_type.h
|
dropdown_type.h
|
||||||
economy.cpp
|
economy.cpp
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
#include "newgrf_airport.h"
|
#include "newgrf_airport.h"
|
||||||
#include "newgrf_callbacks.h"
|
#include "newgrf_callbacks.h"
|
||||||
#include "dropdown_type.h"
|
#include "dropdown_type.h"
|
||||||
|
#include "dropdown_func.h"
|
||||||
#include "core/geometry_func.hpp"
|
#include "core/geometry_func.hpp"
|
||||||
#include "hotkeys.h"
|
#include "hotkeys.h"
|
||||||
#include "vehicle_func.h"
|
#include "vehicle_func.h"
|
||||||
@@ -233,7 +234,7 @@ class BuildAirportWindow : public PickerWindowBase {
|
|||||||
DropDownList list;
|
DropDownList list;
|
||||||
|
|
||||||
for (uint i = 0; AirportClass::IsClassIDValid((AirportClassID)i); i++) {
|
for (uint i = 0; AirportClass::IsClassIDValid((AirportClassID)i); i++) {
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(AirportClass::Get((AirportClassID)i)->name, i, false));
|
list.push_back(MakeDropDownListStringItem(AirportClass::Get((AirportClassID)i)->name, i, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include "core/geometry_func.hpp"
|
#include "core/geometry_func.hpp"
|
||||||
#include "rail_gui.h"
|
#include "rail_gui.h"
|
||||||
#include "road_gui.h"
|
#include "road_gui.h"
|
||||||
|
#include "dropdown_type.h"
|
||||||
#include "dropdown_func.h"
|
#include "dropdown_func.h"
|
||||||
|
|
||||||
#include "widgets/autoreplace_widget.h"
|
#include "widgets/autoreplace_widget.h"
|
||||||
@@ -562,8 +563,8 @@ public:
|
|||||||
|
|
||||||
case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: {
|
case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: {
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_REPLACE_ENGINES, 1, false));
|
list.push_back(MakeDropDownListStringItem(STR_REPLACE_ENGINES, 1));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_REPLACE_WAGONS, 0, false));
|
list.push_back(MakeDropDownListStringItem(STR_REPLACE_WAGONS, 0));
|
||||||
ShowDropDownList(this, std::move(list), this->replace_engines ? 1 : 0, WID_RV_TRAIN_ENGINEWAGON_DROPDOWN);
|
ShowDropDownList(this, std::move(list), this->replace_engines ? 1 : 0, WID_RV_TRAIN_ENGINEWAGON_DROPDOWN);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -317,9 +317,9 @@ template <bool Tpal_to_rgb> Sprite *Blitter_32bppOptimized::EncodeInternal(const
|
|||||||
ZoomLevel zoom_max;
|
ZoomLevel zoom_max;
|
||||||
uint8_t missing_zoom_levels = 0;
|
uint8_t missing_zoom_levels = 0;
|
||||||
|
|
||||||
if (sprite[ZOOM_LVL_NORMAL].type == SpriteType::Font) {
|
if (sprite[ZOOM_LVL_MIN].type == SpriteType::Font) {
|
||||||
zoom_min = ZOOM_LVL_NORMAL;
|
zoom_min = ZOOM_LVL_MIN;
|
||||||
zoom_max = ZOOM_LVL_NORMAL;
|
zoom_max = ZOOM_LVL_MIN;
|
||||||
} else {
|
} else {
|
||||||
zoom_min = _settings_client.gui.zoom_min;
|
zoom_min = _settings_client.gui.zoom_min;
|
||||||
zoom_max = (ZoomLevel) std::min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
|
zoom_max = (ZoomLevel) std::min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
|
||||||
@@ -478,10 +478,10 @@ template <bool Tpal_to_rgb> Sprite *Blitter_32bppOptimized::EncodeInternal(const
|
|||||||
missing_zoom_levels = UINT8_MAX;
|
missing_zoom_levels = UINT8_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
|
dest_sprite->height = sprite[ZOOM_LVL_MIN].height;
|
||||||
dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
|
dest_sprite->width = sprite[ZOOM_LVL_MIN].width;
|
||||||
dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
|
dest_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs;
|
||||||
dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
|
dest_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs;
|
||||||
dest_sprite->next = nullptr;
|
dest_sprite->next = nullptr;
|
||||||
dest_sprite->missing_zoom_levels = missing_zoom_levels;
|
dest_sprite->missing_zoom_levels = missing_zoom_levels;
|
||||||
|
|
||||||
|
@@ -137,19 +137,19 @@ void Blitter_32bppSimple::DrawColourMappingRect(void *dst, int width, int height
|
|||||||
Sprite *Blitter_32bppSimple::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
|
Sprite *Blitter_32bppSimple::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
|
||||||
{
|
{
|
||||||
Blitter_32bppSimple::Pixel *dst;
|
Blitter_32bppSimple::Pixel *dst;
|
||||||
Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite[ZOOM_LVL_NORMAL].height * (size_t)sprite[ZOOM_LVL_NORMAL].width * sizeof(*dst));
|
Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite[ZOOM_LVL_MIN].height * (size_t)sprite[ZOOM_LVL_MIN].width * sizeof(*dst));
|
||||||
|
|
||||||
dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
|
dest_sprite->height = sprite[ZOOM_LVL_MIN].height;
|
||||||
dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
|
dest_sprite->width = sprite[ZOOM_LVL_MIN].width;
|
||||||
dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
|
dest_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs;
|
||||||
dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
|
dest_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs;
|
||||||
dest_sprite->next = nullptr;
|
dest_sprite->next = nullptr;
|
||||||
dest_sprite->missing_zoom_levels = 0;
|
dest_sprite->missing_zoom_levels = 0;
|
||||||
|
|
||||||
dst = (Blitter_32bppSimple::Pixel *)dest_sprite->data;
|
dst = (Blitter_32bppSimple::Pixel *)dest_sprite->data;
|
||||||
SpriteLoader::CommonPixel *src = (SpriteLoader::CommonPixel *)sprite[ZOOM_LVL_NORMAL].data;
|
SpriteLoader::CommonPixel *src = (SpriteLoader::CommonPixel *)sprite[ZOOM_LVL_MIN].data;
|
||||||
|
|
||||||
for (int i = 0; i < sprite[ZOOM_LVL_NORMAL].height * sprite[ZOOM_LVL_NORMAL].width; i++) {
|
for (int i = 0; i < sprite[ZOOM_LVL_MIN].height * sprite[ZOOM_LVL_MIN].width; i++) {
|
||||||
if (src->m == 0) {
|
if (src->m == 0) {
|
||||||
dst[i].r = src->r;
|
dst[i].r = src->r;
|
||||||
dst[i].g = src->g;
|
dst[i].g = src->g;
|
||||||
|
@@ -26,10 +26,10 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::SpriteCollection &spri
|
|||||||
* Second uint32_t of a line = the number of transparent pixels from the right.
|
* Second uint32_t of a line = the number of transparent pixels from the right.
|
||||||
* Then all RGBA then all MV.
|
* Then all RGBA then all MV.
|
||||||
*/
|
*/
|
||||||
ZoomLevel zoom_min = ZOOM_LVL_NORMAL;
|
ZoomLevel zoom_min = ZOOM_LVL_MIN;
|
||||||
ZoomLevel zoom_max = ZOOM_LVL_NORMAL;
|
ZoomLevel zoom_max = ZOOM_LVL_MIN;
|
||||||
uint8_t missing_zoom_levels = 0;
|
uint8_t missing_zoom_levels = 0;
|
||||||
if (sprite[ZOOM_LVL_NORMAL].type != SpriteType::Font) {
|
if (sprite[ZOOM_LVL_MIN].type != SpriteType::Font) {
|
||||||
zoom_min = _settings_client.gui.zoom_min;
|
zoom_min = _settings_client.gui.zoom_min;
|
||||||
zoom_max = (ZoomLevel) std::min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
|
zoom_max = (ZoomLevel) std::min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
|
||||||
if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_DRAW_SPR;
|
if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_DRAW_SPR;
|
||||||
@@ -62,10 +62,10 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::SpriteCollection &spri
|
|||||||
}
|
}
|
||||||
|
|
||||||
Sprite *dst_sprite = (Sprite *) allocator(sizeof(Sprite) + sizeof(SpriteData) + all_sprites_size);
|
Sprite *dst_sprite = (Sprite *) allocator(sizeof(Sprite) + sizeof(SpriteData) + all_sprites_size);
|
||||||
dst_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
|
dst_sprite->height = sprite[ZOOM_LVL_MIN].height;
|
||||||
dst_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
|
dst_sprite->width = sprite[ZOOM_LVL_MIN].width;
|
||||||
dst_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
|
dst_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs;
|
||||||
dst_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
|
dst_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs;
|
||||||
dst_sprite->next = nullptr;
|
dst_sprite->next = nullptr;
|
||||||
dst_sprite->missing_zoom_levels = missing_zoom_levels;
|
dst_sprite->missing_zoom_levels = missing_zoom_levels;
|
||||||
memcpy(dst_sprite->data, &sd, sizeof(SpriteData));
|
memcpy(dst_sprite->data, &sd, sizeof(SpriteData));
|
||||||
|
@@ -28,7 +28,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define META_LENGTH 2 ///< Number of uint32_t inserted before each line of pixels in a sprite.
|
#define META_LENGTH 2 ///< Number of uint32_t inserted before each line of pixels in a sprite.
|
||||||
#define MARGIN_NORMAL_THRESHOLD (zoom == ZOOM_LVL_OUT_32X ? 8 : 4) ///< Minimum width to use margins with BM_NORMAL.
|
#define MARGIN_NORMAL_THRESHOLD (zoom == ZOOM_LVL_OUT_8X ? 8 : 4) ///< Minimum width to use margins with BM_NORMAL.
|
||||||
#define MARGIN_REMAP_THRESHOLD 4 ///< Minimum width to use margins with BM_COLOUR_REMAP.
|
#define MARGIN_REMAP_THRESHOLD 4 ///< Minimum width to use margins with BM_COLOUR_REMAP.
|
||||||
|
|
||||||
#undef ALIGN
|
#undef ALIGN
|
||||||
|
@@ -129,9 +129,9 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::SpriteCollection &spri
|
|||||||
ZoomLevel zoom_min;
|
ZoomLevel zoom_min;
|
||||||
ZoomLevel zoom_max;
|
ZoomLevel zoom_max;
|
||||||
|
|
||||||
if (sprite[ZOOM_LVL_NORMAL].type == SpriteType::Font) {
|
if (sprite[ZOOM_LVL_MIN].type == SpriteType::Font) {
|
||||||
zoom_min = ZOOM_LVL_NORMAL;
|
zoom_min = ZOOM_LVL_MIN;
|
||||||
zoom_max = ZOOM_LVL_NORMAL;
|
zoom_max = ZOOM_LVL_MIN;
|
||||||
} else {
|
} else {
|
||||||
zoom_min = _settings_client.gui.zoom_min;
|
zoom_min = _settings_client.gui.zoom_min;
|
||||||
zoom_max = (ZoomLevel) std::min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
|
zoom_max = (ZoomLevel) std::min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
|
||||||
@@ -222,10 +222,10 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::SpriteCollection &spri
|
|||||||
/* Allocate the exact amount of memory we need */
|
/* Allocate the exact amount of memory we need */
|
||||||
Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + size);
|
Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + size);
|
||||||
|
|
||||||
dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
|
dest_sprite->height = sprite[ZOOM_LVL_MIN].height;
|
||||||
dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
|
dest_sprite->width = sprite[ZOOM_LVL_MIN].width;
|
||||||
dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
|
dest_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs;
|
||||||
dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
|
dest_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs;
|
||||||
dest_sprite->next = nullptr;
|
dest_sprite->next = nullptr;
|
||||||
dest_sprite->missing_zoom_levels = 0;
|
dest_sprite->missing_zoom_levels = 0;
|
||||||
memcpy(dest_sprite->data, temp_dst, size);
|
memcpy(dest_sprite->data, temp_dst, size);
|
||||||
|
@@ -65,18 +65,18 @@ void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoom
|
|||||||
Sprite *Blitter_8bppSimple::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
|
Sprite *Blitter_8bppSimple::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
|
||||||
{
|
{
|
||||||
Sprite *dest_sprite;
|
Sprite *dest_sprite;
|
||||||
dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite[ZOOM_LVL_NORMAL].height * (size_t)sprite[ZOOM_LVL_NORMAL].width);
|
dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite[ZOOM_LVL_MIN].height * (size_t)sprite[ZOOM_LVL_MIN].width);
|
||||||
|
|
||||||
dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
|
dest_sprite->height = sprite[ZOOM_LVL_MIN].height;
|
||||||
dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
|
dest_sprite->width = sprite[ZOOM_LVL_MIN].width;
|
||||||
dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
|
dest_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs;
|
||||||
dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
|
dest_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs;
|
||||||
dest_sprite->next = nullptr;
|
dest_sprite->next = nullptr;
|
||||||
dest_sprite->missing_zoom_levels = 0;
|
dest_sprite->missing_zoom_levels = 0;
|
||||||
|
|
||||||
/* Copy over only the 'remap' channel, as that is what we care about in 8bpp */
|
/* Copy over only the 'remap' channel, as that is what we care about in 8bpp */
|
||||||
for (int i = 0; i < sprite[ZOOM_LVL_NORMAL].height * sprite[ZOOM_LVL_NORMAL].width; i++) {
|
for (int i = 0; i < sprite[ZOOM_LVL_MIN].height * sprite[ZOOM_LVL_MIN].width; i++) {
|
||||||
dest_sprite->data[i] = sprite[ZOOM_LVL_NORMAL].data[i].m;
|
dest_sprite->data[i] = sprite[ZOOM_LVL_MIN].data[i].m;
|
||||||
}
|
}
|
||||||
|
|
||||||
return dest_sprite;
|
return dest_sprite;
|
||||||
|
@@ -94,7 +94,7 @@ public:
|
|||||||
* @param name the blitter to select.
|
* @param name the blitter to select.
|
||||||
* @post Sets the blitter so GetCurrentBlitter() returns it too.
|
* @post Sets the blitter so GetCurrentBlitter() returns it too.
|
||||||
*/
|
*/
|
||||||
static Blitter *SelectBlitter(const std::string &name)
|
static Blitter *SelectBlitter(const std::string_view name)
|
||||||
{
|
{
|
||||||
BlitterFactory *b = GetBlitterFactory(name);
|
BlitterFactory *b = GetBlitterFactory(name);
|
||||||
if (b == nullptr) return nullptr;
|
if (b == nullptr) return nullptr;
|
||||||
@@ -112,17 +112,17 @@ public:
|
|||||||
* @param name the blitter factory to select.
|
* @param name the blitter factory to select.
|
||||||
* @return The blitter factory, or nullptr when there isn't one with the wanted name.
|
* @return The blitter factory, or nullptr when there isn't one with the wanted name.
|
||||||
*/
|
*/
|
||||||
static BlitterFactory *GetBlitterFactory(const std::string &name)
|
static BlitterFactory *GetBlitterFactory(const std::string_view name)
|
||||||
{
|
{
|
||||||
#if defined(DEDICATED)
|
#if defined(DEDICATED)
|
||||||
const char *default_blitter = "null";
|
const std::string_view default_blitter = "null";
|
||||||
#elif defined(WITH_COCOA)
|
#elif defined(WITH_COCOA)
|
||||||
const char *default_blitter = "32bpp-anim";
|
const std::string_view default_blitter = "32bpp-anim";
|
||||||
#else
|
#else
|
||||||
const char *default_blitter = "8bpp-optimized";
|
const std::string_view default_blitter = "8bpp-optimized";
|
||||||
#endif
|
#endif
|
||||||
if (GetBlitters().empty()) return nullptr;
|
if (GetBlitters().empty()) return nullptr;
|
||||||
const char *bname = name.empty() ? default_blitter : name.c_str();
|
const std::string_view bname = name.empty() ? default_blitter : name;
|
||||||
|
|
||||||
for (auto &it : GetBlitters()) {
|
for (auto &it : GetBlitters()) {
|
||||||
BlitterFactory *b = it.second;
|
BlitterFactory *b = it.second;
|
||||||
|
@@ -20,10 +20,10 @@ Sprite *Blitter_Null::Encode(const SpriteLoader::SpriteCollection &sprite, Alloc
|
|||||||
Sprite *dest_sprite;
|
Sprite *dest_sprite;
|
||||||
dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite));
|
dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite));
|
||||||
|
|
||||||
dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
|
dest_sprite->height = sprite[ZOOM_LVL_MIN].height;
|
||||||
dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
|
dest_sprite->width = sprite[ZOOM_LVL_MIN].width;
|
||||||
dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
|
dest_sprite->x_offs = sprite[ZOOM_LVL_MIN].x_offs;
|
||||||
dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
|
dest_sprite->y_offs = sprite[ZOOM_LVL_MIN].y_offs;
|
||||||
dest_sprite->next = nullptr;
|
dest_sprite->next = nullptr;
|
||||||
dest_sprite->missing_zoom_levels = 0;
|
dest_sprite->missing_zoom_levels = 0;
|
||||||
|
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include "window_func.h"
|
#include "window_func.h"
|
||||||
#include "date_func.h"
|
#include "date_func.h"
|
||||||
#include "vehicle_func.h"
|
#include "vehicle_func.h"
|
||||||
|
#include "dropdown_type.h"
|
||||||
#include "dropdown_func.h"
|
#include "dropdown_func.h"
|
||||||
#include "engine_gui.h"
|
#include "engine_gui.h"
|
||||||
#include "cargotype.h"
|
#include "cargotype.h"
|
||||||
@@ -1408,23 +1409,23 @@ struct BuildVehicleWindowBase : Window {
|
|||||||
DropDownList list;
|
DropDownList list;
|
||||||
|
|
||||||
/* Add item for disabling filtering. */
|
/* Add item for disabling filtering. */
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ANY), CargoFilterCriteria::CF_ANY, false));
|
list.push_back(MakeDropDownListStringItem(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ANY), CargoFilterCriteria::CF_ANY, false));
|
||||||
/* Specific filters for trains. */
|
/* Specific filters for trains. */
|
||||||
if (this->vehicle_type == VEH_TRAIN) {
|
if (this->vehicle_type == VEH_TRAIN) {
|
||||||
if (!hide_engines) {
|
if (!hide_engines) {
|
||||||
/* Add item for locomotives only in case of trains. */
|
/* Add item for locomotives only in case of trains. */
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ENGINES), CargoFilterCriteria::CF_ENGINES, false));
|
list.push_back(MakeDropDownListStringItem(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ENGINES), CargoFilterCriteria::CF_ENGINES, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add item for vehicles not carrying anything, e.g. train engines.
|
/* Add item for vehicles not carrying anything, e.g. train engines.
|
||||||
* This could also be useful for eyecandy vehicles of other types, but is likely too confusing for joe, */
|
* This could also be useful for eyecandy vehicles of other types, but is likely too confusing for joe, */
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(this->GetCargoFilterLabel(CargoFilterCriteria::CF_NONE), CargoFilterCriteria::CF_NONE, false));
|
list.push_back(MakeDropDownListStringItem(this->GetCargoFilterLabel(CargoFilterCriteria::CF_NONE), CargoFilterCriteria::CF_NONE, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add cargos */
|
/* Add cargos */
|
||||||
Dimension d = GetLargestCargoIconSize();
|
Dimension d = GetLargestCargoIconSize();
|
||||||
for (const CargoSpec *cs : _sorted_standard_cargo_specs) {
|
for (const CargoSpec *cs : _sorted_standard_cargo_specs) {
|
||||||
list.push_back(std::make_unique<DropDownListIconItem>(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index(), false));
|
list.push_back(MakeDropDownListIconItem(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index(), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
|
@@ -173,7 +173,7 @@ static void DrawTile_Clear(TileInfo *ti, DrawTileProcParams params)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CLEAR_FIELDS:
|
case CLEAR_FIELDS:
|
||||||
if (params.min_visible_height <= 4 * ZOOM_LVL_BASE) {
|
if (params.min_visible_height <= (4 * ZOOM_BASE)) {
|
||||||
DrawGroundSprite(GetSpriteIDForFields(ti->tileh, GetFieldType(ti->tile)), PAL_NONE);
|
DrawGroundSprite(GetSpriteIDForFields(ti->tileh, GetFieldType(ti->tile)), PAL_NONE);
|
||||||
DrawClearLandFence(ti);
|
DrawClearLandFence(ti);
|
||||||
}
|
}
|
||||||
|
@@ -1346,6 +1346,7 @@ CommandCost CmdRenamePresident(TileIndex tile, DoCommandFlag flags, uint32_t p1,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InvalidateWindowClassesData(WC_COMPANY, 1);
|
||||||
MarkWholeScreenDirty();
|
MarkWholeScreenDirty();
|
||||||
CompanyAdminUpdate(c);
|
CompanyAdminUpdate(c);
|
||||||
}
|
}
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
#include "date_func.h"
|
#include "date_func.h"
|
||||||
#include "dropdown_type.h"
|
#include "dropdown_type.h"
|
||||||
|
#include "dropdown_common_type.h"
|
||||||
#include "tilehighlight_func.h"
|
#include "tilehighlight_func.h"
|
||||||
#include "company_base.h"
|
#include "company_base.h"
|
||||||
#include "core/geometry_func.hpp"
|
#include "core/geometry_func.hpp"
|
||||||
@@ -592,26 +593,6 @@ void ShowCompanyFinances(CompanyID company)
|
|||||||
new CompanyFinancesWindow(&_company_finances_desc, company);
|
new CompanyFinancesWindow(&_company_finances_desc, company);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* List of colours for the livery window */
|
|
||||||
static const StringID _colour_dropdown[] = {
|
|
||||||
STR_COLOUR_DARK_BLUE,
|
|
||||||
STR_COLOUR_PALE_GREEN,
|
|
||||||
STR_COLOUR_PINK,
|
|
||||||
STR_COLOUR_YELLOW,
|
|
||||||
STR_COLOUR_RED,
|
|
||||||
STR_COLOUR_LIGHT_BLUE,
|
|
||||||
STR_COLOUR_GREEN,
|
|
||||||
STR_COLOUR_DARK_GREEN,
|
|
||||||
STR_COLOUR_BLUE,
|
|
||||||
STR_COLOUR_CREAM,
|
|
||||||
STR_COLOUR_MAUVE,
|
|
||||||
STR_COLOUR_PURPLE,
|
|
||||||
STR_COLOUR_ORANGE,
|
|
||||||
STR_COLOUR_BROWN,
|
|
||||||
STR_COLOUR_GREY,
|
|
||||||
STR_COLOUR_WHITE,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Association of liveries to livery classes */
|
/* Association of liveries to livery classes */
|
||||||
static const LiveryClass _livery_class[LS_END] = {
|
static const LiveryClass _livery_class[LS_END] = {
|
||||||
LC_OTHER,
|
LC_OTHER,
|
||||||
@@ -629,7 +610,7 @@ static const LiveryClass _livery_class[LS_END] = {
|
|||||||
template <SpriteID TSprite = SPR_SQUARE>
|
template <SpriteID TSprite = SPR_SQUARE>
|
||||||
class DropDownListColourItem : public DropDownIcon<DropDownString<DropDownListItem>> {
|
class DropDownListColourItem : public DropDownIcon<DropDownString<DropDownListItem>> {
|
||||||
public:
|
public:
|
||||||
DropDownListColourItem(int colour, bool masked) : DropDownIcon<DropDownString<DropDownListItem>>(TSprite, GENERAL_SPRITE_COLOUR(colour % COLOUR_END), colour < COLOUR_END ? _colour_dropdown[colour] : STR_COLOUR_DEFAULT, colour, masked)
|
DropDownListColourItem(int colour, bool masked) : DropDownIcon<DropDownString<DropDownListItem>>(TSprite, GENERAL_SPRITE_COLOUR(colour % COLOUR_END), colour < COLOUR_END ? (STR_COLOUR_DARK_BLUE + colour) : STR_COLOUR_DEFAULT, colour, masked)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -687,8 +668,8 @@ private:
|
|||||||
default_col = (primary ? default_livery->colour1 : default_livery->colour2) + COLOUR_END;
|
default_col = (primary ? default_livery->colour1 : default_livery->colour2) + COLOUR_END;
|
||||||
list.push_back(std::make_unique<DropDownListColourItem<>>(default_col, false));
|
list.push_back(std::make_unique<DropDownListColourItem<>>(default_col, false));
|
||||||
}
|
}
|
||||||
for (uint i = 0; i < lengthof(_colour_dropdown); i++) {
|
for (Colours colour = COLOUR_BEGIN; colour != COLOUR_END; colour++) {
|
||||||
list.push_back(std::make_unique<DropDownListColourItem<>>(i, HasBit(used_colours, i)));
|
list.push_back(std::make_unique<DropDownListColourItem<>>(colour, HasBit(used_colours, colour)));
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t sel;
|
uint8_t sel;
|
||||||
@@ -823,8 +804,8 @@ public:
|
|||||||
case WID_SCL_PRI_COL_DROPDOWN: {
|
case WID_SCL_PRI_COL_DROPDOWN: {
|
||||||
this->square = GetSpriteSize(SPR_SQUARE);
|
this->square = GetSpriteSize(SPR_SQUARE);
|
||||||
int string_padding = this->square.width + WidgetDimensions::scaled.hsep_normal + padding.width;
|
int string_padding = this->square.width + WidgetDimensions::scaled.hsep_normal + padding.width;
|
||||||
for (const StringID *id = _colour_dropdown; id != endof(_colour_dropdown); id++) {
|
for (Colours colour = COLOUR_BEGIN; colour != COLOUR_END; colour++) {
|
||||||
size->width = std::max(size->width, GetStringBoundingBox(*id).width + string_padding);
|
size->width = std::max(size->width, GetStringBoundingBox(STR_COLOUR_DARK_BLUE + colour).width + string_padding);
|
||||||
}
|
}
|
||||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COLOUR_DEFAULT).width + string_padding);
|
size->width = std::max(size->width, GetStringBoundingBox(STR_COLOUR_DEFAULT).width + string_padding);
|
||||||
break;
|
break;
|
||||||
@@ -2585,6 +2566,14 @@ struct CompanyWindow : Window
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OnResize() override
|
||||||
|
{
|
||||||
|
NWidgetResizeBase *wid = this->GetWidget<NWidgetResizeBase>(WID_C_FACE_TITLE);
|
||||||
|
SetDParam(0, this->owner);
|
||||||
|
int y = GetStringHeight(STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE, wid->current_x);
|
||||||
|
if (wid->UpdateVerticalSize(y)) this->ReInit(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
|
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
@@ -2728,7 +2717,6 @@ struct CompanyWindow : Window
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Some data on this window has become invalid.
|
* Some data on this window has become invalid.
|
||||||
* @param data Information about the changed data.
|
* @param data Information about the changed data.
|
||||||
@@ -2736,25 +2724,30 @@ struct CompanyWindow : Window
|
|||||||
*/
|
*/
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (this->window_number == _local_company) return;
|
if (this->window_number != _local_company) {
|
||||||
|
if (_settings_game.economy.allow_shares) { // Shares are allowed
|
||||||
|
const Company *c = Company::Get(this->window_number);
|
||||||
|
|
||||||
if (_settings_game.economy.allow_shares) { // Shares are allowed
|
/* If all shares are owned by someone (none by nobody), disable buy button */
|
||||||
const Company *c = Company::Get(this->window_number);
|
this->SetWidgetDisabledState(WID_C_BUY_SHARE, GetAmountOwnedBy(c, INVALID_OWNER) == 0 ||
|
||||||
|
/* Only 25% left to buy. If the company is human, disable buying it up.. TODO issues! */
|
||||||
|
(GetAmountOwnedBy(c, INVALID_OWNER) == 1 && !c->is_ai) ||
|
||||||
|
/* Spectators cannot do anything of course */
|
||||||
|
_local_company == COMPANY_SPECTATOR);
|
||||||
|
|
||||||
/* If all shares are owned by someone (none by nobody), disable buy button */
|
/* If the company doesn't own any shares, disable sell button */
|
||||||
this->SetWidgetDisabledState(WID_C_BUY_SHARE, GetAmountOwnedBy(c, INVALID_OWNER) == 0 ||
|
this->SetWidgetDisabledState(WID_C_SELL_SHARE, (GetAmountOwnedBy(c, _local_company) == 0) ||
|
||||||
/* Only 25% left to buy. If the company is human, disable buying it up.. TODO issues! */
|
/* Spectators cannot do anything of course */
|
||||||
(GetAmountOwnedBy(c, INVALID_OWNER) == 1 && !c->is_ai) ||
|
_local_company == COMPANY_SPECTATOR);
|
||||||
/* Spectators cannot do anything of course */
|
} else { // Shares are not allowed, disable buy/sell buttons
|
||||||
_local_company == COMPANY_SPECTATOR);
|
this->DisableWidget(WID_C_BUY_SHARE);
|
||||||
|
this->DisableWidget(WID_C_SELL_SHARE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* If the company doesn't own any shares, disable sell button */
|
if (gui_scope && data == 1) {
|
||||||
this->SetWidgetDisabledState(WID_C_SELL_SHARE, (GetAmountOwnedBy(c, _local_company) == 0) ||
|
/* Manually call OnResize to adjust minimum height of president name widget. */
|
||||||
/* Spectators cannot do anything of course */
|
OnResize();
|
||||||
_local_company == COMPANY_SPECTATOR);
|
|
||||||
} else { // Shares are not allowed, disable buy/sell buttons
|
|
||||||
this->DisableWidget(WID_C_BUY_SHARE);
|
|
||||||
this->DisableWidget(WID_C_SELL_SHARE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@@ -498,19 +498,17 @@ char *CrashLog::LogGamelog(char *buffer, const char *last) const
|
|||||||
*/
|
*/
|
||||||
char *CrashLog::LogRecentNews(char *buffer, const char *last) const
|
char *CrashLog::LogRecentNews(char *buffer, const char *last) const
|
||||||
{
|
{
|
||||||
uint total = 0;
|
uint total = static_cast<uint>(GetNews().size());
|
||||||
for (NewsItem *news = _latest_news; news != nullptr; news = news->prev) {
|
|
||||||
total++;
|
|
||||||
}
|
|
||||||
uint show = std::min<uint>(total, 32);
|
uint show = std::min<uint>(total, 32);
|
||||||
buffer += seprintf(buffer, last, "Recent news messages (%u of %u):\n", show, total);
|
buffer += seprintf(buffer, last, "Recent news messages (%u of %u):\n", show, total);
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (NewsItem *news = _latest_news; i < 32 && news != nullptr; news = news->prev, i++) {
|
for (const auto &news : GetNews()) {
|
||||||
CalTime::YearMonthDay ymd = CalTime::ConvertDateToYMD(news->date);
|
CalTime::YearMonthDay ymd = CalTime::ConvertDateToYMD(news.date);
|
||||||
buffer += seprintf(buffer, last, "(%i-%02i-%02i) StringID: %u, Type: %u, Ref1: %u, %u, Ref2: %u, %u\n",
|
buffer += seprintf(buffer, last, "(%i-%02i-%02i) StringID: %u, Type: %u, Ref1: %u, %u, Ref2: %u, %u\n",
|
||||||
ymd.year.base(), ymd.month + 1, ymd.day, news->string_id, news->type,
|
ymd.year.base(), ymd.month + 1, ymd.day, news.string_id, news.type,
|
||||||
news->reftype1, news->ref1, news->reftype2, news->ref2);
|
news.reftype1, news.ref1, news.reftype2, news.ref2);
|
||||||
|
if (++i > 32) break;
|
||||||
}
|
}
|
||||||
buffer += seprintf(buffer, last, "\n");
|
buffer += seprintf(buffer, last, "\n");
|
||||||
return buffer;
|
return buffer;
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
#include "core/geometry_func.hpp"
|
#include "core/geometry_func.hpp"
|
||||||
#include "settings_type.h"
|
#include "settings_type.h"
|
||||||
#include "dropdown_type.h"
|
#include "dropdown_type.h"
|
||||||
|
#include "dropdown_func.h"
|
||||||
|
|
||||||
#include "widgets/date_widget.h"
|
#include "widgets/date_widget.h"
|
||||||
|
|
||||||
@@ -81,14 +82,14 @@ struct SetDateWindow : Window {
|
|||||||
|
|
||||||
case WID_SD_DAY:
|
case WID_SD_DAY:
|
||||||
for (uint i = 0; i < 31; i++) {
|
for (uint i = 0; i < 31; i++) {
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_DAY_NUMBER_1ST + i, i + 1, false));
|
list.push_back(MakeDropDownListStringItem(STR_DAY_NUMBER_1ST + i, i + 1));
|
||||||
}
|
}
|
||||||
selected = this->date.day;
|
selected = this->date.day;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_SD_MONTH:
|
case WID_SD_MONTH:
|
||||||
for (uint i = 0; i < 12; i++) {
|
for (uint i = 0; i < 12; i++) {
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_MONTH_JAN + i, i, false));
|
list.push_back(MakeDropDownListStringItem(STR_MONTH_JAN + i, i));
|
||||||
}
|
}
|
||||||
selected = this->date.month;
|
selected = this->date.month;
|
||||||
break;
|
break;
|
||||||
@@ -96,7 +97,7 @@ struct SetDateWindow : Window {
|
|||||||
case WID_SD_YEAR:
|
case WID_SD_YEAR:
|
||||||
for (EconTime::Year i = this->min_year; i <= this->max_year; i++) {
|
for (EconTime::Year i = this->min_year; i <= this->max_year; i++) {
|
||||||
SetDParam(0, i);
|
SetDParam(0, i);
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_JUST_INT, i.base(), false));
|
list.push_back(MakeDropDownListStringItem(STR_JUST_INT, i.base()));
|
||||||
}
|
}
|
||||||
selected = this->date.year.base();
|
selected = this->date.year.base();
|
||||||
break;
|
break;
|
||||||
@@ -206,7 +207,7 @@ struct SetMinutesWindow : SetDateWindow
|
|||||||
case WID_SD_DAY:
|
case WID_SD_DAY:
|
||||||
for (uint i = 0; i < 60; i++) {
|
for (uint i = 0; i < 60; i++) {
|
||||||
SetDParam(0, i);
|
SetDParam(0, i);
|
||||||
list.emplace_back(new DropDownListStringItem(STR_JUST_INT, i, false));
|
list.push_back(MakeDropDownListStringItem(STR_JUST_INT, i, false));
|
||||||
}
|
}
|
||||||
selected = this->minutes.ClockMinute();
|
selected = this->minutes.ClockMinute();
|
||||||
break;
|
break;
|
||||||
@@ -214,7 +215,7 @@ struct SetMinutesWindow : SetDateWindow
|
|||||||
case WID_SD_MONTH:
|
case WID_SD_MONTH:
|
||||||
for (uint i = 0; i < 24; i++) {
|
for (uint i = 0; i < 24; i++) {
|
||||||
SetDParam(0, i);
|
SetDParam(0, i);
|
||||||
list.emplace_back(new DropDownListStringItem(STR_JUST_INT, i, false));
|
list.push_back(MakeDropDownListStringItem(STR_JUST_INT, i, false));
|
||||||
}
|
}
|
||||||
selected = this->minutes.ClockHour();
|
selected = this->minutes.ClockHour();
|
||||||
|
|
||||||
|
@@ -8,18 +8,49 @@
|
|||||||
/** @file dropdown.cpp Implementation of the dropdown widget. */
|
/** @file dropdown.cpp Implementation of the dropdown widget. */
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "window_gui.h"
|
#include "dropdown_type.h"
|
||||||
|
#include "dropdown_func.h"
|
||||||
|
#include "dropdown_common_type.h"
|
||||||
#include "string_func.h"
|
#include "string_func.h"
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
|
#include "window_gui.h"
|
||||||
#include "window_func.h"
|
#include "window_func.h"
|
||||||
#include "guitimer_func.h"
|
#include "guitimer_func.h"
|
||||||
#include "zoom_func.h"
|
#include "zoom_func.h"
|
||||||
#include "dropdown_type.h"
|
|
||||||
|
|
||||||
#include "widgets/dropdown_widget.h"
|
#include "widgets/dropdown_widget.h"
|
||||||
|
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListDividerItem()
|
||||||
|
{
|
||||||
|
return std::make_unique<DropDownListDividerItem>(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListStringItem(StringID str, int value, bool masked, bool shaded)
|
||||||
|
{
|
||||||
|
return std::make_unique<DropDownListStringItem>(str, value, masked, shaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListStringItem(const std::string &str, int value, bool masked, bool shaded)
|
||||||
|
{
|
||||||
|
return std::make_unique<DropDownListStringItem>(str, value, masked, shaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListIconItem(SpriteID sprite, PaletteID palette, StringID str, int value, bool masked, bool shaded)
|
||||||
|
{
|
||||||
|
return std::make_unique<DropDownListIconItem>(sprite, palette, str, value, masked, shaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListIconItem(const Dimension &dim, SpriteID sprite, PaletteID palette, StringID str, int value, bool masked, bool shaded)
|
||||||
|
{
|
||||||
|
return std::make_unique<DropDownListIconItem>(dim, sprite, palette, str, value, masked, shaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListCheckedItem(bool checked, StringID str, int value, bool masked, bool shaded)
|
||||||
|
{
|
||||||
|
return std::make_unique<DropDownListCheckedItem>(checked, str, value, masked, shaded);
|
||||||
|
}
|
||||||
|
|
||||||
static constexpr NWidgetPart _nested_dropdown_menu_widgets[] = {
|
static constexpr NWidgetPart _nested_dropdown_menu_widgets[] = {
|
||||||
NWidget(NWID_HORIZONTAL),
|
NWidget(NWID_HORIZONTAL),
|
||||||
@@ -451,7 +482,7 @@ void ShowDropDownMenu(Window *w, const StringID *strings, int selected, WidgetID
|
|||||||
|
|
||||||
for (uint i = 0; strings[i] != INVALID_STRING_ID; i++) {
|
for (uint i = 0; strings[i] != INVALID_STRING_ID; i++) {
|
||||||
if (i >= 32 || !HasBit(hidden_mask, i)) {
|
if (i >= 32 || !HasBit(hidden_mask, i)) {
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(strings[i], i, i < 32 && HasBit(disabled_mask, i)));
|
list.push_back(MakeDropDownListStringItem(strings[i], i, i < 32 && HasBit(disabled_mask, i)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
180
src/dropdown_common_type.h
Normal file
180
src/dropdown_common_type.h
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
/*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @file dropdown_common_type.h Common drop down list components. */
|
||||||
|
|
||||||
|
#ifndef DROPDOWN_COMMON_TYPE_H
|
||||||
|
#define DROPDOWN_COMMON_TYPE_H
|
||||||
|
|
||||||
|
#include "gfx_func.h"
|
||||||
|
#include "gfx_type.h"
|
||||||
|
#include "palette_func.h"
|
||||||
|
#include "string_func.h"
|
||||||
|
#include "strings_func.h"
|
||||||
|
#include "table/strings.h"
|
||||||
|
#include "window_gui.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Drop down divider component.
|
||||||
|
* @tparam TBase Base component.
|
||||||
|
* @tparam TFs Font size -- used to determine height.
|
||||||
|
*/
|
||||||
|
template <class TBase, FontSize TFs = FS_NORMAL>
|
||||||
|
class DropDownDivider : public TBase {
|
||||||
|
public:
|
||||||
|
template <typename... Args>
|
||||||
|
explicit DropDownDivider(Args&&... args) : TBase(std::forward<Args>(args)...) {}
|
||||||
|
|
||||||
|
bool Selectable() const override { return false; }
|
||||||
|
uint Height() const override { return std::max<uint>(GetCharacterHeight(TFs), this->TBase::Height()); }
|
||||||
|
|
||||||
|
void Draw(const Rect &full, const Rect &, bool, Colours bg_colour) const override
|
||||||
|
{
|
||||||
|
uint8_t c1 = GetColourGradient(bg_colour, SHADE_DARK);
|
||||||
|
uint8_t c2 = GetColourGradient(bg_colour, SHADE_LIGHTEST);
|
||||||
|
|
||||||
|
int mid = CenterBounds(full.top, full.bottom, 0);
|
||||||
|
GfxFillRect(full.left, mid - WidgetDimensions::scaled.bevel.bottom, full.right, mid - 1, c1);
|
||||||
|
GfxFillRect(full.left, mid, full.right, mid + WidgetDimensions::scaled.bevel.top - 1, c2);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Drop down string component.
|
||||||
|
* @tparam TBase Base component.
|
||||||
|
* @tparam TFs Font size.
|
||||||
|
* @tparam TEnd Position string at end if true, or start if false.
|
||||||
|
*/
|
||||||
|
template <class TBase, FontSize TFs = FS_NORMAL, bool TEnd = false>
|
||||||
|
class DropDownString : public TBase {
|
||||||
|
std::string string; ///< String to be drawn.
|
||||||
|
Dimension dim; ///< Dimensions of string.
|
||||||
|
public:
|
||||||
|
template <typename... Args>
|
||||||
|
explicit DropDownString(StringID string, Args&&... args) : TBase(std::forward<Args>(args)...)
|
||||||
|
{
|
||||||
|
this->SetString(GetString(string));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Args>
|
||||||
|
explicit DropDownString(const std::string &string, Args&&... args) : TBase(std::forward<Args>(args)...)
|
||||||
|
{
|
||||||
|
SetDParamStr(0, string);
|
||||||
|
this->SetString(GetString(STR_JUST_RAW_STRING));
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetString(std::string &&string)
|
||||||
|
{
|
||||||
|
this->string = std::move(string);
|
||||||
|
this->dim = GetStringBoundingBox(this->string, TFs);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint Height() const override
|
||||||
|
{
|
||||||
|
return std::max<uint>(this->dim.height, this->TBase::Height());
|
||||||
|
}
|
||||||
|
|
||||||
|
uint Width() const override { return this->dim.width + this->TBase::Width(); }
|
||||||
|
|
||||||
|
void Draw(const Rect &full, const Rect &r, bool sel, Colours bg_colour) const override
|
||||||
|
{
|
||||||
|
bool rtl = TEnd ^ (_current_text_dir == TD_RTL);
|
||||||
|
DrawStringMultiLine(r.WithWidth(this->dim.width, rtl), this->string, this->GetColour(sel), SA_CENTER, false, TFs);
|
||||||
|
this->TBase::Draw(full, r.Indent(this->dim.width, rtl), sel, bg_colour);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetColourFlags(TextColour colour_flags) { this->colour_flags = colour_flags; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Natural sorting comparator function for DropDownList::sort().
|
||||||
|
* @param first Left side of comparison.
|
||||||
|
* @param second Right side of comparison.
|
||||||
|
* @return true if \a first precedes \a second.
|
||||||
|
* @warning All items in the list need to be derivates of DropDownListStringItem.
|
||||||
|
*/
|
||||||
|
static bool NatSortFunc(std::unique_ptr<const DropDownListItem> const &first, std::unique_ptr<const DropDownListItem> const &second)
|
||||||
|
{
|
||||||
|
const std::string &str1 = static_cast<const DropDownString*>(first.get())->string;
|
||||||
|
const std::string &str2 = static_cast<const DropDownString*>(second.get())->string;
|
||||||
|
return StrNaturalCompare(str1, str2) < 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Drop down icon component.
|
||||||
|
* @tparam TBase Base component.
|
||||||
|
* @tparam TEnd Position icon at end if true, or start if false.
|
||||||
|
*/
|
||||||
|
template <class TBase, bool TEnd = false>
|
||||||
|
class DropDownIcon : public TBase {
|
||||||
|
SpriteID sprite; ///< Sprite ID to be drawn.
|
||||||
|
PaletteID palette; ///< Palette ID to use.
|
||||||
|
Dimension dsprite; ///< Bounding box dimensions of sprite.
|
||||||
|
Dimension dbounds; ///< Bounding box dimensions of bounds.
|
||||||
|
public:
|
||||||
|
template <typename... Args>
|
||||||
|
explicit DropDownIcon(SpriteID sprite, PaletteID palette, Args&&... args) : TBase(std::forward<Args>(args)...), sprite(sprite), palette(palette)
|
||||||
|
{
|
||||||
|
this->dsprite = GetSpriteSize(this->sprite);
|
||||||
|
this->dbounds = this->dsprite;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Args>
|
||||||
|
explicit DropDownIcon(const Dimension &dim, SpriteID sprite, PaletteID palette, Args&&... args) : TBase(std::forward<Args>(args)...), sprite(sprite), palette(palette), dbounds(dim)
|
||||||
|
{
|
||||||
|
this->dsprite = GetSpriteSize(this->sprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint Height() const override { return std::max(this->dbounds.height, this->TBase::Height()); }
|
||||||
|
uint Width() const override { return this->dbounds.width + WidgetDimensions::scaled.hsep_normal + this->TBase::Width(); }
|
||||||
|
|
||||||
|
void Draw(const Rect &full, const Rect &r, bool sel, Colours bg_colour) const override
|
||||||
|
{
|
||||||
|
bool rtl = TEnd ^ (_current_text_dir == TD_RTL);
|
||||||
|
Rect ir = r.WithWidth(this->dbounds.width, rtl);
|
||||||
|
DrawSprite(this->sprite, this->palette, CenterBounds(ir.left, ir.right, this->dsprite.width), CenterBounds(r.top, r.bottom, this->dsprite.height));
|
||||||
|
this->TBase::Draw(full, r.Indent(this->dbounds.width + WidgetDimensions::scaled.hsep_normal, rtl), sel, bg_colour);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Drop down checkmark component.
|
||||||
|
* @tparam TBase Base component.
|
||||||
|
* @tparam TFs Font size.
|
||||||
|
* @tparam TEnd Position checkmark at end if true, or start if false.
|
||||||
|
*/
|
||||||
|
template <class TBase, bool TEnd = false, FontSize TFs = FS_NORMAL>
|
||||||
|
class DropDownCheck : public TBase {
|
||||||
|
bool checked; ///< Is item checked.
|
||||||
|
Dimension dim; ///< Dimension of checkmark.
|
||||||
|
public:
|
||||||
|
template <typename... Args>
|
||||||
|
explicit DropDownCheck(bool checked, Args&&... args) : TBase(std::forward<Args>(args)...), checked(checked)
|
||||||
|
{
|
||||||
|
this->dim = GetStringBoundingBox(STR_JUST_CHECKMARK, TFs);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint Height() const override { return std::max<uint>(this->dim.height, this->TBase::Height()); }
|
||||||
|
uint Width() const override { return this->dim.width + WidgetDimensions::scaled.hsep_wide + this->TBase::Width(); }
|
||||||
|
|
||||||
|
void Draw(const Rect &full, const Rect &r, bool sel, Colours bg_colour) const override
|
||||||
|
{
|
||||||
|
bool rtl = TEnd ^ (_current_text_dir == TD_RTL);
|
||||||
|
if (this->checked) {
|
||||||
|
DrawStringMultiLine(r.WithWidth(this->dim.width, rtl), STR_JUST_CHECKMARK, this->GetColour(sel), SA_CENTER, false, TFs);
|
||||||
|
}
|
||||||
|
this->TBase::Draw(full, r.Indent(this->dim.width + WidgetDimensions::scaled.hsep_wide, rtl), sel, bg_colour);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Commonly used drop down list items. */
|
||||||
|
using DropDownListDividerItem = DropDownDivider<DropDownListItem>;
|
||||||
|
using DropDownListStringItem = DropDownString<DropDownListItem>;
|
||||||
|
using DropDownListIconItem = DropDownIcon<DropDownString<DropDownListItem>>;
|
||||||
|
using DropDownListCheckedItem = DropDownCheck<DropDownString<DropDownListItem>>;
|
||||||
|
|
||||||
|
#endif /* DROPDOWN_COMMON_TYPE_H */
|
@@ -21,4 +21,12 @@ int HideDropDownMenu(Window *pw);
|
|||||||
|
|
||||||
void GetParentWindowInfo(Window *w, WindowClass &parent_wc, WindowNumber &parent_wn);
|
void GetParentWindowInfo(Window *w, WindowClass &parent_wc, WindowNumber &parent_wn);
|
||||||
|
|
||||||
|
/* Helper functions for commonly used drop down list items. */
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListDividerItem();
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListStringItem(StringID str, int value, bool masked = false, bool shaded = false);
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListStringItem(const std::string &str, int value, bool masked = false, bool shaded = false);
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListIconItem(SpriteID sprite, PaletteID palette, StringID str, int value, bool masked = false, bool shaded = false);
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListIconItem(const Dimension &dim, SpriteID sprite, PaletteID palette, StringID str, int value, bool masked = false, bool shaded = false);
|
||||||
|
std::unique_ptr<DropDownListItem> MakeDropDownListCheckedItem(bool checked, StringID str, int value, bool masked = false, bool shaded = false);
|
||||||
|
|
||||||
#endif /* DROPDOWN_FUNC_H */
|
#endif /* DROPDOWN_FUNC_H */
|
||||||
|
@@ -13,9 +13,6 @@
|
|||||||
#include "window_type.h"
|
#include "window_type.h"
|
||||||
#include "gfx_func.h"
|
#include "gfx_func.h"
|
||||||
#include "gfx_type.h"
|
#include "gfx_type.h"
|
||||||
#include "string_func.h"
|
|
||||||
#include "strings_func.h"
|
|
||||||
#include "table/strings.h"
|
|
||||||
#include "window_gui.h"
|
#include "window_gui.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -58,159 +55,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Drop down divider component.
|
|
||||||
* @tparam TBase Base component.
|
|
||||||
* @tparam TFs Font size -- used to determine height.
|
|
||||||
*/
|
|
||||||
template<class TBase, FontSize TFs = FS_NORMAL>
|
|
||||||
class DropDownDivider : public TBase {
|
|
||||||
public:
|
|
||||||
template <typename... Args>
|
|
||||||
explicit DropDownDivider(Args&&... args) : TBase(std::forward<Args>(args)...) {}
|
|
||||||
|
|
||||||
bool Selectable() const override { return false; }
|
|
||||||
uint Height() const override { return std::max<uint>(GetCharacterHeight(TFs), this->TBase::Height()); }
|
|
||||||
|
|
||||||
void Draw(const Rect &full, const Rect &, bool, Colours bg_colour) const override
|
|
||||||
{
|
|
||||||
uint8_t c1 = GetColourGradient(bg_colour, SHADE_DARK);
|
|
||||||
uint8_t c2 = GetColourGradient(bg_colour, SHADE_LIGHTEST);
|
|
||||||
|
|
||||||
int mid = CenterBounds(full.top, full.bottom, 0);
|
|
||||||
GfxFillRect(full.left, mid - WidgetDimensions::scaled.bevel.bottom, full.right, mid - 1, c1);
|
|
||||||
GfxFillRect(full.left, mid, full.right, mid + WidgetDimensions::scaled.bevel.top - 1, c2);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Drop down string component.
|
|
||||||
* @tparam TBase Base component.
|
|
||||||
* @tparam TFs Font size.
|
|
||||||
* @tparam TEnd Position string at end if true, or start if false.
|
|
||||||
*/
|
|
||||||
template<class TBase, FontSize TFs = FS_NORMAL, bool TEnd = false>
|
|
||||||
class DropDownString : public TBase {
|
|
||||||
std::string string; ///< String to be drawn.
|
|
||||||
Dimension dim; ///< Dimensions of string.
|
|
||||||
public:
|
|
||||||
template <typename... Args>
|
|
||||||
explicit DropDownString(StringID string, Args&&... args) : TBase(std::forward<Args>(args)...)
|
|
||||||
{
|
|
||||||
this->SetString(GetString(string));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename... Args>
|
|
||||||
explicit DropDownString(const std::string &string, Args&&... args) : TBase(std::forward<Args>(args)...)
|
|
||||||
{
|
|
||||||
SetDParamStr(0, string);
|
|
||||||
this->SetString(GetString(STR_JUST_RAW_STRING));
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetString(std::string &&string)
|
|
||||||
{
|
|
||||||
this->string = std::move(string);
|
|
||||||
this->dim = GetStringBoundingBox(this->string, TFs);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint Height() const override
|
|
||||||
{
|
|
||||||
return std::max<uint>(this->dim.height, this->TBase::Height());
|
|
||||||
}
|
|
||||||
|
|
||||||
uint Width() const override { return this->dim.width + this->TBase::Width(); }
|
|
||||||
|
|
||||||
void Draw(const Rect &full, const Rect &r, bool sel, Colours bg_colour) const override
|
|
||||||
{
|
|
||||||
bool rtl = TEnd ^ (_current_text_dir == TD_RTL);
|
|
||||||
DrawStringMultiLine(r.WithWidth(this->dim.width, rtl), this->string, this->GetColour(sel), SA_CENTER, false, TFs);
|
|
||||||
this->TBase::Draw(full, r.Indent(this->dim.width, rtl), sel, bg_colour);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetColourFlags(TextColour colour_flags) { this->colour_flags = colour_flags; }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Natural sorting comparator function for DropDownList::sort().
|
|
||||||
* @param first Left side of comparison.
|
|
||||||
* @param second Right side of comparison.
|
|
||||||
* @return true if \a first precedes \a second.
|
|
||||||
* @warning All items in the list need to be derivates of DropDownListStringItem.
|
|
||||||
*/
|
|
||||||
static bool NatSortFunc(std::unique_ptr<const DropDownListItem> const &first, std::unique_ptr<const DropDownListItem> const &second)
|
|
||||||
{
|
|
||||||
const std::string &str1 = static_cast<const DropDownString*>(first.get())->string;
|
|
||||||
const std::string &str2 = static_cast<const DropDownString*>(second.get())->string;
|
|
||||||
return StrNaturalCompare(str1, str2) < 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Drop down icon component.
|
|
||||||
* @tparam TBase Base component.
|
|
||||||
* @tparam TEnd Position icon at end if true, or start if false.
|
|
||||||
*/
|
|
||||||
template<class TBase, bool TEnd = false>
|
|
||||||
class DropDownIcon : public TBase {
|
|
||||||
SpriteID sprite; ///< Sprite ID to be drawn.
|
|
||||||
PaletteID palette; ///< Palette ID to use.
|
|
||||||
Dimension dsprite; ///< Bounding box dimensions of sprite.
|
|
||||||
Dimension dbounds; ///< Bounding box dimensions of bounds.
|
|
||||||
public:
|
|
||||||
template <typename... Args>
|
|
||||||
explicit DropDownIcon(SpriteID sprite, PaletteID palette, Args&&... args) : TBase(std::forward<Args>(args)...), sprite(sprite), palette(palette)
|
|
||||||
{
|
|
||||||
this->dsprite = GetSpriteSize(this->sprite);
|
|
||||||
this->dbounds = this->dsprite;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename... Args>
|
|
||||||
explicit DropDownIcon(const Dimension &dim, SpriteID sprite, PaletteID palette, Args&&... args) : TBase(std::forward<Args>(args)...), sprite(sprite), palette(palette), dbounds(dim)
|
|
||||||
{
|
|
||||||
this->dsprite = GetSpriteSize(this->sprite);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint Height() const override { return std::max(this->dbounds.height, this->TBase::Height()); }
|
|
||||||
uint Width() const override { return this->dbounds.width + WidgetDimensions::scaled.hsep_normal + this->TBase::Width(); }
|
|
||||||
|
|
||||||
void Draw(const Rect &full, const Rect &r, bool sel, Colours bg_colour) const override
|
|
||||||
{
|
|
||||||
bool rtl = TEnd ^ (_current_text_dir == TD_RTL);
|
|
||||||
Rect ir = r.WithWidth(this->dbounds.width, rtl);
|
|
||||||
DrawSprite(this->sprite, this->palette, CenterBounds(ir.left, ir.right, this->dsprite.width), CenterBounds(r.top, r.bottom, this->dsprite.height));
|
|
||||||
this->TBase::Draw(full, r.Indent(this->dbounds.width + WidgetDimensions::scaled.hsep_normal, rtl), sel, bg_colour);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Drop down checkmark component.
|
|
||||||
* @tparam TBase Base component.
|
|
||||||
* @tparam TFs Font size.
|
|
||||||
* @tparam TEnd Position checkmark at end if true, or start if false.
|
|
||||||
*/
|
|
||||||
template<class TBase, bool TEnd = false, FontSize TFs = FS_NORMAL>
|
|
||||||
class DropDownCheck : public TBase {
|
|
||||||
bool checked; ///< Is item checked.
|
|
||||||
Dimension dim; ///< Dimension of checkmark.
|
|
||||||
public:
|
|
||||||
template <typename... Args>
|
|
||||||
explicit DropDownCheck(bool checked, Args&&... args) : TBase(std::forward<Args>(args)...), checked(checked)
|
|
||||||
{
|
|
||||||
this->dim = GetStringBoundingBox(STR_JUST_CHECKMARK, TFs);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint Height() const override { return std::max<uint>(this->dim.height, this->TBase::Height()); }
|
|
||||||
uint Width() const override { return this->dim.width + WidgetDimensions::scaled.hsep_wide + this->TBase::Width(); }
|
|
||||||
|
|
||||||
void Draw(const Rect &full, const Rect &r, bool sel, Colours bg_colour) const override
|
|
||||||
{
|
|
||||||
bool rtl = TEnd ^ (_current_text_dir == TD_RTL);
|
|
||||||
if (this->checked) {
|
|
||||||
DrawStringMultiLine(r.WithWidth(this->dim.width, rtl), STR_JUST_CHECKMARK, this->GetColour(sel), SA_CENTER, false, TFs);
|
|
||||||
}
|
|
||||||
this->TBase::Draw(full, r.Indent(this->dim.width + WidgetDimensions::scaled.hsep_wide, rtl), sel, bg_colour);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Drop down unselectable component.
|
* Drop down unselectable component.
|
||||||
* @tparam TBase Base component.
|
* @tparam TBase Base component.
|
||||||
@@ -224,12 +68,6 @@ public:
|
|||||||
bool Selectable() const override { return false; }
|
bool Selectable() const override { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Commonly used drop down list items. */
|
|
||||||
using DropDownListDividerItem = DropDownDivider<DropDownListItem>;
|
|
||||||
using DropDownListStringItem = DropDownString<DropDownListItem>;
|
|
||||||
using DropDownListIconItem = DropDownIcon<DropDownString<DropDownListItem>>;
|
|
||||||
using DropDownListCheckedItem = DropDownCheck<DropDownString<DropDownListItem>>;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A drop down list is a collection of drop down list items.
|
* A drop down list is a collection of drop down list items.
|
||||||
*/
|
*/
|
||||||
|
@@ -275,8 +275,8 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
|
|||||||
|
|
||||||
/* FreeType has rendered the glyph, now we allocate a sprite and copy the image into it */
|
/* FreeType has rendered the glyph, now we allocate a sprite and copy the image into it */
|
||||||
SpriteLoader::SpriteCollection spritecollection;
|
SpriteLoader::SpriteCollection spritecollection;
|
||||||
SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_NORMAL];
|
SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_MIN];
|
||||||
sprite.AllocateData(ZOOM_LVL_NORMAL, static_cast<size_t>(width) * height);
|
sprite.AllocateData(ZOOM_LVL_MIN, static_cast<size_t>(width) * height);
|
||||||
sprite.type = SpriteType::Font;
|
sprite.type = SpriteType::Font;
|
||||||
sprite.colours = (aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
|
sprite.colours = (aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
|
||||||
sprite.width = width;
|
sprite.width = width;
|
||||||
|
@@ -23,12 +23,12 @@ static const int ASCII_LETTERSTART = 32; ///< First printable ASCII letter.
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Scale traditional pixel dimensions to font zoom level, for drawing sprite fonts.
|
* Scale traditional pixel dimensions to font zoom level, for drawing sprite fonts.
|
||||||
* @param value Pixel amount at #ZOOM_LVL_BASE (traditional "normal" interface size).
|
* @param value Pixel amount at #ZOOM_BASE (traditional "normal" interface size).
|
||||||
* @return Pixel amount at _font_zoom (current interface size).
|
* @return Pixel amount at _font_zoom (current interface size).
|
||||||
*/
|
*/
|
||||||
static int ScaleFontTrad(int value)
|
static int ScaleFontTrad(int value)
|
||||||
{
|
{
|
||||||
return UnScaleByZoom(value * ZOOM_LVL_BASE, _font_zoom);
|
return UnScaleByZoom(value * ZOOM_BASE, _font_zoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include "../window_func.h"
|
#include "../window_func.h"
|
||||||
#include "../network/network.h"
|
#include "../network/network.h"
|
||||||
#include "../network/network_content.h"
|
#include "../network/network_content.h"
|
||||||
|
#include "../dropdown_type.h"
|
||||||
#include "../dropdown_func.h"
|
#include "../dropdown_func.h"
|
||||||
#include "../settings_type.h"
|
#include "../settings_type.h"
|
||||||
|
|
||||||
@@ -324,7 +325,7 @@ struct GSConfigWindow : public Window {
|
|||||||
|
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
for (int i = config_item.min_value; i <= config_item.max_value; i++) {
|
for (int i = config_item.min_value; i <= config_item.max_value; i++) {
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(config_item.labels.find(i)->second, i, false));
|
list.push_back(MakeDropDownListStringItem(config_item.labels.find(i)->second, i));
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowDropDownListAt(this, std::move(list), old_val, WID_GSC_SETTING_DROPDOWN, wi_rect, COLOUR_ORANGE);
|
ShowDropDownListAt(this, std::move(list), old_val, WID_GSC_SETTING_DROPDOWN, wi_rect, COLOUR_ORANGE);
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include "string_func.h"
|
#include "string_func.h"
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
#include "dropdown_type.h"
|
#include "dropdown_type.h"
|
||||||
|
#include "dropdown_common_type.h"
|
||||||
#include "dropdown_func.h"
|
#include "dropdown_func.h"
|
||||||
#include "querystring_gui.h"
|
#include "querystring_gui.h"
|
||||||
#include "town.h"
|
#include "town.h"
|
||||||
@@ -392,7 +393,7 @@ static DropDownList BuildMapsizeDropDown(int other_dimension)
|
|||||||
|
|
||||||
for (uint i = MIN_MAP_SIZE_BITS; i <= MAX_MAP_SIZE_BITS; i++) {
|
for (uint i = MIN_MAP_SIZE_BITS; i <= MAX_MAP_SIZE_BITS; i++) {
|
||||||
SetDParam(0, 1LL << i);
|
SetDParam(0, 1LL << i);
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>((i + other_dimension > MAX_MAP_TILES_BITS) ? STR_RED_INT : STR_JUST_INT, i, false));
|
list.push_back(MakeDropDownListStringItem((i + other_dimension > MAX_MAP_TILES_BITS) ? STR_RED_INT : STR_JUST_INT, i, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
@@ -405,20 +406,20 @@ static DropDownList BuildTownNameDropDown()
|
|||||||
/* Add and sort newgrf townnames generators */
|
/* Add and sort newgrf townnames generators */
|
||||||
const auto &grf_names = GetGRFTownNameList();
|
const auto &grf_names = GetGRFTownNameList();
|
||||||
for (uint i = 0; i < grf_names.size(); i++) {
|
for (uint i = 0; i < grf_names.size(); i++) {
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(grf_names[i], BUILTIN_TOWNNAME_GENERATOR_COUNT + i, false));
|
list.push_back(MakeDropDownListStringItem(grf_names[i], BUILTIN_TOWNNAME_GENERATOR_COUNT + i));
|
||||||
}
|
}
|
||||||
std::sort(list.begin(), list.end(), DropDownListStringItem::NatSortFunc);
|
std::sort(list.begin(), list.end(), DropDownListStringItem::NatSortFunc);
|
||||||
|
|
||||||
size_t newgrf_size = list.size();
|
size_t newgrf_size = list.size();
|
||||||
/* Insert newgrf_names at the top of the list */
|
/* Insert newgrf_names at the top of the list */
|
||||||
if (newgrf_size > 0) {
|
if (newgrf_size > 0) {
|
||||||
list.push_back(std::make_unique<DropDownListDividerItem>(-1, false)); // separator line
|
list.push_back(MakeDropDownListDividerItem()); // separator line
|
||||||
newgrf_size++;
|
newgrf_size++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add and sort original townnames generators */
|
/* Add and sort original townnames generators */
|
||||||
for (uint i = 0; i < BUILTIN_TOWNNAME_GENERATOR_COUNT; i++) {
|
for (uint i = 0; i < BUILTIN_TOWNNAME_GENERATOR_COUNT; i++) {
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH + i, i, false));
|
list.push_back(MakeDropDownListStringItem(STR_MAPGEN_TOWN_NAME_ORIGINAL_ENGLISH + i, i));
|
||||||
}
|
}
|
||||||
std::sort(list.begin() + newgrf_size, list.end(), DropDownListStringItem::NatSortFunc);
|
std::sort(list.begin() + newgrf_size, list.end(), DropDownListStringItem::NatSortFunc);
|
||||||
|
|
||||||
|
20
src/gfx.cpp
20
src/gfx.cpp
@@ -79,11 +79,11 @@ struct GfxBlitterCtx {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static void GfxMainBlitterViewport(const GfxBlitterCtx &ctx, const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = nullptr, SpriteID sprite_id = SPR_CURSOR_MOUSE);
|
static void GfxMainBlitterViewport(const GfxBlitterCtx &ctx, const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = nullptr, SpriteID sprite_id = SPR_CURSOR_MOUSE);
|
||||||
static void GfxMainBlitter(const GfxBlitterCtx &ctx, const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = nullptr, SpriteID sprite_id = SPR_CURSOR_MOUSE, ZoomLevel zoom = ZOOM_LVL_NORMAL);
|
static void GfxMainBlitter(const GfxBlitterCtx &ctx, const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = nullptr, SpriteID sprite_id = SPR_CURSOR_MOUSE, ZoomLevel zoom = ZOOM_LVL_MIN);
|
||||||
|
|
||||||
static ReusableBuffer<uint8_t> _cursor_backup;
|
static ReusableBuffer<uint8_t> _cursor_backup;
|
||||||
|
|
||||||
ZoomLevel _gui_zoom = ZOOM_LVL_OUT_4X; ///< GUI Zoom level
|
ZoomLevel _gui_zoom = ZOOM_LVL_NORMAL; ///< GUI Zoom level
|
||||||
ZoomLevel _font_zoom = _gui_zoom; ///< Sprite font Zoom level (not clamped)
|
ZoomLevel _font_zoom = _gui_zoom; ///< Sprite font Zoom level (not clamped)
|
||||||
int _gui_scale = MIN_INTERFACE_SCALE; ///< GUI scale, 100 is 100%.
|
int _gui_scale = MIN_INTERFACE_SCALE; ///< GUI scale, 100 is 100%.
|
||||||
int _gui_scale_cfg; ///< GUI scale in config.
|
int _gui_scale_cfg; ///< GUI scale in config.
|
||||||
@@ -113,7 +113,7 @@ uint32_t _gfx_debug_flags;
|
|||||||
/**
|
/**
|
||||||
* Applies a certain FillRectMode-operation to a rectangle [left, right] x [top, bottom] on the screen.
|
* Applies a certain FillRectMode-operation to a rectangle [left, right] x [top, bottom] on the screen.
|
||||||
*
|
*
|
||||||
* @pre dpi->zoom == ZOOM_LVL_NORMAL, right >= left, bottom >= top
|
* @pre dpi->zoom == ZOOM_LVL_MIN, right >= left, bottom >= top
|
||||||
* @param blitter Blitter to use
|
* @param blitter Blitter to use
|
||||||
* @param dpi Draw pixel info
|
* @param dpi Draw pixel info
|
||||||
* @param left Minimum X (inclusive)
|
* @param left Minimum X (inclusive)
|
||||||
@@ -132,7 +132,7 @@ void GfxFillRect(Blitter *blitter, const DrawPixelInfo *dpi, int left, int top,
|
|||||||
const int otop = top;
|
const int otop = top;
|
||||||
const int oleft = left;
|
const int oleft = left;
|
||||||
|
|
||||||
if (dpi->zoom != ZOOM_LVL_NORMAL) return;
|
if (dpi->zoom != ZOOM_LVL_MIN) return;
|
||||||
if (left > right || top > bottom) return;
|
if (left > right || top > bottom) return;
|
||||||
if (right < dpi->left || left >= dpi->left + dpi->width) return;
|
if (right < dpi->left || left >= dpi->left + dpi->width) return;
|
||||||
if (bottom < dpi->top || top >= dpi->top + dpi->height) return;
|
if (bottom < dpi->top || top >= dpi->top + dpi->height) return;
|
||||||
@@ -219,7 +219,7 @@ static std::vector<LineSegment> MakePolygonSegments(const std::vector<Point> &sh
|
|||||||
* The odd-even winding rule is used, i.e. self-intersecting polygons will have holes in them.
|
* The odd-even winding rule is used, i.e. self-intersecting polygons will have holes in them.
|
||||||
* Left and top edges are inclusive, right and bottom edges are exclusive.
|
* Left and top edges are inclusive, right and bottom edges are exclusive.
|
||||||
* @note For rectangles the GfxFillRect function will be faster.
|
* @note For rectangles the GfxFillRect function will be faster.
|
||||||
* @pre dpi->zoom == ZOOM_LVL_NORMAL
|
* @pre dpi->zoom == ZOOM_LVL_MIN
|
||||||
* @param shape List of points on the polygon.
|
* @param shape List of points on the polygon.
|
||||||
* @param colour An 8 bit palette index (FILLRECT_OPAQUE and FILLRECT_CHECKER) or a recolour spritenumber (FILLRECT_RECOLOUR).
|
* @param colour An 8 bit palette index (FILLRECT_OPAQUE and FILLRECT_CHECKER) or a recolour spritenumber (FILLRECT_RECOLOUR).
|
||||||
* @param mode
|
* @param mode
|
||||||
@@ -232,7 +232,7 @@ void GfxFillPolygon(const std::vector<Point> &shape, int colour, FillRectMode mo
|
|||||||
{
|
{
|
||||||
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
|
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
|
||||||
const DrawPixelInfo *dpi = _cur_dpi;
|
const DrawPixelInfo *dpi = _cur_dpi;
|
||||||
if (dpi->zoom != ZOOM_LVL_NORMAL) return;
|
if (dpi->zoom != ZOOM_LVL_MIN) return;
|
||||||
|
|
||||||
std::vector<LineSegment> segments = MakePolygonSegments(shape, Point{ dpi->left, dpi->top });
|
std::vector<LineSegment> segments = MakePolygonSegments(shape, Point{ dpi->left, dpi->top });
|
||||||
|
|
||||||
@@ -1289,7 +1289,7 @@ std::unique_ptr<uint32_t[]> DrawSpriteToRgbaBuffer(SpriteID spriteId, ZoomLevel
|
|||||||
|
|
||||||
static void GfxMainBlitterViewport(const GfxBlitterCtx &ctx, const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id)
|
static void GfxMainBlitterViewport(const GfxBlitterCtx &ctx, const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id)
|
||||||
{
|
{
|
||||||
GfxBlitter<ZOOM_LVL_BASE, false>(ctx, sprite, x, y, mode, sub, sprite_id, ctx.dpi->zoom);
|
GfxBlitter<ZOOM_BASE, false>(ctx, sprite, x, y, mode, sub, sprite_id, ctx.dpi->zoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GfxMainBlitter(const GfxBlitterCtx &ctx, const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id, ZoomLevel zoom)
|
static void GfxMainBlitter(const GfxBlitterCtx &ctx, const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id, ZoomLevel zoom)
|
||||||
@@ -1632,7 +1632,7 @@ void DrawDirtyBlocks()
|
|||||||
_cur_dpi->height = _screen.height;
|
_cur_dpi->height = _screen.height;
|
||||||
_cur_dpi->pitch = _screen.pitch;
|
_cur_dpi->pitch = _screen.pitch;
|
||||||
_cur_dpi->dst_ptr = _screen.dst_ptr;
|
_cur_dpi->dst_ptr = _screen.dst_ptr;
|
||||||
_cur_dpi->zoom = ZOOM_LVL_NORMAL;
|
_cur_dpi->zoom = ZOOM_LVL_MIN;
|
||||||
|
|
||||||
_dirty_viewport = vp;
|
_dirty_viewport = vp;
|
||||||
_dirty_viewport_disp_flags = w->viewport_widget->disp_flags;
|
_dirty_viewport_disp_flags = w->viewport_widget->disp_flags;
|
||||||
@@ -1932,7 +1932,7 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh
|
|||||||
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
|
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
|
||||||
const DrawPixelInfo *o = _cur_dpi;
|
const DrawPixelInfo *o = _cur_dpi;
|
||||||
|
|
||||||
n->zoom = ZOOM_LVL_NORMAL;
|
n->zoom = ZOOM_LVL_MIN;
|
||||||
|
|
||||||
assert(width > 0);
|
assert(width > 0);
|
||||||
assert(height > 0);
|
assert(height > 0);
|
||||||
@@ -2158,7 +2158,7 @@ void UpdateGUIZoom()
|
|||||||
_gui_scale = Clamp(_gui_scale_cfg, MIN_INTERFACE_SCALE, MAX_INTERFACE_SCALE);
|
_gui_scale = Clamp(_gui_scale_cfg, MIN_INTERFACE_SCALE, MAX_INTERFACE_SCALE);
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t new_zoom = ScaleGUITrad(1) <= 1 ? ZOOM_LVL_OUT_4X : ScaleGUITrad(1) >= 4 ? ZOOM_LVL_MIN : ZOOM_LVL_OUT_2X;
|
int8_t new_zoom = ScaleGUITrad(1) <= 1 ? ZOOM_LVL_NORMAL : ScaleGUITrad(1) >= 4 ? ZOOM_LVL_IN_4X : ZOOM_LVL_IN_2X;
|
||||||
/* Font glyphs should not be clamped to min/max zoom. */
|
/* Font glyphs should not be clamped to min/max zoom. */
|
||||||
_font_zoom = static_cast<ZoomLevel>(new_zoom);
|
_font_zoom = static_cast<ZoomLevel>(new_zoom);
|
||||||
/* Ensure the gui_zoom is clamped between min/max. */
|
/* Ensure the gui_zoom is clamped between min/max. */
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include "clear_func.h"
|
#include "clear_func.h"
|
||||||
#include "tree_map.h"
|
#include "tree_map.h"
|
||||||
#include "scope.h"
|
#include "scope.h"
|
||||||
|
#include "debug_fmt.h"
|
||||||
#include "table/tree_land.h"
|
#include "table/tree_land.h"
|
||||||
#include "blitter/32bpp_base.hpp"
|
#include "blitter/32bpp_base.hpp"
|
||||||
|
|
||||||
@@ -54,25 +55,25 @@ static SpriteFile &LoadGrfFile(const std::string &filename, uint load_index, boo
|
|||||||
|
|
||||||
SpriteFile &file = OpenCachedSpriteFile(filename, BASESET_DIR, needs_palette_remap);
|
SpriteFile &file = OpenCachedSpriteFile(filename, BASESET_DIR, needs_palette_remap);
|
||||||
|
|
||||||
DEBUG(sprite, 2, "Reading grf-file '%s'", filename.c_str());
|
Debug(sprite, 2, "Reading grf-file '{}'", filename);
|
||||||
|
|
||||||
uint8_t container_ver = file.GetContainerVersion();
|
uint8_t container_ver = file.GetContainerVersion();
|
||||||
if (container_ver == 0) usererror("Base grf '%s' is corrupt", filename.c_str());
|
if (container_ver == 0) UserError("Base grf '{}' is corrupt", filename);
|
||||||
ReadGRFSpriteOffsets(file);
|
ReadGRFSpriteOffsets(file);
|
||||||
if (container_ver >= 2) {
|
if (container_ver >= 2) {
|
||||||
/* Read compression. */
|
/* Read compression. */
|
||||||
uint8_t compression = file.ReadByte();
|
uint8_t compression = file.ReadByte();
|
||||||
if (compression != 0) usererror("Unsupported compression format");
|
if (compression != 0) UserError("Unsupported compression format");
|
||||||
}
|
}
|
||||||
|
|
||||||
while (LoadNextSprite(load_index, file, sprite_id)) {
|
while (LoadNextSprite(load_index, file, sprite_id)) {
|
||||||
load_index++;
|
load_index++;
|
||||||
sprite_id++;
|
sprite_id++;
|
||||||
if (load_index >= MAX_SPRITES) {
|
if (load_index >= MAX_SPRITES) {
|
||||||
usererror("Too many sprites. Recompile with higher MAX_SPRITES value or remove some custom GRF files.");
|
UserError("Too many sprites. Recompile with higher MAX_SPRITES value or remove some custom GRF files.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DEBUG(sprite, 2, "Currently %i sprites are loaded", load_index);
|
Debug(sprite, 2, "Currently {} sprites are loaded", load_index);
|
||||||
|
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
@@ -91,15 +92,15 @@ static void LoadGrfFileIndexed(const std::string &filename, const SpriteID *inde
|
|||||||
|
|
||||||
SpriteFile &file = OpenCachedSpriteFile(filename, BASESET_DIR, needs_palette_remap);
|
SpriteFile &file = OpenCachedSpriteFile(filename, BASESET_DIR, needs_palette_remap);
|
||||||
|
|
||||||
DEBUG(sprite, 2, "Reading indexed grf-file '%s'", filename.c_str());
|
Debug(sprite, 2, "Reading indexed grf-file '{}'", filename);
|
||||||
|
|
||||||
uint8_t container_ver = file.GetContainerVersion();
|
uint8_t container_ver = file.GetContainerVersion();
|
||||||
if (container_ver == 0) usererror("Base grf '%s' is corrupt", filename.c_str());
|
if (container_ver == 0) UserError("Base grf '{}' is corrupt", filename);
|
||||||
ReadGRFSpriteOffsets(file);
|
ReadGRFSpriteOffsets(file);
|
||||||
if (container_ver >= 2) {
|
if (container_ver >= 2) {
|
||||||
/* Read compression. */
|
/* Read compression. */
|
||||||
uint8_t compression = file.ReadByte();
|
uint8_t compression = file.ReadByte();
|
||||||
if (compression != 0) usererror("Unsupported compression format");
|
if (compression != 0) UserError("Unsupported compression format");
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((start = *index_tbl++) != END) {
|
while ((start = *index_tbl++) != END) {
|
||||||
@@ -124,40 +125,31 @@ void CheckExternalFiles()
|
|||||||
|
|
||||||
const GraphicsSet *used_set = BaseGraphics::GetUsedSet();
|
const GraphicsSet *used_set = BaseGraphics::GetUsedSet();
|
||||||
|
|
||||||
DEBUG(grf, 1, "Using the %s base graphics set", used_set->name.c_str());
|
Debug(grf, 1, "Using the {} base graphics set", used_set->name);
|
||||||
|
|
||||||
static const size_t ERROR_MESSAGE_LENGTH = 256;
|
|
||||||
static const size_t MISSING_FILE_MESSAGE_LENGTH = 128;
|
|
||||||
|
|
||||||
/* Allocate for a message for each missing file and for one error
|
|
||||||
* message per set.
|
|
||||||
*/
|
|
||||||
char error_msg[MISSING_FILE_MESSAGE_LENGTH * (GraphicsSet::NUM_FILES + SoundsSet::NUM_FILES) + 2 * ERROR_MESSAGE_LENGTH];
|
|
||||||
error_msg[0] = '\0';
|
|
||||||
char *add_pos = error_msg;
|
|
||||||
const char *last = lastof(error_msg);
|
|
||||||
|
|
||||||
|
std::string error_msg;
|
||||||
|
auto output_iterator = std::back_inserter(error_msg);
|
||||||
if (used_set->GetNumInvalid() != 0) {
|
if (used_set->GetNumInvalid() != 0) {
|
||||||
/* Not all files were loaded successfully, see which ones */
|
/* Not all files were loaded successfully, see which ones */
|
||||||
add_pos += seprintf(add_pos, last, "Trying to load graphics set '%s', but it is incomplete. The game will probably not run correctly until you properly install this set or select another one. See section 4.1 of README.md.\n\nThe following files are corrupted or missing:\n", used_set->name.c_str());
|
fmt::format_to(output_iterator, "Trying to load graphics set '{}', but it is incomplete. The game will probably not run correctly until you properly install this set or select another one. See section 4.1 of README.md.\n\nThe following files are corrupted or missing:\n", used_set->name);
|
||||||
for (uint i = 0; i < GraphicsSet::NUM_FILES; i++) {
|
for (uint i = 0; i < GraphicsSet::NUM_FILES; i++) {
|
||||||
MD5File::ChecksumResult res = GraphicsSet::CheckMD5(&used_set->files[i], BASESET_DIR);
|
MD5File::ChecksumResult res = GraphicsSet::CheckMD5(&used_set->files[i], BASESET_DIR);
|
||||||
if (res != MD5File::CR_MATCH) add_pos += seprintf(add_pos, last, "\t%s is %s (%s)\n", used_set->files[i].filename.c_str(), res == MD5File::CR_MISMATCH ? "corrupt" : "missing", used_set->files[i].missing_warning.c_str());
|
if (res != MD5File::CR_MATCH) fmt::format_to(output_iterator, "\t{} is {} ({})\n", used_set->files[i].filename, res == MD5File::CR_MISMATCH ? "corrupt" : "missing", used_set->files[i].missing_warning);
|
||||||
}
|
}
|
||||||
add_pos += seprintf(add_pos, last, "\n");
|
fmt::format_to(output_iterator, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
const SoundsSet *sounds_set = BaseSounds::GetUsedSet();
|
const SoundsSet *sounds_set = BaseSounds::GetUsedSet();
|
||||||
if (sounds_set->GetNumInvalid() != 0) {
|
if (sounds_set->GetNumInvalid() != 0) {
|
||||||
add_pos += seprintf(add_pos, last, "Trying to load sound set '%s', but it is incomplete. The game will probably not run correctly until you properly install this set or select another one. See section 4.1 of README.md.\n\nThe following files are corrupted or missing:\n", sounds_set->name.c_str());
|
fmt::format_to(output_iterator, "Trying to load sound set '{}', but it is incomplete. The game will probably not run correctly until you properly install this set or select another one. See section 4.1 of README.md.\n\nThe following files are corrupted or missing:\n", sounds_set->name);
|
||||||
|
|
||||||
static_assert(SoundsSet::NUM_FILES == 1);
|
static_assert(SoundsSet::NUM_FILES == 1);
|
||||||
/* No need to loop each file, as long as there is only a single
|
/* No need to loop each file, as long as there is only a single
|
||||||
* sound file. */
|
* sound file. */
|
||||||
add_pos += seprintf(add_pos, last, "\t%s is %s (%s)\n", sounds_set->files->filename.c_str(), SoundsSet::CheckMD5(sounds_set->files, BASESET_DIR) == MD5File::CR_MISMATCH ? "corrupt" : "missing", sounds_set->files->missing_warning.c_str());
|
fmt::format_to(output_iterator, "\t{} is {} ({})\n", sounds_set->files->filename, SoundsSet::CheckMD5(sounds_set->files, BASESET_DIR) == MD5File::CR_MISMATCH ? "corrupt" : "missing", sounds_set->files->missing_warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (add_pos != error_msg) ShowInfoF("%s", error_msg);
|
if (!error_msg.empty()) ShowInfoI(error_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitGRFGlobalVars()
|
void InitGRFGlobalVars()
|
||||||
@@ -271,9 +263,9 @@ static void LoadSpriteTables()
|
|||||||
LoadNewGRF(SPR_NEWGRFS_BASE, 2);
|
LoadNewGRF(SPR_NEWGRFS_BASE, 2);
|
||||||
|
|
||||||
uint total_extra_graphics = SPR_NEWGRFS_BASE - SPR_OPENTTD_BASE;
|
uint total_extra_graphics = SPR_NEWGRFS_BASE - SPR_OPENTTD_BASE;
|
||||||
DEBUG(sprite, 4, "Checking sprites from fallback grf");
|
Debug(sprite, 4, "Checking sprites from fallback grf");
|
||||||
_missing_extra_graphics = GetSpriteCountForFile(master_filename, SPR_OPENTTD_BASE, SPR_NEWGRFS_BASE);
|
_missing_extra_graphics = GetSpriteCountForFile(master_filename, SPR_OPENTTD_BASE, SPR_NEWGRFS_BASE);
|
||||||
DEBUG(sprite, 1, "%u extra sprites, %u from baseset, %u from fallback", total_extra_graphics, total_extra_graphics - _missing_extra_graphics, _missing_extra_graphics);
|
Debug(sprite, 1, "{} extra sprites, {} from baseset, {} from fallback", total_extra_graphics, total_extra_graphics - _missing_extra_graphics, _missing_extra_graphics);
|
||||||
|
|
||||||
/* The original baseset extra graphics intentionally make use of the fallback graphics.
|
/* The original baseset extra graphics intentionally make use of the fallback graphics.
|
||||||
* Let's say everything which provides less than 500 sprites misses the rest intentionally. */
|
* Let's say everything which provides less than 500 sprites misses the rest intentionally. */
|
||||||
@@ -286,19 +278,19 @@ static void LoadSpriteTables()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void RealChangeBlitter(const char *repl_blitter)
|
static void RealChangeBlitter(const std::string_view repl_blitter)
|
||||||
{
|
{
|
||||||
const char *cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName();
|
const std::string_view cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName();
|
||||||
if (strcmp(cur_blitter, repl_blitter) == 0) return;
|
if (cur_blitter == repl_blitter) return;
|
||||||
|
|
||||||
DEBUG(driver, 1, "Switching blitter from '%s' to '%s'... ", cur_blitter, repl_blitter);
|
Debug(driver, 1, "Switching blitter from '{}' to '{}'... ", cur_blitter, repl_blitter);
|
||||||
Blitter *new_blitter = BlitterFactory::SelectBlitter(repl_blitter);
|
Blitter *new_blitter = BlitterFactory::SelectBlitter(repl_blitter);
|
||||||
if (new_blitter == nullptr) NOT_REACHED();
|
if (new_blitter == nullptr) NOT_REACHED();
|
||||||
DEBUG(driver, 1, "Successfully switched to %s.", repl_blitter);
|
Debug(driver, 1, "Successfully switched to {}.", repl_blitter);
|
||||||
|
|
||||||
if (!VideoDriver::GetInstance()->AfterBlitterChange()) {
|
if (!VideoDriver::GetInstance()->AfterBlitterChange()) {
|
||||||
/* Failed to switch blitter, let's hope we can return to the old one. */
|
/* Failed to switch blitter, let's hope we can return to the old one. */
|
||||||
if (BlitterFactory::SelectBlitter(cur_blitter) == nullptr || !VideoDriver::GetInstance()->AfterBlitterChange()) usererror("Failed to reinitialize video driver. Specify a fixed blitter in the config");
|
if (BlitterFactory::SelectBlitter(cur_blitter) == nullptr || !VideoDriver::GetInstance()->AfterBlitterChange()) UserError("Failed to reinitialize video driver. Specify a fixed blitter in the config");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear caches that might have sprites for another blitter. */
|
/* Clear caches that might have sprites for another blitter. */
|
||||||
@@ -337,7 +329,7 @@ static bool SwitchNewGRFBlitter()
|
|||||||
|
|
||||||
/* Search the best blitter. */
|
/* Search the best blitter. */
|
||||||
static const struct {
|
static const struct {
|
||||||
const char *name;
|
const std::string_view name;
|
||||||
uint animation; ///< 0: no support, 1: do support, 2: both
|
uint animation; ///< 0: no support, 1: do support, 2: both
|
||||||
uint min_base_depth, max_base_depth, min_grf_depth, max_grf_depth;
|
uint min_base_depth, max_base_depth, min_grf_depth, max_grf_depth;
|
||||||
} replacement_blitters[] = {
|
} replacement_blitters[] = {
|
||||||
@@ -357,23 +349,22 @@ static bool SwitchNewGRFBlitter()
|
|||||||
};
|
};
|
||||||
|
|
||||||
const bool animation_wanted = HasBit(_display_opt, DO_FULL_ANIMATION);
|
const bool animation_wanted = HasBit(_display_opt, DO_FULL_ANIMATION);
|
||||||
const char *cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName();
|
const std::string_view cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName();
|
||||||
|
|
||||||
for (uint i = 0; i < lengthof(replacement_blitters); i++) {
|
for (const auto &replacement_blitter : replacement_blitters) {
|
||||||
if (animation_wanted && (replacement_blitters[i].animation == 0)) continue;
|
if (animation_wanted && (replacement_blitter.animation == 0)) continue;
|
||||||
if (!animation_wanted && (replacement_blitters[i].animation == 1)) continue;
|
if (!animation_wanted && (replacement_blitter.animation == 1)) continue;
|
||||||
|
|
||||||
if (!IsInsideMM(depth_wanted_by_base, replacement_blitters[i].min_base_depth, replacement_blitters[i].max_base_depth + 1)) continue;
|
if (!IsInsideMM(depth_wanted_by_base, replacement_blitter.min_base_depth, replacement_blitter.max_base_depth + 1)) continue;
|
||||||
if (!IsInsideMM(depth_wanted_by_grf, replacement_blitters[i].min_grf_depth, replacement_blitters[i].max_grf_depth + 1)) continue;
|
if (!IsInsideMM(depth_wanted_by_grf, replacement_blitter.min_grf_depth, replacement_blitter.max_grf_depth + 1)) continue;
|
||||||
const char *repl_blitter = replacement_blitters[i].name;
|
|
||||||
|
|
||||||
if (strcmp(repl_blitter, cur_blitter) == 0) {
|
if (replacement_blitter.name == cur_blitter) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (BlitterFactory::GetBlitterFactory(repl_blitter) == nullptr) continue;
|
if (BlitterFactory::GetBlitterFactory(replacement_blitter.name) == nullptr) continue;
|
||||||
|
|
||||||
/* Inform the video driver we want to switch blitter as soon as possible. */
|
/* Inform the video driver we want to switch blitter as soon as possible. */
|
||||||
VideoDriver::GetInstance()->QueueOnMainThread(std::bind(&RealChangeBlitter, repl_blitter));
|
VideoDriver::GetInstance()->QueueOnMainThread(std::bind(&RealChangeBlitter, replacement_blitter.name));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -518,7 +509,7 @@ void GfxDetermineMainColours()
|
|||||||
/** Initialise and load all the sprites. */
|
/** Initialise and load all the sprites. */
|
||||||
void GfxLoadSprites()
|
void GfxLoadSprites()
|
||||||
{
|
{
|
||||||
DEBUG(sprite, 2, "Loading sprite set %d", _settings_game.game_creation.landscape);
|
Debug(sprite, 2, "Loading sprite set {}", _settings_game.game_creation.landscape);
|
||||||
|
|
||||||
_grf_bug_too_many_strings = false;
|
_grf_bug_too_many_strings = false;
|
||||||
|
|
||||||
@@ -533,7 +524,7 @@ void GfxLoadSprites()
|
|||||||
UpdateRouteStepSpriteSize();
|
UpdateRouteStepSpriteSize();
|
||||||
UpdateCursorSize();
|
UpdateCursorSize();
|
||||||
|
|
||||||
DEBUG(sprite, 2, "Completed loading sprite set %d", _settings_game.game_creation.landscape);
|
Debug(sprite, 2, "Completed loading sprite set {}", _settings_game.game_creation.landscape);
|
||||||
}
|
}
|
||||||
|
|
||||||
GraphicsSet::GraphicsSet()
|
GraphicsSet::GraphicsSet()
|
||||||
|
@@ -119,7 +119,7 @@ static std::unique_ptr<NWidgetBase> MakeNWidgetCompanyLines()
|
|||||||
{
|
{
|
||||||
auto vert = std::make_unique<NWidgetVertical>(NC_EQUALSIZE);
|
auto vert = std::make_unique<NWidgetVertical>(NC_EQUALSIZE);
|
||||||
vert->SetPadding(2, 2, 2, 2);
|
vert->SetPadding(2, 2, 2, 2);
|
||||||
uint sprite_height = GetSpriteSize(SPR_COMPANY_ICON, nullptr, ZOOM_LVL_OUT_4X).height;
|
uint sprite_height = GetSpriteSize(SPR_COMPANY_ICON, nullptr, ZOOM_LVL_NORMAL).height;
|
||||||
|
|
||||||
for (WidgetID widnum = WID_GL_FIRST_COMPANY; widnum <= WID_GL_LAST_COMPANY; widnum++) {
|
for (WidgetID widnum = WID_GL_FIRST_COMPANY; widnum <= WID_GL_LAST_COMPANY; widnum++) {
|
||||||
auto panel = std::make_unique<NWidgetBackground>(WWT_PANEL, COLOUR_BROWN, widnum);
|
auto panel = std::make_unique<NWidgetBackground>(WWT_PANEL, COLOUR_BROWN, widnum);
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
#include "string_func.h"
|
#include "string_func.h"
|
||||||
#include "sortlist_type.h"
|
#include "sortlist_type.h"
|
||||||
#include "dropdown_func.h"
|
#include "dropdown_func.h"
|
||||||
|
#include "dropdown_common_type.h"
|
||||||
#include "company_base.h"
|
#include "company_base.h"
|
||||||
#include "core/geometry_func.hpp"
|
#include "core/geometry_func.hpp"
|
||||||
#include "core/random_func.hpp"
|
#include "core/random_func.hpp"
|
||||||
@@ -1793,14 +1794,14 @@ public:
|
|||||||
DropDownList list;
|
DropDownList list;
|
||||||
|
|
||||||
/* Add item for disabling filtering. */
|
/* Add item for disabling filtering. */
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ANY), CargoFilterCriteria::CF_ANY, false));
|
list.push_back(MakeDropDownListStringItem(this->GetCargoFilterLabel(CargoFilterCriteria::CF_ANY), CargoFilterCriteria::CF_ANY));
|
||||||
/* Add item for industries not producing anything, e.g. power plants */
|
/* Add item for industries not producing anything, e.g. power plants */
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(this->GetCargoFilterLabel(CargoFilterCriteria::CF_NONE), CargoFilterCriteria::CF_NONE, false));
|
list.push_back(MakeDropDownListStringItem(this->GetCargoFilterLabel(CargoFilterCriteria::CF_NONE), CargoFilterCriteria::CF_NONE));
|
||||||
|
|
||||||
/* Add cargos */
|
/* Add cargos */
|
||||||
Dimension d = GetLargestCargoIconSize();
|
Dimension d = GetLargestCargoIconSize();
|
||||||
for (const CargoSpec *cs : _sorted_standard_cargo_specs) {
|
for (const CargoSpec *cs : _sorted_standard_cargo_specs) {
|
||||||
list.push_back(std::make_unique<DropDownListIconItem>(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index(), false));
|
list.push_back(MakeDropDownListIconItem(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
@@ -3151,7 +3152,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
} else {
|
} else {
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
auto add_item = [&](StringID string, int result) {
|
auto add_item = [&](StringID string, int result) {
|
||||||
std::unique_ptr<DropDownListStringItem> item(new DropDownListStringItem(string, result, false));
|
std::unique_ptr<DropDownListStringItem> item = std::make_unique<DropDownListStringItem>(string, result, false);
|
||||||
item->SetColourFlags(TC_FORCED);
|
item->SetColourFlags(TC_FORCED);
|
||||||
list.emplace_back(std::move(item));
|
list.emplace_back(std::move(item));
|
||||||
};
|
};
|
||||||
@@ -3167,7 +3168,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
DropDownList lst;
|
DropDownList lst;
|
||||||
Dimension d = GetLargestCargoIconSize();
|
Dimension d = GetLargestCargoIconSize();
|
||||||
for (const CargoSpec *cs : _sorted_standard_cargo_specs) {
|
for (const CargoSpec *cs : _sorted_standard_cargo_specs) {
|
||||||
lst.push_back(std::make_unique<DropDownListIconItem>(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index(), false));
|
lst.push_back(MakeDropDownListIconItem(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index()));
|
||||||
}
|
}
|
||||||
if (!lst.empty()) {
|
if (!lst.empty()) {
|
||||||
int selected = (this->ind_cargo >= NUM_INDUSTRYTYPES) ? (int)(this->ind_cargo - NUM_INDUSTRYTYPES) : -1;
|
int selected = (this->ind_cargo >= NUM_INDUSTRYTYPES) ? (int)(this->ind_cargo - NUM_INDUSTRYTYPES) : -1;
|
||||||
@@ -3181,7 +3182,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
for (IndustryType ind : _sorted_industry_types) {
|
for (IndustryType ind : _sorted_industry_types) {
|
||||||
const IndustrySpec *indsp = GetIndustrySpec(ind);
|
const IndustrySpec *indsp = GetIndustrySpec(ind);
|
||||||
if (!indsp->enabled) continue;
|
if (!indsp->enabled) continue;
|
||||||
lst.push_back(std::make_unique<DropDownListStringItem>(indsp->name, ind, false));
|
lst.push_back(MakeDropDownListStringItem(indsp->name, ind));
|
||||||
}
|
}
|
||||||
if (!lst.empty()) {
|
if (!lst.empty()) {
|
||||||
int selected = (this->ind_cargo < NUM_INDUSTRYTYPES) ? (int)this->ind_cargo : -1;
|
int selected = (this->ind_cargo < NUM_INDUSTRYTYPES) ? (int)this->ind_cargo : -1;
|
||||||
|
@@ -110,8 +110,8 @@ inline std::tuple<Slope, int> GetFoundationPixelSlope(TileIndex tile)
|
|||||||
inline Point RemapCoords(int x, int y, int z)
|
inline Point RemapCoords(int x, int y, int z)
|
||||||
{
|
{
|
||||||
Point pt;
|
Point pt;
|
||||||
pt.x = (y - x) * 2 * ZOOM_LVL_BASE;
|
pt.x = (y - x) * 2 * ZOOM_BASE;
|
||||||
pt.y = (y + x - z) * ZOOM_LVL_BASE;
|
pt.y = (y + x - z) * ZOOM_BASE;
|
||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ inline Point RemapCoords2(int x, int y)
|
|||||||
*/
|
*/
|
||||||
inline Point InverseRemapCoords(int x, int y)
|
inline Point InverseRemapCoords(int x, int y)
|
||||||
{
|
{
|
||||||
Point pt = {(y * 2 - x) >> (2 + ZOOM_LVL_SHIFT), (y * 2 + x) >> (2 + ZOOM_LVL_SHIFT)};
|
Point pt = {(y * 2 - x) >> (2 + ZOOM_BASE_SHIFT), (y * 2 + x) >> (2 + ZOOM_BASE_SHIFT)};
|
||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4258,9 +4258,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Beraamde
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Stoor van speletjie is nog besig,{}wag asb tot dit klaar is!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Stoor van speletjie is nog besig,{}wag asb tot dit klaar is!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Outostoor het misluk
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Outostoor het misluk
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan nie skyf lees nie
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan nie skyf lees nie
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Speletjie Spaar Misluk{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan nie lêer uitvee nie
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan nie lêer uitvee nie
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Speletjie Laai Misluk{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne fout: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne fout: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gebreekte gespaarde spel - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gebreekte gespaarde spel - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spaarspeletjie is gemaak met nuwer uitgawe
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spaarspeletjie is gemaak met nuwer uitgawe
|
||||||
|
@@ -4058,9 +4058,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}الدخ
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}الحفظ مازال جاريا الآن{}الرجاء الأنتظار حتر ينتهي
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}الحفظ مازال جاريا الآن{}الرجاء الأنتظار حتر ينتهي
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}فشل الحفظ التلقائي
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}فشل الحفظ التلقائي
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}لا يمكن قرائة القرص
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}لا يمكن قرائة القرص
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}فشل حفظ اللعبة{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}لا يمكن حذف الملف
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}لا يمكن حذف الملف
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}فشل فتح اللعبة{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :خطأ داخلي: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :خطأ داخلي: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :لعبه محفوظه غير صالحه - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :لعبه محفوظه غير صالحه - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :اللعبة حفظت بنسخة أحدث
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :اللعبة حفظت بنسخة أحدث
|
||||||
|
@@ -4014,9 +4014,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Gutxi go
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Oraindik artxiboa gordetzen,{}mesedez itxaron amaitu arte!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Oraindik artxiboa gordetzen,{}mesedez itxaron amaitu arte!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Gordetze automatikoak huts egin du
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Gordetze automatikoak huts egin du
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ezin izan da driverra irakurri
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ezin izan da driverra irakurri
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Jokoa gordetzeak huts egin du{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ezin izan da artxiboa ezabatu
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ezin izan da artxiboa ezabatu
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Jokoa kargatzeak huts egin du{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Barne akatsa: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Barne akatsa: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gordetako jokoa hautsia dago - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gordetako jokoa hautsia dago - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Gordetako jokoa bertsio berriago batekin egin da
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Gordetako jokoa bertsio berriago batekin egin da
|
||||||
|
@@ -5250,9 +5250,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Мерк
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ідзе захаваньне,{}калі ласка, дачакайцеся завяршэньня!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ідзе захаваньне,{}калі ласка, дачакайцеся завяршэньня!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Памылка аўтазахаваньня
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Памылка аўтазахаваньня
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Не атрымалася прачытаць дыск
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Не атрымалася прачытаць дыск
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Немагчыма захаваць гульню{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Немагчыма выдаліць файл
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Немагчыма выдаліць файл
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Немагчыма загрузіць гульню{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Унутраная памылка: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Унутраная памылка: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл пашкоджаны — {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл пашкоджаны — {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Захаваньне зроблена ў больш новай вэрсіі
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Захаваньне зроблена ў больш новай вэрсіі
|
||||||
|
@@ -270,7 +270,7 @@ STR_UNITS_PERIODS :{NUM}{NBSP}per
|
|||||||
# Common window strings
|
# Common window strings
|
||||||
STR_LIST_FILTER_TITLE :{BLACK}Filtro:
|
STR_LIST_FILTER_TITLE :{BLACK}Filtro:
|
||||||
STR_LIST_FILTER_OSKTITLE :{BLACK}Inserir uma ou mais palavras-chave para filtrar a lista
|
STR_LIST_FILTER_OSKTITLE :{BLACK}Inserir uma ou mais palavras-chave para filtrar a lista
|
||||||
STR_LIST_FILTER_TOOLTIP :{BLACK}Digite uma ou mais palavras-chave para procurar na lista
|
STR_LIST_FILTER_TOOLTIP :{BLACK}Introduza uma ou mais palavras-chave para procurar na lista
|
||||||
|
|
||||||
STR_TOOLTIP_GROUP_ORDER :{BLACK}Escolher a ordem de agrupamento
|
STR_TOOLTIP_GROUP_ORDER :{BLACK}Escolher a ordem de agrupamento
|
||||||
STR_TOOLTIP_SORT_ORDER :{BLACK}Escolher a ordenação (descendente/ascendente)
|
STR_TOOLTIP_SORT_ORDER :{BLACK}Escolher a ordenação (descendente/ascendente)
|
||||||
@@ -405,7 +405,7 @@ STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construi
|
|||||||
STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Construir infraestrutura rodoviária
|
STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Construir infraestrutura rodoviária
|
||||||
STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Construir infraestrutura para bondes
|
STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Construir infraestrutura para bondes
|
||||||
STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construir infraestrutura hidroviária
|
STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construir infraestrutura hidroviária
|
||||||
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construir aeroportos
|
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construir aeroporto
|
||||||
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Abrir menu de paisagismo, menu de árvores ou colocar uma placa
|
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Abrir menu de paisagismo, menu de árvores ou colocar uma placa
|
||||||
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Abrir janela de som/música
|
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Abrir janela de som/música
|
||||||
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Abrir última mensagem/notícia, histórico de mensagens ou apagar todas as mensagens
|
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Abrir última mensagem/notícia, histórico de mensagens ou apagar todas as mensagens
|
||||||
@@ -418,7 +418,7 @@ STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD
|
|||||||
STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor de Cenário
|
STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor de Cenário
|
||||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Mover a data inicial 1 ano para trás
|
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Mover a data inicial 1 ano para trás
|
||||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Mover a data inicial 1 ano para frente
|
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Mover a data inicial 1 ano para frente
|
||||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Clique para digitar o ano de início
|
STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Clique para alterar o ano de início
|
||||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Abrir mapa, visualização extra, lista de placas, de localidades ou de indústrias
|
STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Abrir mapa, visualização extra, lista de placas, de localidades ou de indústrias
|
||||||
STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Abrir menu de paisagismo ou gerar um novo mundo
|
STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Abrir menu de paisagismo ou gerar um novo mundo
|
||||||
STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Construir ou gerar localidades
|
STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Construir ou gerar localidades
|
||||||
@@ -506,7 +506,7 @@ STR_ROAD_MENU_ROAD_CONSTRUCTION :Construção de
|
|||||||
STR_ROAD_MENU_TRAM_CONSTRUCTION :Construção de linha de bonde
|
STR_ROAD_MENU_TRAM_CONSTRUCTION :Construção de linha de bonde
|
||||||
|
|
||||||
# Waterways construction menu
|
# Waterways construction menu
|
||||||
STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Construção de hidrovias
|
STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Construção de hidrovia
|
||||||
|
|
||||||
# Aairport construction menu
|
# Aairport construction menu
|
||||||
STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Construção de aeroporto
|
STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Construção de aeroporto
|
||||||
@@ -668,7 +668,7 @@ STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total:
|
|||||||
|
|
||||||
STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Número de veículos que geraram lucro no último ano. Isso inclui veículos rodoviários, trens, embarcações e aeronaves
|
STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_YEARS :{BLACK}Número de veículos que geraram lucro no último ano. Isso inclui veículos rodoviários, trens, embarcações e aeronaves
|
||||||
STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Número de veículos que geraram lucro no último período. Isso inclui veículos rodoviários, trens, embarcações e aeronaves
|
STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP_PERIODS :{BLACK}Número de veículos que geraram lucro no último período. Isso inclui veículos rodoviários, trens, embarcações e aeronaves
|
||||||
STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Número de estações atendidas recentemente. Estações de trem, paradas de ônibus, aeroportos, etc. são contados separadamente, mesmo que pertençam à mesma estação
|
STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Número de estações atendidas recentemente. Estações de trem, paradas de ônibus, aeroportos, etc., são contados separadamente, mesmo que pertençam à mesma estação
|
||||||
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}Lucro do veículo com o menor rendimento (apenas veículos com mais de dois anos são considerados)
|
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_YEARS :{BLACK}Lucro do veículo com o menor rendimento (apenas veículos com mais de dois anos são considerados)
|
||||||
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}Lucro do veículo com o menor rendimento (apenas veículos com mais de dois períodos são considerados)
|
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP_PERIODS :{BLACK}Lucro do veículo com o menor rendimento (apenas veículos com mais de dois períodos são considerados)
|
||||||
STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Quantia de dinheiro obtida no trimestre com o menor lucro dos últimos 12 trimestres
|
STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Quantia de dinheiro obtida no trimestre com o menor lucro dos últimos 12 trimestres
|
||||||
@@ -680,7 +680,7 @@ STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}O montan
|
|||||||
STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total de pontos de pontos possíveis
|
STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total de pontos de pontos possíveis
|
||||||
|
|
||||||
# Music window
|
# Music window
|
||||||
STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jukebox de Jazz
|
STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jukebox de Música
|
||||||
STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Todos
|
STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Todos
|
||||||
STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Antigo
|
STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Antigo
|
||||||
STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Moderno
|
STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Moderno
|
||||||
@@ -1530,8 +1530,8 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Duração da me
|
|||||||
STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Tempo de exibição de mensagens de erro numa janela vermelha. Algumas mensagens de erro (crítico) não são fechadas automaticamente após este tempo e precisam ser fechadas manualmente
|
STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Tempo de exibição de mensagens de erro numa janela vermelha. Algumas mensagens de erro (crítico) não são fechadas automaticamente após este tempo e precisam ser fechadas manualmente
|
||||||
|
|
||||||
STR_CONFIG_SETTING_HOVER_DELAY :Mostrar textos de ajuda: {STRING}
|
STR_CONFIG_SETTING_HOVER_DELAY :Mostrar textos de ajuda: {STRING}
|
||||||
STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Tempo que o cursor deve ficar sobre algum elemento da interface para que os textos de ajuda sejam mostrados. Outro modo de exibir os textos de ajuda é fixar este valor em 0 e clicar com o botão direito do mouse
|
STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Tempo que o ponteiro do mouse deve ficar sobre algum elemento da interface para que os textos de ajuda sejam mostrados. Outro modo de exibir os textos de ajuda é fixar este valor em 0 e clicar com o botão direito do mouse
|
||||||
STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Manter o cursor por {COMMA} milissegundo{P 0 "" s}
|
STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Manter o ponteiro por {COMMA} milissegundo{P 0 "" s}
|
||||||
###setting-zero-is-special
|
###setting-zero-is-special
|
||||||
STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Botão direito
|
STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Botão direito
|
||||||
|
|
||||||
@@ -1673,7 +1673,7 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Mover o mapa
|
|||||||
STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Desativado
|
STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Desativado
|
||||||
|
|
||||||
STR_CONFIG_SETTING_OSK_ACTIVATION :Teclado virtual: {STRING}
|
STR_CONFIG_SETTING_OSK_ACTIVATION :Teclado virtual: {STRING}
|
||||||
STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Escolher o método para mostrar o teclado virtual para inserir texto em caixas de diálogo usando o cursor. Isto é útil para dispositivos pequenos que não possuem teclados
|
STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Escolher o método para mostrar o teclado virtual para inserir texto em caixas de diálogo usando apenas o cursor. Isto é útil para dispositivos pequenos que não possuem teclados
|
||||||
###length 4
|
###length 4
|
||||||
STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Desativado
|
STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Desativado
|
||||||
STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Clique duplo
|
STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Clique duplo
|
||||||
@@ -1736,7 +1736,7 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Mostrar chegada
|
|||||||
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostrar os horários previstos de chegada e de partida nos quadros de horários
|
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostrar os horários previstos de chegada e de partida nos quadros de horários
|
||||||
|
|
||||||
STR_CONFIG_SETTING_QUICKGOTO :Criação rápida de ordens de veículos: {STRING}
|
STR_CONFIG_SETTING_QUICKGOTO :Criação rápida de ordens de veículos: {STRING}
|
||||||
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pré-selecionar o cursor 'Ir Para' ao abrir a janela de ordens
|
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pré-selecionar o 'cursor Ir para' ao abrir a janela de ordens
|
||||||
|
|
||||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipo de trilho padrão (ao iniciar novo/abrir jogo): {STRING}
|
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipo de trilho padrão (ao iniciar novo/abrir jogo): {STRING}
|
||||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de trilho a ser selecionado ao iniciar novo/abrir um jogo. 'Primeiro disponível' seleciona o tipo de trilho mais antigo. 'Último disponível' seleciona o tipo mais novo de trilho e 'Mais utilizado' seleciona o tipo que é mais usado atualmente
|
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de trilho a ser selecionado ao iniciar novo/abrir um jogo. 'Primeiro disponível' seleciona o tipo de trilho mais antigo. 'Último disponível' seleciona o tipo mais novo de trilho e 'Mais utilizado' seleciona o tipo que é mais usado atualmente
|
||||||
@@ -1749,7 +1749,7 @@ STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Mostrar caminho
|
|||||||
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Usar uma cor diferente nos trajetos reservados para auxiliar na solução de problemas com trens que se recusam a entrar em seções controlados por sinais de caminho
|
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Usar uma cor diferente nos trajetos reservados para auxiliar na solução de problemas com trens que se recusam a entrar em seções controlados por sinais de caminho
|
||||||
|
|
||||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Manter as ferramentas de construção ativas após o uso: {STRING}
|
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Manter as ferramentas de construção ativas após o uso: {STRING}
|
||||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Manter as ferramentas de construção de pontes, túneis, etc. abertas após o uso
|
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Manter as ferramentas de construção de pontes, túneis, etc., abertas após o uso
|
||||||
|
|
||||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Remover automaticamente os sinais durante a construção de ferrovias: {STRING}
|
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Remover automaticamente os sinais durante a construção de ferrovias: {STRING}
|
||||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Remover automaticamente os sinais durante a construção de ferrovias se os sinais estiverem no caminho. Isso pode, potencialmente, causar acidentes de trens
|
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Remover automaticamente os sinais durante a construção de ferrovias se os sinais estiverem no caminho. Isso pode, potencialmente, causar acidentes de trens
|
||||||
@@ -2420,8 +2420,8 @@ STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Adiciona
|
|||||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Iniciar servidor
|
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Iniciar servidor
|
||||||
STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Iniciar um servidor próprio
|
STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Iniciar um servidor próprio
|
||||||
|
|
||||||
STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Digitar o seu nome
|
STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Introduza o seu nome
|
||||||
STR_NETWORK_SERVER_LIST_ENTER_SERVER_ADDRESS :{BLACK}Digitar o endereço de servidor ou código de convite
|
STR_NETWORK_SERVER_LIST_ENTER_SERVER_ADDRESS :{BLACK}Endereço do servidor ou código de convite
|
||||||
|
|
||||||
# Start new multiplayer server
|
# Start new multiplayer server
|
||||||
STR_NETWORK_START_SERVER_CAPTION :{WHITE}Iniciar novo jogo multijogador
|
STR_NETWORK_START_SERVER_CAPTION :{WHITE}Iniciar novo jogo multijogador
|
||||||
@@ -2440,7 +2440,7 @@ STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} em
|
|||||||
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Número máximo de empresas:
|
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Número máximo de empresas:
|
||||||
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limitar o servidor a um certo número de empresas
|
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limitar o servidor a um certo número de empresas
|
||||||
|
|
||||||
STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Coloque o nome para o jogo em rede
|
STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Introduza um nome para o jogo em rede
|
||||||
|
|
||||||
# Network connecting window
|
# Network connecting window
|
||||||
STR_NETWORK_CONNECTING_CAPTION :{WHITE}Conectando...
|
STR_NETWORK_CONNECTING_CAPTION :{WHITE}Conectando...
|
||||||
@@ -2461,8 +2461,8 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Obtendo
|
|||||||
|
|
||||||
STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconectar
|
STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconectar
|
||||||
|
|
||||||
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Digite a senha
|
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Introduza a senha
|
||||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa protegida. Digite a senha
|
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa protegida. Introduza a senha
|
||||||
|
|
||||||
# Network company list added strings
|
# Network company list added strings
|
||||||
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Jogadores conectados
|
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Jogadores conectados
|
||||||
@@ -2560,7 +2560,7 @@ STR_NETWORK_CHAT_CLIENT :[Privado] {STRI
|
|||||||
STR_NETWORK_CHAT_TO_CLIENT :[Privado] Para {STRING}: {WHITE}{STRING}
|
STR_NETWORK_CHAT_TO_CLIENT :[Privado] Para {STRING}: {WHITE}{STRING}
|
||||||
STR_NETWORK_CHAT_ALL :[Todos] {STRING}: {WHITE}{STRING}
|
STR_NETWORK_CHAT_ALL :[Todos] {STRING}: {WHITE}{STRING}
|
||||||
STR_NETWORK_CHAT_EXTERNAL :[{3:STRING}] {0:STRING}: {WHITE}{1:STRING}
|
STR_NETWORK_CHAT_EXTERNAL :[{3:STRING}] {0:STRING}: {WHITE}{1:STRING}
|
||||||
STR_NETWORK_CHAT_OSKTITLE :{BLACK}Digitar a mensagem para conversar na rede
|
STR_NETWORK_CHAT_OSKTITLE :{BLACK}Introduza a mensagem para conversar na rede
|
||||||
|
|
||||||
# Network messages
|
# Network messages
|
||||||
STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Não foram encontradas interfaces de rede ou o jogo foi compilado sem ENABLE_NETWORK
|
STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Não foram encontradas interfaces de rede ou o jogo foi compilado sem ENABLE_NETWORK
|
||||||
@@ -2646,14 +2646,14 @@ STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}O servid
|
|||||||
STR_NETWORK_MESSAGE_KICKED :*** {STRING} foi expulso. Motivo: ({STRING})
|
STR_NETWORK_MESSAGE_KICKED :*** {STRING} foi expulso. Motivo: ({STRING})
|
||||||
|
|
||||||
STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED :{WHITE}Falha ao registrar o servidor
|
STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED :{WHITE}Falha ao registrar o servidor
|
||||||
STR_NETWORK_ERROR_COORDINATOR_REUSE_OF_INVITE_CODE :{WHITE}Outro servidor com o mesmo código de convite foi registrado. Mudando para o tipo de jogo "local".
|
STR_NETWORK_ERROR_COORDINATOR_REUSE_OF_INVITE_CODE :{WHITE}Outro servidor com o mesmo código de convite foi registrado. Mudando o jogo para o tipo "local".
|
||||||
STR_NETWORK_ERROR_COORDINATOR_ISOLATED :{WHITE}O seu servidor não permite conexões remotas
|
STR_NETWORK_ERROR_COORDINATOR_ISOLATED :{WHITE}O seu servidor não permite conexões remotas
|
||||||
STR_NETWORK_ERROR_COORDINATOR_ISOLATED_DETAIL :{WHITE}Outros jogadores não poderão se conectar ao seu servidor
|
STR_NETWORK_ERROR_COORDINATOR_ISOLATED_DETAIL :{WHITE}Outros jogadores não poderão se conectar ao seu servidor
|
||||||
|
|
||||||
# Content downloading window
|
# Content downloading window
|
||||||
STR_CONTENT_TITLE :{WHITE}Download de conteúdo
|
STR_CONTENT_TITLE :{WHITE}Download de conteúdo
|
||||||
STR_CONTENT_TYPE_CAPTION :{BLACK}Tipo
|
STR_CONTENT_TYPE_CAPTION :{BLACK}Tipo
|
||||||
STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipo do conteúdo
|
STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipo de conteúdo
|
||||||
STR_CONTENT_NAME_CAPTION :{BLACK}Nome
|
STR_CONTENT_NAME_CAPTION :{BLACK}Nome
|
||||||
STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Nome do conteúdo
|
STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Nome do conteúdo
|
||||||
STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Clique numa linha para ver os detalhes{}Clique na caixa de seleção para marcar e fazer o download
|
STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Clique numa linha para ver os detalhes{}Clique na caixa de seleção para marcar e fazer o download
|
||||||
@@ -2912,8 +2912,8 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orienta
|
|||||||
STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Escolher a orientação da estação de bondes de carga
|
STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Escolher a orientação da estação de bondes de carga
|
||||||
|
|
||||||
# Waterways toolbar (last two for SE only)
|
# Waterways toolbar (last two for SE only)
|
||||||
STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Construção de Hidrovias
|
STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Construção de Hidrovia
|
||||||
STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Hidrovias
|
STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Hidrovia
|
||||||
STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Construir canais. Pressione também Shift para só mostrar o custo estimado
|
STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Construir canais. Pressione também Shift para só mostrar o custo estimado
|
||||||
STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Construir eclusas. Pressione também Shift para só mostrar o custo estimado
|
STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Construir eclusas. Pressione também Shift para só mostrar o custo estimado
|
||||||
STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Construir depósito de embarcações (para compra e manutenção de embarcações). Pressione também Shift para só mostrar o custo estimado
|
STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Construir depósito de embarcações (para compra e manutenção de embarcações). Pressione também Shift para só mostrar o custo estimado
|
||||||
@@ -2982,11 +2982,11 @@ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plantar
|
|||||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Plantar Aleatoriamente
|
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Plantar Aleatoriamente
|
||||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantar árvores aleatoriamente no terreno
|
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantar árvores aleatoriamente no terreno
|
||||||
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal
|
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal
|
||||||
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plantar árvores isoladas ao arrastar o cursor sobre o terreno
|
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plantar árvores isoladas ao arrastar o ponteiro sobre o terreno
|
||||||
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Bosque
|
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Bosque
|
||||||
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plantar florestas pequenas ao arrastar o cursor sobre o terreno
|
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plantar florestas pequenas ao arrastar o ponteiro sobre o terreno
|
||||||
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Floresta
|
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Floresta
|
||||||
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantar florestas grandes ao arrastar o cursor sobre o terreno
|
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantar florestas grandes ao arrastar o ponteiro sobre o terreno
|
||||||
|
|
||||||
# Land generation window (SE)
|
# Land generation window (SE)
|
||||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Geração de Terreno
|
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Geração de Terreno
|
||||||
@@ -3014,8 +3014,8 @@ STR_FOUND_TOWN_EXPAND_ALL_TOWNS :{BLACK}Expandir
|
|||||||
STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP :{BLACK}Fazer com que todas as localidades cresçam ligeiramente
|
STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP :{BLACK}Fazer com que todas as localidades cresçam ligeiramente
|
||||||
|
|
||||||
STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nome da localidade:
|
STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nome da localidade:
|
||||||
STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Digitar o nome da localidade
|
STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Introduza o nome da localidade
|
||||||
STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Clique para digitar o nome da localidade
|
STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Clique para editar o nome da localidade
|
||||||
STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Nome aleatório
|
STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Nome aleatório
|
||||||
STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Gerar novo nome aleatório
|
STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Gerar novo nome aleatório
|
||||||
|
|
||||||
@@ -3283,7 +3283,7 @@ STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Você q
|
|||||||
STR_SAVELOAD_DIRECTORY :{STRING} (Diretório)
|
STR_SAVELOAD_DIRECTORY :{STRING} (Diretório)
|
||||||
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Diretório raiz)
|
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Diretório raiz)
|
||||||
|
|
||||||
STR_SAVELOAD_OSKTITLE :{BLACK}Digitar um nome para o jogo que será gravado
|
STR_SAVELOAD_OSKTITLE :{BLACK}Introduza um nome para o jogo que será gravado
|
||||||
|
|
||||||
# World generation
|
# World generation
|
||||||
STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Geração de Mapas
|
STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Geração de Mapas
|
||||||
@@ -3459,7 +3459,7 @@ STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatí
|
|||||||
# NewGRF save preset window
|
# NewGRF save preset window
|
||||||
STR_SAVE_PRESET_CAPTION :{WHITE}Salvar predefinição
|
STR_SAVE_PRESET_CAPTION :{WHITE}Salvar predefinição
|
||||||
STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista de predefinições disponíveis, selecione uma para copiar o nome e usar na gravação abaixo
|
STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lista de predefinições disponíveis, selecione uma para copiar o nome e usar na gravação abaixo
|
||||||
STR_SAVE_PRESET_TITLE :{BLACK}Digitar um nome para a predefinição
|
STR_SAVE_PRESET_TITLE :{BLACK}Introduza um nome para a predefinição
|
||||||
STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nome que está selecionado para salvar a predefinição
|
STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nome que está selecionado para salvar a predefinição
|
||||||
STR_SAVE_PRESET_CANCEL :{BLACK}Cancelar
|
STR_SAVE_PRESET_CANCEL :{BLACK}Cancelar
|
||||||
STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Não alterar a predefinição
|
STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Não alterar a predefinição
|
||||||
@@ -3603,7 +3603,7 @@ STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centrali
|
|||||||
STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Ir para a próxima placa
|
STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Ir para a próxima placa
|
||||||
STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir para a placa anterior
|
STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir para a placa anterior
|
||||||
|
|
||||||
STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Digitar um nome para a placa
|
STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Introduza um nome para a placa
|
||||||
|
|
||||||
# Town directory window
|
# Town directory window
|
||||||
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Localidades
|
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Localidades
|
||||||
@@ -3920,7 +3920,7 @@ STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Alterar
|
|||||||
|
|
||||||
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nome da Empresa
|
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nome da Empresa
|
||||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nome do Presidente
|
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nome do Presidente
|
||||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Digitar a quantia de dinheiro que você quer dar
|
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Introduza o valor que você quer dar
|
||||||
|
|
||||||
STR_BUY_COMPANY_MESSAGE :{WHITE}Estamos procurando uma empresa de transportes para comprar a nossa empresa.{}{}Você deseja comprar {COMPANY} por {CURRENCY_LONG}?
|
STR_BUY_COMPANY_MESSAGE :{WHITE}Estamos procurando uma empresa de transportes para comprar a nossa empresa.{}{}Você deseja comprar {COMPANY} por {CURRENCY_LONG}?
|
||||||
STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Na aquisição hostil de {COMPANY} você irá adquirir todos os ativos, liquidar todos os empréstimos e pagar dois anos de lucros.{}{}O total estimado é de {CURRENCY_LONG}.{}{}Você deseja continuar esta aquisição hostil?
|
STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Na aquisição hostil de {COMPANY} você irá adquirir todos os ativos, liquidar todos os empréstimos e pagar dois anos de lucros.{}{}O total estimado é de {CURRENCY_LONG}.{}{}Você deseja continuar esta aquisição hostil?
|
||||||
@@ -4271,9 +4271,9 @@ STR_ENGINE_PREVIEW_SHIP :{G=f}embarcaç
|
|||||||
STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING}
|
STR_ENGINE_PREVIEW_TEXT3 :{BLACK}{STRING}{}{5:STRING}{}{STRING}
|
||||||
STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING}
|
STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}{}{STRING}{}{STRING}{}{STRING}
|
||||||
STR_ENGINE_PREVIEW_COST_WEIGHT :Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}
|
STR_ENGINE_PREVIEW_COST_WEIGHT :Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}
|
||||||
STR_ENGINE_PREVIEW_COST_MAX_SPEED :Custo: {CURRENCY_LONG} Velocidade máx.: {VELOCITY}
|
STR_ENGINE_PREVIEW_COST_MAX_SPEED :Custo: {CURRENCY_LONG} Veloc. máx.: {VELOCITY}
|
||||||
STR_ENGINE_PREVIEW_SPEED_POWER :Velocidade: {VELOCITY} Potência: {POWER}
|
STR_ENGINE_PREVIEW_SPEED_POWER :Velocidade: {VELOCITY} Potência: {POWER}
|
||||||
STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Velocidade: {VELOCITY} Potência: {POWER} Tração máx.: {FORCE}
|
STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Veloc.: {VELOCITY} Potência: {POWER} Tração máx.: {FORCE}
|
||||||
STR_ENGINE_PREVIEW_TYPE :Tipo de aeronave: {STRING}
|
STR_ENGINE_PREVIEW_TYPE :Tipo de aeronave: {STRING}
|
||||||
STR_ENGINE_PREVIEW_TYPE_RANGE :Tipo de aeronave: {STRING} Autonomia: {COMMA} quadrados
|
STR_ENGINE_PREVIEW_TYPE_RANGE :Tipo de aeronave: {STRING} Autonomia: {COMMA} quadrados
|
||||||
STR_ENGINE_PREVIEW_RUNCOST_YEAR :Custo Operacional: {CURRENCY_LONG}/ano
|
STR_ENGINE_PREVIEW_RUNCOST_YEAR :Custo Operacional: {CURRENCY_LONG}/ano
|
||||||
@@ -4431,9 +4431,9 @@ STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Idade: {
|
|||||||
|
|
||||||
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidade máx.: {LTBLUE}{VELOCITY}
|
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidade máx.: {LTBLUE}{VELOCITY}
|
||||||
STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Velocidade máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING}
|
STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Velocidade máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING}
|
||||||
STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Velocidade máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} {BLACK}Autonomia: {LTBLUE}{COMMA} quadrados
|
STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Veloc. máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} {BLACK}Autonomia: {LTBLUE}{COMMA} quadrados
|
||||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade máx.: {LTBLUE}{VELOCITY}
|
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Veloc. máx.: {LTBLUE}{VELOCITY}
|
||||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade máx.: {LTBLUE}{VELOCITY} {BLACK}Força de Tração máx.: {LTBLUE}{FORCE}
|
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Veloc. máx.: {LTBLUE}{VELOCITY} {BLACK}Tração máx.: {LTBLUE}{FORCE}
|
||||||
|
|
||||||
STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro neste ano: {LTBLUE}{CURRENCY_LONG} (último ano: {CURRENCY_LONG})
|
STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro neste ano: {LTBLUE}{CURRENCY_LONG} (último ano: {CURRENCY_LONG})
|
||||||
STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Lucro neste ano: {LTBLUE}{CURRENCY_LONG} (último ano: {CURRENCY_LONG}) {BLACK}Desempenho mín.: {LTBLUE}{POWER_TO_WEIGHT}
|
STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Lucro neste ano: {LTBLUE}{CURRENCY_LONG} (último ano: {CURRENCY_LONG}) {BLACK}Desempenho mín.: {LTBLUE}{POWER_TO_WEIGHT}
|
||||||
@@ -4602,7 +4602,7 @@ STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :for verdadeiro
|
|||||||
STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :for falso
|
STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :for falso
|
||||||
|
|
||||||
STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}O valor para comparar com os dados do veículo
|
STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}O valor para comparar com os dados do veículo
|
||||||
STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Digitar um valor para comparar
|
STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Introduza um valor para comparar
|
||||||
|
|
||||||
STR_ORDERS_SKIP_BUTTON :{BLACK}Saltar
|
STR_ORDERS_SKIP_BUTTON :{BLACK}Saltar
|
||||||
STR_ORDERS_SKIP_TOOLTIP :{BLACK}Saltar a ordem atual e iniciar a próxima. Ctrl+Clique para saltar até a ordem selecionada
|
STR_ORDERS_SKIP_TOOLTIP :{BLACK}Saltar a ordem atual e iniciar a próxima. Ctrl+Clique para saltar até a ordem selecionada
|
||||||
@@ -4900,9 +4900,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Receita
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravação ainda sendo executada,{}por favor aguarde até terminar!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravação ainda sendo executada,{}por favor aguarde até terminar!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Salvamento automático falhou
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Salvamento automático falhou
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Não é possível ler a unidade
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Não é possível ler a unidade
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Salvar Jogo Falhou{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Falha ao salvar jogo...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Não é possível apagar o arquivo
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Não é possível apagar o arquivo
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Abrir Jogo Falhou{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Falha ao abrir jogo...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Jogo salvo está corrompido - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Jogo salvo está corrompido - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Jogo salvo foi feito com uma versão mais recente
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Jogo salvo foi feito com uma versão mais recente
|
||||||
@@ -4954,7 +4954,7 @@ STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreno
|
|||||||
STR_ERROR_CAN_T_DO_THIS :{WHITE}Não é possível fazer isto...
|
STR_ERROR_CAN_T_DO_THIS :{WHITE}Não é possível fazer isto...
|
||||||
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}A construção deve ser demolida primeiro
|
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}A construção deve ser demolida primeiro
|
||||||
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Não é possível limpar esta área...
|
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Não é possível limpar esta área...
|
||||||
STR_ERROR_SITE_UNSUITABLE :{WHITE}... local inadequado
|
STR_ERROR_SITE_UNSUITABLE :{WHITE}... local não adequado
|
||||||
STR_ERROR_ALREADY_BUILT :{WHITE}... já construído
|
STR_ERROR_ALREADY_BUILT :{WHITE}... já construído
|
||||||
STR_ERROR_OWNED_BY :{WHITE}... pertence a {STRING}
|
STR_ERROR_OWNED_BY :{WHITE}... pertence a {STRING}
|
||||||
STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... área pertence a outra empresa
|
STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... área pertence a outra empresa
|
||||||
@@ -4972,9 +4972,9 @@ STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}A autori
|
|||||||
STR_ERROR_BRIBE_FAILED :{WHITE}A sua tentativa de suborno foi descoberta por um investigador regional
|
STR_ERROR_BRIBE_FAILED :{WHITE}A sua tentativa de suborno foi descoberta por um investigador regional
|
||||||
|
|
||||||
# Levelling errors
|
# Levelling errors
|
||||||
STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Não é possível elevar terreno aqui...
|
STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Não é possível elevar este terreno...
|
||||||
STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Não é possível abaixar terreno aqui...
|
STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Não é possível abaixar este terreno...
|
||||||
STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Não é possível nivelar o terreno aqui...
|
STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Não é possível nivelar este terreno...
|
||||||
STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}A escavação danificaria o túnel
|
STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}A escavação danificaria o túnel
|
||||||
STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... já está ao nível do mar
|
STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... já está ao nível do mar
|
||||||
STR_ERROR_TOO_HIGH :{WHITE}... muito alto
|
STR_ERROR_TOO_HIGH :{WHITE}... muito alto
|
||||||
@@ -5082,7 +5082,7 @@ STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Não é
|
|||||||
STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Não é possível colocar boia aqui...
|
STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Não é possível colocar boia aqui...
|
||||||
STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Não é possível alterar o nome do ponto de controle...
|
STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Não é possível alterar o nome do ponto de controle...
|
||||||
|
|
||||||
STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Não é possível remover ponto de controle de trem daqui...
|
STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Não é possível remover ponto de controle de trem aqui...
|
||||||
STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Precisa remover o ponto de controle ferroviário primeiro
|
STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Precisa remover o ponto de controle ferroviário primeiro
|
||||||
STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boia no caminho
|
STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boia no caminho
|
||||||
STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boia está em uso por outra empresa!
|
STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boia está em uso por outra empresa!
|
||||||
@@ -5137,25 +5137,25 @@ STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Passagen
|
|||||||
STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Passagens de nível não são permitidas para este tipo de estrada
|
STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Passagens de nível não são permitidas para este tipo de estrada
|
||||||
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Não é possível construir sinais aqui...
|
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Não é possível construir sinais aqui...
|
||||||
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Não é possível construir ferrovia aqui...
|
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Não é possível construir ferrovia aqui...
|
||||||
STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Não é possível remover ferrovia daqui...
|
STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Não é possível remover ferrovia aqui...
|
||||||
STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Não é possível remover sinais daqui...
|
STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Não é possível remover sinais aqui...
|
||||||
STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Não é possível converter os sinais daqui...
|
STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Não é possível converter os sinais aqui...
|
||||||
STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... não existe uma ferrovia
|
STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... não existe uma ferrovia
|
||||||
STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... não existem sinais
|
STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... não existem sinais
|
||||||
|
|
||||||
STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Não é possível converter o tipo de trilho daqui...
|
STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Não é possível converter o tipo de trilho aqui...
|
||||||
|
|
||||||
# Road construction errors
|
# Road construction errors
|
||||||
STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Precisa remover a estrada primeiro
|
STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Precisa remover a estrada primeiro
|
||||||
STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... estradas de sentido único não podem ter junções
|
STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... estradas de sentido único não podem ter junções
|
||||||
STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Não é possível construir estrada aqui...
|
STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Não é possível construir estrada aqui...
|
||||||
STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Não é possível construir linha de bonde aqui...
|
STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Não é possível construir linha de bonde aqui...
|
||||||
STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Não é possível remover estrada daqui...
|
STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Não é possível remover estrada aqui...
|
||||||
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Não é possível remover linha de bonde daqui...
|
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Não é possível remover linha de bonde aqui...
|
||||||
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... não existe uma estrada
|
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... não existe uma estrada
|
||||||
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... não existe uma linha de bonde
|
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... não existe uma linha de bonde
|
||||||
STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Não é possível converter o tipo de estrada daqui...
|
STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Não é possível converter o tipo de estrada aqui...
|
||||||
STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Não é possível converter o tipo de linha de bonde daqui...
|
STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Não é possível converter o tipo de linha de bonde aqui...
|
||||||
STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Estrada não adequada
|
STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Estrada não adequada
|
||||||
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Linha de bonde não adequada
|
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Linha de bonde não adequada
|
||||||
|
|
||||||
|
@@ -4290,9 +4290,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Приб
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Записването продължава,{}моля изчакайте да сръши!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Записването продължава,{}моля изчакайте да сръши!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Автозапазването е неуспешно
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Автозапазването е неуспешно
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Не може да прочете диска
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Не може да прочете диска
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Запазването на играта е неуспешно{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Изтриването на файла е неуспешно
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Изтриването на файла е неуспешно
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Отварянето на играта е неуспешно{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Вътрешна грешка: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Вътрешна грешка: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Запазената игра е повредена - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Запазената игра е повредена - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Запазената игра е направена от по-нова версия
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Запазената игра е направена от по-нова версия
|
||||||
|
@@ -4900,9 +4900,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ingresso
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Es desa la partida.{}Espera que acabi l'operació!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Es desa la partida.{}Espera que acabi l'operació!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Ha fallat el desat automàtic
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Ha fallat el desat automàtic
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Impossible llegir la unitat de disc
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Impossible llegir la unitat de disc
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Error guardant la partida{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}La partida no s'ha pogut desar...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Impossible esborrar l'arxiu
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Impossible esborrar l'arxiu
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Error carregant la partida{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}La partida no s'ha pogut carregar...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Error Intern: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Error Intern: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :L'arxiu de la partida està corromput - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :L'arxiu de la partida està corromput - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :La partida està desada amb una versió més moderna
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :La partida està desada amb una versió més moderna
|
||||||
|
@@ -4444,9 +4444,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Predviđ
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Spremanje još u tijeku,{}molimo pričekajte dok se ne završi!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Spremanje još u tijeku,{}molimo pričekajte dok se ne završi!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatsko spremanje neuspješno
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatsko spremanje neuspješno
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ne mogu pročitati disk
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ne mogu pročitati disk
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spremanje igre nije uspjelo{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ne mogu obrisati datoteku
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ne mogu obrisati datoteku
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Učitavanje igre nije uspjelo{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna greška: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna greška: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Pokvarena spremljena igra - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Pokvarena spremljena igra - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spremljena igra je stvorena s novijom verzijom
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spremljena igra je stvorena s novijom verzijom
|
||||||
|
@@ -4988,9 +4988,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Odhadova
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ukládání ještě běží,{}počkej prosím, než doběhne!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ukládání ještě běží,{}počkej prosím, než doběhne!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatické uložení selhalo
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatické uložení selhalo
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nelze číst z jednotky
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nelze číst z jednotky
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Uložení hry selhalo{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nelze smazat soubor
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nelze smazat soubor
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nelze otevřít hru{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Vnitřní chyba: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Vnitřní chyba: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Poškozená hra - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Poškozená hra - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Uložená hra je z novější verze
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Uložená hra je z novější verze
|
||||||
|
@@ -4899,9 +4899,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Anslået
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gemmer stadig,{}vent venligst!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gemmer stadig,{}vent venligst!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fejl under autogem
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fejl under autogem
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikke læse drevet
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikke læse drevet
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Fejl under gemning af spil{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Fejl under lagring af spil...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Fejl under indlæsning af spil{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Fejl under indlæsning af spil...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern fejl: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern fejl: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ødelagt gemt spil - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ødelagt gemt spil - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillet er gemt med en nyere version
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillet er gemt med en nyere version
|
||||||
|
@@ -4899,9 +4899,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Verwacht
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Opslaan van spel is nog bezig,{}Wacht tot dit voltooid is!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Opslaan van spel is nog bezig,{}Wacht tot dit voltooid is!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatisch opslaan mislukt
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatisch opslaan mislukt
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan niet lezen van schijf
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan niet lezen van schijf
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Opslaan spel mislukt{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spel opslaan mislukt...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan bestand niet verwijderen
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan bestand niet verwijderen
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Laden spel mislukt{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Spel laden spel mislukt...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne fout: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne fout: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Opgeslagen spel beschadigd - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Opgeslagen spel beschadigd - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Opgeslagen spel hoort bij een nieuwere versie
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Opgeslagen spel hoort bij een nieuwere versie
|
||||||
|
@@ -4899,9 +4899,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Estimate
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Saving still in progress,{}please wait until it is finished!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Saving still in progress,{}please wait until it is finished!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosave failed
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosave failed
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game save failed...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game load failed...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version
|
||||||
|
@@ -4899,9 +4899,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Estimate
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Saving still in progress,{}please wait until it is finished!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Saving still in progress,{}please wait until it is finished!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosave failed
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosave failed
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game save failed...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game load failed...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version
|
||||||
|
@@ -4772,9 +4772,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Atendata
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ankoraŭ konservas,{}bv atendi ĝis finiĝo!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ankoraŭ konservas,{}bv atendi ĝis finiĝo!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fiaskis aŭtomate konservi
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fiaskis aŭtomate konservi
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ne eblas legi diskon
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ne eblas legi diskon
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Ludkonservado Fiaskis{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ne eblas forviŝi dosieron
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ne eblas forviŝi dosieron
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Ludŝarĝado Fiaskis{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna eraro: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna eraro: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Rompa konservludo - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Rompa konservludo - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Tiu ĉi ludo estis konservita per pli nova versio
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Tiu ĉi ludo estis konservita per pli nova versio
|
||||||
|
@@ -4953,9 +4953,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Eeldatav
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ikka salvestamisel,{}palun oota salvestuse lõpuni!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ikka salvestamisel,{}palun oota salvestuse lõpuni!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Välpsalvestus ebaõnnestus
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Välpsalvestus ebaõnnestus
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ei suuda kettalt lugeda
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ei suuda kettalt lugeda
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Mängu salvestamine nurjus{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Faili ei saa kustutada
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Faili ei saa kustutada
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Mängu laadimine nurjus{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Süsteemi viga: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Süsteemi viga: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Katkine salvestus - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Katkine salvestus - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvestus on tehtud uuemas osas
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvestus on tehtud uuemas osas
|
||||||
|
@@ -3673,9 +3673,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Inntøku
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Goyming er enn í gongd,{}vinarliga bíða til ta er liðugt!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Goyming er enn í gongd,{}vinarliga bíða til ta er liðugt!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Sjálvgoymsla eydnaðist ikki
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Sjálvgoymsla eydnaðist ikki
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ikki ført fyri at lesa drev
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ikki ført fyri at lesa drev
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Eydnaðist ikki at goyma spæl{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ikki ført fyri at strika fílu
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ikki ført fyri at strika fílu
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Eydnaðist ikki at heinta spæl{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Innanhýsis villa: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Innanhýsis villa: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Goymda spæli er broti - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Goymda spæli er broti - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Goymda spæli er frá nýggjari útgávu
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Goymda spæli er frá nýggjari útgávu
|
||||||
|
@@ -4899,9 +4899,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Arvioitu
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Tallentaminen käynnissä,{}odota, kunnes se päättyy!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Tallentaminen käynnissä,{}odota, kunnes se päättyy!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automaattitallennus epäonnistui.
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automaattitallennus epäonnistui.
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Asemaa ei voi lukea.
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Asemaa ei voi lukea.
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Tallennus epäonnistui.{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Pelin tallennus epäonnistui…
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Tiedostoa ei voi poistaa.
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Tiedostoa ei voi poistaa.
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Lataus epäonnistui.{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Pelin lataus epäonnistui…
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Sisäinen virhe: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Sisäinen virhe: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Viallinen tallennus – {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Viallinen tallennus – {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Tallennus on tehty uudemmalla versiolla
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Tallennus on tehty uudemmalla versiolla
|
||||||
|
@@ -4900,9 +4900,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Revenu e
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Sauvegarde en cours...{}Veuillez attendre la fin du processus{NBSP}!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Sauvegarde en cours...{}Veuillez attendre la fin du processus{NBSP}!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Échec de l'enregistrement automatique
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Échec de l'enregistrement automatique
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Impossible d'accéder au disque
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Impossible d'accéder au disque
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}La sauvegarde a échoué{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Impossible de supprimer le fichier
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Impossible de supprimer le fichier
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Le chargement a échoué{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erreur interne{NBSP}: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erreur interne{NBSP}: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Sauvegarde corrompue − {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Sauvegarde corrompue − {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Sauvegarde modifiée avec une version plus récente
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Sauvegarde modifiée avec une version plus récente
|
||||||
|
@@ -3861,9 +3861,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Dit gjit
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Spul noch an it bewarjen,{}graach nog efkes geduld!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Spul noch an it bewarjen,{}graach nog efkes geduld!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatysk opslaan net slagge
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatysk opslaan net slagge
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Koe net fan 'e skiif lêze
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Koe net fan 'e skiif lêze
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Opslaan Mislearre{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kin bestân net fuortsmite
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kin bestân net fuortsmite
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Laden Mislearre{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne flater: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne flater: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Stikkene savegame - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Stikkene savegame - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spul is makke mei in neiere fersje
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spul is makke mei in neiere fersje
|
||||||
|
@@ -4401,9 +4401,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Tuairmse
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ga shàbhaladh fhathast,{}fuirich greis gus am bi e deiseil!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ga shàbhaladh fhathast,{}fuirich greis gus am bi e deiseil!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Dh’fhàillig leis an fhèin-shàbhaladh
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Dh’fhàillig leis an fhèin-shàbhaladh
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Cha ghabh an draibh leughadh
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Cha ghabh an draibh leughadh
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Dh’fhàillig le sàbhaladh a’ gheama{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Cha ghabh am faidhle sguabadh às
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Cha ghabh am faidhle sguabadh às
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Dh’fhàillig le luchdadh a’ gheama{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Mearachd taobh a-staigh: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Mearachd taobh a-staigh: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Tha an geama air shàbhaladh briste - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Tha an geama air shàbhaladh briste - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Chaidh an sàbhaladh seo a dhèanamh le tionndadh as ùire dhen gheama
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Chaidh an sàbhaladh seo a dhèanamh le tionndadh as ùire dhen gheama
|
||||||
|
@@ -4898,9 +4898,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ingreso
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravación en progreso,{}por favor agarda ata que remate!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravación en progreso,{}por favor agarda ata que remate!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autogravado fallido
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autogravado fallido
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}No se pode lee-la unidade
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}No se pode lee-la unidade
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Gravación da partida fallida{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Non se pode borra-lo arquivo
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Non se pode borra-lo arquivo
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Carga da partida fallida{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Partida gravada corrupta - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Partida gravada corrupta - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :A partida gravouse cunha versión máis nova do xogo
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :A partida gravouse cunha versión máis nova do xogo
|
||||||
|
@@ -4450,10 +4450,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapazit
|
|||||||
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer-Einnahmen: {LTBLUE}{CURRENCY_LONG}
|
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer-Einnahmen: {LTBLUE}{CURRENCY_LONG}
|
||||||
|
|
||||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}{NBSP}Tag{P "" e} {BLACK} {STRING}
|
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}{NBSP}Tag{P "" e} {BLACK} {STRING}
|
||||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}{NBSP}Minute{P "" n}{BLACK} {STRING}
|
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}{NBSP}Minuten{BLACK} {STRING}
|
||||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}%{BLACK} {STRING}
|
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}%{BLACK} {STRING}
|
||||||
STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Zuletzt gewartet: {LTBLUE}{DATE_LONG}
|
STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Zuletzt gewartet: {LTBLUE}{DATE_LONG}
|
||||||
STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Zuletzt gewartet: vor {LTBLUE}{NUM} Minuten
|
STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Zuletzt gewartet: vor {LTBLUE}{NUM} Minute{P "" n}
|
||||||
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Erhöhe Serviceintervall um 10 Tage. Strg+Klick um das Serviceintervall um 5 Tage zu erhöhen
|
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Erhöhe Serviceintervall um 10 Tage. Strg+Klick um das Serviceintervall um 5 Tage zu erhöhen
|
||||||
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Erhöhe Serviceintervall um 5 Minuten. Strg+Klick um das Serviceintervall um 1 Minute zu erhöhen
|
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Erhöhe Serviceintervall um 5 Minuten. Strg+Klick um das Serviceintervall um 1 Minute zu erhöhen
|
||||||
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Erhöhe Serviceintervall um 10 Prozent. Strg+Klick um das Serviceintervall um 5 Prozent zu erhöhen
|
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Erhöhe Serviceintervall um 10 Prozent. Strg+Klick um das Serviceintervall um 5 Prozent zu erhöhen
|
||||||
@@ -4644,7 +4644,7 @@ STR_ORDER_REFIT_ORDER :(auf {STRING} u
|
|||||||
STR_ORDER_REFIT_STOP_ORDER :(auf {STRING} umrüsten und stoppen)
|
STR_ORDER_REFIT_STOP_ORDER :(auf {STRING} umrüsten und stoppen)
|
||||||
STR_ORDER_STOP_ORDER :(Stopp)
|
STR_ORDER_STOP_ORDER :(Stopp)
|
||||||
|
|
||||||
STR_ORDER_WAIT_TO_UNBUNCH :(warte auf Entpulkung)
|
STR_ORDER_WAIT_TO_UNBUNCH :(Warte auf Entpulkung)
|
||||||
|
|
||||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Station unbenutzbar){POP_COLOUR} {STRING} {STATION} {STRING}
|
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Station unbenutzbar){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||||
@@ -4900,9 +4900,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Geschät
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Speichern läuft,{}bitte warten, bis es beendet ist!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Speichern läuft,{}bitte warten, bis es beendet ist!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosicherung fehlgeschlagen
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosicherung fehlgeschlagen
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Laufwerk nicht betriebsbereit
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Laufwerk nicht betriebsbereit
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spielspeicherung fehlgeschlagen{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Datei kann nicht gelöscht werden
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Datei kann nicht gelöscht werden
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Laden des Spieles fehlgeschlagen{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interner Fehler: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interner Fehler: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Spielstandsdatei defekt – {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Spielstandsdatei defekt – {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spielstand wurde mit einer neueren Spielversion erstellt
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spielstand wurde mit einer neueren Spielversion erstellt
|
||||||
|
@@ -344,7 +344,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Κλεί
|
|||||||
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Τίτλος παραθύρου - σύρετε το για να το μετακινήσετε
|
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Τίτλος παραθύρου - σύρετε το για να το μετακινήσετε
|
||||||
STR_TOOLTIP_SHADE :{BLACK}Σκίαση παραθύρου - Εμφάνιση μόνο της μπάρας τιτλου
|
STR_TOOLTIP_SHADE :{BLACK}Σκίαση παραθύρου - Εμφάνιση μόνο της μπάρας τιτλου
|
||||||
STR_TOOLTIP_DEBUG :{BLACK}Εμφάνιση πληροφοριών αποσφαλμάτωσης για NewGRF
|
STR_TOOLTIP_DEBUG :{BLACK}Εμφάνιση πληροφοριών αποσφαλμάτωσης για NewGRF
|
||||||
STR_TOOLTIP_DEFSIZE :{BLACK}Κλιμακώνει το παράθυρο στο προκαθορισμένο μέγεθος. Με Ctrl+Click αποθηκεύεται το τρέχον μέγεθος ως προκαθορισμένο
|
STR_TOOLTIP_DEFSIZE :{BLACK}Κλιμακώνει το παράθυρο στο προκαθορισμένο μέγεθος. Με Ctrl+Κλικ αποθηκεύεται το τρέχον μέγεθος ως προκαθορισμένο
|
||||||
STR_TOOLTIP_STICKY :{BLACK}Σημειώστε αυτό το παραθύρο ωστέ να μην κλείνει από το πλήκτρο «Κλείσιμο Όλων των Παραθύρων». Πατήστε Ctrl+Κλικ για να αποθηκεύσετε την κατάσταση απο επιλογή
|
STR_TOOLTIP_STICKY :{BLACK}Σημειώστε αυτό το παραθύρο ωστέ να μην κλείνει από το πλήκτρο «Κλείσιμο Όλων των Παραθύρων». Πατήστε Ctrl+Κλικ για να αποθηκεύσετε την κατάσταση απο επιλογή
|
||||||
STR_TOOLTIP_RESIZE :{BLACK}Κάντε κλίκ και σύρετε για να αλλάξετε το μέγεθος του παραθύρου
|
STR_TOOLTIP_RESIZE :{BLACK}Κάντε κλίκ και σύρετε για να αλλάξετε το μέγεθος του παραθύρου
|
||||||
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Εναλλαγή μεγάλου/μικρού παραθύρου
|
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Εναλλαγή μεγάλου/μικρού παραθύρου
|
||||||
@@ -972,7 +972,7 @@ STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLAC
|
|||||||
STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Βελτιωμένες μέθοδοι καλλιέργειας στην {INDUSTRY} αναμένονται να διπλασιάσουν την παραγωγή!
|
STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Βελτιωμένες μέθοδοι καλλιέργειας στην {INDUSTRY} αναμένονται να διπλασιάσουν την παραγωγή!
|
||||||
STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK} Η παραγωγή {STRING.geniki} στ{G o η ο} {INDUSTRY} αυξήθηκε κατά {COMMA}%!
|
STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK} Η παραγωγή {STRING.geniki} στ{G o η ο} {INDUSTRY} αυξήθηκε κατά {COMMA}%!
|
||||||
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Η παραγωγή στ{G o η ο} {INDUSTRY} μειώθηκε κατά 50%
|
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Η παραγωγή στ{G o η ο} {INDUSTRY} μειώθηκε κατά 50%
|
||||||
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Μόλυνση από έντομα προκαλεί καταστροφή στη {INDUSTRY}!{}Η παραγωγή μειώθηκε κατά 50%
|
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Προσβολή από έντομα προκαλεί καταστροφή στη {INDUSTRY}!{}Η παραγωγή μειώθηκε κατά 50%
|
||||||
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK} Η παραγωγή {STRING.geniki} στ{G o η ο} {INDUSTRY} μειώθηκε κατά {COMMA}%!
|
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK} Η παραγωγή {STRING.geniki} στ{G o η ο} {INDUSTRY} μειώθηκε κατά {COMMA}%!
|
||||||
|
|
||||||
###length VEHICLE_TYPES
|
###length VEHICLE_TYPES
|
||||||
@@ -1460,13 +1460,13 @@ STR_CONFIG_SETTING_INFLATION :Πληθωρι
|
|||||||
STR_CONFIG_SETTING_INFLATION_HELPTEXT :Ενεργοποίηση του πληθωρισμού στην οικονομία, όπου τα κόστη αυξάνονται ελάχιστα ταχύτερα από τις πληρωμές
|
STR_CONFIG_SETTING_INFLATION_HELPTEXT :Ενεργοποίηση του πληθωρισμού στην οικονομία, όπου τα κόστη αυξάνονται ελάχιστα ταχύτερα από τις πληρωμές
|
||||||
|
|
||||||
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Μέγιστο μήκος γέφυρας: {STRING}
|
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Μέγιστο μήκος γέφυρας: {STRING}
|
||||||
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Μέγιστο μήκος για κτίσιμο γεφυρών
|
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Μέγιστο μήκος για κατασκευή γεφυρών
|
||||||
|
|
||||||
STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Μέγιστο ύψος γέφυρας: {STRING}
|
STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Μέγιστο ύψος γέφυρας: {STRING}
|
||||||
STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Μέγιστο ύψος για το χτίσιμο γεφυρών
|
STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Μέγιστο ύψος για την κατασκευή γεφυρών
|
||||||
|
|
||||||
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Μέγιστο μήκος σήραγγας: {STRING}
|
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Μέγιστο μήκος σήραγγας: {STRING}
|
||||||
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Μέγιστο μήκος για κτίσιμο συράγγων
|
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Μέγιστο μήκος για κατασκευή σηράγγων
|
||||||
|
|
||||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Χειροκίνητη μέθοδος κατασκευής βιομηχανιών πρώτων υλών: {STRING}
|
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Χειροκίνητη μέθοδος κατασκευής βιομηχανιών πρώτων υλών: {STRING}
|
||||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Μέθοδος χρηματοδότησης πρωτογενούς βιομηχανίας. «Καμία» σημαίνει ότι δεν γίνεται να χρηματοδοτηθεί καμία βιομηχανία, «Αναζήτηση» σημαίνει ότι η χρηματοδότηση είναι εφικτή, αλλά η κατασκευή πραγματοποιείται σε τυχαίο σημείο του χάρτη και είναι πιθανό να αποτύχει, «Όπως οι άλλες βιομηχανίες» σημαίνει πως οι πρωτογενείς βιομηχανίες είναι εφικτό να κατασκευαστούν από εταιρείες όπως οι δευτερογενείς βιομηχανίες σε οποιαδήποτε θέση θέλουν
|
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Μέθοδος χρηματοδότησης πρωτογενούς βιομηχανίας. «Καμία» σημαίνει ότι δεν γίνεται να χρηματοδοτηθεί καμία βιομηχανία, «Αναζήτηση» σημαίνει ότι η χρηματοδότηση είναι εφικτή, αλλά η κατασκευή πραγματοποιείται σε τυχαίο σημείο του χάρτη και είναι πιθανό να αποτύχει, «Όπως οι άλλες βιομηχανίες» σημαίνει πως οι πρωτογενείς βιομηχανίες είναι εφικτό να κατασκευαστούν από εταιρείες όπως οι δευτερογενείς βιομηχανίες σε οποιαδήποτε θέση θέλουν
|
||||||
@@ -1476,7 +1476,7 @@ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Όπως οι
|
|||||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Διερεύνηση προοπτικών
|
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Διερεύνηση προοπτικών
|
||||||
|
|
||||||
STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Επίπεδη περιοχή γύρω από βιομηχανίες: {STRING}
|
STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Επίπεδη περιοχή γύρω από βιομηχανίες: {STRING}
|
||||||
STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Επίπεδος χώρος γύρω από μια βιομηχανία. Αυτό εξασφαλίζει ότι θα παραμείνει διαθέσιμος κενός χώρος γύρω από μια βιομηχανία για να κτισθούν γραμμές, κλπ
|
STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Επίπεδος χώρος γύρω από μια βιομηχανία. Αυτό εξασφαλίζει ότι θα παραμείνει διαθέσιμος κενός χώρος γύρω από μια βιομηχανία για να κατασκευαστούν γραμμές, κλπ
|
||||||
|
|
||||||
STR_CONFIG_SETTING_MULTIPINDTOWN :Επιτρέπονται πολλαπλές όμοιες βιομηχανίες ανά πόλη: {STRING}
|
STR_CONFIG_SETTING_MULTIPINDTOWN :Επιτρέπονται πολλαπλές όμοιες βιομηχανίες ανά πόλη: {STRING}
|
||||||
STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Συνήθως, μια πόλη δεν επιθυμεί περισσότερες από μία βιομηχανία κάθε είδους. Αυτή η ρύθμιση επιτρέπει περισσότερες βιομηχανίες του ίδιου είδους στην ίδια πόλη.
|
STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Συνήθως, μια πόλη δεν επιθυμεί περισσότερες από μία βιομηχανία κάθε είδους. Αυτή η ρύθμιση επιτρέπει περισσότερες βιομηχανίες του ίδιου είδους στην ίδια πόλη.
|
||||||
@@ -2018,7 +2018,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} τετ
|
|||||||
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Όταν σύρετε, διατηρείται σταθερή απόσταση μεταξύ των σημάτων: {STRING}
|
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Όταν σύρετε, διατηρείται σταθερή απόσταση μεταξύ των σημάτων: {STRING}
|
||||||
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Επιλέξτε τη συμπεριφορά της τοποθέτησης σημάτων όταν πατάτε Ctrl και σύρετε. Όταν είναι απενεργοποιημένο, τα σήματα τοποθετούνται γύρω από σήραγγες και γέφυρες για να αποφεύγονται μεγάλα τμήματα χωρίς σήματα. Όταν είναι ενεργοποιημένο, τα σήματα τοποθετούνται κάθε n τετραγωνίδια, κάνοντας ευκολότερη την ευθυγράμμιση των σημάτων σε παράλληλες γραμμές
|
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Επιλέξτε τη συμπεριφορά της τοποθέτησης σημάτων όταν πατάτε Ctrl και σύρετε. Όταν είναι απενεργοποιημένο, τα σήματα τοποθετούνται γύρω από σήραγγες και γέφυρες για να αποφεύγονται μεγάλα τμήματα χωρίς σήματα. Όταν είναι ενεργοποιημένο, τα σήματα τοποθετούνται κάθε n τετραγωνίδια, κάνοντας ευκολότερη την ευθυγράμμιση των σημάτων σε παράλληλες γραμμές
|
||||||
|
|
||||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Αυτόματο κτίσιμο σηματοφόρων πριν από το: {STRING}
|
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Αυτόματη κατασκευή σηματοφόρων πριν από το: {STRING}
|
||||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Ορίζεται το έτος κατά το οποίο θα χρησιμοποιούνται τα ηλεκτρικά σήματα στις σιδηροτροχιές. Πριν από αυτό, θα χρησιμοποιούνται μηχανικά σήματα (που έχουν ακριβώς την ίδια λειτουργία, αλλά έχουν διαφορετική μορφή)
|
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Ορίζεται το έτος κατά το οποίο θα χρησιμοποιούνται τα ηλεκτρικά σήματα στις σιδηροτροχιές. Πριν από αυτό, θα χρησιμοποιούνται μηχανικά σήματα (που έχουν ακριβώς την ίδια λειτουργία, αλλά έχουν διαφορετική μορφή)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Περιήγηση στους τύπους σηματοδότησης: {STRING}
|
STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Περιήγηση στους τύπους σηματοδότησης: {STRING}
|
||||||
@@ -2042,9 +2042,9 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :πλέγμα 2x
|
|||||||
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :πλέγμα 3x3
|
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :πλέγμα 3x3
|
||||||
STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Τυχαίο
|
STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Τυχαίο
|
||||||
|
|
||||||
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Οι πόλεις επιτρέπεται να χτίσουν δρόμους: {STRING}
|
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Οι πόλεις επιτρέπεται να κατασκευάζουν δρόμους: {STRING}
|
||||||
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Επιτρέπεται στις πόλεις να κατασκευάζουν δρόμους για ανάπτυξη. Απενεργοποιήστε για να αποτρέπονται οι τοπικές αρχές από την αυτόνομη κατασκευή δρόμων
|
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Επιτρέπεται στις πόλεις να κατασκευάζουν δρόμους για ανάπτυξη. Απενεργοποιήστε για να αποτρέπονται οι τοπικές αρχές από την αυτόνομη κατασκευή δρόμων
|
||||||
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Οι πόλεις επιτρέπουν το κτίσιμο ισόπεδων διασταυρώσεων: {STRING}
|
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Οι πόλεις επιτρέπουν την κατασκευή ισόπεδων διασταυρώσεων: {STRING}
|
||||||
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση επιτρέπει στις πόλεις να κατασκευάζουν επίπεδες διαβάσεις
|
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση επιτρέπει στις πόλεις να κατασκευάζουν επίπεδες διαβάσεις
|
||||||
|
|
||||||
STR_CONFIG_SETTING_NOISE_LEVEL :Περιορισμός τοποθέτησης αεροδρομίων ανάλογα με το επίπεδο θορύβου: {STRING}
|
STR_CONFIG_SETTING_NOISE_LEVEL :Περιορισμός τοποθέτησης αεροδρομίων ανάλογα με το επίπεδο θορύβου: {STRING}
|
||||||
@@ -2755,7 +2755,7 @@ STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Μαρκ
|
|||||||
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Αποεπιλογή όλων
|
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Αποεπιλογή όλων
|
||||||
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Σημείωση όλων των περιεχομένων να μην κατέβουν
|
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Σημείωση όλων των περιεχομένων να μην κατέβουν
|
||||||
STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Αναζήτηση εξωτερικών ιστοσελίδων
|
STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Αναζήτηση εξωτερικών ιστοσελίδων
|
||||||
STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Ψάξτε για περιεχόμενο που δεν είναι διαθέσιμο μέσω την υπηρεσία λήψης περιεχομένου του OpenTTD σε ιστοσελίδες που δεν είναι συνδεδεμένες με το OpenTTD
|
STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Αναζήτηση για περιεχόμενο που δεν είναι διαθέσιμο μέσω την υπηρεσία λήψης περιεχομένου του OpenTTD σε ιστοσελίδες που δεν σχετίζονται με το OpenTTD
|
||||||
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Φεύγετε από το OpenTTD!
|
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Φεύγετε από το OpenTTD!
|
||||||
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Οι όροι και προϋποθέσεις για τη λήψη περιεχομένου από εξωτερικές ιστοσελίδες διαφέρουν.{}Θα πρέπει να αναφερθείτε στις εξωτερικές ιστοσελίδες για οδηγίες περί της εγκατάστασης του περιεχομένου στο OpenTTD.{}Θέλετε να συνεχίσετε;
|
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Οι όροι και προϋποθέσεις για τη λήψη περιεχομένου από εξωτερικές ιστοσελίδες διαφέρουν.{}Θα πρέπει να αναφερθείτε στις εξωτερικές ιστοσελίδες για οδηγίες περί της εγκατάστασης του περιεχομένου στο OpenTTD.{}Θέλετε να συνεχίσετε;
|
||||||
STR_CONTENT_FILTER_TITLE :{BLACK}Ετικέτα/όνομα φίλτρου:
|
STR_CONTENT_FILTER_TITLE :{BLACK}Ετικέτα/όνομα φίλτρου:
|
||||||
@@ -2773,7 +2773,7 @@ STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Αυτ
|
|||||||
STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Το έχετε ήδη αυτό
|
STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Το έχετε ήδη αυτό
|
||||||
STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Αυτό το περιεχόμενο είναι άγνωστο και δεν γίνεται να κατέβει από το OpenTTD
|
STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Αυτό το περιεχόμενο είναι άγνωστο και δεν γίνεται να κατέβει από το OpenTTD
|
||||||
|
|
||||||
STR_CONTENT_DETAIL_UPDATE :{SILVER}Αυτό είναι αντικατάσταση ενός υπάρχοντος {STRING}
|
STR_CONTENT_DETAIL_UPDATE :{SILVER}Αυτό αντικαθιστά ένα υπάρχον {STRING}
|
||||||
STR_CONTENT_DETAIL_NAME :{SILVER}Όνομα: {WHITE}{STRING}
|
STR_CONTENT_DETAIL_NAME :{SILVER}Όνομα: {WHITE}{STRING}
|
||||||
STR_CONTENT_DETAIL_VERSION :{SILVER}Έκδοση: {WHITE}{STRING}
|
STR_CONTENT_DETAIL_VERSION :{SILVER}Έκδοση: {WHITE}{STRING}
|
||||||
STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Περιγραφή: {WHITE}{STRING}
|
STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Περιγραφή: {WHITE}{STRING}
|
||||||
@@ -2830,7 +2830,7 @@ STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Εναλ
|
|||||||
STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για γέφυρες. Ctrl+Κλικ για να την κλειδώσετε
|
STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για γέφυρες. Ctrl+Κλικ για να την κλειδώσετε
|
||||||
STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για κτίρια όπως φάρους και κεραίες. Ctrl+Κλικ για να την κλειδώσετε
|
STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για κτίρια όπως φάρους και κεραίες. Ctrl+Κλικ για να την κλειδώσετε
|
||||||
STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για τις συνδέσεις. Ctrl+Κλικ για να την κλειδώσετε
|
STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για τις συνδέσεις. Ctrl+Κλικ για να την κλειδώσετε
|
||||||
STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για φόρτωση και κείμενο κόστους/εσόδων. Ctrl+Click για να την κλειδώσετε
|
STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για φόρτωση και κείμενο κόστους/εσόδων. Ctrl+Κλικ για να την κλειδώσετε
|
||||||
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Επιλέξτε τα αντικείμενα που θα είναι αόρατα αντί για διάφανα
|
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Επιλέξτε τα αντικείμενα που θα είναι αόρατα αντί για διάφανα
|
||||||
|
|
||||||
# Linkgraph legend window
|
# Linkgraph legend window
|
||||||
@@ -2864,10 +2864,10 @@ STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}Κόστ
|
|||||||
|
|
||||||
# Join station window
|
# Join station window
|
||||||
STR_JOIN_STATION_CAPTION :{WHITE}Συνένωση σταθμού
|
STR_JOIN_STATION_CAPTION :{WHITE}Συνένωση σταθμού
|
||||||
STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Χτίστε ένα ξεχωριστό σταθμό
|
STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Κατασκευάστε ένα ξεχωριστό σταθμό
|
||||||
|
|
||||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Συνένωση σημείου καθοδήγησης
|
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Συνένωση σημείου καθοδήγησης
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Κτίσιμο ενός ξεχωριστού σημείου καθοδήγησης
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}κατασκευή ενός ξεχωριστού σημείου καθοδήγησης
|
||||||
|
|
||||||
# Generic toolbar
|
# Generic toolbar
|
||||||
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Απενεργοποιημένο διότι δεν υπάρχουν διαθέσιμα οχήματα για αυτή την υποδομή
|
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Απενεργοποιημένο διότι δεν υπάρχουν διαθέσιμα οχήματα για αυτή την υποδομή
|
||||||
@@ -2914,7 +2914,7 @@ STR_STATION_BUILD_DRAG_DROP :{BLACK}Σύρε
|
|||||||
STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Φτιάξε ένα σταθμό χρησιμοποιώντας σύρσιμο και ελευθέρωση
|
STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Φτιάξε ένα σταθμό χρησιμοποιώντας σύρσιμο και ελευθέρωση
|
||||||
|
|
||||||
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Επιλογή τύπου σταθμών για εμφάνιση
|
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Επιλογή τύπου σταθμών για εμφάνιση
|
||||||
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Επιλέξτε τον τύπο του σταθμού προς κτίσιμο
|
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Επιλέξτε τον τύπο του σταθμού προς κατασκευή
|
||||||
|
|
||||||
STR_STATION_CLASS_DFLT :Προεπιλεγμένος
|
STR_STATION_CLASS_DFLT :Προεπιλεγμένος
|
||||||
STR_STATION_CLASS_DFLT_STATION :Προεπιλεγμένος σταθμός
|
STR_STATION_CLASS_DFLT_STATION :Προεπιλεγμένος σταθμός
|
||||||
@@ -2928,16 +2928,16 @@ STR_BUILD_SIGNAL_TOGGLE_ADVANCED_SIGNAL_TOOLTIP :{BLACK}Εναλ
|
|||||||
STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Σηματοδότες Τμήματος (σηματοφόρος){}Αυτός είναι ο πιο βασικός τύπος σηματοδότη, επιτρέποντας μόνο ένα τρένο να βρίσκεται σε κάθε τμήμα κάθε φορά
|
STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Σηματοδότες Τμήματος (σηματοφόρος){}Αυτός είναι ο πιο βασικός τύπος σηματοδότη, επιτρέποντας μόνο ένα τρένο να βρίσκεται σε κάθε τμήμα κάθε φορά
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Σηματοδότης-Εισόδου (σηματοφόρος){}Πράσινο όσο υπάρχει ένας ή περισσότεροι πράσινοι σηματοδότες-εξόδου στο επόμενο τμήμα γράμμης. Διαφορετικά δείχνει κόκκινο
|
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Σηματοδότης-Εισόδου (σηματοφόρος){}Πράσινο όσο υπάρχει ένας ή περισσότεροι πράσινοι σηματοδότες-εξόδου στο επόμενο τμήμα γράμμης. Διαφορετικά δείχνει κόκκινο
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Σηματοδότης-Εξόδου (σηματοφόρος){}Συμπεριφέρεται με τον ίδιο τρόπο οπως οι σηματοδότες τμήματος αλλά είναι απαραίτητο να τεθεί το σωστό χρώμα στους προ-σηματοδότες είσοδου και συνδυαστικούς
|
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Σηματοδότης-Εξόδου (σηματοφόρος){}Συμπεριφέρεται με τον ίδιο τρόπο οπως οι σηματοδότες τμήματος αλλά είναι απαραίτητο να τεθεί το σωστό χρώμα στους προ-σηματοδότες είσοδου και συνδυαστικούς
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Συνδυαστικός Σηματοδότης (σηματοφόρος){}Ο συνδυαστικός σηματοδότης απλά λειτουργεί ταυτόχρονα ως σηματοδότης εισόδου και εξόδου. Αυτό επιτρέπει το κτίσιμο μεγάλυτερων «δέντρων» με προ-σηματοδότες
|
STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Συνδυαστικός Σηματοδότης (σηματοφόρος){}Ο συνδυαστικός σηματοδότης απλά λειτουργεί ταυτόχρονα ως σηματοδότης εισόδου και εξόδου. Αυτό επιτρέπει την κατασκευή μεγάλυτερων «δέντρων» με προ-σηματοδότες
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Σηματοδότης Τροχιάς (σηματοφόρος){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Κανονικοί σηματοδότες τροχιάς μπορούν να περαστούν από την πίσω πλευρά
|
STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Σηματοδότης Τροχιάς (σηματοφόρος){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Κανονικοί σηματοδότες τροχιάς μπορούν να περαστούν από την πίσω πλευρά
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Μονόδρομος Σηματοδότης Τροχιάς (σηματοφόρος){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Μονόδρομοι σηματοδότες τροχιάς δεν μπορούν να περαστούν από την πίσω πλευρά.
|
STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Μονόδρομος Σηματοδότης Τροχιάς (σηματοφόρος){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Μονόδρομοι σηματοδότες τροχιάς δεν μπορούν να περαστούν από την πίσω πλευρά.
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Σηματοδότης Τμήματος (ηλεκτρικός){}Αυτός είναι ο πιο βασικός τύπος σηματοδότη, επιτρέποντας μόνο ένα τρένο να είναι στο ίδιο τμήμα την ίδια στιγμή.
|
STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Σηματοδότης Τμήματος (ηλεκτρικός){}Αυτός είναι ο πιο βασικός τύπος σηματοδότη, επιτρέποντας μόνο ένα τρένο να είναι στο ίδιο τμήμα την ίδια στιγμή.
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Σηματοδότης Εισόδου (ηλεκτρικός){}Πράσινο όσο υπάρχει ένας ή περισσότεροι πράσινοι σηματοδότες εξόδου στο επόμενο τμήμα γραμμής. Διαφορετικά είναι κόκκινο
|
STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Σηματοδότης Εισόδου (ηλεκτρικός){}Πράσινο όσο υπάρχει ένας ή περισσότεροι πράσινοι σηματοδότες εξόδου στο επόμενο τμήμα γραμμής. Διαφορετικά είναι κόκκινο
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Σηματοδότης Εξόδου (ηλεκτρικός){}Συμπεριφέρεται με τον ίδιο τρόπο όπως οι σηματοδότες τμήματος αλλά είναι απαραίτητο να θέσει το σωστό χρώμα στους προ-σηματοδότες εισόδου και συνδυαστικούς
|
STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Σηματοδότης Εξόδου (ηλεκτρικός){}Συμπεριφέρεται με τον ίδιο τρόπο όπως οι σηματοδότες τμήματος αλλά είναι απαραίτητο να θέσει το σωστό χρώμα στους προ-σηματοδότες εισόδου και συνδυαστικούς
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Συνδυαστικός Σηματοδότης (ηλεκτρικός){}Ο συνδυαστικός σηματοδότης δουλεύει απλά ως σηματοδότης εισόδου και εξόδου ταυτόχρονα. Αυτό σας επιτρέπει το κτίσιμο μεγάλων «δέντρων» με προ-σηματοδότες
|
STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Συνδυαστικός Σηματοδότης (ηλεκτρικός){}Ο συνδυαστικός σηματοδότης δουλεύει απλά ως σηματοδότης εισόδου και εξόδου ταυτόχρονα. Αυτό σας επιτρέπει την κατασκευή μεγάλων «δέντρων» με προ-σηματοδότες
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Σηματοδότης Τροχιάς (ηλεκτρικός){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Κανονικοί σηματοδότες τροχιάς μπορούν να περαστούν από την πίσω πλευρά
|
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Σηματοδότης Τροχιάς (ηλεκτρικός){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Κανονικοί σηματοδότες τροχιάς μπορούν να περαστούν από την πίσω πλευρά
|
||||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Μονόδρομος Σηματοδότης Τροχιάς (ηλεκτρικός){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Μονόδρομοι σηματοδότες τροχιάς δεν μπορούν να περαστούν από την πίσω πλευρά
|
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Μονόδρομος Σηματοδότης Τροχιάς (ηλεκτρικός){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Μονόδρομοι σηματοδότες τροχιάς δεν μπορούν να περαστούν από την πίσω πλευρά
|
||||||
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Μετατροπή σήματος{}Κάντε κλικ σε ένα υπάρχον σήμα για να το μετατρέψετε στον επιλεγμένο τύπο και παραλλαγή. Ctrl+Click για εναλλαγή της υπάρχουσας παραλλαγής. Το Shift+Click εμφανίζει το εκτιμώμενο κόστος μετατροπής
|
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Μετατροπή σήματος{}Κάντε κλικ σε ένα υπάρχον σήμα για να το μετατρέψετε στον επιλεγμένο τύπο και παραλλαγή. Ctrl+Κλικ για εναλλαγή της υπάρχουσας παραλλαγής. Το Shift+Κλικ εμφανίζει το εκτιμώμενο κόστος μετατροπής
|
||||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Απόσταση μεταξύ σηματοδοτών με σύρσιμο
|
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Απόσταση μεταξύ σηματοδοτών με σύρσιμο
|
||||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Μείωση απόστασης μεταξύ σηματοδοτών με σύρσιμο
|
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Μείωση απόστασης μεταξύ σηματοδοτών με σύρσιμο
|
||||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Αύξηση απόστασης μεταξύ σηματοδοτών με σύρσιμο
|
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Αύξηση απόστασης μεταξύ σηματοδοτών με σύρσιμο
|
||||||
@@ -2979,7 +2979,7 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Κατα
|
|||||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Κατασκευή τούνελ δρόμου. Επιπρόσθετα, με Shift εμφανίζεται εκτίμηση κόστους μόνο
|
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Κατασκευή τούνελ δρόμου. Επιπρόσθετα, με Shift εμφανίζεται εκτίμηση κόστους μόνο
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Κατασκευή τούνελ τροχιοδρόμου. Επιπρόσθετα πατήστε το Shift για εμφάνιση εκτίμησης κόστους μόνο
|
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Κατασκευή τούνελ τροχιοδρόμου. Επιπρόσθετα πατήστε το Shift για εμφάνιση εκτίμησης κόστους μόνο
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης για αυτοκινητόδρομους
|
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης για αυτοκινητόδρομους
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Εναλλαγή κτισίματος/αφαίρεσης της κατασκευής τροχιόδρομου
|
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Εναλλαγή προσθήκης/αφαίρεσης για την κατασκευή τροχιόδρομου
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Μετατρέψτε/Αναβαθμίστε τον τύπο του δρόμου. Επιπρόσθετα, με Shift εμφανίζεται εκτίμηση κόστους μόνο
|
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Μετατρέψτε/Αναβαθμίστε τον τύπο του δρόμου. Επιπρόσθετα, με Shift εμφανίζεται εκτίμηση κόστους μόνο
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Μετατρέψτε/Αναβαθμίστε τον τύπο του τραμ. Επιπρόσθετα, με Shift εμφανίζεται εκτίμηση κόστους μόνο
|
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Μετατρέψτε/Αναβαθμίστε τον τύπο του τραμ. Επιπρόσθετα, με Shift εμφανίζεται εκτίμηση κόστους μόνο
|
||||||
|
|
||||||
@@ -3058,7 +3058,7 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Αγορ
|
|||||||
# Object construction window
|
# Object construction window
|
||||||
STR_OBJECT_BUILD_CAPTION :{WHITE}Επιλογή Αντικείμενου
|
STR_OBJECT_BUILD_CAPTION :{WHITE}Επιλογή Αντικείμενου
|
||||||
STR_OBJECT_BUILD_TOOLTIP :{BLACK}Επιλογή αντικείμενου για κατασκευή. Ctrl+Κλικ+Σύρσιμο για διαγώνια επιλογή. Επιπρόσθετα, με Shift εμφανίζεται εκτίμηση κόστους μόνο
|
STR_OBJECT_BUILD_TOOLTIP :{BLACK}Επιλογή αντικείμενου για κατασκευή. Ctrl+Κλικ+Σύρσιμο για διαγώνια επιλογή. Επιπρόσθετα, με Shift εμφανίζεται εκτίμηση κόστους μόνο
|
||||||
STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Επιλογή της κατηγορίας του αντικείμενου για κτίσιμο
|
STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Επιλογή της κατηγορίας του αντικείμενου για κατασκευή
|
||||||
STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Προεπισκόπηση του αντικείμενου
|
STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Προεπισκόπηση του αντικείμενου
|
||||||
STR_OBJECT_BUILD_SIZE :{BLACK}Μέγεθος: {GOLD}{NUM} x {NUM} τετράγωνα
|
STR_OBJECT_BUILD_SIZE :{BLACK}Μέγεθος: {GOLD}{NUM} x {NUM} τετράγωνα
|
||||||
|
|
||||||
@@ -3135,7 +3135,7 @@ STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Γέμι
|
|||||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Δημιουργία τυχαίων βιομηχανιών
|
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Δημιουργία τυχαίων βιομηχανιών
|
||||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Σίγουρα θέλετε να δημιουργήσετε πολλές τυχαίες βιομηχανίες;
|
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Σίγουρα θέλετε να δημιουργήσετε πολλές τυχαίες βιομηχανίες;
|
||||||
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Κόστος: {YELLOW}{CURRENCY_LONG}
|
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Κόστος: {YELLOW}{CURRENCY_LONG}
|
||||||
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Διερεύνηση
|
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Προοπτική
|
||||||
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Κατασκευή
|
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Κατασκευή
|
||||||
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Χρηματοδότηση
|
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Χρηματοδότηση
|
||||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Αφαίρεση όλων των βιομηχανιών
|
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Αφαίρεση όλων των βιομηχανιών
|
||||||
@@ -3379,7 +3379,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Δώστ
|
|||||||
# World generation
|
# World generation
|
||||||
STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Δημιουργία Κόσμου
|
STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Δημιουργία Κόσμου
|
||||||
STR_MAPGEN_MAPSIZE :{BLACK}Διάσταση χάρτη:
|
STR_MAPGEN_MAPSIZE :{BLACK}Διάσταση χάρτη:
|
||||||
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Επιλέξτε το μέγεθος του χάρτη σε τετραγωνίδια. Ο αριθμός των τετραγωνίδιων διαθέσιμα για κτίσιμο θα είναι λίγο χαμηλότερος
|
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Επιλέξτε το μέγεθος του χάρτη σε τετραγωνίδια. Ο αριθμός των τετραγωνίδιων διαθέσιμα για κατασκευή θα είναι λίγο χαμηλότερος
|
||||||
STR_MAPGEN_BY :{BLACK}*
|
STR_MAPGEN_BY :{BLACK}*
|
||||||
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Αριθμός πόλεων:
|
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Αριθμός πόλεων:
|
||||||
STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :Επιλέξτε την πυκνότητα των πόλεων ή έναν προσαρμοσμένο αριθμό
|
STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :Επιλέξτε την πυκνότητα των πόλεων ή έναν προσαρμοσμένο αριθμό
|
||||||
@@ -3748,7 +3748,7 @@ STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Μικρή δι
|
|||||||
STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Μεσαία διαφημιστική καμπάνια
|
STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Μεσαία διαφημιστική καμπάνια
|
||||||
STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Μεγάλη διαφημιστική καμπάνια
|
STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Μεγάλη διαφημιστική καμπάνια
|
||||||
STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Επιχορήγηση ανακατασκευής τοπικού οδικού δικτύου
|
STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Επιχορήγηση ανακατασκευής τοπικού οδικού δικτύου
|
||||||
STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Κτίσιμο αγάλματος του ιδιοκτήτη της εταιρίας
|
STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Κατασκευή αγάλματος του ιδιοκτήτη της εταιρίας
|
||||||
STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Επιχορήγηση νέων κτιρίων
|
STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Επιχορήγηση νέων κτιρίων
|
||||||
STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Αγορά αποκλειστικών δικαιωμάτων μεταφοράς
|
STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Αγορά αποκλειστικών δικαιωμάτων μεταφοράς
|
||||||
STR_LOCAL_AUTHORITY_ACTION_BRIBE :Δωροδοκήστε την τοπική αρχή
|
STR_LOCAL_AUTHORITY_ACTION_BRIBE :Δωροδοκήστε την τοπική αρχή
|
||||||
@@ -3759,7 +3759,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{Y
|
|||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Έναρξη μεγάλης τοπικής διαφημιστικής καμπάνιας, για να προσελκύσετε περισσότερους επιβάτες και εμπορεύματα στις μεταφορικές σας υπηρεσίες.{}Παρέχει μία προσωρινή ώθηση στην βαθμολογία σταθμού σε μία μεγάλη ακτίνα γύρω από το κέντρο της πόλης.{}{POP_COLOUR} Κόστος: {CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Έναρξη μεγάλης τοπικής διαφημιστικής καμπάνιας, για να προσελκύσετε περισσότερους επιβάτες και εμπορεύματα στις μεταφορικές σας υπηρεσίες.{}Παρέχει μία προσωρινή ώθηση στην βαθμολογία σταθμού σε μία μεγάλη ακτίνα γύρω από το κέντρο της πόλης.{}{POP_COLOUR} Κόστος: {CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Χρηματοδοτήστε την ανακατασκευή του αστικού οδικού δικτύου.{}Προκαλεί σημαντική αναστάτωση της οδικής κυκλοφορίας για έως και 6 μήνες.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MONTHS :{PUSH_COLOUR}{YELLOW}Χρηματοδοτήστε την ανακατασκευή του αστικού οδικού δικτύου.{}Προκαλεί σημαντική αναστάτωση της οδικής κυκλοφορίας για έως και 6 μήνες.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MINUTES :{PUSH_COLOUR}{YELLOW}Χρηματοδοτήστε την ανακατασκευή του αστικού οδικού δικτύου.{}Προκαλεί σημαντική αναστάτωση της οδικής κυκλοφορίας για έως και 6 λεπτά.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION_MINUTES :{PUSH_COLOUR}{YELLOW}Χρηματοδοτήστε την ανακατασκευή του αστικού οδικού δικτύου.{}Προκαλεί σημαντική αναστάτωση της οδικής κυκλοφορίας για έως και 6 λεπτά.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Χτίστε ένα άγαλμα προς τιμήν της εταιρίας σας.{}Παρέχει μία μόνιμη ώθηση στην βαθμολογία σταθμών σε αυτή την πόλη.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Κατασκευάστε ένα άγαλμα προς τιμήν της εταιρίας σας.{}Παρέχει μία μόνιμη ώθηση στην βαθμολογία σταθμών σε αυτή την πόλη.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Χρηματοδοτήστε την κατασκευή νέων κτιρίων στην πόλη.{}Παρέχει μια προσωρινή ώθηση στην ανάπτυξη αυτής της πόλης.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Χρηματοδοτήστε την κατασκευή νέων κτιρίων στην πόλη.{}Παρέχει μια προσωρινή ώθηση στην ανάπτυξη αυτής της πόλης.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Αγοράστε αποκλειστικά δικαιώματα μεταφοράς στην πόλη για 12 μήνες.{}Η δημοτική αρχή δεν θα επιτρέψει στους επιβάτες και στο φορτίο να χρησιμοποιούν τους σταθμούς των ανταγωνιστών σας. Μια επιτυχημένη δωροδοκία από έναν ανταγωνιστή θα ακυρώσει αυτό το συμβόλαιο.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MONTHS :{PUSH_COLOUR}{YELLOW}Αγοράστε αποκλειστικά δικαιώματα μεταφοράς στην πόλη για 12 μήνες.{}Η δημοτική αρχή δεν θα επιτρέψει στους επιβάτες και στο φορτίο να χρησιμοποιούν τους σταθμούς των ανταγωνιστών σας. Μια επιτυχημένη δωροδοκία από έναν ανταγωνιστή θα ακυρώσει αυτό το συμβόλαιο.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Αγοράστε αποκλειστικά δικαιώματα μεταφοράς στην πόλη για 12 λεπτά.{}Η δημοτική αρχή δεν θα επιτρέψει στους επιβάτες και στο φορτίο να χρησιμοποιούν τους σταθμούς των ανταγωνιστών σας. Μια επιτυχημένη δωροδοκία από έναν ανταγωνιστή θα ακυρώσει αυτό το συμβόλαιο.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT_MINUTES :{PUSH_COLOUR}{YELLOW}Αγοράστε αποκλειστικά δικαιώματα μεταφοράς στην πόλη για 12 λεπτά.{}Η δημοτική αρχή δεν θα επιτρέψει στους επιβάτες και στο φορτίο να χρησιμοποιούν τους σταθμούς των ανταγωνιστών σας. Μια επιτυχημένη δωροδοκία από έναν ανταγωνιστή θα ακυρώσει αυτό το συμβόλαιο.{}{POP_COLOUR}Κόστος: {CURRENCY_LONG}
|
||||||
@@ -3988,8 +3988,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA}
|
|||||||
STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} αεροδρόμι{P ο α}
|
STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} αεροδρόμι{P ο α}
|
||||||
STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Τίποτα
|
STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Τίποτα
|
||||||
|
|
||||||
STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Κτίσιμο Αρχηγείου
|
STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Κατασκευή Αρχηγείου
|
||||||
STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Κτίσιμο αρχηγείου εταιρίας
|
STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Κατασκευή αρχηγείου εταιρίας
|
||||||
STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Προβολή Αρχηγείου
|
STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Προβολή Αρχηγείου
|
||||||
STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Προβολή αρχηγείου εταιρίας
|
STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Προβολή αρχηγείου εταιρίας
|
||||||
STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Ανοικοδόμηση Αρχηγείου
|
STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Ανοικοδόμηση Αρχηγείου
|
||||||
@@ -4014,7 +4014,7 @@ STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Όνομα Ετ
|
|||||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Όνομα Διευθυντή
|
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Όνομα Διευθυντή
|
||||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Εισάγετε το χρηματικό ποσό που θέλετε να δώσετε
|
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Εισάγετε το χρηματικό ποσό που θέλετε να δώσετε
|
||||||
|
|
||||||
STR_BUY_COMPANY_MESSAGE :{WHITE}Ψάχνουμε μία εταιρία μεταφορών για να εξαγοράσει την εταιρία μας.{}{}Θέλετε να εξαγοράσετε την {COMPANY} για {CURRENCY_LONG};
|
STR_BUY_COMPANY_MESSAGE :{WHITE}Αναζητούμε μια εταιρία μεταφορών για να εξαγοράσει την εταιρία μας.{}{}Θέλετε να εξαγοράσετε την {COMPANY} για {CURRENCY_LONG};
|
||||||
STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Σε μια εχθρική εξαγορά της {COMPANY} θα αγοράσετε όλα τα περιουσιακά στοιχεία, θα εξοφλήσετε όλα τα δάνεια και θα πληρώσετε κέρδη δύο ετών.{}{}Το σύνολο εκτιμάται ότι είναι {CURRENCY_LONG}.{}{}Θέλετε να προχωρήσετε με αυτήν την εχθρική εξαγορά;
|
STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Σε μια εχθρική εξαγορά της {COMPANY} θα αγοράσετε όλα τα περιουσιακά στοιχεία, θα εξοφλήσετε όλα τα δάνεια και θα πληρώσετε κέρδη δύο ετών.{}{}Το σύνολο εκτιμάται ότι είναι {CURRENCY_LONG}.{}{}Θέλετε να προχωρήσετε με αυτήν την εχθρική εξαγορά;
|
||||||
|
|
||||||
# Company infrastructure window
|
# Company infrastructure window
|
||||||
@@ -4429,7 +4429,7 @@ STR_REPLACE_TRAM_VEHICLES :Οχήματα
|
|||||||
|
|
||||||
STR_REPLACE_REMOVE_WAGON :{BLACK}Αφαίρεση βαγονιού: ({STRING}): {ORANGE}{STRING}
|
STR_REPLACE_REMOVE_WAGON :{BLACK}Αφαίρεση βαγονιού: ({STRING}): {ORANGE}{STRING}
|
||||||
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Υποχρεώνει την αυτόματη αντικατάσταση να διατηρεί σταθερό το μήκος του τρένου αφαιρώντας βαγόνια (ξεκινώντας από μπροστά), όταν η αντικατάσταση της μηχανής κάνει το τρένο μεγαλύτερο
|
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Υποχρεώνει την αυτόματη αντικατάσταση να διατηρεί σταθερό το μήκος του τρένου αφαιρώντας βαγόνια (ξεκινώντας από μπροστά), όταν η αντικατάσταση της μηχανής κάνει το τρένο μεγαλύτερο
|
||||||
STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Πατήστε Ctrl+Click για εφαρμογή επίσης στην υπό-ομάδα
|
STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Πατήστε Ctrl+Κλικ για εφαρμογή επίσης στην υπό-ομάδα
|
||||||
|
|
||||||
# Vehicle view
|
# Vehicle view
|
||||||
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
||||||
@@ -4553,12 +4553,12 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Διάσ
|
|||||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Διάστημα επισκευών: {LTBLUE}{COMMA}%{BLACK} {STRING}
|
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Διάστημα επισκευών: {LTBLUE}{COMMA}%{BLACK} {STRING}
|
||||||
STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Τελευταίο service: {LTBLUE}{DATE_LONG}
|
STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Τελευταίο service: {LTBLUE}{DATE_LONG}
|
||||||
STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Τελευταίο service: {LTBLUE}{NUM} λεπτ{P 0 ό ά} πριν
|
STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Τελευταίο service: {LTBLUE}{NUM} λεπτ{P 0 ό ά} πριν
|
||||||
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Αύξηση του διαστήματος συντήρησης κατά 10 ημέρες. Ctrl+Click για αύξηση του διαστήματος συντήρησης κατά 5 ημέρες
|
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Αύξηση του διαστήματος συντήρησης κατά 10 ημέρες. Ctrl+Κλικ για αύξηση του διαστήματος συντήρησης κατά 5 ημέρες
|
||||||
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Αύξηση του διαστήματος συντήρησης κατά 5 λεπτά. Ctrl+Click για αύξηση του διαστήματος συντήρησης κατά 1 λεπτό
|
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Αύξηση του διαστήματος συντήρησης κατά 5 λεπτά. Ctrl+Κλικ για αύξηση του διαστήματος συντήρησης κατά 1 λεπτό
|
||||||
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Αύξηση του διαστήματος εξυπηρέτησης κατά 10 τοις εκατό. Ctrl+Click για αύξηση του διαστήματος εξυπηρέτησης κατά 5 τοις εκατό
|
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Αύξηση του διαστήματος εξυπηρέτησης κατά 10 τοις εκατό. Ctrl+Κλικ για αύξηση του διαστήματος εξυπηρέτησης κατά 5 τοις εκατό
|
||||||
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :Μειώστε το διάστημα μεταξύ των σέρβις κατά 10 ημέρες. Ctrl+Click για να μειώσετε το διάστημα συντήρησης κατά 5 ημέρες
|
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Μειώστε το διάστημα μεταξύ των σέρβις κατά 10 ημέρες. Ctrl+Κλικ για να μειώσετε το διάστημα συντήρησης κατά 5 ημέρες
|
||||||
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :Μειώστε το διάστημα μεταξύ των σέρβις κατά 5 λεπτά. Ctrl+Click για να μειώσετε το διάστημα συντήρησης κατά 1 λεπτό
|
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Μειώστε το διάστημα μεταξύ των σέρβις κατά 5 λεπτά. Ctrl+Κλικ για να μειώσετε το διάστημα συντήρησης κατά 1 λεπτό
|
||||||
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :Μειώστε το διάστημα μεταξύ των σέρβις κατά 10 τοις εκατό. Ctrl+Click για να μειώσετε το διάστημα συντήρησης κατά 5 τοις εκατό.
|
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Μειώστε το διάστημα μεταξύ των σέρβις κατά 10 τοις εκατό. Ctrl+Κλικ για να μειώσετε το διάστημα συντήρησης κατά 5 τοις εκατό.
|
||||||
|
|
||||||
STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Αλλάξτε τον τύπο διαστήματος επισκευών
|
STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Αλλάξτε τον τύπο διαστήματος επισκευών
|
||||||
STR_VEHICLE_DETAILS_DEFAULT :Προκαθορισμένο
|
STR_VEHICLE_DETAILS_DEFAULT :Προκαθορισμένο
|
||||||
@@ -4632,7 +4632,7 @@ STR_ORDER_INDEX :{COMMA}:{NBSP}
|
|||||||
STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING}
|
STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING}
|
||||||
|
|
||||||
STR_ORDERS_END_OF_ORDERS :- - Τέλος Εντολών - -
|
STR_ORDERS_END_OF_ORDERS :- - Τέλος Εντολών - -
|
||||||
STR_ORDERS_END_OF_SHARED_ORDERS :- - Τέλος Μοιρασμένων Οδηγιών - -
|
STR_ORDERS_END_OF_SHARED_ORDERS :- - Τέλος Διαμοιρασμένων Εντολών - -
|
||||||
|
|
||||||
# Order bottom buttons
|
# Order bottom buttons
|
||||||
STR_ORDER_NON_STOP :{BLACK}Χωρίς στάση
|
STR_ORDER_NON_STOP :{BLACK}Χωρίς στάση
|
||||||
@@ -4717,7 +4717,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Πήγαινε
|
|||||||
STR_ORDER_GO_TO_NEAREST_HANGAR :Πήγαινε στο κοντινότερο υπόστεγο
|
STR_ORDER_GO_TO_NEAREST_HANGAR :Πήγαινε στο κοντινότερο υπόστεγο
|
||||||
STR_ORDER_CONDITIONAL :Εκτέλεση εντόλης υπο προυπόθεση
|
STR_ORDER_CONDITIONAL :Εκτέλεση εντόλης υπο προυπόθεση
|
||||||
STR_ORDER_SHARE :Μοίρασμα εντολών
|
STR_ORDER_SHARE :Μοίρασμα εντολών
|
||||||
STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Εισάγετε μια νέα εντολή πριν την επιλεγμένη ή προσθέστε στο τέλος της λίστας. Ctrl+Κλικ σε έναν σταθμό για ορισμό εντολής σε "πλήρης φόρτωση οποιουδήποτε εμπορεύματος", σε σημείο διαδρομής για αντιστροφή εντολής "χωρίς στάση εξ ορισμού" ή σε αμαξοστάσιο για "αποσύνδεση". Κάντε κλικ σε άλλο όχημα για να αντιγράψετε τις εντολές του ή Ctrl+Click για διαμοιρασμό εντολών. Μια εντολή αμαξοστασίου απενεργοποιεί την αυτόματη συντήρηση του οχήματος
|
STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Εισάγετε μια νέα εντολή πριν την επιλεγμένη ή προσθέστε στο τέλος της λίστας. Ctrl+Κλικ σε έναν σταθμό για ορισμό εντολής σε "πλήρης φόρτωση οποιουδήποτε εμπορεύματος", σε σημείο διαδρομής για αντιστροφή εντολής "χωρίς στάση εξ ορισμού" ή σε αμαξοστάσιο για "αποσύνδεση". Κάντε κλικ σε άλλο όχημα για να αντιγράψετε τις εντολές του ή Ctrl+Κλικ για διαμοιρασμό εντολών. Μια εντολή αμαξοστασίου απενεργοποιεί την αυτόματη συντήρηση του οχήματος
|
||||||
|
|
||||||
STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Εμφάνιση όλων των οχημάτων που μοιράζονται αυτό το δρομολόγιο
|
STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Εμφάνιση όλων των οχημάτων που μοιράζονται αυτό το δρομολόγιο
|
||||||
|
|
||||||
@@ -4825,7 +4825,7 @@ STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Αυτό
|
|||||||
STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Αυτό το δρομολόγιο θα ξεκινήσει σε {COMMA} δευτερόλεπτα
|
STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Αυτό το δρομολόγιο θα ξεκινήσει σε {COMMA} δευτερόλεπτα
|
||||||
|
|
||||||
STR_TIMETABLE_START :{BLACK}Εκκίνηση δρομολογίου
|
STR_TIMETABLE_START :{BLACK}Εκκίνηση δρομολογίου
|
||||||
STR_TIMETABLE_START_TOOLTIP :{BLACK}Επιλέξτε πότε ξεκινά αυτό το δρομολόγιο. Ctrl+Click για ομοιόμορφη κατανομή της εκκίνησης όλων των οχημάτων που μοιράζονται αυτήν την εντολή με βάση τη σχετική τους εντολή, εάν η εντολή είναι πλήρως προγραμματισμένη
|
STR_TIMETABLE_START_TOOLTIP :{BLACK}Επιλέξτε πότε ξεκινά αυτό το δρομολόγιο. Ctrl+Κλικ για ομοιόμορφη κατανομή της εκκίνησης όλων των οχημάτων που μοιράζονται αυτήν την εντολή με βάση τη σχετική τους εντολή, εάν η εντολή είναι πλήρως προγραμματισμένη
|
||||||
|
|
||||||
STR_TIMETABLE_START_SECONDS_QUERY :Δευτερόλεπτα μέχρι την έναρξη του δρομολογίου
|
STR_TIMETABLE_START_SECONDS_QUERY :Δευτερόλεπτα μέχρι την έναρξη του δρομολογίου
|
||||||
|
|
||||||
@@ -4913,7 +4913,7 @@ STR_AI_CONFIG_AI :{SILVER}AI
|
|||||||
|
|
||||||
STR_AI_CONFIG_CHANGE_AI :{BLACK}Διάλεξε ΤΝ
|
STR_AI_CONFIG_CHANGE_AI :{BLACK}Διάλεξε ΤΝ
|
||||||
STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Δέσμη Ενεργειών
|
STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Δέσμη Ενεργειών
|
||||||
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Φόρτωση άλλης δέσμης ενεργειών. Ctrl+Click για εμφάνιση όλων των διαθέσιμων εκδόσεων
|
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Φόρτωση άλλης δέσμης ενεργειών. Ctrl+Κλικ για εμφάνιση όλων των διαθέσιμων εκδόσεων
|
||||||
STR_AI_CONFIG_CONFIGURE :{BLACK}Ρυθμίσεις
|
STR_AI_CONFIG_CONFIGURE :{BLACK}Ρυθμίσεις
|
||||||
STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Ρύθμιση των παραμέτρων της Δέσμης Ενεργειών
|
STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Ρύθμιση των παραμέτρων της Δέσμης Ενεργειών
|
||||||
|
|
||||||
@@ -4999,9 +4999,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Υπολ
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Η αποθήκευση είναι σε εξέλιξη,{}παρακαλώ περιμένετε να τελειώσει!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Η αποθήκευση είναι σε εξέλιξη,{}παρακαλώ περιμένετε να τελειώσει!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Η αυτόματη αποθήκευση απέτυχε
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Η αυτόματη αποθήκευση απέτυχε
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Αδύνατη η ανάγνωση του δίσκου
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Αδύνατη η ανάγνωση του δίσκου
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Η Αποθήκευση Παιχνιδιού Απέτυχε{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Η αποθήκευση του παιχνιδιού απέτυχε...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Αδύνατη η διαγραφή του αρχείου
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Αδύνατη η διαγραφή του αρχείου
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Η Φόρτωση Παιχνιδιού Απέτυχε{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Το φόρτωμα του παιχνιδιού απέτυχε...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Εσωτερικό λάθος: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Εσωτερικό λάθος: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Χαλασμένο αποθηκευμένο παιχνίδι - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Χαλασμένο αποθηκευμένο παιχνίδι - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Το αποθηκευμένο παιχνίδι είναι φτιαγμένο με νεότερη έκδοση
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Το αποθηκευμένο παιχνίδι είναι φτιαγμένο με νεότερη έκδοση
|
||||||
@@ -5054,7 +5054,7 @@ STR_ERROR_CAN_T_DO_THIS :{WHITE}Αυτό
|
|||||||
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Το κτίριο πρέπει πρώτα να κατεδαφιστεί
|
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Το κτίριο πρέπει πρώτα να κατεδαφιστεί
|
||||||
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Είναι αδύνατο να καθαριστεί αυτή η περιοχή...
|
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Είναι αδύνατο να καθαριστεί αυτή η περιοχή...
|
||||||
STR_ERROR_SITE_UNSUITABLE :{WHITE}... ακατάλληλη περιοχή
|
STR_ERROR_SITE_UNSUITABLE :{WHITE}... ακατάλληλη περιοχή
|
||||||
STR_ERROR_ALREADY_BUILT :{WHITE}... ήδη κτισμένο
|
STR_ERROR_ALREADY_BUILT :{WHITE}... ήδη κατασκευασμένο
|
||||||
STR_ERROR_OWNED_BY :{WHITE}... ιδιοκτησία του {STRING}
|
STR_ERROR_OWNED_BY :{WHITE}... ιδιοκτησία του {STRING}
|
||||||
STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... η περιοχή είναι ιδιοκτησία άλλης εταιρίας
|
STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... η περιοχή είναι ιδιοκτησία άλλης εταιρίας
|
||||||
STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... υπερβαίνει το όριο διαμόρφωσης του εδάφους
|
STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... υπερβαίνει το όριο διαμόρφωσης του εδάφους
|
||||||
@@ -5092,12 +5092,12 @@ STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Αδύν
|
|||||||
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Δεν είναι δυνατό να δοθούν χρήματα που είναι δανεισμένα από τη τράπεζα...
|
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Δεν είναι δυνατό να δοθούν χρήματα που είναι δανεισμένα από τη τράπεζα...
|
||||||
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Δεν μπορείτε να δώσετε χρήματα σε αυτή την εταιρία...
|
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Δεν μπορείτε να δώσετε χρήματα σε αυτή την εταιρία...
|
||||||
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Αδύνατη η εξαγορά της εταιρίας...
|
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Αδύνατη η εξαγορά της εταιρίας...
|
||||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Δεν μπορεί να κτιστεί αρχηγείο εταιρίας...
|
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Δεν μπορεί να κατασκευαστεί αρχηγείο εταιρίας...
|
||||||
|
|
||||||
# Town related errors
|
# Town related errors
|
||||||
STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Αδύνατο να κατασκευαστούν πόλεις...
|
STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Αδύνατο να κατασκευαστούν πόλεις...
|
||||||
STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Δεν μπορεί να μετονομαστεί η πόλη...
|
STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Δεν μπορεί να μετονομαστεί η πόλη...
|
||||||
STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Αδύνατο να κτιστεί πόλη εδώ...
|
STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Αδύνατο να ιδρυθεί πόλη εδώ...
|
||||||
STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Δεν μπορεί να γίνει επέκταση της πόλης...
|
STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Δεν μπορεί να γίνει επέκταση της πόλης...
|
||||||
STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... πολύ κοντά στην άκρη του χάρτη
|
STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... πολύ κοντά στην άκρη του χάρτη
|
||||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... πολύ κοντά σε άλλη πόλη
|
STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... πολύ κοντά σε άλλη πόλη
|
||||||
@@ -5110,22 +5110,22 @@ STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... δε
|
|||||||
# Industry related errors
|
# Industry related errors
|
||||||
STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... πάρα πολλές βιομηχανίες
|
STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... πάρα πολλές βιομηχανίες
|
||||||
STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Δε γίνεται να δημιουργηθούν βιομηχανίες...
|
STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Δε γίνεται να δημιουργηθούν βιομηχανίες...
|
||||||
STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Δεν μπορεί να κτιστεί {G ο η το} {STRING} εδώ...
|
STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί {G ο η το} {STRING} εδώ...
|
||||||
STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Δεν είναι δυνατό να κτιστεί αυτός ο τύπος βιομηχανίας εδώ...
|
STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Δεν είναι δυνατό να κατασκευαστεί αυτός ο τύπος βιομηχανίας εδώ...
|
||||||
STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}Δεν βρέθηκαν ευκαιρίες για τη βιομηχανία...
|
STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}Δεν βρέθηκαν ευκαιρίες για τη βιομηχανία...
|
||||||
STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... πολύ κοντά σε άλλη βιομηχανία
|
STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... πολύ κοντά σε άλλη βιομηχανία
|
||||||
STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... πρέπει να κτιστεί πόλη πρώτα
|
STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... πρέπει να ιδρυθεί πόλη πρώτα
|
||||||
STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... επιτρέπεται μόνο μία ανά πόλη
|
STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... επιτρέπεται μόνο μία ανά πόλη
|
||||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... μπορεί να κτιστεί μόνο σε πόλεις με πληθυσμό άνω των 1200
|
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... μπορεί να κατασκευαστεί μόνο σε πόλεις με πληθυσμό άνω των 1200
|
||||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... μπορεί να κτιστεί μόνο σε δασώδεις περιοχές
|
STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... μπορεί να κατασκευαστεί μόνο σε δασώδεις περιοχές
|
||||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... μπορεί να κτιστεί μόνο σε ερημικές περιοχές
|
STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... μπορεί να κατασκευαστεί μόνο σε ερημικές περιοχές
|
||||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... μπορεί να κτιστεί μόνο σε πόλεις (αντικαθιστώντας σπίτια)
|
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... μπορεί να κατασκευαστεί μόνο σε πόλεις (αντικαθιστώντας σπίτια)
|
||||||
STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... μπορεί να κτιστεί μόνο κοντά σε κέντρα πόλεων
|
STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... μπορεί να κατασκευαστεί μόνο κοντά σε κέντρα πόλεων
|
||||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... μπορεί να κτιστεί μόνο σε χαμηλές περιοχές
|
STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... μπορεί να κατασκευαστεί μόνο σε χαμηλές περιοχές
|
||||||
STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... μπορούν να τοποθετηθούν μόνο στις άκρες του χάρτη
|
STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... μπορούν να τοποθετηθούν μόνο στις άκρες του χάρτη
|
||||||
STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... δάση μπορούν να φυτευτούν μόνο πάνω από τη γραμμή του χιονιού
|
STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... δάση μπορούν να φυτευτούν μόνο πάνω από τη γραμμή του χιονιού
|
||||||
STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... μπορεί να κτιστεί μόνο πάνω από τη γραμμή του χιονιού
|
STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... μπορεί να κατασκευαστεί μόνο πάνω από τη γραμμή του χιονιού
|
||||||
STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... μπορεί να κτιστεί μόνο κάτω από τη γραμμή του χιονιού
|
STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... μπορεί να κατασκευαστεί μόνο κάτω από τη γραμμή του χιονιού
|
||||||
|
|
||||||
STR_ERROR_PROSPECTING_WAS_UNLUCKY :{WHITE}Η χρηματοδότηση απέτυχε να προσκομήσει αποτελέσματα λόγω κακής τύχης· δοκιμάστε ξάνα
|
STR_ERROR_PROSPECTING_WAS_UNLUCKY :{WHITE}Η χρηματοδότηση απέτυχε να προσκομήσει αποτελέσματα λόγω κακής τύχης· δοκιμάστε ξάνα
|
||||||
STR_ERROR_NO_SUITABLE_PLACES_FOR_PROSPECTING :{WHITE}Δεν υπήρχαν κατάλληλα μέρη για προοπτική για αυτόν τον κλάδο
|
STR_ERROR_NO_SUITABLE_PLACES_FOR_PROSPECTING :{WHITE}Δεν υπήρχαν κατάλληλα μέρη για προοπτική για αυτόν τον κλάδο
|
||||||
@@ -5133,13 +5133,13 @@ STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Δεν
|
|||||||
STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Αλλαγή παραμέτρων δημιουργίας χάρτη για καλύτερα αποτελέσματα
|
STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Αλλαγή παραμέτρων δημιουργίας χάρτη για καλύτερα αποτελέσματα
|
||||||
|
|
||||||
# Station construction related errors
|
# Station construction related errors
|
||||||
STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Δεν μπορεί να κτιστεί σταθμός τρένων εδώ...
|
STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Δεν μπορεί να κατασκευαστεί σταθμός τρένων εδώ...
|
||||||
STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Δεν μπορεί να κτιστεί στάση λεωφορείων...
|
STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Δεν μπορεί να κατασκευαστεί στάση λεωφορείων...
|
||||||
STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Δεν μπορεί να κτιστεί σταθμός φορτηγών...
|
STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Δεν μπορεί να κατασκευαστεί σταθμός φορτηγών...
|
||||||
STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Δεν μπορεί να κτιστεί επιβατικός σταθμός τραμ...
|
STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Δεν μπορεί να κατασκευαστεί επιβατικός σταθμός τραμ...
|
||||||
STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Δεν μπορεί να κτιστεί σταθμός τραμ...
|
STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Δεν μπορεί να κατασκευαστεί σταθμός τραμ...
|
||||||
STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Δεν μπορεί να κτιστεί λιμένας εδώ...
|
STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί λιμένας εδώ...
|
||||||
STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Δεν μπορεί να κτιστεί αεροδρόμιο εδώ...
|
STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί αεροδρόμιο εδώ...
|
||||||
|
|
||||||
STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Γειτονεύει με περισσότερες από μια υπάρχουσες περιοχές σταθμών/φόρτωσης
|
STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Γειτονεύει με περισσότερες από μια υπάρχουσες περιοχές σταθμών/φόρτωσης
|
||||||
STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... ο σταθμός είναι υπερβολικά απλωμένος
|
STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... ο σταθμός είναι υπερβολικά απλωμένος
|
||||||
@@ -5177,7 +5177,7 @@ STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Πρέπ
|
|||||||
STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Προστίθεται σε περισσότερο από ένα υπάρχον σημείο καθοδήγησης
|
STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Προστίθεται σε περισσότερο από ένα υπάρχον σημείο καθοδήγησης
|
||||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Πολύ κοντά σε άλλο σημείο καθοδήγησης
|
STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Πολύ κοντά σε άλλο σημείο καθοδήγησης
|
||||||
|
|
||||||
STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Δεν μπορεί να χτιστεί σημείο καθοδήγησης τρένου εδώ...
|
STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Δεν μπορεί να κατασκευαστεί σημείο καθοδήγησης τρένου εδώ...
|
||||||
STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Δεν μπορεί να τοποθετηθεί σημαδούρα εδώ...
|
STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Δεν μπορεί να τοποθετηθεί σημαδούρα εδώ...
|
||||||
STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Αδύνατο να αλλαχτεί το όνομα του σημείου καθοδήγησης...
|
STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Αδύνατο να αλλαχτεί το όνομα του σημείου καθοδήγησης...
|
||||||
|
|
||||||
@@ -5187,10 +5187,10 @@ STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... ση
|
|||||||
STR_ERROR_BUOY_IS_IN_USE :{WHITE}... σημαδούρα σε χρήση από άλλη εταιρία!
|
STR_ERROR_BUOY_IS_IN_USE :{WHITE}... σημαδούρα σε χρήση από άλλη εταιρία!
|
||||||
|
|
||||||
# Depot related errors
|
# Depot related errors
|
||||||
STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Δεν μπορεί να κτιστεί αμαξοστάσιο εδώ...
|
STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Δεν μπορεί να κατασκευαστεί αμαξοστάσιο εδώ...
|
||||||
STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Δεν μπορεί να κτιστεί σταθμός οχημάτων εδώ...
|
STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Δεν μπορεί να κατασκευαστεί σταθμός οχημάτων εδώ...
|
||||||
STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Δεν μπορεί να κτιστεί σταθμαρχείο τραμ εδώ...
|
STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Δεν μπορεί να κατασκευαστεί σταθμαρχείο τραμ εδώ...
|
||||||
STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Δεν μπορεί να κτιστεί ναυπηγείο πλοίων εδώ...
|
STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Δεν μπορεί να κατασκευαστεί ναυπηγείο πλοίων εδώ...
|
||||||
|
|
||||||
STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Δεν μπορεί να μετονομαστεί το αμαξοστάσιο/ναυπηγείο...
|
STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Δεν μπορεί να μετονομαστεί το αμαξοστάσιο/ναυπηγείο...
|
||||||
|
|
||||||
@@ -5235,7 +5235,7 @@ STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Η δρ
|
|||||||
STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Δεν επιτρέπονται ισόπεδες διασταυρώσεις για αυτόν τον τύπο σιδηροδρόμου
|
STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Δεν επιτρέπονται ισόπεδες διασταυρώσεις για αυτόν τον τύπο σιδηροδρόμου
|
||||||
STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Οι ισόπεδες διαβάσεις δεν επιτρέπονται για αυτό τον τύπο δρόμου
|
STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Οι ισόπεδες διαβάσεις δεν επιτρέπονται για αυτό τον τύπο δρόμου
|
||||||
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Δεν μπορούν να τοποθετοηθούν σηματοδότες εδώ...
|
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Δεν μπορούν να τοποθετοηθούν σηματοδότες εδώ...
|
||||||
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Δεν μπορεί να κτιστεί σιδηρόδρομος εδώ...
|
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Δεν μπορεί να κατασκευαστεί σιδηρόδρομος εδώ...
|
||||||
STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Δεν μπορεί να αφαιρεθεί σιδηρόδρομος από εδώ...
|
STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Δεν μπορεί να αφαιρεθεί σιδηρόδρομος από εδώ...
|
||||||
STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Αδύνατο να αφαιρεθούν σηματοδότες από εδώ...
|
STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Αδύνατο να αφαιρεθούν σηματοδότες από εδώ...
|
||||||
STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Δεν μπορούν να μετατραπούν οι σηματοδότες εδώ...
|
STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Δεν μπορούν να μετατραπούν οι σηματοδότες εδώ...
|
||||||
@@ -5247,8 +5247,8 @@ STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Δε γ
|
|||||||
# Road construction errors
|
# Road construction errors
|
||||||
STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Πρέπει πρώτα να αφαιρεθεί ο δρόμος
|
STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Πρέπει πρώτα να αφαιρεθεί ο δρόμος
|
||||||
STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... οι μονόδρομοι δεν μπορούν να έχουν διασταυρώσεις
|
STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... οι μονόδρομοι δεν μπορούν να έχουν διασταυρώσεις
|
||||||
STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Δεν μπορεί να κτιστεί δρόμος εδώ...
|
STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί δρόμος εδώ...
|
||||||
STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Δεν μπορεί να κτιστεί τροχιοδρόμος εδώ...
|
STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί τροχιοδρόμος εδώ...
|
||||||
STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Αδύνατο να αφαιρεθεί δρόμος από εδώ...
|
STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Αδύνατο να αφαιρεθεί δρόμος από εδώ...
|
||||||
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Δεν μπορεί να αφαιρεθεί τροχιόδρομος από εδώ...
|
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Δεν μπορεί να αφαιρεθεί τροχιόδρομος από εδώ...
|
||||||
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... δεν υπάρχει δρόμος
|
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... δεν υπάρχει δρόμος
|
||||||
@@ -5259,16 +5259,16 @@ STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Δεν
|
|||||||
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Καμία κατάλληλη γραμμή του τραμ
|
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Καμία κατάλληλη γραμμή του τραμ
|
||||||
|
|
||||||
# Waterway construction errors
|
# Waterway construction errors
|
||||||
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Δεν μπορεί να κτιστεί κανάλι εδώ
|
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Δεν μπορεί να κατασκευαστεί κανάλι εδώ
|
||||||
STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Δεν μπορεί να κτιστεί υδατοφράκτης εδώ...
|
STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Δεν μπορεί να κατασκευαστεί υδατοφράκτης εδώ...
|
||||||
STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Δεν μπορούν να τοποθετηθούν ποτάμια εδώ...
|
STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Δεν μπορούν να τοποθετηθούν ποτάμια εδώ...
|
||||||
STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... πρέπει να κτιστεί στο νερό
|
STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... πρέπει να κατασκευαστεί στο νερό
|
||||||
STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... αδύνατο να κτιστεί στο νερό
|
STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... αδύνατο να κατασκευαστεί στο νερό
|
||||||
STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... αδύνατο να κτιστεί στην ανοικτή θάλασσα
|
STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... αδύνατο να κατασκευαστεί στην ανοικτή θάλασσα
|
||||||
STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... αδύνατο να κτιστεί σε κανάλι
|
STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... αδύνατο να κατασκευαστεί σε κανάλι
|
||||||
STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... αδύνατο να κτιστεί σε ποτάμι
|
STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... αδύνατο να κατασκευαστεί σε ποτάμι
|
||||||
STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Πρέπει να κατεδαφιστεί το κανάλι πρώτα
|
STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Πρέπει να κατεδαφιστεί το κανάλι πρώτα
|
||||||
STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Δεν μπορεί να κτιστεί κανάλι εδώ...
|
STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί κανάλι εδώ...
|
||||||
|
|
||||||
# Tree related errors
|
# Tree related errors
|
||||||
STR_ERROR_TREE_ALREADY_HERE :{WHITE}... υπάρχει ήδη δέντρο εδώ
|
STR_ERROR_TREE_ALREADY_HERE :{WHITE}... υπάρχει ήδη δέντρο εδώ
|
||||||
@@ -5276,7 +5276,7 @@ STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... λά
|
|||||||
STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Δεν γίνεται να φυτευτεί δέντρο εδώ...
|
STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Δεν γίνεται να φυτευτεί δέντρο εδώ...
|
||||||
|
|
||||||
# Bridge related errors
|
# Bridge related errors
|
||||||
STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Δεν μπορεί να κτιστεί γέφυρα εδώ...
|
STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί γέφυρα εδώ...
|
||||||
STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Πρέπει πρώτα να καταστραφεί η γέφυρα
|
STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Πρέπει πρώτα να καταστραφεί η γέφυρα
|
||||||
STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Δεν γίνεται να ξεκινάει και να τελειώνει στο ίδιο σημείο
|
STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Δεν γίνεται να ξεκινάει και να τελειώνει στο ίδιο σημείο
|
||||||
STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Η γέφυρα δεν καταλήγει στο ίδιο επίπεδο
|
STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Η γέφυρα δεν καταλήγει στο ίδιο επίπεδο
|
||||||
@@ -5288,7 +5288,7 @@ STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... η
|
|||||||
STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Η γέφυρα θα καταλήξει εκτός χάρτη
|
STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Η γέφυρα θα καταλήξει εκτός χάρτη
|
||||||
|
|
||||||
# Tunnel related errors
|
# Tunnel related errors
|
||||||
STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Δεν μπορεί να κτιστεί τούνελ εδώ...
|
STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Δεν μπορεί να κατασκευαστεί τούνελ εδώ...
|
||||||
STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Ακατάλληλη τοποθεσία για είσοδο τούνελ
|
STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Ακατάλληλη τοποθεσία για είσοδο τούνελ
|
||||||
STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Πρέπει πρώτα να καταστραφεί το τούνελ
|
STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Πρέπει πρώτα να καταστραφεί το τούνελ
|
||||||
STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Υπάρχει άλλο τούνελ στη μέση
|
STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Υπάρχει άλλο τούνελ στη μέση
|
||||||
@@ -5298,10 +5298,10 @@ STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... το
|
|||||||
|
|
||||||
# Object related errors
|
# Object related errors
|
||||||
STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... πάρα πολλά αντικείμενα
|
STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... πάρα πολλά αντικείμενα
|
||||||
STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Δεν μπορεί να κτιστεί το αντικείμενο...
|
STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Δεν μπορεί να κατασκευαστεί το αντικείμενο...
|
||||||
STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Αντικείμενο στη μέση
|
STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Αντικείμενο στη μέση
|
||||||
STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... κεντρικά γραφεία εταιρίας στη μέση
|
STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... κεντρικά γραφεία εταιρίας στη μέση
|
||||||
STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Αδύνατο να αγοραστεί το έδαφος...
|
STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Αδύνατο να γίνει αγορά αυτής της περιοχής εδάφους...
|
||||||
STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... είστε ήδη ιδιοκτήτης!
|
STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... είστε ήδη ιδιοκτήτης!
|
||||||
STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE}... έχετε φτάσει το όριο οικοδομήσεων
|
STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE}... έχετε φτάσει το όριο οικοδομήσεων
|
||||||
|
|
||||||
@@ -5354,10 +5354,10 @@ STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Δεν
|
|||||||
STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Δεν μπορεί να σταλθεί το αεροσκάφος στο υπόστεγο...
|
STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Δεν μπορεί να σταλθεί το αεροσκάφος στο υπόστεγο...
|
||||||
|
|
||||||
###length VEHICLE_TYPES
|
###length VEHICLE_TYPES
|
||||||
STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Δεν μπορεί να αγοραστεί όχημα σιδηρόδρομου...
|
STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Δεν μπορεί να γίνει αγορά οχήματος σιδηροδρόμου...
|
||||||
STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Δεν μπορεί να αγοραστεί όχημα δρόμου...
|
STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Δεν μπορεί να γίνει αγορά οχήματος δρόμου...
|
||||||
STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Δεν μπορεί να αγοραστεί πλοίο...
|
STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Δεν μπορεί να γίνει αγορά πλοίου...
|
||||||
STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Δεν μπορεί να αγοραστεί αεροσκάφος...
|
STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Δεν μπορεί να γίνει αγορά αεροσκάφους...
|
||||||
|
|
||||||
###length VEHICLE_TYPES
|
###length VEHICLE_TYPES
|
||||||
STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος τρένου...
|
STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος τρένου...
|
||||||
|
@@ -4320,9 +4320,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}{CURRENC
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}!שמירה מתבצעת,{} אנא המתן עד לסיום השמירה
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}!שמירה מתבצעת,{} אנא המתן עד לסיום השמירה
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}שמירה אוטומטית נכשלה
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}שמירה אוטומטית נכשלה
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}לא ניתן לקרוא מהדיסק
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}לא ניתן לקרוא מהדיסק
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}שמירת המשחק נכשלה{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}לא ניתן למחוק את הקובץ
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}לא ניתן למחוק את הקובץ
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}טעינת המשחק נכשלה{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :שגיאה פנימית: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :שגיאה פנימית: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :קובץ השמיקה פגום - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :קובץ השמיקה פגום - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :קובץ השמירה נשמר עם גירסא חדישה יותר של המשחק
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :קובץ השמירה נשמר עם גירסא חדישה יותר של המשחק
|
||||||
|
@@ -4960,9 +4960,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Becsült
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}A mentés még tart,{}kérlek várd meg a végét!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}A mentés még tart,{}kérlek várd meg a végét!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatikus mentés sikertelen
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatikus mentés sikertelen
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nem olvasható a meghajtó
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nem olvasható a meghajtó
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}A mentés nem sikerült{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nem sikerült törölni a fájlt
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nem sikerült törölni a fájlt
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}A betöltés nem sikerült{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Belső hiba: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Belső hiba: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Hibás játékállás-mentés - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Hibás játékállás-mentés - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :A játékállást újabb verzió mentette el
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :A játékállást újabb verzió mentette el
|
||||||
|
@@ -3902,9 +3902,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Áætla
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Vistun er enn í gangi,{}vinsamlegast bíddu á meðan hún klárst!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Vistun er enn í gangi,{}vinsamlegast bíddu á meðan hún klárst!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Sjálfvirk vistun mistókst
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Sjálfvirk vistun mistókst
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Get ekki lesið af drifi
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Get ekki lesið af drifi
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Vistun leiks mistókst{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Get ekki eytt skrá
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Get ekki eytt skrá
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Mistókst að opna leik{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Innri villa: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Innri villa: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bilun í vistuðum leik - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bilun í vistuðum leik - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Leikur er vistaður í nýrri útgáfu
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Leikur er vistaður í nýrri útgáfu
|
||||||
|
@@ -4785,9 +4785,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Perkiraa
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Penyimpanan sedang berlangsung,{}mohon tunggu hingga selesai
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Penyimpanan sedang berlangsung,{}mohon tunggu hingga selesai
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Simpan otomatis gagal
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Simpan otomatis gagal
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Tidak dapat membaca drive
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Tidak dapat membaca drive
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Penyimpanan Game gagal{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Tidak mampu untuk menghapus file/berkas
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Tidak mampu untuk menghapus file/berkas
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Gagal membuka permainan{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Kesalahan Internal: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Kesalahan Internal: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Berkas simpanan permainan rusak - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Berkas simpanan permainan rusak - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Berkas simpanan dibuat dari versi yang lebih baru
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Berkas simpanan dibuat dari versi yang lebih baru
|
||||||
|
@@ -4494,9 +4494,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ioncam M
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Fós ag sábháil,{}fan go mbeidh sé críochnaithe!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Fós ag sábháil,{}fan go mbeidh sé críochnaithe!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Theip ar uathshábháil
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Theip ar uathshábháil
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ní féidir an tiomántán a léamh
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ní féidir an tiomántán a léamh
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Theip ar Shábháil Cluiche{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ní féidir comhad a scriosadh
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ní féidir comhad a scriosadh
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Theip ar Lódáil Cluiche{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Earráid inmheánach: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Earráid inmheánach: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Cluiche sábháilte briste - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Cluiche sábháilte briste - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Rinneadh an cluiche sábháilte le leagan níos nuaí
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Rinneadh an cluiche sábháilte le leagan níos nuaí
|
||||||
|
@@ -4938,9 +4938,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ricavo s
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Salvataggio in corso,{}prego attenderne la fine!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Salvataggio in corso,{}prego attenderne la fine!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Salvataggio automatico non riuscito
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Salvataggio automatico non riuscito
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Impossibile leggere dall'unità
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Impossibile leggere dall'unità
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Salvataggio non riuscito{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Impossibile eliminare il file
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Impossibile eliminare il file
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Caricamento non riuscito{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Errore interno: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Errore interno: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Salvataggio danneggiato - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Salvataggio danneggiato - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvataggio creato con una versione più recente
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvataggio creato con una versione più recente
|
||||||
|
@@ -4612,9 +4612,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}収益(
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}ゲームを保存しています{}完了までしばらくお待ちください!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}ゲームを保存しています{}完了までしばらくお待ちください!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}自動保存に失敗しました
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}自動保存に失敗しました
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}ドライブを読み込めません
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}ドライブを読み込めません
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}ゲームの保存に失敗しました{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}ファイルを削除できません
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}ファイルを削除できません
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}ゲームの読み込みに失敗しました{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :内部エラー: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :内部エラー: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :破損したセーブゲーム: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :破損したセーブゲーム: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :このファイルは上位のバージョンによって保存されたものです
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :このファイルは上位のバージョンによって保存されたものです
|
||||||
|
@@ -4900,9 +4900,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}예상
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}저장 중입니다.{}끝날 때까지 기다려주세요!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}저장 중입니다.{}끝날 때까지 기다려주세요!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}자동 저장 실패
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}자동 저장 실패
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}드라이브를 읽을 수 없습니다
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}드라이브를 읽을 수 없습니다
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}게임 저장 실패{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}게임을 저장하지 못 했습니다...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}파일을 삭제할 수 없습니다
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}파일을 삭제할 수 없습니다
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}게임 불러오기 실패{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}게임을 불러오지 못 했습니다...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :내부 오류: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :내부 오류: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :손상된 게임 저장 파일 - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :손상된 게임 저장 파일 - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :상위 버전의 게임 저장 파일입니다
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :상위 버전의 게임 저장 파일입니다
|
||||||
|
@@ -4392,9 +4392,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Reditus
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Adhuc in servando,{}maneas usque ad terminum!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Adhuc in servando,{}maneas usque ad terminum!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autoservare defecit
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autoservare defecit
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Non poterat discum legere
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Non poterat discum legere
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Servare Ludum Defecit{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Non poterat fasciculum delere
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Non poterat fasciculum delere
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Legere Ludum Defecit{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Mendum internum: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Mendum internum: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ludus corruptus - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ludus corruptus - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Ludus servatus est in editione noviore
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Ludus servatus est in editione noviore
|
||||||
|
@@ -4908,9 +4908,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Plānoti
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Notiek saglabāšana,{}lLūdzu uzgaidiet!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Notiek saglabāšana,{}lLūdzu uzgaidiet!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automātiskā saglabāšana neizdevās
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automātiskā saglabāšana neizdevās
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nevar lasīt disku
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nevar lasīt disku
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spēles saglabāšana neizdevās{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nevar dzēst failu
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nevar dzēst failu
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Spēles ielādēšana neizdevās{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Iekšēja kļūda: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Iekšēja kļūda: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bojāts saglabātās spēles fails - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bojāts saglabātās spēles fails - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spēle ir saglabāta ar jaunāku versiju
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spēle ir saglabāta ar jaunāku versiju
|
||||||
|
@@ -4817,9 +4817,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Numatomo
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Vyksta išsaugojimas,{}palaukite kol baigsis!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Vyksta išsaugojimas,{}palaukite kol baigsis!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatinis išsaugojimas nepavyko
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatinis išsaugojimas nepavyko
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Negali pasiekti disko
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Negali pasiekti disko
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Žaidimo išsaugoti nepavyko{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Failo ištrinti nepavyko
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Failo ištrinti nepavyko
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Žaidimo atverti nepavyko{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Vidinė klaida: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Vidinė klaida: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Sugadintas išsaugotas žaidimas - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Sugadintas išsaugotas žaidimas - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Išsaugotas žaidimas iš naujesnės versijos
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Išsaugotas žaidimas iš naujesnės versijos
|
||||||
|
@@ -4896,9 +4896,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Geschät
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Nach amgaangen ze späicheren.{} W.e.g. waarde bis daat fäerdeg ass!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Nach amgaangen ze späicheren.{} W.e.g. waarde bis daat fäerdeg ass!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fehler beim Autospäicheren
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fehler beim Autospäicheren
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kann net um Laafwierk liesen
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kann net um Laafwierk liesen
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Fehler beim Späicheren{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kann d'Datei net läschen
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kann d'Datei net läschen
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Fehler beim Lueden{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne Feeler: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne Feeler: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Futtissen Späicherstand - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Futtissen Späicherstand - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillstand ass mat enger méi neier Versioun gemaach
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillstand ass mat enger méi neier Versioun gemaach
|
||||||
|
@@ -3808,9 +3808,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Jangkaan
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Penyimpanan sedang berlaku,{}sila tunggu sehingga selesai!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Penyimpanan sedang berlaku,{}sila tunggu sehingga selesai!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Penyimpanan automatik gagal dilakukan
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Penyimpanan automatik gagal dilakukan
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Gagal dalam membaca cakera
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Gagal dalam membaca cakera
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Penyimpanan Permainan Gagal{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Tidak boleh memadamkan fail
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Tidak boleh memadamkan fail
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Pembukaan Permainan Gagal{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Kesilapan dalaman: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Kesilapan dalaman: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Simpanan permainan yang rosak - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Simpanan permainan yang rosak - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Simpanan permainan ini telah dibuat dengan versi yang lebih baru
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Simpanan permainan ini telah dibuat dengan versi yang lebih baru
|
||||||
|
@@ -4901,9 +4901,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Anslått
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Lagring pågår enda,{}vennligst vent til den er klar!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Lagring pågår enda,{}vennligst vent til den er klar!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatisk lagring mislyktes
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatisk lagring mislyktes
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikke lese fra disk
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikke lese fra disk
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lagring av spillet mislyktes{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lagring av spillet mislyktes...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Lasting av spill mislyktes{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Lasting av spill mislyktes...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern feil: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern feil: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ødelagt lagret spill - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ødelagt lagret spill - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillet er lagret i en nyere versjon
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillet er lagret i en nyere versjon
|
||||||
|
@@ -4036,9 +4036,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Berekna
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Lagring foregår framleis,{}ver venleg å vente til det er ferdig!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Lagring foregår framleis,{}ver venleg å vente til det er ferdig!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autolagring gjekk gale
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autolagring gjekk gale
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikkje lese frå disk
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikkje lese frå disk
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lagring av spelet mislukkast{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikkje slette fil
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikkje slette fil
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Feil ved henting av spel{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern feil: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern feil: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Øydelagd lagra spel - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Øydelagd lagra spel - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spelet er lagra i ein nyare versjon
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spelet er lagra i ein nyare versjon
|
||||||
|
@@ -3494,9 +3494,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}در آ
|
|||||||
|
|
||||||
# Saveload messages
|
# Saveload messages
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}درایو خوانده می شود
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}درایو خوانده می شود
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}بازی ذخیره نشد{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}فایل حذف نمی شود
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}فایل حذف نمی شود
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}بازی بارگزاری نشد{}{STRING}
|
|
||||||
|
|
||||||
# Map generation messages
|
# Map generation messages
|
||||||
|
|
||||||
|
@@ -5285,9 +5285,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Szacowan
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Zapisywanie trwa,{}proszę zaczekać do zakończenia!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Zapisywanie trwa,{}proszę zaczekać do zakończenia!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Błąd autozapisu
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Błąd autozapisu
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nie można odczytać napędu
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nie można odczytać napędu
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Nie można zapisać gry{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Nie można zapisać gry...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nie można usunąć pliku
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nie można usunąć pliku
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nie można wczytać gry{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nie można wczytać gry...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Błąd wewnętrzny: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Błąd wewnętrzny: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Zepsuta zapisana gra - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Zepsuta zapisana gra - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Zapisana gra zrobiona w nowszej wersji
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Zapisana gra zrobiona w nowszej wersji
|
||||||
|
@@ -4900,9 +4900,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Lucro Es
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravação ainda em curso,{}por favor aguarde!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravação ainda em curso,{}por favor aguarde!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Falha ao guardar automaticamente
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Falha ao guardar automaticamente
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Não é possível ler unidade
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Não é possível ler unidade
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Falha ao guardar jogo{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Falha ao guardar jogo...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Não é possível eliminar ficheiro
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Não é possível eliminar ficheiro
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Falha ao abrir jogo{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Falha ao carregar jogo...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ficheiro corrompido - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ficheiro corrompido - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Jogo gravado numa versão mais recente do jogo
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Jogo gravado numa versão mais recente do jogo
|
||||||
|
@@ -4892,9 +4892,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Venit es
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Salvarea se efectueaza încã,{}vã rugãm asteptati pânã se încheie!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Salvarea se efectueaza încã,{}vã rugãm asteptati pânã se încheie!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Auto-salvarea a esuat
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Auto-salvarea a esuat
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Discul nu a putut fi citit
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Discul nu a putut fi citit
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Salvarea jocului eșuată{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ștergerea fișierului a eșuat
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ștergerea fișierului a eșuat
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Încărcarea jocului eșuată{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Eroare internă: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Eroare internă: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Salvare eronată - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Salvare eronată - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvarea a fost făcută cu o versiune mai nouă
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvarea a fost făcută cu o versiune mai nouă
|
||||||
|
@@ -2822,7 +2822,7 @@ STR_CONTENT_OPEN_URL :{BLACK}Веб-
|
|||||||
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Посетить веб-сайт с информацией об этом модуле
|
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Посетить веб-сайт с информацией об этом модуле
|
||||||
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Скачать
|
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Скачать
|
||||||
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Начать загрузку выбранного контента
|
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Начать загрузку выбранного контента
|
||||||
STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Всего для загруки: {WHITE}{BYTES}
|
STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Всего для загрузки: {WHITE}{BYTES}
|
||||||
STR_CONTENT_DETAIL_TITLE :{SILVER}ИНФОРМАЦИЯ О КОНТЕНТЕ
|
STR_CONTENT_DETAIL_TITLE :{SILVER}ИНФОРМАЦИЯ О КОНТЕНТЕ
|
||||||
|
|
||||||
###length 5
|
###length 5
|
||||||
@@ -5086,9 +5086,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Пред
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Идёт сохранение;{}пожалуйста, дождитесь завершения!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Идёт сохранение;{}пожалуйста, дождитесь завершения!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Ошибка автосохранения
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Ошибка автосохранения
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Не удалось прочитать диск
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Не удалось прочитать диск
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Невозможно сохранить игру{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Невозможно сохранить игру...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Невозможно удалить файл
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Невозможно удалить файл
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Невозможно загрузить игру{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Невозможно загрузить игру...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Внутренняя ошибка: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Внутренняя ошибка: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл повреждён - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл повреждён - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Сохранение сделано в более новой версии
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Сохранение сделано в более новой версии
|
||||||
|
@@ -5004,9 +5004,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Procena
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Čuvanje je još u toku,{}molimo sačekaj dok se ne završi!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Čuvanje je još u toku,{}molimo sačekaj dok se ne završi!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Neuspešno automatsko čuvanje
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Neuspešno automatsko čuvanje
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Čitanje sa diska nije uspelo
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Čitanje sa diska nije uspelo
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Čuvanje pozicije nije uspelo{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Brisanje datoteke nije uspelo
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Brisanje datoteke nije uspelo
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Učitavanje pozicije nije uspelo{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Unutrašnja greška: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Unutrašnja greška: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Neispravno sačuvana igra - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Neispravno sačuvana igra - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Igra je sačuvana sa novijom verzijom igre
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Igra je sačuvana sa novijom verzijom igre
|
||||||
|
@@ -4899,9 +4899,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}预计
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}保存仍在继续{}请耐心等待……
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}保存仍在继续{}请耐心等待……
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}自动保存失败
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}自动保存失败
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}不能读取驱动器
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}不能读取驱动器
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}保存游戏失败{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}保存游戏失败……
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}不能删除文件
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}不能删除文件
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}游戏存档读取失败{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}读取游戏失败……
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :内部错误: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :内部错误: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :无法识别的存档 - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :无法识别的存档 - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :该存档是新版本的。当前版本无法读取。
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :该存档是新版本的。当前版本无法读取。
|
||||||
|
@@ -4967,9 +4967,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Odhadova
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ukladanie hry ešte beží,{}počkajte prosím na dokončenie!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ukladanie hry ešte beží,{}počkajte prosím na dokončenie!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatické ukladanie zlyhalo
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatické ukladanie zlyhalo
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Zariadenie je nečitateľné
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Zariadenie je nečitateľné
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Uloženie hry zlyhalo{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Súbor sa nedá vymazať
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Súbor sa nedá vymazať
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nahratie hry zlyhalo{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interná chyba: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interná chyba: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Poškodená uložená hra - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Poškodená uložená hra - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Hra bola uložená vo vyššej verzii
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Hra bola uložená vo vyššej verzii
|
||||||
|
@@ -4285,9 +4285,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Predvide
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Shranjevanje poteka,{}Prosim počakaj, da se zaključi!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Shranjevanje poteka,{}Prosim počakaj, da se zaključi!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Samodejno shranjevanje spodletelo
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Samodejno shranjevanje spodletelo
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Pogona ni mogoče prebrati
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Pogona ni mogoče prebrati
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Shranjevanje igre ni uspelo{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Datoteke ni mogoče zbrisati
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Datoteke ni mogoče zbrisati
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nalaganje igre ni uspelo{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna napaka: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna napaka: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Napaka v shranjeni igri - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Napaka v shranjeni igri - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Igra je bila shranjena z novejso razlicico
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Igra je bila shranjena z novejso razlicico
|
||||||
|
@@ -4450,10 +4450,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacida
|
|||||||
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Créditos de Transferencia: {LTBLUE}{CURRENCY_LONG}
|
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Créditos de Transferencia: {LTBLUE}{CURRENCY_LONG}
|
||||||
|
|
||||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de mantenimiento: {LTBLUE}{COMMA}{NBSP}días{BLACK} {STRING}
|
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de mantenimiento: {LTBLUE}{COMMA}{NBSP}días{BLACK} {STRING}
|
||||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Intervalo de mantenimiento: {LTBLUE}{COMMA}{NBSP}minutos{BLACK} {STRING}
|
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Intervalo de mantenimiento: {LTBLUE}{COMMA}{NBSP}minuto{P "" s}{BLACK} {STRING}
|
||||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalo de mantenimiento: {LTBLUE}{COMMA}%{BLACK} {STRING}
|
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalo de mantenimiento: {LTBLUE}{COMMA}%{BLACK} {STRING}
|
||||||
STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Último mantenimiento: {LTBLUE}{DATE_LONG}
|
STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Último mantenimiento: {LTBLUE}{DATE_LONG}
|
||||||
STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Último mantenimiento: {LTBLUE}hace {NUM} minutos
|
STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Último mantenimiento: {LTBLUE}hace {NUM} minuto{P "" s}
|
||||||
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Incrementar el intervalo de mantenimiento en 10 días. Ctrl+clic para incrementar el período en 5 días
|
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS :{BLACK}Incrementar el intervalo de mantenimiento en 10 días. Ctrl+clic para incrementar el período en 5 días
|
||||||
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Incrementar el intervalo de mantenimiento en 5 minutos. Ctrl+clic para incrementar el período en un minuto
|
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES :{BLACK}Incrementar el intervalo de mantenimiento en 5 minutos. Ctrl+clic para incrementar el período en un minuto
|
||||||
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Incrementar el intervalo de mantenimiento en un 10%. Ctrl+clic para incrementar el período en un 5%
|
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT :{BLACK}Incrementar el intervalo de mantenimiento en un 10%. Ctrl+clic para incrementar el período en un 5%
|
||||||
@@ -4644,7 +4644,7 @@ STR_ORDER_REFIT_ORDER :(Reformar a {ST
|
|||||||
STR_ORDER_REFIT_STOP_ORDER :(Reformar a {STRING} y detenerse)
|
STR_ORDER_REFIT_STOP_ORDER :(Reformar a {STRING} y detenerse)
|
||||||
STR_ORDER_STOP_ORDER :(Detenerse)
|
STR_ORDER_STOP_ORDER :(Detenerse)
|
||||||
|
|
||||||
STR_ORDER_WAIT_TO_UNBUNCH :(esperar para distanciarse)
|
STR_ORDER_WAIT_TO_UNBUNCH :(Esperar para distanciarse)
|
||||||
|
|
||||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(No puede usar la estación){POP_COLOUR} {STRING} {STATION} {STRING}
|
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(No puede usar la estación){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||||
@@ -4900,9 +4900,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ingreso
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}El guardado está en progreso,{}¡por favor espera hasta que termine!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}El guardado está en progreso,{}¡por favor espera hasta que termine!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Error al autoguardar
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Error al autoguardar
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}No es posible leer la unidad
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}No es posible leer la unidad
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Error guardando partida{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Error al guardar la partida...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}No es posible borrar el archivo
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}No es posible borrar el archivo
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Carga de Partida Errónea{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Error al cargar la partida...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Error interno: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Error interno: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Partida guardada corrupta - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Partida guardada corrupta - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :La partida guardada ha sido realizada con una versión más nueva
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :La partida guardada ha sido realizada con una versión más nueva
|
||||||
@@ -4996,7 +4996,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}No se pu
|
|||||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}No puede construirse la sede de la empresa...
|
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}No puede construirse la sede de la empresa...
|
||||||
|
|
||||||
# Town related errors
|
# Town related errors
|
||||||
STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}No se puede construir ningún municipio
|
STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}No se puede generar ningún municipio...
|
||||||
STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}No se puede renombrar el municipio...
|
STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}No se puede renombrar el municipio...
|
||||||
STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}No se puede construir un municipio aquí...
|
STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}No se puede construir un municipio aquí...
|
||||||
STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}No se puede expandir este municipio...
|
STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}No se puede expandir este municipio...
|
||||||
|
@@ -4781,9 +4781,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ingreso
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Se sigue guardando la partida,{}¡por favor espera hasta que termine!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Se sigue guardando la partida,{}¡por favor espera hasta que termine!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Error en guardado automático
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Error en guardado automático
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}No es posible leer la unidad de disco
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}No es posible leer la unidad de disco
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Error guardando partida{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}No es posible eliminar el archivo
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}No es posible eliminar el archivo
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Error al cargar partida{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Error interno: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Error interno: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Archivo con errores - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Archivo con errores - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :La partida guardada es de una versión más reciente del juego
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :La partida guardada es de una versión más reciente del juego
|
||||||
|
@@ -2858,14 +2858,14 @@ STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING}
|
|||||||
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY}
|
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY}
|
||||||
STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG}
|
STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG}
|
||||||
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG}
|
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG}
|
||||||
STR_BRIDGE_NAME_SUSPENSION_STEEL :Hängbro, Stål
|
STR_BRIDGE_NAME_SUSPENSION_STEEL :Hängbro, stål
|
||||||
STR_BRIDGE_NAME_GIRDER_STEEL :Balkbro, Stål
|
STR_BRIDGE_NAME_GIRDER_STEEL :Balkbro, stål
|
||||||
STR_BRIDGE_NAME_CANTILEVER_STEEL :Konsolbro, Stål
|
STR_BRIDGE_NAME_CANTILEVER_STEEL :Konsolbro, stål
|
||||||
STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hängbro, Betong
|
STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hängbro, betong
|
||||||
STR_BRIDGE_NAME_WOODEN :Träbro
|
STR_BRIDGE_NAME_WOODEN :Träbro
|
||||||
STR_BRIDGE_NAME_CONCRETE :Betongbro
|
STR_BRIDGE_NAME_CONCRETE :Betongbro
|
||||||
STR_BRIDGE_NAME_TUBULAR_STEEL :Rörbro, Stål
|
STR_BRIDGE_NAME_TUBULAR_STEEL :Rörbro, stål
|
||||||
STR_BRIDGE_TUBULAR_SILICON :Rörbro, Kisel
|
STR_BRIDGE_TUBULAR_SILICON :Rörbro, kisel
|
||||||
|
|
||||||
|
|
||||||
# Road construction toolbar
|
# Road construction toolbar
|
||||||
@@ -4899,9 +4899,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Uppskatt
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Sparar fortfarande,{}vänta tills det är slutfört!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Sparar fortfarande,{}vänta tills det är slutfört!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosparning misslyckades
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosparning misslyckades
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan inte läsa från disk
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan inte läsa från disk
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Sparandet av spelet misslyckades{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Sparandet av spelet misslyckades...
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan inte ta bort filen
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan inte ta bort filen
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Inläsningen av spelet misslyckades{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Inläsningen av spelet misslyckades...
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internt fel: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internt fel: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Trasig sparfil - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Trasig sparfil - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Sparfilen är gjord med en nyare version
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Sparfilen är gjord med en nyare version
|
||||||
|
@@ -4498,9 +4498,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}மத
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}பதிவாகிக்கொண்டிருக்கிறது,{}சிறிது நேரம் பொறுங்கள்,!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}பதிவாகிக்கொண்டிருக்கிறது,{}சிறிது நேரம் பொறுங்கள்,!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}தானியங்கிபதிவு தோல்வியடைந்தது
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}தானியங்கிபதிவு தோல்வியடைந்தது
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}கணினி சேமிப்பகத்தினை படிக்க இயலவில்லை
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}கணினி சேமிப்பகத்தினை படிக்க இயலவில்லை
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}ஆட்டத்தின் படிவு தோல்வியடைந்தது{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}கோப்பினை நீக்க இயலவில்லை
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}கோப்பினை நீக்க இயலவில்லை
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}ஆட்டம் பதிவேறுவது தோல்வியடைந்தது{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :உள்பிழை: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :உள்பிழை: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :உடைந்த பதிவுஆட்டம் - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :உடைந்த பதிவுஆட்டம் - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :புதிய பதிப்பினால் பதிவுஆட்டம் உருவாக்கப்பட்டுள்ளது
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :புதிய பதிப்பினால் பதிவுஆட்டம் உருவாக்கப்பட்டுள்ளது
|
||||||
|
@@ -4242,9 +4242,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}รา
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}ขณะนี้กำลังบันทึก,{}โปรดรอจนกว่าจะเสร็จ!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}ขณะนี้กำลังบันทึก,{}โปรดรอจนกว่าจะเสร็จ!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}บันทึกอัตโนมัติล้มเหลว!!!
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}บันทึกอัตโนมัติล้มเหลว!!!
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}ไม่สามารถอ่านข้อมูลได้
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}ไม่สามารถอ่านข้อมูลได้
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}บันทึกเกมล้มเหลว!!!{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}ไม่สามารถทำการลบไฟล์
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}ไม่สามารถทำการลบไฟล์
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}โหลดเกมล้มเหลว{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :ข้อผิดพลาดจากภายใน: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :ข้อผิดพลาดจากภายใน: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :เกมที่บันทึกไว้ เสีย - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :เกมที่บันทึกไว้ เสีย - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :เกมที่บันทึกไว้ สำหรับเวอร์ชันใหม่
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :เกมที่บันทึกไว้ สำหรับเวอร์ชันใหม่
|
||||||
|
@@ -4726,9 +4726,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}預估
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}遊戲還在儲存中,{}請稍候!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}遊戲還在儲存中,{}請稍候!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}自動儲存失敗
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}自動儲存失敗
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}無法讀取磁碟
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}無法讀取磁碟
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}遊戲儲存失敗{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}無法刪除檔案
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}無法刪除檔案
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}遊戲載入失敗{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :內部錯誤:{STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :內部錯誤:{STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :損壞的存檔 - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :損壞的存檔 - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :該存檔是由較新版本的遊戲所產生
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :該存檔是由較新版本的遊戲所產生
|
||||||
|
@@ -4898,9 +4898,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Tahmini
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Kayıt işlemi sürüyor,{}lütfen bitene kadar bekleyin!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Kayıt işlemi sürüyor,{}lütfen bitene kadar bekleyin!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Otomatik kayıt başarısız
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Otomatik kayıt başarısız
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Sürücü okunamıyor
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Sürücü okunamıyor
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Oyun kaydedilemedi{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Dosya silinemedi
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Dosya silinemedi
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Dosya yüklenemedi{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :İç hata: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :İç hata: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bozuk kayıtlı oyun - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bozuk kayıtlı oyun - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Oyun yeni bir sürümle kaydedilmiş.
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Oyun yeni bir sürümle kaydedilmiş.
|
||||||
|
@@ -1871,7 +1871,7 @@ STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Цоків
|
|||||||
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Показувати час прибуття та відправлення у розкладах: {STRING}
|
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Показувати час прибуття та відправлення у розкладах: {STRING}
|
||||||
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Відображати очікуваний час прибуття та відправлення у розкладі
|
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Відображати очікуваний час прибуття та відправлення у розкладі
|
||||||
|
|
||||||
STR_CONFIG_SETTING_QUICKGOTO :Прискорене створення наказів транспорту: {STRING}
|
STR_CONFIG_SETTING_QUICKGOTO :Прискорене створення завдань для транспорту: {STRING}
|
||||||
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :При відображенні списка завдань транспортного засобу автоматично натискається кнопка створення нових завдань
|
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :При відображенні списка завдань транспортного засобу автоматично натискається кнопка створення нових завдань
|
||||||
|
|
||||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Тип колії на початку нової/завантаженної гри: {STRING}
|
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Тип колії на початку нової/завантаженної гри: {STRING}
|
||||||
@@ -2227,8 +2227,8 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Імперсь
|
|||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Метричні (л)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Метричні (л)
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :СІ (м³)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :СІ (м³)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Одиниці тяглової сили: {STRING}
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Одиниці тягового зусилля: {STRING}
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Якщо тяглова сила відображається на інтерфейсі: показувати її в обраній одиниці виміру
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Якщо тягове зусилля відображається на інтерфейсі: показувати її в обраній одиниці виміру
|
||||||
###length 3
|
###length 3
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Імперські (фунт-сили)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Імперські (фунт-сили)
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Метричні (кгс)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Метричні (кгс)
|
||||||
@@ -2413,17 +2413,17 @@ STR_LIVERY_AIRCRAFT_GROUP_EMPTY :Не налаш
|
|||||||
|
|
||||||
###length 23
|
###length 23
|
||||||
STR_LIVERY_DEFAULT :Базовий колір
|
STR_LIVERY_DEFAULT :Базовий колір
|
||||||
STR_LIVERY_STEAM :Паровоз
|
STR_LIVERY_STEAM :Паротяг
|
||||||
STR_LIVERY_DIESEL :Тепловоз
|
STR_LIVERY_DIESEL :Теплотяг
|
||||||
STR_LIVERY_ELECTRIC :Електровоз
|
STR_LIVERY_ELECTRIC :Електротяг
|
||||||
STR_LIVERY_MONORAIL :Монорейковий локомотив
|
STR_LIVERY_MONORAIL :Монорейковий локомотив
|
||||||
STR_LIVERY_MAGLEV :Магнітний локомотив
|
STR_LIVERY_MAGLEV :Магнітний локомотив
|
||||||
STR_LIVERY_DMU :Багатосекційний тепловоз
|
STR_LIVERY_DMU :Багатосекційний теплотяг
|
||||||
STR_LIVERY_EMU :Багатосекційний електровоз
|
STR_LIVERY_EMU :Багатосекційний електротяг
|
||||||
STR_LIVERY_PASSENGER_WAGON_STEAM :Пасажирський вагон (паровоз)
|
STR_LIVERY_PASSENGER_WAGON_STEAM :Пасажирський вагон (паротяговий)
|
||||||
STR_LIVERY_PASSENGER_WAGON_DIESEL :Пасажирський вагон (тепловоз)
|
STR_LIVERY_PASSENGER_WAGON_DIESEL :Пасажирський вагон (теплотяговий)
|
||||||
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пасажирський вагон (електровоз)
|
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пасажирський вагон (електротяговий)
|
||||||
STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пасажирський вагон (монорейка)
|
STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пасажирський вагон (монорейковий)
|
||||||
STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пасажирський вагон (маглев)
|
STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пасажирський вагон (маглев)
|
||||||
STR_LIVERY_FREIGHT_WAGON :Вантажний вагон
|
STR_LIVERY_FREIGHT_WAGON :Вантажний вагон
|
||||||
STR_LIVERY_BUS :Автобус
|
STR_LIVERY_BUS :Автобус
|
||||||
@@ -2907,8 +2907,8 @@ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Не п
|
|||||||
STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Підсвічувати зону покриття станції
|
STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Підсвічувати зону покриття станції
|
||||||
STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Приймає: {GOLD}{CARGO_LIST}
|
STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Приймає: {GOLD}{CARGO_LIST}
|
||||||
STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Постачає: {GOLD}{CARGO_LIST}
|
STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Постачає: {GOLD}{CARGO_LIST}
|
||||||
STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK} Вартість експлуатації: {GOLD}{CURRENCY_SHORT}/рік
|
STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}Вартість експлуатації: {GOLD}{CURRENCY_SHORT}/рік
|
||||||
STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK} Вартість експлуатації: {GOLD}{CURRENCY_SHORT}/період
|
STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}Вартість експлуатації: {GOLD}{CURRENCY_SHORT}/період
|
||||||
|
|
||||||
# Join station window
|
# Join station window
|
||||||
STR_JOIN_STATION_CAPTION :{WHITE}Об'єднати станцію
|
STR_JOIN_STATION_CAPTION :{WHITE}Об'єднати станцію
|
||||||
@@ -4213,8 +4213,8 @@ STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Швид
|
|||||||
STR_PURCHASE_INFO_SPEED :{BLACK}Швидкість: {GOLD}{VELOCITY}
|
STR_PURCHASE_INFO_SPEED :{BLACK}Швидкість: {GOLD}{VELOCITY}
|
||||||
STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Швидкість в океані: {GOLD}{VELOCITY}
|
STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Швидкість в океані: {GOLD}{VELOCITY}
|
||||||
STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Швидкість в каналі/річці: {GOLD}{VELOCITY}
|
STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Швидкість в каналі/річці: {GOLD}{VELOCITY}
|
||||||
STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK} Вартість експлуатації: {GOLD}{CURRENCY_LONG}/рік
|
STR_PURCHASE_INFO_RUNNINGCOST_YEAR :{BLACK}Вартість експлуатації: {GOLD}{CURRENCY_LONG}/рік
|
||||||
STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK} Вартість експлуатації: {GOLD}{CURRENCY_LONG}/період
|
STR_PURCHASE_INFO_RUNNINGCOST_PERIOD :{BLACK}Вартість експлуатації: {GOLD}{CURRENCY_LONG}/період
|
||||||
STR_PURCHASE_INFO_CAPACITY :{BLACK}Місткість: {GOLD}{CARGO_LONG} {STRING}
|
STR_PURCHASE_INFO_CAPACITY :{BLACK}Місткість: {GOLD}{CARGO_LONG} {STRING}
|
||||||
STR_PURCHASE_INFO_REFITTABLE :(змінюється)
|
STR_PURCHASE_INFO_REFITTABLE :(змінюється)
|
||||||
STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Рік випуску: {GOLD}{NUM}{BLACK} Вік: {GOLD}{COMMA} р{P ік оки оків}
|
STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Рік випуску: {GOLD}{NUM}{BLACK} Вік: {GOLD}{COMMA} р{P ік оки оків}
|
||||||
@@ -4231,7 +4231,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Всі типи
|
|||||||
STR_PURCHASE_INFO_NONE :Нема
|
STR_PURCHASE_INFO_NONE :Нема
|
||||||
STR_PURCHASE_INFO_ENGINES_ONLY :Тільки локомотиви
|
STR_PURCHASE_INFO_ENGINES_ONLY :Тільки локомотиви
|
||||||
STR_PURCHASE_INFO_ALL_BUT :Всі, крім {CARGO_LIST}
|
STR_PURCHASE_INFO_ALL_BUT :Всі, крім {CARGO_LIST}
|
||||||
STR_PURCHASE_INFO_MAX_TE :{BLACK}Максимальна тягова сила: {GOLD}{FORCE}
|
STR_PURCHASE_INFO_MAX_TE :{BLACK}Максимальне тягове зусилля: {GOLD}{FORCE}
|
||||||
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Дальність: {GOLD}{COMMA} клітинок
|
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Дальність: {GOLD}{COMMA} клітинок
|
||||||
STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Тип літака: {GOLD}{STRING}
|
STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Тип літака: {GOLD}{STRING}
|
||||||
|
|
||||||
@@ -4534,7 +4534,7 @@ STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Очі
|
|||||||
STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Занадто далеко до наступного місця призначення
|
STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Занадто далеко до наступного місця призначення
|
||||||
|
|
||||||
STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Прямує до {0:STATION}
|
STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{1:VELOCITY} - Прямує до {0:STATION}
|
||||||
STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Без наказів
|
STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCITY} - Без завдань
|
||||||
STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Прямує до {0:WAYPOINT}
|
STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Прямує до {0:WAYPOINT}
|
||||||
STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Прямує до {0:DEPOT}
|
STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{1:VELOCITY} - Прямує до {0:DEPOT}
|
||||||
STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Техогляд у {0:DEPOT}
|
STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Техогляд у {0:DEPOT}
|
||||||
@@ -4565,8 +4565,8 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Назв
|
|||||||
|
|
||||||
STR_VEHICLE_INFO_AGE :{COMMA} р{P ік оки оків} ({COMMA})
|
STR_VEHICLE_INFO_AGE :{COMMA} р{P ік оки оків} ({COMMA})
|
||||||
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} р{P ік оки оків} ({COMMA})
|
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} р{P ік оки оків} ({COMMA})
|
||||||
STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Вартість експлуатації: {LTBLUE}{CURRENCY_LONG}/рік
|
STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK}Вартість експлуатації: {LTBLUE}{CURRENCY_LONG}/рік
|
||||||
STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Вартість експлуатації: {LTBLUE}{CURRENCY_LONG}/період
|
STR_VEHICLE_INFO_AGE_RUNNING_COST_PERIOD :{BLACK}Вік: {LTBLUE}{STRING}{BLACK}Вартість експлуатації: {LTBLUE}{CURRENCY_LONG}/період
|
||||||
|
|
||||||
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY}
|
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY}
|
||||||
STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Тип: {LTBLUE}{STRING}
|
STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Тип: {LTBLUE}{STRING}
|
||||||
@@ -4671,8 +4671,8 @@ STR_ORDERS_LIST_TOOLTIP :{BLACK}Марш
|
|||||||
STR_ORDER_INDEX :{COMMA}:{NBSP}
|
STR_ORDER_INDEX :{COMMA}:{NBSP}
|
||||||
STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING}
|
STR_ORDER_TEXT :{STRING} {STRING} {STRING} {STRING}
|
||||||
|
|
||||||
STR_ORDERS_END_OF_ORDERS :- - Кінець наказів - -
|
STR_ORDERS_END_OF_ORDERS :- - Кінець завдань - -
|
||||||
STR_ORDERS_END_OF_SHARED_ORDERS :- - Кінець спільних наказів - -
|
STR_ORDERS_END_OF_SHARED_ORDERS :- - Кінець спільних завдань - -
|
||||||
|
|
||||||
# Order bottom buttons
|
# Order bottom buttons
|
||||||
STR_ORDER_NON_STOP :{BLACK}Без зупинки
|
STR_ORDER_NON_STOP :{BLACK}Без зупинки
|
||||||
@@ -5041,9 +5041,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Приб
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Збереження...{}зачекайте, доки завершиться!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Збереження...{}зачекайте, доки завершиться!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Помилка автозбереження
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Помилка автозбереження
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Неможливо прочитати пристрій
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Неможливо прочитати пристрій
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Помилка запису гри{}{STRING}
|
STR_ERROR_GAME_SAVE_FAILED :
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Неможливо стерти файл
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Неможливо стерти файл
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Помилка завантаження гри{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Внутрішня помилка: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Внутрішня помилка: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл збереженої гри пошкоджений - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл збереженої гри пошкоджений - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Файл збереженої гри зроблений більш новою версією
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Файл збереженої гри зроблений більш новою версією
|
||||||
@@ -5435,8 +5435,8 @@ STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Немо
|
|||||||
STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Літак у польоті
|
STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Літак у польоті
|
||||||
|
|
||||||
# Order related errors
|
# Order related errors
|
||||||
STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Немає місця для наказів
|
STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Немає місця для нових завдань
|
||||||
STR_ERROR_TOO_MANY_ORDERS :{WHITE}Дуже багато наказів
|
STR_ERROR_TOO_MANY_ORDERS :{WHITE}Занадто багато завдань
|
||||||
STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Неможливо додати наказ...
|
STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Неможливо додати наказ...
|
||||||
STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Неможливо видалити наказ...
|
STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Неможливо видалити наказ...
|
||||||
STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Неможливо змінити наказ...
|
STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Неможливо змінити наказ...
|
||||||
@@ -5658,33 +5658,33 @@ STR_SV_STNAME_FALLBACK :{STRING}, ст
|
|||||||
##id 0x8000
|
##id 0x8000
|
||||||
###length 116
|
###length 116
|
||||||
# Vehicle names
|
# Vehicle names
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (паровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (паротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (паровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (паротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (паровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (паротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (паровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (паротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (паровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (паротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (тепловоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (теплотяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (електровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (електротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (електровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (електротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (електровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (електротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (електровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (електротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Пасажирський вагон
|
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Пасажирський вагон
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Поштовий вагон
|
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Поштовий вагон
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Вагон для вугілля
|
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Вагон для вугілля
|
||||||
@@ -5712,8 +5712,8 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Вагон дл
|
|||||||
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Вагон для батарейок
|
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Вагон для батарейок
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Вагон для газованої води
|
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Вагон для газованої води
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Вагон для пластиліну
|
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Вагон для пластиліну
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (електровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (електротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (електровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (електротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99
|
STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Пасажирський вагон
|
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Пасажирський вагон
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Поштовий вагон
|
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Поштовий вагон
|
||||||
@@ -5742,10 +5742,10 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Вагон дл
|
|||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Вагон для батарейок
|
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Вагон для батарейок
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Вагон для газованої води
|
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Вагон для газованої води
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Вагон для пластиліну
|
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Вагон для пластиліну
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (електровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (електротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (електровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (електротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (електровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (електротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (електровоз)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (електротяг)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer
|
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Пасажирський вагон
|
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Пасажирський вагон
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Поштовий вагон
|
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Поштовий вагон
|
||||||
|
@@ -4643,7 +4643,7 @@ STR_ORDER_REFIT_ORDER :(Cải biến t
|
|||||||
STR_ORDER_REFIT_STOP_ORDER :(Cải biến thành {STRING} và dừng)
|
STR_ORDER_REFIT_STOP_ORDER :(Cải biến thành {STRING} và dừng)
|
||||||
STR_ORDER_STOP_ORDER :(Dừng)
|
STR_ORDER_STOP_ORDER :(Dừng)
|
||||||
|
|
||||||
STR_ORDER_WAIT_TO_UNBUNCH :(chờ để gỡ gộp)
|
STR_ORDER_WAIT_TO_UNBUNCH :(Chờ để gỡ gộp)
|
||||||
|
|
||||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Không thể sử dụng trạm){POP_COLOUR} {STRING} {STATION} {STRING}
|
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Không thể sử dụng trạm){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||||
@@ -4899,9 +4899,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Thu nh
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Đang lưu vào đĩa,{}hãy chờ cho đến khi hoàn thành!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Đang lưu vào đĩa,{}hãy chờ cho đến khi hoàn thành!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Tự lưu gặp lỗi
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Tự lưu gặp lỗi
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Không đọc được đĩa
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Không đọc được đĩa
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lưu ván chơi có lỗi{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Không thể xoá file
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Không thể xoá file
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nạp ván chơi thất bại{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Lỗi kỹ thuật: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Lỗi kỹ thuật: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bản lưu ván chơi bị hỏng - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bản lưu ván chơi bị hỏng - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Bản lưu ván chơi dành cho phiên bản mới hơn
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Bản lưu ván chơi dành cho phiên bản mới hơn
|
||||||
|
@@ -4899,9 +4899,7 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Amcangyf
|
|||||||
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Mae'r gêm wrthi'n cael ei chadw,{}Arhoswch nes y bydd y broses wedi'i chwblhau!
|
STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Mae'r gêm wrthi'n cael ei chadw,{}Arhoswch nes y bydd y broses wedi'i chwblhau!
|
||||||
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Methodd yr Awtogadw
|
STR_ERROR_AUTOSAVE_FAILED :{WHITE}Methodd yr Awtogadw
|
||||||
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Methu darllen y gyriant
|
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Methu darllen y gyriant
|
||||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Methwyd â Chadw Gêm{}{STRING}
|
|
||||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Methu Dileu Ffeil
|
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Methu Dileu Ffeil
|
||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Methwyd â Llwytho Gêm{}{STRING}
|
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Gwall mewnol: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Gwall mewnol: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Mae'r gêm a gadwyd wedi torri - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Mae'r gêm a gadwyd wedi torri - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Mae'r gêm a gadwyd wedi ei chadw mewn fersiwn ddiweddarach
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Mae'r gêm a gadwyd wedi ei chadw mewn fersiwn ddiweddarach
|
||||||
|
@@ -282,18 +282,18 @@ struct MainWindow : Window
|
|||||||
if (_game_mode == GM_MENU) {
|
if (_game_mode == GM_MENU) {
|
||||||
ViewportDoDrawProcessAllPending();
|
ViewportDoDrawProcessAllPending();
|
||||||
|
|
||||||
static const SpriteID title_sprites[] = {SPR_OTTD_O, SPR_OTTD_P, SPR_OTTD_E, SPR_OTTD_N, SPR_OTTD_T, SPR_OTTD_T, SPR_OTTD_D};
|
static const std::initializer_list<SpriteID> title_sprites = {SPR_OTTD_O, SPR_OTTD_P, SPR_OTTD_E, SPR_OTTD_N, SPR_OTTD_T, SPR_OTTD_T, SPR_OTTD_D};
|
||||||
uint letter_spacing = ScaleGUITrad(10);
|
uint letter_spacing = ScaleGUITrad(10);
|
||||||
int name_width = (lengthof(title_sprites) - 1) * letter_spacing;
|
int name_width = static_cast<int>(std::size(title_sprites) - 1) * letter_spacing;
|
||||||
|
|
||||||
for (uint i = 0; i < lengthof(title_sprites); i++) {
|
for (const SpriteID &sprite : title_sprites) {
|
||||||
name_width += GetSpriteSize(title_sprites[i]).width;
|
name_width += GetSpriteSize(sprite).width;
|
||||||
}
|
}
|
||||||
int off_x = (this->width - name_width) / 2;
|
int off_x = (this->width - name_width) / 2;
|
||||||
|
|
||||||
for (uint i = 0; i < lengthof(title_sprites); i++) {
|
for (const SpriteID &sprite : title_sprites) {
|
||||||
DrawSprite(title_sprites[i], PAL_NONE, off_x, ScaleGUITrad(50));
|
DrawSprite(sprite, PAL_NONE, off_x, ScaleGUITrad(50));
|
||||||
off_x += GetSpriteSize(title_sprites[i]).width + letter_spacing;
|
off_x += GetSpriteSize(sprite).width + letter_spacing;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -77,9 +77,9 @@ static DropDownList BuildVisibilityDropDownList()
|
|||||||
{
|
{
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
|
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NETWORK_SERVER_VISIBILITY_LOCAL, SERVER_GAME_TYPE_LOCAL, false));
|
list.push_back(MakeDropDownListStringItem(STR_NETWORK_SERVER_VISIBILITY_LOCAL, SERVER_GAME_TYPE_LOCAL));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY, SERVER_GAME_TYPE_INVITE_ONLY, false));
|
list.push_back(MakeDropDownListStringItem(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY, SERVER_GAME_TYPE_INVITE_ONLY));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NETWORK_SERVER_VISIBILITY_PUBLIC, SERVER_GAME_TYPE_PUBLIC, false));
|
list.push_back(MakeDropDownListStringItem(STR_NETWORK_SERVER_VISIBILITY_PUBLIC, SERVER_GAME_TYPE_PUBLIC));
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -105,8 +105,8 @@ public:
|
|||||||
this->Add(std::make_unique<NWidgetLeaf>(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NG_YEARS, STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION, STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP));
|
this->Add(std::make_unique<NWidgetLeaf>(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NG_YEARS, STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION, STR_NETWORK_SERVER_LIST_PLAY_TIME_CAPTION_TOOLTIP));
|
||||||
|
|
||||||
leaf = std::make_unique<NWidgetLeaf>(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NG_INFO, STR_EMPTY, STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP);
|
leaf = std::make_unique<NWidgetLeaf>(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NG_INFO, STR_EMPTY, STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP);
|
||||||
leaf->SetMinimalSize(14 + GetSpriteSize(SPR_LOCK, nullptr, ZOOM_LVL_OUT_4X).width
|
leaf->SetMinimalSize(14 + GetSpriteSize(SPR_LOCK, nullptr, ZOOM_LVL_NORMAL).width
|
||||||
+ GetSpriteSize(SPR_BLOT, nullptr, ZOOM_LVL_OUT_4X).width, 12);
|
+ GetSpriteSize(SPR_BLOT, nullptr, ZOOM_LVL_NORMAL).width, 12);
|
||||||
leaf->SetFill(0, 1);
|
leaf->SetFill(0, 1);
|
||||||
this->Add(std::move(leaf));
|
this->Add(std::move(leaf));
|
||||||
}
|
}
|
||||||
@@ -1507,8 +1507,8 @@ private:
|
|||||||
static void OnClickClientAdmin([[maybe_unused]] NetworkClientListWindow *w, [[maybe_unused]] Point pt, ClientID client_id)
|
static void OnClickClientAdmin([[maybe_unused]] NetworkClientListWindow *w, [[maybe_unused]] Point pt, ClientID client_id)
|
||||||
{
|
{
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK, DD_CLIENT_ADMIN_KICK, false));
|
list.push_back(MakeDropDownListStringItem(STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_KICK, DD_CLIENT_ADMIN_KICK));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN, DD_CLIENT_ADMIN_BAN, false));
|
list.push_back(MakeDropDownListStringItem(STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_BAN, DD_CLIENT_ADMIN_BAN));
|
||||||
|
|
||||||
Rect wi_rect;
|
Rect wi_rect;
|
||||||
wi_rect.left = pt.x;
|
wi_rect.left = pt.x;
|
||||||
@@ -1529,8 +1529,8 @@ private:
|
|||||||
static void OnClickCompanyAdmin([[maybe_unused]] NetworkClientListWindow *w, [[maybe_unused]] Point pt, CompanyID company_id)
|
static void OnClickCompanyAdmin([[maybe_unused]] NetworkClientListWindow *w, [[maybe_unused]] Point pt, CompanyID company_id)
|
||||||
{
|
{
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET, DD_COMPANY_ADMIN_RESET, NetworkCompanyHasClients(company_id)));
|
list.push_back(MakeDropDownListStringItem(STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_RESET, DD_COMPANY_ADMIN_RESET, NetworkCompanyHasClients(company_id)));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK, DD_COMPANY_ADMIN_UNLOCK, !NetworkCompanyIsPassworded(company_id)));
|
list.push_back(MakeDropDownListStringItem(STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_UNLOCK, DD_COMPANY_ADMIN_UNLOCK, !NetworkCompanyIsPassworded(company_id)));
|
||||||
|
|
||||||
Rect wi_rect;
|
Rect wi_rect;
|
||||||
wi_rect.left = pt.x;
|
wi_rect.left = pt.x;
|
||||||
|
@@ -1053,13 +1053,13 @@ struct NewGRFInspectWindow : Window {
|
|||||||
|
|
||||||
case WID_NGRFI_SPRITE_DUMP_OPTIONS: {
|
case WID_NGRFI_SPRITE_DUMP_OPTIONS: {
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO, NGIWDDO_GOTO_SPRITE, false));
|
list.push_back(MakeDropDownListStringItem(STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO, NGIWDDO_GOTO_SPRITE, false));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NEWGRF_INSPECT_SPRITE_DUMP_CLEAR, NGIWDDO_CLEAR, false));
|
list.push_back(MakeDropDownListStringItem(STR_NEWGRF_INSPECT_SPRITE_DUMP_CLEAR, NGIWDDO_CLEAR, false));
|
||||||
list.push_back(std::make_unique<DropDownListDividerItem>(-1, false));
|
list.push_back(MakeDropDownListDividerItem());
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(!this->click_to_mark_mode, STR_NEWGRF_INSPECT_SPRITE_DUMP_CLICK_TO_HIGHLIGHT, NGIWDDO_CLICK_TO_HIGHLIGHT, false));
|
list.push_back(MakeDropDownListCheckedItem(!this->click_to_mark_mode, STR_NEWGRF_INSPECT_SPRITE_DUMP_CLICK_TO_HIGHLIGHT, NGIWDDO_CLICK_TO_HIGHLIGHT, false));
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(this->click_to_mark_mode, STR_NEWGRF_INSPECT_SPRITE_DUMP_CLICK_TO_MARK, NGIWDDO_CLICK_TO_MARK, false));
|
list.push_back(MakeDropDownListCheckedItem(this->click_to_mark_mode, STR_NEWGRF_INSPECT_SPRITE_DUMP_CLICK_TO_MARK, NGIWDDO_CLICK_TO_MARK, false));
|
||||||
list.push_back(std::make_unique<DropDownListDividerItem>(-1, false));
|
list.push_back(MakeDropDownListDividerItem());
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(this->sprite_dump_more_details, STR_NEWGRF_INSPECT_SPRITE_DUMP_MORE_DETAILS, NGIWDDO_MORE_DETAILS, false));
|
list.push_back(MakeDropDownListCheckedItem(this->sprite_dump_more_details, STR_NEWGRF_INSPECT_SPRITE_DUMP_MORE_DETAILS, NGIWDDO_MORE_DETAILS, false));
|
||||||
|
|
||||||
ShowDropDownList(this, std::move(list), 0, WID_NGRFI_SPRITE_DUMP_OPTIONS, 140);
|
ShowDropDownList(this, std::move(list), 0, WID_NGRFI_SPRITE_DUMP_OPTIONS, 140);
|
||||||
break;
|
break;
|
||||||
@@ -1673,7 +1673,7 @@ struct SpriteAlignerWindow : Window {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SpriteAlignerWindow::zoom = Clamp(SpriteAlignerWindow::zoom, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max);
|
SpriteAlignerWindow::zoom = Clamp(SpriteAlignerWindow::zoom, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max);
|
||||||
for (ZoomLevel z = ZOOM_LVL_NORMAL; z < ZOOM_LVL_SPR_COUNT; z++) {
|
for (ZoomLevel z = ZOOM_LVL_BEGIN; z < ZOOM_LVL_SPR_COUNT; z++) {
|
||||||
this->SetWidgetsDisabledState(z < _settings_client.gui.zoom_min || z > _settings_client.gui.zoom_max, WID_SA_ZOOM + z);
|
this->SetWidgetsDisabledState(z < _settings_client.gui.zoom_min || z > _settings_client.gui.zoom_max, WID_SA_ZOOM + z);
|
||||||
this->SetWidgetsLoweredState(SpriteAlignerWindow::zoom == z, WID_SA_ZOOM + z);
|
this->SetWidgetsLoweredState(SpriteAlignerWindow::zoom == z, WID_SA_ZOOM + z);
|
||||||
}
|
}
|
||||||
@@ -1742,12 +1742,12 @@ static constexpr NWidgetPart _nested_sprite_aligner_widgets[] = {
|
|||||||
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SA_SCROLLBAR),
|
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SA_SCROLLBAR),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
NWidget(NWID_VERTICAL),
|
NWidget(NWID_VERTICAL),
|
||||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_NORMAL), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_MIN, STR_NULL), SetFill(1, 0),
|
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_IN_4X), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_MIN, STR_NULL), SetFill(1, 0),
|
||||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_OUT_2X), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_IN_2X, STR_NULL), SetFill(1, 0),
|
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_IN_2X), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_IN_2X, STR_NULL), SetFill(1, 0),
|
||||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_OUT_4X), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_NORMAL, STR_NULL), SetFill(1, 0),
|
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_NORMAL), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_NORMAL, STR_NULL), SetFill(1, 0),
|
||||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_OUT_8X), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X, STR_NULL), SetFill(1, 0),
|
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_OUT_2X), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X, STR_NULL), SetFill(1, 0),
|
||||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_OUT_16X), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X, STR_NULL), SetFill(1, 0),
|
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_OUT_4X), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X, STR_NULL), SetFill(1, 0),
|
||||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_OUT_32X), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X, STR_NULL), SetFill(1, 0),
|
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + ZOOM_LVL_OUT_8X), SetDataTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X, STR_NULL), SetFill(1, 0),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
|
@@ -406,7 +406,7 @@ struct NewGRFParametersWindow : public Window {
|
|||||||
|
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
for (uint32_t i = par_info.min_value; i <= par_info.max_value; i++) {
|
for (uint32_t i = par_info.min_value; i <= par_info.max_value; i++) {
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(GetGRFStringFromGRFText(par_info.value_names.find(i)->second), i, false));
|
list.push_back(MakeDropDownListStringItem(GetGRFStringFromGRFText(par_info.value_names.find(i)->second), i));
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowDropDownListAt(this, std::move(list), old_val, WID_NP_SETTING_DROPDOWN, wi_rect, COLOUR_ORANGE);
|
ShowDropDownListAt(this, std::move(list), old_val, WID_NP_SETTING_DROPDOWN, wi_rect, COLOUR_ORANGE);
|
||||||
@@ -971,10 +971,10 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
|
|||||||
DropDownList list;
|
DropDownList list;
|
||||||
|
|
||||||
/* Add 'None' option for clearing list */
|
/* Add 'None' option for clearing list */
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NONE, -1, false));
|
list.push_back(MakeDropDownListStringItem(STR_NONE, -1));
|
||||||
|
|
||||||
for (uint i = 0; i < this->grf_presets.size(); i++) {
|
for (uint i = 0; i < this->grf_presets.size(); i++) {
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(this->grf_presets[i], i, false));
|
list.push_back(MakeDropDownListStringItem(this->grf_presets[i], i));
|
||||||
}
|
}
|
||||||
|
|
||||||
this->CloseChildWindows(WC_QUERY_STRING); // Remove the parameter query window
|
this->CloseChildWindows(WC_QUERY_STRING); // Remove the parameter query window
|
||||||
|
@@ -55,7 +55,7 @@ inline void AddIndustryNewsItem(StringID string, NewsType type, IndustryID indus
|
|||||||
void NewsLoop();
|
void NewsLoop();
|
||||||
void InitNewsItemStructs();
|
void InitNewsItemStructs();
|
||||||
|
|
||||||
extern const NewsItem *_statusbar_news_item;
|
const NewsItem *GetStatusbarNews();
|
||||||
|
|
||||||
void DeleteInvalidEngineNews();
|
void DeleteInvalidEngineNews();
|
||||||
void DeleteVehicleNews(VehicleID vid, StringID news);
|
void DeleteVehicleNews(VehicleID vid, StringID news);
|
||||||
|
329
src/news_gui.cpp
329
src/news_gui.cpp
@@ -22,7 +22,6 @@
|
|||||||
#include "town.h"
|
#include "town.h"
|
||||||
#include "sound_func.h"
|
#include "sound_func.h"
|
||||||
#include "string_func.h"
|
#include "string_func.h"
|
||||||
#include "dropdown_func.h"
|
|
||||||
#include "statusbar_gui.h"
|
#include "statusbar_gui.h"
|
||||||
#include "company_manager_face.h"
|
#include "company_manager_face.h"
|
||||||
#include "company_func.h"
|
#include "company_func.h"
|
||||||
@@ -42,25 +41,42 @@
|
|||||||
|
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
const NewsItem *_statusbar_news_item = nullptr;
|
static const uint MIN_NEWS_AMOUNT = 30; ///< preferred minimum amount of news messages.
|
||||||
|
static const uint MAX_NEWS_AMOUNT = 1U << 10; ///< Do not exceed this number of news messages.
|
||||||
|
|
||||||
static uint MIN_NEWS_AMOUNT = 30; ///< preferred minimum amount of news messages
|
static NewsContainer _news; ///< List of news, with newest items at the start.
|
||||||
static uint MAX_NEWS_AMOUNT = 1 << 10; ///< Do not exceed this number of news messages
|
|
||||||
static uint _total_news = 0; ///< current number of news items
|
|
||||||
static NewsItem *_oldest_news = nullptr; ///< head of news items queue
|
|
||||||
NewsItem *_latest_news = nullptr; ///< tail of news items queue
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Forced news item.
|
* Forced news item.
|
||||||
* Users can force an item by accessing the history or "last message".
|
* Users can force an item by accessing the history or "last message".
|
||||||
* If the message being shown was forced by the user, a pointer is stored
|
* If the message being shown was forced by the user, an iterater is stored
|
||||||
* in _forced_news. Otherwise, \a _forced_news variable is nullptr.
|
* in _forced_news. Otherwise, \a _forced_news variable is the end of \a _news.
|
||||||
*/
|
*/
|
||||||
static const NewsItem *_forced_news = nullptr;
|
static NewsIterator _forced_news = std::end(_news);
|
||||||
|
|
||||||
/** Current news item (last item shown regularly). */
|
/** Current news item (last item shown regularly). */
|
||||||
static const NewsItem *_current_news = nullptr;
|
static NewsIterator _current_news = std::end(_news);
|
||||||
|
|
||||||
|
/** Current status bar news item. */
|
||||||
|
static NewsIterator _statusbar_news = std::end(_news);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get pointer to the current status bar news item.
|
||||||
|
* @return Pointer to the current status bar news item, or nullptr if there is none.
|
||||||
|
*/
|
||||||
|
const NewsItem *GetStatusbarNews()
|
||||||
|
{
|
||||||
|
return (_statusbar_news == std::end(_news)) ? nullptr : &*_statusbar_news;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get read-only reference to all news items.
|
||||||
|
* @return Read-only reference to all news items.
|
||||||
|
*/
|
||||||
|
const NewsContainer &GetNews()
|
||||||
|
{
|
||||||
|
return _news;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the position a news-reference is referencing.
|
* Get the position a news-reference is referencing.
|
||||||
@@ -486,7 +502,7 @@ struct NewsWindow : Window {
|
|||||||
case WID_N_CLOSEBOX:
|
case WID_N_CLOSEBOX:
|
||||||
NewsWindow::duration = 0;
|
NewsWindow::duration = 0;
|
||||||
this->Close();
|
this->Close();
|
||||||
_forced_news = nullptr;
|
_forced_news = std::end(_news);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_N_CAPTION:
|
case WID_N_CAPTION:
|
||||||
@@ -624,29 +640,21 @@ static void ShowNewspaper(const NewsItem *ni)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Show news item in the ticker */
|
/** Show news item in the ticker */
|
||||||
static void ShowTicker(const NewsItem *ni)
|
static void ShowTicker(NewsIterator ni)
|
||||||
{
|
{
|
||||||
if (_settings_client.sound.news_ticker) SndPlayFx(SND_16_NEWS_TICKER);
|
if (_settings_client.sound.news_ticker) SndPlayFx(SND_16_NEWS_TICKER);
|
||||||
|
|
||||||
_statusbar_news_item = ni;
|
_statusbar_news = ni;
|
||||||
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_SHOW_TICKER);
|
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_SHOW_TICKER);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Initialize the news-items data structures */
|
/** Initialize the news-items data structures */
|
||||||
void InitNewsItemStructs()
|
void InitNewsItemStructs()
|
||||||
{
|
{
|
||||||
for (NewsItem *ni = _oldest_news; ni != nullptr; ) {
|
_news.clear();
|
||||||
NewsItem *next = ni->next;
|
_forced_news = std::end(_news);
|
||||||
delete ni;
|
_current_news = std::end(_news);
|
||||||
ni = next;
|
_statusbar_news = std::end(_news);
|
||||||
}
|
|
||||||
|
|
||||||
_total_news = 0;
|
|
||||||
_oldest_news = nullptr;
|
|
||||||
_latest_news = nullptr;
|
|
||||||
_forced_news = nullptr;
|
|
||||||
_current_news = nullptr;
|
|
||||||
_statusbar_news_item = nullptr;
|
|
||||||
NewsWindow::duration = 0;
|
NewsWindow::duration = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -656,7 +664,7 @@ void InitNewsItemStructs()
|
|||||||
*/
|
*/
|
||||||
static bool ReadyForNextTickerItem()
|
static bool ReadyForNextTickerItem()
|
||||||
{
|
{
|
||||||
const NewsItem *ni = _statusbar_news_item;
|
const NewsItem *ni = GetStatusbarNews();
|
||||||
if (ni == nullptr) return true;
|
if (ni == nullptr) return true;
|
||||||
|
|
||||||
/* Ticker message
|
/* Ticker message
|
||||||
@@ -670,8 +678,7 @@ static bool ReadyForNextTickerItem()
|
|||||||
*/
|
*/
|
||||||
static bool ReadyForNextNewsItem()
|
static bool ReadyForNextNewsItem()
|
||||||
{
|
{
|
||||||
const NewsItem *ni = _forced_news == nullptr ? _current_news : _forced_news;
|
if (_forced_news == std::end(_news) && _current_news == std::end(_news)) return true;
|
||||||
if (ni == nullptr) return true;
|
|
||||||
|
|
||||||
/* neither newsticker nor newspaper are running */
|
/* neither newsticker nor newspaper are running */
|
||||||
return (NewsWindow::duration <= 0 || FindWindowById(WC_NEWS_WINDOW, 0) == nullptr);
|
return (NewsWindow::duration <= 0 || FindWindowById(WC_NEWS_WINDOW, 0) == nullptr);
|
||||||
@@ -680,116 +687,98 @@ static bool ReadyForNextNewsItem()
|
|||||||
/** Move to the next ticker item */
|
/** Move to the next ticker item */
|
||||||
static void MoveToNextTickerItem()
|
static void MoveToNextTickerItem()
|
||||||
{
|
{
|
||||||
|
assert(!std::empty(_news));
|
||||||
|
|
||||||
/* There is no status bar, so no reason to show news;
|
/* There is no status bar, so no reason to show news;
|
||||||
* especially important with the end game screen when
|
* especially important with the end game screen when
|
||||||
* there is no status bar but possible news. */
|
* there is no status bar but possible news. */
|
||||||
if (FindWindowById(WC_STATUS_BAR, 0) == nullptr) return;
|
if (FindWindowById(WC_STATUS_BAR, 0) == nullptr) return;
|
||||||
|
|
||||||
/* if we're not at the last item, then move on */
|
/* if we're not at the latest item, then move on */
|
||||||
while (_statusbar_news_item != _latest_news) {
|
while (_statusbar_news != std::begin(_news)) {
|
||||||
_statusbar_news_item = (_statusbar_news_item == nullptr) ? _oldest_news : _statusbar_news_item->next;
|
--_statusbar_news;
|
||||||
const NewsItem *ni = _statusbar_news_item;
|
const NewsType type = _statusbar_news->type;
|
||||||
const NewsType type = ni->type;
|
|
||||||
|
|
||||||
/* check the date, don't show too old items */
|
/* check the date, don't show too old items */
|
||||||
if (_scaled_tick_counter - ni->creation_tick > _news_type_data[type].age * DAY_TICKS) continue;
|
if (_scaled_tick_counter - _statusbar_news->creation_tick > _news_type_data[type].age * DAY_TICKS) continue;
|
||||||
|
|
||||||
switch (_news_type_data[type].GetDisplay()) {
|
switch (_news_type_data[type].GetDisplay()) {
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
case ND_OFF: // Off - show nothing only a small reminder in the status bar
|
case ND_OFF: // Off - show nothing only a small reminder in the status bar
|
||||||
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_SHOW_REMINDER);
|
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_SHOW_REMINDER);
|
||||||
break;
|
return;
|
||||||
|
|
||||||
case ND_SUMMARY: // Summary - show ticker
|
case ND_SUMMARY: // Summary - show ticker
|
||||||
ShowTicker(ni);
|
ShowTicker(_statusbar_news);
|
||||||
break;
|
return;
|
||||||
|
|
||||||
case ND_FULL: // Full - show newspaper, skipped here
|
case ND_FULL: // Full - show newspaper, skipped here
|
||||||
continue;
|
break;;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Move to the next news item */
|
/** Move to the next news item */
|
||||||
static void MoveToNextNewsItem()
|
static void MoveToNextNewsItem()
|
||||||
{
|
{
|
||||||
|
assert(!std::empty(_news));
|
||||||
|
|
||||||
/* There is no status bar, so no reason to show news;
|
/* There is no status bar, so no reason to show news;
|
||||||
* especially important with the end game screen when
|
* especially important with the end game screen when
|
||||||
* there is no status bar but possible news. */
|
* there is no status bar but possible news. */
|
||||||
if (FindWindowById(WC_STATUS_BAR, 0) == nullptr) return;
|
if (FindWindowById(WC_STATUS_BAR, 0) == nullptr) return;
|
||||||
|
|
||||||
CloseWindowById(WC_NEWS_WINDOW, 0); // close the newspapers window if shown
|
CloseWindowById(WC_NEWS_WINDOW, 0); // close the newspapers window if shown
|
||||||
_forced_news = nullptr;
|
_forced_news = std::end(_news);
|
||||||
|
|
||||||
/* if we're not at the last item, then move on */
|
/* if we're not at the latest item, then move on */
|
||||||
while (_current_news != _latest_news) {
|
while (_current_news != std::begin(_news)) {
|
||||||
_current_news = (_current_news == nullptr) ? _oldest_news : _current_news->next;
|
--_current_news;
|
||||||
const NewsItem *ni = _current_news;
|
const NewsType type = _current_news->type;
|
||||||
const NewsType type = ni->type;
|
|
||||||
|
|
||||||
/* check the date, don't show too old items */
|
/* check the date, don't show too old items */
|
||||||
if (_scaled_tick_counter - ni->creation_tick > _news_type_data[type].age * DAY_TICKS) continue;
|
if (_scaled_tick_counter - _current_news->creation_tick > _news_type_data[type].age * DAY_TICKS) continue;
|
||||||
|
|
||||||
switch (_news_type_data[type].GetDisplay()) {
|
switch (_news_type_data[type].GetDisplay()) {
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
case ND_OFF: // Off - show nothing only a small reminder in the status bar, skipped here
|
case ND_OFF: // Off - show nothing only a small reminder in the status bar, skipped here
|
||||||
continue;
|
break;
|
||||||
|
|
||||||
case ND_SUMMARY: // Summary - show ticker, skipped here
|
case ND_SUMMARY: // Summary - show ticker, skipped here
|
||||||
continue;
|
break;;
|
||||||
|
|
||||||
case ND_FULL: // Full - show newspaper
|
case ND_FULL: // Full - show newspaper
|
||||||
ShowNewspaper(ni);
|
ShowNewspaper(&*_current_news);
|
||||||
break;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Delete a news item from the queue */
|
/** Delete a news item from the queue */
|
||||||
static void DeleteNewsItem(NewsItem *ni)
|
static std::list<NewsItem>::iterator DeleteNewsItem(std::list<NewsItem>::iterator ni)
|
||||||
{
|
{
|
||||||
/* Delete the news from the news queue. */
|
|
||||||
if (ni->prev != nullptr) {
|
|
||||||
ni->prev->next = ni->next;
|
|
||||||
} else {
|
|
||||||
assert(_oldest_news == ni);
|
|
||||||
_oldest_news = ni->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ni->next != nullptr) {
|
|
||||||
ni->next->prev = ni->prev;
|
|
||||||
} else {
|
|
||||||
assert(_latest_news == ni);
|
|
||||||
_latest_news = ni->prev;
|
|
||||||
}
|
|
||||||
|
|
||||||
_total_news--;
|
|
||||||
|
|
||||||
if (_forced_news == ni || _current_news == ni) {
|
if (_forced_news == ni || _current_news == ni) {
|
||||||
/* When we're the current news, go to the previous item first;
|
/* When we're the current news, go to the previous item first;
|
||||||
* we just possibly made that the last news item. */
|
* we just possibly made that the last news item. */
|
||||||
if (_current_news == ni) _current_news = ni->prev;
|
if (_current_news == ni) _current_news = (_current_news == std::begin(_news)) ? std::end(_news) : std::prev(_current_news);
|
||||||
|
|
||||||
/* About to remove the currently forced item (shown as newspapers) ||
|
/* About to remove the currently forced item (shown as newspapers) ||
|
||||||
* about to remove the currently displayed item (newspapers) */
|
* about to remove the currently displayed item (newspapers) */
|
||||||
MoveToNextNewsItem();
|
MoveToNextNewsItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_statusbar_news_item == ni) {
|
if (_statusbar_news == ni) {
|
||||||
/* When we're the current news, go to the previous item first;
|
/* When we're the current news, go to the previous item first;
|
||||||
* we just possibly made that the last news item. */
|
* we just possibly made that the last news item. */
|
||||||
_statusbar_news_item = ni->prev;
|
if (_statusbar_news == ni) _statusbar_news = (_statusbar_news == std::begin(_news)) ? std::end(_news) : std::prev(_statusbar_news);
|
||||||
|
|
||||||
/* About to remove the currently displayed item (ticker, or just a reminder) */
|
/* About to remove the currently displayed item (ticker, or just a reminder) */
|
||||||
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_NEWS_DELETED); // invalidate the statusbar
|
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_NEWS_DELETED); // invalidate the statusbar
|
||||||
MoveToNextTickerItem();
|
MoveToNextTickerItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
delete ni;
|
/* Delete the news from the news queue. */
|
||||||
|
return _news.erase(ni);
|
||||||
SetWindowDirty(WC_MESSAGE_HISTORY, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -831,27 +820,14 @@ void AddNewsItem(StringID string, NewsType type, NewsFlag flags, NewsReferenceTy
|
|||||||
if (_game_mode == GM_MENU) return;
|
if (_game_mode == GM_MENU) return;
|
||||||
|
|
||||||
/* Create new news item node */
|
/* Create new news item node */
|
||||||
NewsItem *ni = new NewsItem(string, type, flags, reftype1, ref1, reftype2, ref2, data);
|
_news.emplace_front(string, type, flags, reftype1, ref1, reftype2, ref2, data);
|
||||||
|
|
||||||
if (_total_news++ == 0) {
|
|
||||||
assert(_oldest_news == nullptr);
|
|
||||||
_oldest_news = ni;
|
|
||||||
ni->prev = nullptr;
|
|
||||||
} else {
|
|
||||||
assert(_latest_news->next == nullptr);
|
|
||||||
_latest_news->next = ni;
|
|
||||||
ni->prev = _latest_news;
|
|
||||||
}
|
|
||||||
|
|
||||||
ni->next = nullptr;
|
|
||||||
_latest_news = ni;
|
|
||||||
|
|
||||||
/* Keep the number of stored news items to a managable number */
|
/* Keep the number of stored news items to a managable number */
|
||||||
if (_total_news > MAX_NEWS_AMOUNT) {
|
if (std::size(_news) > MAX_NEWS_AMOUNT) {
|
||||||
DeleteNewsItem(_oldest_news);
|
DeleteNewsItem(std::prev(std::end(_news)));
|
||||||
}
|
}
|
||||||
|
|
||||||
SetWindowDirty(WC_MESSAGE_HISTORY, 0);
|
InvalidateWindowData(WC_MESSAGE_HISTORY, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -918,6 +894,29 @@ CommandCost CmdCustomNewsItem(TileIndex tile, DoCommandFlag flags, uint32_t p1,
|
|||||||
return CommandCost();
|
return CommandCost();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete news items by predicate, and invalidate the message history if necessary.
|
||||||
|
* @tparam Tmin Stop if the number of news items remaining reaches \a min items.
|
||||||
|
* @tparam Tpredicate Condition for a news item to be deleted.
|
||||||
|
*/
|
||||||
|
template <size_t Tmin = 0, class Tpredicate>
|
||||||
|
void DeleteNews(Tpredicate predicate)
|
||||||
|
{
|
||||||
|
bool dirty = false;
|
||||||
|
for (auto it = std::rbegin(_news); it != std::rend(_news); /* nothing */) {
|
||||||
|
if constexpr (Tmin > 0) {
|
||||||
|
if (std::size(_news) <= Tmin) break;
|
||||||
|
}
|
||||||
|
if (predicate(*it)) {
|
||||||
|
it = std::make_reverse_iterator(DeleteNewsItem(std::prev(it.base())));
|
||||||
|
dirty = true;
|
||||||
|
} else {
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (dirty) InvalidateWindowData(WC_MESSAGE_HISTORY, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a news item type about a vehicle.
|
* Delete a news item type about a vehicle.
|
||||||
* When the news item type is INVALID_STRING_ID all news about the vehicle gets deleted.
|
* When the news item type is INVALID_STRING_ID all news about the vehicle gets deleted.
|
||||||
@@ -926,16 +925,9 @@ CommandCost CmdCustomNewsItem(TileIndex tile, DoCommandFlag flags, uint32_t p1,
|
|||||||
*/
|
*/
|
||||||
void DeleteVehicleNews(VehicleID vid, StringID news)
|
void DeleteVehicleNews(VehicleID vid, StringID news)
|
||||||
{
|
{
|
||||||
NewsItem *ni = _oldest_news;
|
DeleteNews([&](const auto &ni) {
|
||||||
|
return ((ni.reftype1 == NR_VEHICLE && ni.ref1 == vid) || (ni.reftype2 == NR_VEHICLE && ni.ref2 == vid)) && (news == INVALID_STRING_ID || ni.string_id == news);
|
||||||
while (ni != nullptr) {
|
});
|
||||||
NewsItem *next = ni->next;
|
|
||||||
if (((ni->reftype1 == NR_VEHICLE && ni->ref1 == vid) || (ni->reftype2 == NR_VEHICLE && ni->ref2 == vid)) &&
|
|
||||||
(news == INVALID_STRING_ID || ni->string_id == news)) {
|
|
||||||
DeleteNewsItem(ni);
|
|
||||||
}
|
|
||||||
ni = next;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -945,15 +937,9 @@ void DeleteVehicleNews(VehicleID vid, StringID news)
|
|||||||
*/
|
*/
|
||||||
void DeleteStationNews(StationID sid)
|
void DeleteStationNews(StationID sid)
|
||||||
{
|
{
|
||||||
NewsItem *ni = _oldest_news;
|
DeleteNews([&](const auto &ni) {
|
||||||
|
return (ni.reftype1 == NR_STATION && ni.ref1 == sid) || (ni.reftype2 == NR_STATION && ni.ref2 == sid);
|
||||||
while (ni != nullptr) {
|
});
|
||||||
NewsItem *next = ni->next;
|
|
||||||
if ((ni->reftype1 == NR_STATION && ni->ref1 == sid) || (ni->reftype2 == NR_STATION && ni->ref2 == sid)) {
|
|
||||||
DeleteNewsItem(ni);
|
|
||||||
}
|
|
||||||
ni = next;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -962,15 +948,9 @@ void DeleteStationNews(StationID sid)
|
|||||||
*/
|
*/
|
||||||
void DeleteIndustryNews(IndustryID iid)
|
void DeleteIndustryNews(IndustryID iid)
|
||||||
{
|
{
|
||||||
NewsItem *ni = _oldest_news;
|
DeleteNews([&](const auto &ni) {
|
||||||
|
return (ni.reftype1 == NR_INDUSTRY && ni.ref1 == iid) || (ni.reftype2 == NR_INDUSTRY && ni.ref2 == iid);
|
||||||
while (ni != nullptr) {
|
});
|
||||||
NewsItem *next = ni->next;
|
|
||||||
if ((ni->reftype1 == NR_INDUSTRY && ni->ref1 == iid) || (ni->reftype2 == NR_INDUSTRY && ni->ref2 == iid)) {
|
|
||||||
DeleteNewsItem(ni);
|
|
||||||
}
|
|
||||||
ni = next;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -978,25 +958,17 @@ void DeleteIndustryNews(IndustryID iid)
|
|||||||
*/
|
*/
|
||||||
void DeleteInvalidEngineNews()
|
void DeleteInvalidEngineNews()
|
||||||
{
|
{
|
||||||
NewsItem *ni = _oldest_news;
|
DeleteNews([](const auto &ni) {
|
||||||
|
return (ni.reftype1 == NR_ENGINE && (!Engine::IsValidID(ni.ref1) || !Engine::Get(ni.ref1)->IsEnabled())) ||
|
||||||
while (ni != nullptr) {
|
(ni.reftype2 == NR_ENGINE && (!Engine::IsValidID(ni.ref2) || !Engine::Get(ni.ref2)->IsEnabled()));
|
||||||
NewsItem *next = ni->next;
|
});
|
||||||
if ((ni->reftype1 == NR_ENGINE && (!Engine::IsValidID(ni->ref1) || !Engine::Get(ni->ref1)->IsEnabled())) ||
|
|
||||||
(ni->reftype2 == NR_ENGINE && (!Engine::IsValidID(ni->ref2) || !Engine::Get(ni->ref2)->IsEnabled()))) {
|
|
||||||
DeleteNewsItem(ni);
|
|
||||||
}
|
|
||||||
ni = next;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RemoveOldNewsItems()
|
static void RemoveOldNewsItems()
|
||||||
{
|
{
|
||||||
NewsItem *next;
|
DeleteNews<MIN_NEWS_AMOUNT>([](const auto &ni) {
|
||||||
for (NewsItem *cur = _oldest_news; _total_news > MIN_NEWS_AMOUNT && cur != nullptr; cur = next) {
|
return _scaled_tick_counter - ni.creation_tick > (uint)(_news_type_data[ni.type].age * _settings_client.gui.news_message_timeout * DAY_TICKS);
|
||||||
next = cur->next;
|
});
|
||||||
if (_scaled_tick_counter - cur->creation_tick > (uint)(_news_type_data[cur->type].age * _settings_client.gui.news_message_timeout * DAY_TICKS)) DeleteNewsItem(cur);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1007,17 +979,17 @@ static void RemoveOldNewsItems()
|
|||||||
*/
|
*/
|
||||||
void ChangeVehicleNews(VehicleID from_index, VehicleID to_index)
|
void ChangeVehicleNews(VehicleID from_index, VehicleID to_index)
|
||||||
{
|
{
|
||||||
for (NewsItem *ni = _oldest_news; ni != nullptr; ni = ni->next) {
|
for (auto &ni : _news) {
|
||||||
if (ni->reftype1 == NR_VEHICLE && ni->ref1 == from_index) ni->ref1 = to_index;
|
if (ni.reftype1 == NR_VEHICLE && ni.ref1 == from_index) ni.ref1 = to_index;
|
||||||
if (ni->reftype2 == NR_VEHICLE && ni->ref2 == from_index) ni->ref2 = to_index;
|
if (ni.reftype2 == NR_VEHICLE && ni.ref2 == from_index) ni.ref2 = to_index;
|
||||||
if (ni->flags & NF_VEHICLE_PARAM0 && ni->params[0].data == from_index) ni->params[0] = to_index;
|
if (ni.flags & NF_VEHICLE_PARAM0 && ni.params[0].data == from_index) ni.params[0] = to_index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NewsLoop()
|
void NewsLoop()
|
||||||
{
|
{
|
||||||
/* no news item yet */
|
/* no news item yet */
|
||||||
if (_total_news == 0) return;
|
if (std::empty(_news)) return;
|
||||||
|
|
||||||
static uint8_t _last_clean_month = 0;
|
static uint8_t _last_clean_month = 0;
|
||||||
|
|
||||||
@@ -1031,9 +1003,9 @@ void NewsLoop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Do a forced show of a specific message */
|
/** Do a forced show of a specific message */
|
||||||
static void ShowNewsMessage(const NewsItem *ni)
|
static void ShowNewsMessage(NewsIterator ni)
|
||||||
{
|
{
|
||||||
assert(_total_news != 0);
|
assert(!std::empty(_news));
|
||||||
|
|
||||||
/* Delete the news window */
|
/* Delete the news window */
|
||||||
CloseWindowById(WC_NEWS_WINDOW, 0);
|
CloseWindowById(WC_NEWS_WINDOW, 0);
|
||||||
@@ -1041,9 +1013,9 @@ static void ShowNewsMessage(const NewsItem *ni)
|
|||||||
/* setup forced news item */
|
/* setup forced news item */
|
||||||
_forced_news = ni;
|
_forced_news = ni;
|
||||||
|
|
||||||
if (_forced_news != nullptr) {
|
if (_forced_news != std::end(_news)) {
|
||||||
CloseWindowById(WC_NEWS_WINDOW, 0);
|
CloseWindowById(WC_NEWS_WINDOW, 0);
|
||||||
ShowNewspaper(ni);
|
ShowNewspaper(&*ni);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1062,26 +1034,26 @@ bool HideActiveNewsMessage()
|
|||||||
/** Show previous news item */
|
/** Show previous news item */
|
||||||
void ShowLastNewsMessage()
|
void ShowLastNewsMessage()
|
||||||
{
|
{
|
||||||
const NewsItem *ni = nullptr;
|
if (std::empty(_news)) return;
|
||||||
if (_total_news == 0) {
|
|
||||||
return;
|
NewsIterator ni;
|
||||||
} else if (_forced_news == nullptr) {
|
if (_forced_news == std::end(_news)) {
|
||||||
/* Not forced any news yet, show the current one, unless a news window is
|
/* Not forced any news yet, show the current one, unless a news window is
|
||||||
* open (which can only be the current one), then show the previous item */
|
* open (which can only be the current one), then show the previous item */
|
||||||
if (_current_news == nullptr) {
|
if (_current_news == std::end(_news)) {
|
||||||
/* No news were shown yet resp. the last shown one was already deleted.
|
/* No news were shown yet resp. the last shown one was already deleted.
|
||||||
* Threat this as if _forced_news reached _oldest_news; so, wrap around and start anew with the latest. */
|
* Treat this as if _forced_news reached the oldest news; so, wrap around and start anew with the latest. */
|
||||||
ni = _latest_news;
|
ni = std::begin(_news);
|
||||||
} else {
|
} else {
|
||||||
const Window *w = FindWindowById(WC_NEWS_WINDOW, 0);
|
const Window *w = FindWindowById(WC_NEWS_WINDOW, 0);
|
||||||
ni = (w == nullptr || (_current_news == _oldest_news)) ? _current_news : _current_news->prev;
|
ni = (w == nullptr || (std::next(_current_news) == std::end(_news))) ? _current_news : std::next(_current_news);
|
||||||
}
|
}
|
||||||
} else if (_forced_news == _oldest_news) {
|
} else if (std::next(_forced_news) == std::end(_news)) {
|
||||||
/* We have reached the oldest news, start anew with the latest */
|
/* We have reached the oldest news, start anew with the latest */
|
||||||
ni = _latest_news;
|
ni = std::begin(_news);
|
||||||
} else {
|
} else {
|
||||||
/* 'Scrolling' through news history show each one in turn */
|
/* 'Scrolling' through news history show each one in turn */
|
||||||
ni = _forced_news->prev;
|
ni = std::next(_forced_news);
|
||||||
}
|
}
|
||||||
bool wrap = false;
|
bool wrap = false;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
@@ -1090,11 +1062,11 @@ void ShowLastNewsMessage()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ni = ni->prev;
|
++ni;
|
||||||
if (ni == nullptr) {
|
if (ni == std::end(_news)) {
|
||||||
if (wrap) break;
|
if (wrap) break;
|
||||||
/* We have reached the oldest news, start anew with the latest */
|
/* We have reached the oldest news, start anew with the latest */
|
||||||
ni = _latest_news;
|
ni = std::begin(_news);
|
||||||
wrap = true;
|
wrap = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1151,37 +1123,23 @@ struct MessageHistoryWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPaint() override
|
|
||||||
{
|
|
||||||
this->OnInvalidateData(0);
|
|
||||||
this->DrawWidgets();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DrawWidget(const Rect &r, WidgetID widget) const override
|
void DrawWidget(const Rect &r, WidgetID widget) const override
|
||||||
{
|
{
|
||||||
if (widget != WID_MH_BACKGROUND || _total_news == 0) return;
|
if (widget != WID_MH_BACKGROUND || std::empty(_news)) return;
|
||||||
|
|
||||||
/* Find the first news item to display. */
|
|
||||||
NewsItem *ni = _latest_news;
|
|
||||||
for (int n = this->vscroll->GetPosition(); n > 0; n--) {
|
|
||||||
ni = ni->prev;
|
|
||||||
if (ni == nullptr) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fill the widget with news items. */
|
/* Fill the widget with news items. */
|
||||||
bool rtl = _current_text_dir == TD_RTL;
|
bool rtl = _current_text_dir == TD_RTL;
|
||||||
Rect news = r.Shrink(WidgetDimensions::scaled.framerect).Indent(this->date_width + WidgetDimensions::scaled.hsep_wide, rtl);
|
Rect news = r.Shrink(WidgetDimensions::scaled.framerect).Indent(this->date_width + WidgetDimensions::scaled.hsep_wide, rtl);
|
||||||
Rect date = r.Shrink(WidgetDimensions::scaled.framerect).WithWidth(this->date_width, rtl);
|
Rect date = r.Shrink(WidgetDimensions::scaled.framerect).WithWidth(this->date_width, rtl);
|
||||||
int y = news.top;
|
int y = news.top;
|
||||||
for (int n = this->vscroll->GetCapacity(); n > 0; n--) {
|
|
||||||
|
auto [first, last] = this->vscroll->GetVisibleRangeIterators(_news);
|
||||||
|
for (auto ni = first; ni != last; ++ni) {
|
||||||
SetDParam(0, ni->date);
|
SetDParam(0, ni->date);
|
||||||
DrawString(date.left, date.right, y, STR_JUST_DATE_TINY, TC_WHITE);
|
DrawString(date.left, date.right, y, STR_JUST_DATE_TINY, TC_WHITE);
|
||||||
|
|
||||||
DrawNewsString(news.left, news.right, y, TC_WHITE, ni);
|
DrawNewsString(news.left, news.right, y, TC_WHITE, &*ni);
|
||||||
y += this->line_height;
|
y += this->line_height;
|
||||||
|
|
||||||
ni = ni->prev;
|
|
||||||
if (ni == nullptr) return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1193,19 +1151,18 @@ struct MessageHistoryWindow : Window {
|
|||||||
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
void OnInvalidateData([[maybe_unused]] int data = 0, [[maybe_unused]] bool gui_scope = true) override
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
this->vscroll->SetCount(_total_news);
|
this->vscroll->SetCount(std::size(_news));
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
|
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
|
||||||
{
|
{
|
||||||
if (widget == WID_MH_BACKGROUND) {
|
if (widget == WID_MH_BACKGROUND) {
|
||||||
NewsItem *ni = _latest_news;
|
/* Scheduled window invalidations currently occur after the input loop, which means the scrollbar count
|
||||||
if (ni == nullptr) return;
|
* could be invalid, so ensure it's correct now. Potentially this means that item clicked on might be
|
||||||
|
* different as well. */
|
||||||
for (int n = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_MH_BACKGROUND, WidgetDimensions::scaled.framerect.top); n > 0; n--) {
|
this->vscroll->SetCount(std::size(_news));
|
||||||
ni = ni->prev;
|
auto ni = this->vscroll->GetScrolledItemFromWidget(_news, pt.y, this, widget);
|
||||||
if (ni == nullptr) return;
|
if (ni == std::end(_news)) return;
|
||||||
}
|
|
||||||
|
|
||||||
ShowNewsMessage(ni);
|
ShowNewsMessage(ni);
|
||||||
}
|
}
|
||||||
|
@@ -16,6 +16,6 @@ void ShowLastNewsMessage();
|
|||||||
void ShowMessageHistory();
|
void ShowMessageHistory();
|
||||||
bool HideActiveNewsMessage();
|
bool HideActiveNewsMessage();
|
||||||
|
|
||||||
extern NewsItem *_latest_news;
|
const NewsContainer &GetNews();
|
||||||
|
|
||||||
#endif /* NEWS_GUI_H */
|
#endif /* NEWS_GUI_H */
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
#include "gfx_type.h"
|
#include "gfx_type.h"
|
||||||
#include "strings_type.h"
|
#include "strings_type.h"
|
||||||
#include "sound_type.h"
|
#include "sound_type.h"
|
||||||
|
#include <list>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -126,8 +127,6 @@ struct NewsAllocatedData {
|
|||||||
|
|
||||||
/** Information about a single item of news. */
|
/** Information about a single item of news. */
|
||||||
struct NewsItem {
|
struct NewsItem {
|
||||||
NewsItem *prev; ///< Previous news item
|
|
||||||
NewsItem *next; ///< Next news item
|
|
||||||
StringID string_id; ///< Message text
|
StringID string_id; ///< Message text
|
||||||
CalTime::Date date; ///< Date of the news
|
CalTime::Date date; ///< Date of the news
|
||||||
uint64_t creation_tick; ///< Tick when news was created
|
uint64_t creation_tick; ///< Tick when news was created
|
||||||
@@ -169,4 +168,7 @@ struct CompanyNewsInformation : NewsAllocatedData {
|
|||||||
CompanyNewsInformation(const struct Company *c, const struct Company *other = nullptr);
|
CompanyNewsInformation(const struct Company *c, const struct Company *other = nullptr);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
using NewsContainer = std::list<NewsItem>; ///< Container type for storing news items.
|
||||||
|
using NewsIterator = NewsContainer::const_iterator; ///< Iterator type for news items.
|
||||||
|
|
||||||
#endif /* NEWS_TYPE_H */
|
#endif /* NEWS_TYPE_H */
|
||||||
|
@@ -1049,7 +1049,7 @@ int openttd_main(int argc, char *argv[])
|
|||||||
InitializeSpriteSorter();
|
InitializeSpriteSorter();
|
||||||
|
|
||||||
/* Initialize the zoom level of the screen to normal */
|
/* Initialize the zoom level of the screen to normal */
|
||||||
_screen.zoom = ZOOM_LVL_NORMAL;
|
_screen.zoom = ZOOM_LVL_MIN;
|
||||||
|
|
||||||
/* The video driver is now selected, now initialise GUI zoom */
|
/* The video driver is now selected, now initialise GUI zoom */
|
||||||
AdjustGUIZoom(AGZM_STARTUP);
|
AdjustGUIZoom(AGZM_STARTUP);
|
||||||
|
@@ -2885,15 +2885,15 @@ public:
|
|||||||
if (order == nullptr) break;
|
if (order == nullptr) break;
|
||||||
|
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_ORDER_DUPLICATE_ORDER, 0, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_DUPLICATE_ORDER, 0, false));
|
||||||
if (order->IsType(OT_CONDITIONAL)) list.push_back(std::make_unique<DropDownListStringItem>(STR_ORDER_CHANGE_JUMP_TARGET, 1, false));
|
if (order->IsType(OT_CONDITIONAL)) list.push_back(MakeDropDownListStringItem(STR_ORDER_CHANGE_JUMP_TARGET, 1, false));
|
||||||
|
|
||||||
if (this->vehicle->type == VEH_TRAIN && order->IsType(OT_GOTO_STATION) && (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) == 0) {
|
if (this->vehicle->type == VEH_TRAIN && order->IsType(OT_GOTO_STATION) && (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) == 0) {
|
||||||
const OrderStopLocation osl = order->GetStopLocation();
|
const OrderStopLocation osl = order->GetStopLocation();
|
||||||
list.push_back(std::make_unique<DropDownListDividerItem>(-1, false));
|
list.push_back(MakeDropDownListDividerItem());
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(osl == OSL_PLATFORM_NEAR_END, STR_ORDER_STOP_LOCATION_NEAR_END, 0x200 + OSL_PLATFORM_NEAR_END, false));
|
list.push_back(MakeDropDownListCheckedItem(osl == OSL_PLATFORM_NEAR_END, STR_ORDER_STOP_LOCATION_NEAR_END, 0x200 + OSL_PLATFORM_NEAR_END, false));
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(osl == OSL_PLATFORM_MIDDLE, STR_ORDER_STOP_LOCATION_MIDDLE, 0x200 + OSL_PLATFORM_MIDDLE, false));
|
list.push_back(MakeDropDownListCheckedItem(osl == OSL_PLATFORM_MIDDLE, STR_ORDER_STOP_LOCATION_MIDDLE, 0x200 + OSL_PLATFORM_MIDDLE, false));
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(osl == OSL_PLATFORM_FAR_END, STR_ORDER_STOP_LOCATION_FAR_END, 0x200 + OSL_PLATFORM_FAR_END, false));
|
list.push_back(MakeDropDownListCheckedItem(osl == OSL_PLATFORM_FAR_END, STR_ORDER_STOP_LOCATION_FAR_END, 0x200 + OSL_PLATFORM_FAR_END, false));
|
||||||
if (osl == OSL_PLATFORM_THROUGH || _settings_client.gui.show_adv_load_mode_features) {
|
if (osl == OSL_PLATFORM_THROUGH || _settings_client.gui.show_adv_load_mode_features) {
|
||||||
bool allowed = _settings_client.gui.show_adv_load_mode_features;
|
bool allowed = _settings_client.gui.show_adv_load_mode_features;
|
||||||
if (allowed) {
|
if (allowed) {
|
||||||
@@ -2905,28 +2905,28 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(osl == OSL_PLATFORM_THROUGH, STR_ORDER_STOP_LOCATION_THROUGH, 0x200 + OSL_PLATFORM_THROUGH, !allowed));
|
list.push_back(MakeDropDownListCheckedItem(osl == OSL_PLATFORM_THROUGH, STR_ORDER_STOP_LOCATION_THROUGH, 0x200 + OSL_PLATFORM_THROUGH, !allowed));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->vehicle->type == VEH_ROAD && (order->IsType(OT_GOTO_STATION) || order->IsType(OT_GOTO_WAYPOINT)) && _settings_game.pf.pathfinder_for_roadvehs == VPF_YAPF) {
|
if (this->vehicle->type == VEH_ROAD && (order->IsType(OT_GOTO_STATION) || order->IsType(OT_GOTO_WAYPOINT)) && _settings_game.pf.pathfinder_for_roadvehs == VPF_YAPF) {
|
||||||
const DiagDirection dir = order->GetRoadVehTravelDirection();
|
const DiagDirection dir = order->GetRoadVehTravelDirection();
|
||||||
if (_settings_client.gui.show_adv_load_mode_features || dir != INVALID_DIAGDIR) {
|
if (_settings_client.gui.show_adv_load_mode_features || dir != INVALID_DIAGDIR) {
|
||||||
list.push_back(std::make_unique<DropDownListDividerItem>(-1, false));
|
list.push_back(MakeDropDownListDividerItem());
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(dir == INVALID_DIAGDIR, STR_ORDER_RV_DIR_ANY, 0x300 + INVALID_DIAGDIR, false));
|
list.push_back(MakeDropDownListCheckedItem(dir == INVALID_DIAGDIR, STR_ORDER_RV_DIR_ANY, 0x300 + INVALID_DIAGDIR, false));
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(dir == DIAGDIR_NE, STR_ORDER_RV_DIR_NE, 0x300 + DIAGDIR_NE, false));
|
list.push_back(MakeDropDownListCheckedItem(dir == DIAGDIR_NE, STR_ORDER_RV_DIR_NE, 0x300 + DIAGDIR_NE, false));
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(dir == DIAGDIR_SE, STR_ORDER_RV_DIR_SE, 0x300 + DIAGDIR_SE, false));
|
list.push_back(MakeDropDownListCheckedItem(dir == DIAGDIR_SE, STR_ORDER_RV_DIR_SE, 0x300 + DIAGDIR_SE, false));
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(dir == DIAGDIR_SW, STR_ORDER_RV_DIR_SW, 0x300 + DIAGDIR_SW, false));
|
list.push_back(MakeDropDownListCheckedItem(dir == DIAGDIR_SW, STR_ORDER_RV_DIR_SW, 0x300 + DIAGDIR_SW, false));
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(dir == DIAGDIR_NW, STR_ORDER_RV_DIR_NW, 0x300 + DIAGDIR_NW, false));
|
list.push_back(MakeDropDownListCheckedItem(dir == DIAGDIR_NW, STR_ORDER_RV_DIR_NW, 0x300 + DIAGDIR_NW, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!order->IsType(OT_IMPLICIT)) {
|
if (!order->IsType(OT_IMPLICIT)) {
|
||||||
list.push_back(std::make_unique<DropDownListDividerItem>(-1, false));
|
list.push_back(MakeDropDownListDividerItem());
|
||||||
const Colours current_colour = order->GetColour();
|
const Colours current_colour = order->GetColour();
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(current_colour == INVALID_COLOUR, STR_COLOUR_DEFAULT, 0x100 + INVALID_COLOUR, false));
|
list.push_back(MakeDropDownListCheckedItem(current_colour == INVALID_COLOUR, STR_COLOUR_DEFAULT, 0x100 + INVALID_COLOUR, false));
|
||||||
auto add_colour = [&](Colours colour) {
|
auto add_colour = [&](Colours colour) {
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(current_colour == colour, STR_COLOUR_DARK_BLUE + colour, 0x100 + colour, false));
|
list.push_back(MakeDropDownListCheckedItem(current_colour == colour, STR_COLOUR_DARK_BLUE + colour, 0x100 + colour, false));
|
||||||
};
|
};
|
||||||
add_colour(COLOUR_YELLOW);
|
add_colour(COLOUR_YELLOW);
|
||||||
add_colour(COLOUR_LIGHT_BLUE);
|
add_colour(COLOUR_LIGHT_BLUE);
|
||||||
@@ -2985,17 +2985,17 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_ORDER_GO_TO, ODDI_GO_TO, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_GO_TO, ODDI_GO_TO, false));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>((this->vehicle->type == VEH_AIRCRAFT) ? STR_ORDER_GO_TO_NEAREST_HANGAR : STR_ORDER_GO_TO_NEAREST_DEPOT, ODDI_GO_TO_NEAREST_DEPOT, false));
|
list.push_back(MakeDropDownListStringItem((this->vehicle->type == VEH_AIRCRAFT) ? STR_ORDER_GO_TO_NEAREST_HANGAR : STR_ORDER_GO_TO_NEAREST_DEPOT, ODDI_GO_TO_NEAREST_DEPOT, false));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_ORDER_CONDITIONAL, ODDI_CONDITIONAL, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_CONDITIONAL, ODDI_CONDITIONAL, false));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_ORDER_SHARE, ODDI_SHARE, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_SHARE, ODDI_SHARE, false));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_ORDER_TRY_ACQUIRE_SLOT_BUTTON, ODDI_TRY_ACQUIRE_SLOT, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_TRY_ACQUIRE_SLOT_BUTTON, ODDI_TRY_ACQUIRE_SLOT, false));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_ORDER_RELEASE_SLOT_BUTTON, ODDI_RELEASE_SLOT, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_RELEASE_SLOT_BUTTON, ODDI_RELEASE_SLOT, false));
|
||||||
if (show_counters) {
|
if (show_counters) {
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_ORDER_CHANGE_COUNTER_BUTTON, ODDI_CHANGE_COUNTER, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_CHANGE_COUNTER_BUTTON, ODDI_CHANGE_COUNTER, false));
|
||||||
}
|
}
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_ORDER_LABEL_TEXT_BUTTON, ODDI_LABEL_TEXT, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_LABEL_TEXT_BUTTON, ODDI_LABEL_TEXT, false));
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_ORDER_LABEL_DEPARTURES_VIA_BUTTON, ODDI_LABEL_DEPARTURES_VIA, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_LABEL_DEPARTURES_VIA_BUTTON, ODDI_LABEL_DEPARTURES_VIA, false));
|
||||||
|
|
||||||
ShowDropDownList(this, std::move(list), sel, WID_O_GOTO, 0, DDMF_NONE, DDSF_SHARED);
|
ShowDropDownList(this, std::move(list), sel, WID_O_GOTO, 0, DDMF_NONE, DDSF_SHARED);
|
||||||
}
|
}
|
||||||
@@ -3073,9 +3073,9 @@ public:
|
|||||||
const DispatchSchedule &ds = this->vehicle->orders->GetDispatchScheduleByIndex(i);
|
const DispatchSchedule &ds = this->vehicle->orders->GetDispatchScheduleByIndex(i);
|
||||||
if (ds.ScheduleName().empty()) {
|
if (ds.ScheduleName().empty()) {
|
||||||
SetDParam(0, i + 1);
|
SetDParam(0, i + 1);
|
||||||
list.emplace_back(new DropDownListStringItem(STR_TIMETABLE_ASSIGN_SCHEDULE_ID, i, false));
|
list.push_back(MakeDropDownListStringItem(STR_TIMETABLE_ASSIGN_SCHEDULE_ID, i, false));
|
||||||
} else {
|
} else {
|
||||||
list.emplace_back(new DropDownListStringItem(ds.ScheduleName(), i, false));
|
list.push_back(MakeDropDownListStringItem(ds.ScheduleName(), i, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!list.empty()) ShowDropDownList(this, std::move(list), selected, WID_O_COND_SCHED_SELECT, 0);
|
if (!list.empty()) ShowDropDownList(this, std::move(list), selected, WID_O_COND_SCHED_SELECT, 0);
|
||||||
@@ -3104,7 +3104,7 @@ public:
|
|||||||
DropDownList list;
|
DropDownList list;
|
||||||
for (size_t i = 0; i < _sorted_standard_cargo_specs.size(); ++i) {
|
for (size_t i = 0; i < _sorted_standard_cargo_specs.size(); ++i) {
|
||||||
const CargoSpec *cs = _sorted_cargo_specs[i];
|
const CargoSpec *cs = _sorted_cargo_specs[i];
|
||||||
list.emplace_back(new DropDownListStringItem(cs->name, cs->Index(), false));
|
list.push_back(MakeDropDownListStringItem(cs->name, cs->Index(), false));
|
||||||
}
|
}
|
||||||
if (!list.empty()) ShowDropDownList(this, std::move(list), value, widget, 0);
|
if (!list.empty()) ShowDropDownList(this, std::move(list), value, widget, 0);
|
||||||
break;
|
break;
|
||||||
@@ -3149,7 +3149,7 @@ public:
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(OrderStringForVariable(this->vehicle, _order_conditional_variable[i]), _order_conditional_variable[i], false));
|
list.push_back(MakeDropDownListStringItem(OrderStringForVariable(this->vehicle, _order_conditional_variable[i]), _order_conditional_variable[i], false));
|
||||||
}
|
}
|
||||||
ShowDropDownList(this, std::move(list), ocv, WID_O_COND_VARIABLE);
|
ShowDropDownList(this, std::move(list), ocv, WID_O_COND_VARIABLE);
|
||||||
break;
|
break;
|
||||||
@@ -3164,11 +3164,11 @@ public:
|
|||||||
const int false_cond = ((int)OCC_IS_FALSE) << 16;
|
const int false_cond = ((int)OCC_IS_FALSE) << 16;
|
||||||
int first_last_value = 0;
|
int first_last_value = 0;
|
||||||
SB(first_last_value, ODCB_MODE_START, ODCB_MODE_COUNT, ODCM_FIRST_LAST);
|
SB(first_last_value, ODCB_MODE_START, ODCB_MODE_COUNT, ODCM_FIRST_LAST);
|
||||||
list.emplace_back(new DropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_IS_FIRST, true_cond | first_last_value, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_IS_FIRST, true_cond | first_last_value, false));
|
||||||
list.emplace_back(new DropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_IS_NOT_FIRST, false_cond | first_last_value, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_IS_NOT_FIRST, false_cond | first_last_value, false));
|
||||||
SetBit(first_last_value, ODFLCB_LAST_SLOT);
|
SetBit(first_last_value, ODFLCB_LAST_SLOT);
|
||||||
list.emplace_back(new DropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_IS_LAST, true_cond | first_last_value, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_IS_LAST, true_cond | first_last_value, false));
|
||||||
list.emplace_back(new DropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_IS_NOT_LAST, false_cond | first_last_value, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_IS_NOT_LAST, false_cond | first_last_value, false));
|
||||||
|
|
||||||
uint16_t slot_flags = 0;
|
uint16_t slot_flags = 0;
|
||||||
uint schedule_index = GB(o->GetXData(), 0, 16);
|
uint schedule_index = GB(o->GetXData(), 0, 16);
|
||||||
@@ -3185,8 +3185,8 @@ public:
|
|||||||
SB(tag_cond_value, ODCB_MODE_START, ODCB_MODE_COUNT, OCDM_TAG);
|
SB(tag_cond_value, ODCB_MODE_START, ODCB_MODE_COUNT, OCDM_TAG);
|
||||||
SB(tag_cond_value, ODFLCB_TAG_START, ODFLCB_TAG_COUNT, tag);
|
SB(tag_cond_value, ODFLCB_TAG_START, ODFLCB_TAG_COUNT, tag);
|
||||||
SetDParam(0, tag + 1);
|
SetDParam(0, tag + 1);
|
||||||
list.emplace_back(new DropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_HAS_TAG, true_cond | tag_cond_value, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_HAS_TAG, true_cond | tag_cond_value, false));
|
||||||
list.emplace_back(new DropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_DOESNT_HAVE_TAG, false_cond | tag_cond_value, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_CONDITIONAL_COMPARATOR_DISPATCH_SLOT_DOESNT_HAVE_TAG, false_cond | tag_cond_value, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3280,9 +3280,9 @@ public:
|
|||||||
|
|
||||||
case WID_O_COUNTER_OP: {
|
case WID_O_COUNTER_OP: {
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
list.emplace_back(new DropDownListStringItem(STR_TRACE_RESTRICT_COUNTER_INCREASE, 0, false));
|
list.push_back(MakeDropDownListStringItem(STR_TRACE_RESTRICT_COUNTER_INCREASE, 0, false));
|
||||||
list.emplace_back(new DropDownListStringItem(STR_TRACE_RESTRICT_COUNTER_DECREASE, 1, false));
|
list.push_back(MakeDropDownListStringItem(STR_TRACE_RESTRICT_COUNTER_DECREASE, 1, false));
|
||||||
list.emplace_back(new DropDownListStringItem(STR_TRACE_RESTRICT_COUNTER_SET, 2, false));
|
list.push_back(MakeDropDownListStringItem(STR_TRACE_RESTRICT_COUNTER_SET, 2, false));
|
||||||
int selected = this->vehicle->GetOrder(this->OrderGetSel())->GetCounterOperation();
|
int selected = this->vehicle->GetOrder(this->OrderGetSel())->GetCounterOperation();
|
||||||
ShowDropDownList(this, std::move(list), selected, WID_O_COUNTER_OP, 0);
|
ShowDropDownList(this, std::move(list), selected, WID_O_COUNTER_OP, 0);
|
||||||
break;
|
break;
|
||||||
@@ -3314,8 +3314,8 @@ public:
|
|||||||
|
|
||||||
case WID_O_DEPARTURE_VIA_TYPE: {
|
case WID_O_DEPARTURE_VIA_TYPE: {
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
list.emplace_back(new DropDownListStringItem(STR_ORDER_LABEL_DEPARTURES_SHOW_AS_VIA, OLST_DEPARTURES_VIA, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_LABEL_DEPARTURES_SHOW_AS_VIA, OLST_DEPARTURES_VIA, false));
|
||||||
list.emplace_back(new DropDownListStringItem(STR_ORDER_LABEL_DEPARTURES_REMOVE_VIA, OLST_DEPARTURES_REMOVE_VIA, false));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_LABEL_DEPARTURES_REMOVE_VIA, OLST_DEPARTURES_REMOVE_VIA, false));
|
||||||
int selected = this->vehicle->GetOrder(this->OrderGetSel())->GetLabelSubType();
|
int selected = this->vehicle->GetOrder(this->OrderGetSel())->GetLabelSubType();
|
||||||
ShowDropDownList(this, std::move(list), selected, WID_O_DEPARTURE_VIA_TYPE, 0);
|
ShowDropDownList(this, std::move(list), selected, WID_O_DEPARTURE_VIA_TYPE, 0);
|
||||||
break;
|
break;
|
||||||
|
@@ -244,8 +244,8 @@ const Sprite *CoreTextFontCache::InternalGetGlyph(GlyphID key, bool use_aa)
|
|||||||
if (width > MAX_GLYPH_DIM || height > MAX_GLYPH_DIM) usererror("Font glyph is too large");
|
if (width > MAX_GLYPH_DIM || height > MAX_GLYPH_DIM) usererror("Font glyph is too large");
|
||||||
|
|
||||||
SpriteLoader::SpriteCollection spritecollection;
|
SpriteLoader::SpriteCollection spritecollection;
|
||||||
SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_NORMAL];
|
SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_MIN];
|
||||||
sprite.AllocateData(ZOOM_LVL_NORMAL, width * height);
|
sprite.AllocateData(ZOOM_LVL_MIN, width * height);
|
||||||
sprite.type = SpriteType::Font;
|
sprite.type = SpriteType::Font;
|
||||||
sprite.colours = (use_aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
|
sprite.colours = (use_aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
|
||||||
sprite.width = width;
|
sprite.width = width;
|
||||||
|
@@ -229,8 +229,8 @@ void Win32FontCache::ClearFontCache()
|
|||||||
|
|
||||||
/* GDI has rendered the glyph, now we allocate a sprite and copy the image into it. */
|
/* GDI has rendered the glyph, now we allocate a sprite and copy the image into it. */
|
||||||
SpriteLoader::SpriteCollection spritecollection;
|
SpriteLoader::SpriteCollection spritecollection;
|
||||||
SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_NORMAL];
|
SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_MIN];
|
||||||
sprite.AllocateData(ZOOM_LVL_NORMAL, width * height);
|
sprite.AllocateData(ZOOM_LVL_MIN, width * height);
|
||||||
sprite.type = SpriteType::Font;
|
sprite.type = SpriteType::Font;
|
||||||
sprite.colours = (aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
|
sprite.colours = (aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
|
||||||
sprite.width = width;
|
sprite.width = width;
|
||||||
|
@@ -47,8 +47,8 @@ void PlanLine::UpdateVisualExtents()
|
|||||||
if (y > max_y) max_y = y;
|
if (y > max_y) max_y = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->viewport_extents = { (int)(min_x * TILE_SIZE * 2 * ZOOM_LVL_BASE), (int)(min_y * TILE_SIZE * ZOOM_LVL_BASE),
|
this->viewport_extents = { (int)(min_x * TILE_SIZE * 2 * ZOOM_BASE), (int)(min_y * TILE_SIZE * ZOOM_BASE),
|
||||||
(int)((max_x + 1) * TILE_SIZE * 2 * ZOOM_LVL_BASE), (int)((max_y + 1) * TILE_SIZE * ZOOM_LVL_BASE) };
|
(int)((max_x + 1) * TILE_SIZE * 2 * ZOOM_BASE), (int)((max_y + 1) * TILE_SIZE * ZOOM_BASE) };
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Plan::ValidateNewLine()
|
bool Plan::ValidateNewLine()
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user