Merge branch 'master' into jgrpp
# Conflicts: # src/autoreplace_gui.cpp # src/build_vehicle_gui.cpp # src/cheat_gui.cpp # src/company_gui.cpp # src/debug.cpp # src/engine_gui.h # src/error_gui.cpp # src/group_gui.cpp # src/industry_cmd.cpp # src/industry_gui.cpp # src/misc_gui.cpp # src/network/network_gui.cpp # src/newgrf.cpp # src/newgrf_debug_gui.cpp # src/newgrf_gui.cpp # src/order_gui.cpp # src/rail_gui.cpp # src/road_gui.cpp # src/saveload/saveload.cpp # src/screenshot_gui.cpp # src/sound/win32_s.cpp # src/statusbar_gui.cpp # src/strgen/strgen.cpp # src/table/newgrf_debug_data.h # src/timetable_gui.cpp # src/toolbar_gui.cpp # src/town_gui.cpp # src/vehicle_gui.cpp # src/video/sdl2_v.cpp # src/video/sdl_v.cpp # src/viewport.cpp
This commit is contained in:
@@ -262,6 +262,7 @@ add_files(
|
||||
music_gui.cpp
|
||||
newgrf.cpp
|
||||
newgrf.h
|
||||
newgrf_act5.h
|
||||
newgrf_airport.cpp
|
||||
newgrf_airport.h
|
||||
newgrf_airporttiles.cpp
|
||||
|
@@ -127,20 +127,20 @@ struct AIConfigWindow : public Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_AIC_DECREASE_NUMBER:
|
||||
case WID_AIC_INCREASE_NUMBER:
|
||||
case WID_AIC_DECREASE_INTERVAL:
|
||||
case WID_AIC_INCREASE_INTERVAL:
|
||||
*size = maxdim(*size, NWidgetScrollbar::GetHorizontalDimension());
|
||||
size = maxdim(size, NWidgetScrollbar::GetHorizontalDimension());
|
||||
break;
|
||||
|
||||
case WID_AIC_LIST:
|
||||
this->line_height = GetCharacterHeight(FS_NORMAL) + padding.height;
|
||||
resize->height = this->line_height;
|
||||
size->height = 8 * this->line_height;
|
||||
resize.height = this->line_height;
|
||||
size.height = 8 * this->line_height;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -309,7 +309,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_AP_CLASS_DROPDOWN: {
|
||||
@@ -319,7 +319,7 @@ public:
|
||||
}
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -328,11 +328,11 @@ public:
|
||||
const AirportSpec *as = AirportSpec::Get(i);
|
||||
if (!as->enabled) continue;
|
||||
|
||||
size->width = std::max(size->width, GetStringBoundingBox(as->name).width + padding.width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(as->name).width + padding.width);
|
||||
}
|
||||
|
||||
this->line_height = GetCharacterHeight(FS_NORMAL) + padding.height;
|
||||
size->height = 5 * this->line_height;
|
||||
size.height = 5 * this->line_height;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -346,7 +346,7 @@ public:
|
||||
Dimension d = GetSpriteSize(sprite);
|
||||
d.width += WidgetDimensions::scaled.framerect.Horizontal();
|
||||
d.height += WidgetDimensions::scaled.framerect.Vertical();
|
||||
*size = maxdim(d, *size);
|
||||
size = maxdim(d, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -360,8 +360,8 @@ public:
|
||||
StringID string = GetAirportTextCallback(as, layout, CBID_AIRPORT_ADDITIONAL_TEXT);
|
||||
if (string == STR_UNDEFINED) continue;
|
||||
|
||||
Dimension d = GetStringMultiLineBoundingBox(string, *size);
|
||||
*size = maxdim(d, *size);
|
||||
Dimension d = GetStringMultiLineBoundingBox(string, size);
|
||||
size = maxdim(d, size);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@@ -31,8 +31,6 @@
|
||||
|
||||
#include "safeguards.h"
|
||||
|
||||
void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_list, const Scrollbar &sb, EngineID selected_id, bool show_count, GroupID selected_group);
|
||||
|
||||
static bool EngineNumberSorter(const GUIEngineListItem &a, const GUIEngineListItem &b, const GUIEngineListSortCache &cache)
|
||||
{
|
||||
return Engine::Get(a.engine_id)->list_position < Engine::Get(b.engine_id)->list_position;
|
||||
@@ -112,27 +110,6 @@ class ReplaceVehicleWindow : public Window {
|
||||
return true;
|
||||
}
|
||||
|
||||
void AddChildren(const GUIEngineList &source, GUIEngineList &target, EngineID parent, int indent, int side)
|
||||
{
|
||||
for (const auto &item : source) {
|
||||
if (item.variant_id != parent || item.engine_id == parent) continue;
|
||||
|
||||
const Engine *e = Engine::Get(item.engine_id);
|
||||
EngineDisplayFlags flags = item.flags;
|
||||
if (e->display_last_variant != INVALID_ENGINE) flags &= ~EngineDisplayFlags::Shaded;
|
||||
target.emplace_back(e->display_last_variant == INVALID_ENGINE ? item.engine_id : e->display_last_variant, item.engine_id, flags, indent);
|
||||
|
||||
/* Add variants if not folded */
|
||||
if ((item.flags & (EngineDisplayFlags::HasVariants | EngineDisplayFlags::IsFolded)) == EngineDisplayFlags::HasVariants) {
|
||||
/* Add this engine again as a child */
|
||||
if ((item.flags & EngineDisplayFlags::Shaded) == EngineDisplayFlags::None) {
|
||||
target.emplace_back(item.engine_id, item.engine_id, EngineDisplayFlags::None, indent + 1);
|
||||
}
|
||||
AddChildren(source, target, item.engine_id, indent + 1, side);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate an engines list
|
||||
* @param draw_left true if generating the left list, otherwise false
|
||||
@@ -206,7 +183,7 @@ class ReplaceVehicleWindow : public Window {
|
||||
|
||||
this->engines[side].clear();
|
||||
if (side == 1) {
|
||||
AddChildren(list, this->engines[side], INVALID_ENGINE, 0, side);
|
||||
GUIEngineListAddChildren(this->engines[side], list);
|
||||
} else {
|
||||
this->engines[side].swap(list);
|
||||
}
|
||||
@@ -316,26 +293,26 @@ public:
|
||||
this->sel_group = id_g;
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_RV_SORT_ASCENDING_DESCENDING: {
|
||||
Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->widget_data);
|
||||
d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better.
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_RV_LEFT_MATRIX:
|
||||
case WID_RV_RIGHT_MATRIX:
|
||||
resize->height = GetEngineListHeight((VehicleType)this->window_number);
|
||||
size->height = (this->window_number <= VEH_ROAD ? 8 : 4) * resize->height;
|
||||
resize.height = GetEngineListHeight((VehicleType)this->window_number);
|
||||
size.height = (this->window_number <= VEH_ROAD ? 8 : 4) * resize.height;
|
||||
break;
|
||||
|
||||
case WID_RV_LEFT_DETAILS:
|
||||
case WID_RV_RIGHT_DETAILS:
|
||||
size->height = GetCharacterHeight(FS_NORMAL) * this->details_height + padding.height;
|
||||
size.height = GetCharacterHeight(FS_NORMAL) * this->details_height + padding.height;
|
||||
break;
|
||||
|
||||
case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: {
|
||||
@@ -346,7 +323,7 @@ public:
|
||||
d = maxdim(d, GetStringBoundingBox(str));
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -355,7 +332,7 @@ public:
|
||||
d = maxdim(d, GetStringBoundingBox(STR_REPLACE_WAGONS));
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -364,7 +341,7 @@ public:
|
||||
d = maxdim(d, GetStringBoundingBox(STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED));
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -375,7 +352,7 @@ public:
|
||||
}
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -386,7 +363,7 @@ public:
|
||||
}
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -397,7 +374,7 @@ public:
|
||||
}
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -96,12 +96,12 @@ public:
|
||||
this->Window::Close();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget == WID_BEM_MESSAGE) {
|
||||
*size = GetStringBoundingBox(STR_MISSING_GRAPHICS_ERROR);
|
||||
size->width += WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size->height += WidgetDimensions::scaled.frametext.Vertical();
|
||||
size = GetStringBoundingBox(STR_MISSING_GRAPHICS_ERROR);
|
||||
size.width += WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size.height += WidgetDimensions::scaled.frametext.Vertical();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ public:
|
||||
this->Window::Close();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
/* We cache the button size. This is safe as no reinit can happen here. */
|
||||
if (this->button_size.width == 0) {
|
||||
@@ -222,13 +222,13 @@ public:
|
||||
switch (widget) {
|
||||
case WID_BAFD_QUESTION:
|
||||
/* The question is twice as wide as the buttons, and determine the height based on the width. */
|
||||
size->width = this->button_size.width * 2;
|
||||
size->height = GetStringHeight(STR_MISSING_GRAPHICS_SET_MESSAGE, size->width - WidgetDimensions::scaled.frametext.Horizontal()) + WidgetDimensions::scaled.frametext.Vertical();
|
||||
size.width = this->button_size.width * 2;
|
||||
size.height = GetStringHeight(STR_MISSING_GRAPHICS_SET_MESSAGE, size.width - WidgetDimensions::scaled.frametext.Horizontal()) + WidgetDimensions::scaled.frametext.Vertical();
|
||||
break;
|
||||
|
||||
case WID_BAFD_YES:
|
||||
case WID_BAFD_NO:
|
||||
*size = this->button_size;
|
||||
size = this->button_size;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -189,14 +189,14 @@ public:
|
||||
this->Window::Close();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_BBS_DROPDOWN_ORDER: {
|
||||
Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->widget_data);
|
||||
d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better.
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
case WID_BBS_DROPDOWN_CRITERIA: {
|
||||
@@ -206,7 +206,7 @@ public:
|
||||
}
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
case WID_BBS_BRIDGE_LIST: {
|
||||
@@ -216,11 +216,11 @@ public:
|
||||
sprite_dim = maxdim(sprite_dim, GetScaledSpriteSize(bridge_data.spec->sprite));
|
||||
text_dim = maxdim(text_dim, GetStringBoundingBox(GetBridgeSelectString(bridge_data)));
|
||||
}
|
||||
resize->height = std::max(sprite_dim.height, text_dim.height) + padding.height; // Max of both sizes + account for matrix edges.
|
||||
resize.height = std::max(sprite_dim.height, text_dim.height) + padding.height; // Max of both sizes + account for matrix edges.
|
||||
|
||||
this->icon_width = sprite_dim.width; // Width of bridge icon.
|
||||
size->width = this->icon_width + WidgetDimensions::scaled.hsep_normal + text_dim.width + padding.width;
|
||||
size->height = 4 * resize->height; // Smallest bridge gui is 4 entries high in the matrix.
|
||||
size.width = this->icon_width + WidgetDimensions::scaled.hsep_normal + text_dim.width + padding.width;
|
||||
size.height = 4 * resize.height; // Smallest bridge gui is 4 entries high in the matrix.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -1269,6 +1269,9 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li
|
||||
int small_text_y_offset = ir.Height() - GetCharacterHeight(FS_SMALL);
|
||||
int replace_icon_y_offset = (ir.Height() - replace_icon.height) / 2;
|
||||
|
||||
const int offset = (rtl ? -circle_width : circle_width) / 2;
|
||||
const int level_width = rtl ? -WidgetDimensions::scaled.hsep_indent : WidgetDimensions::scaled.hsep_indent;
|
||||
|
||||
int y = ir.top;
|
||||
for (auto it = first; it != last; ++it) {
|
||||
const auto &item = *it;
|
||||
@@ -1276,6 +1279,21 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li
|
||||
bool has_variants = (item.flags & EngineDisplayFlags::HasVariants) != EngineDisplayFlags::None;
|
||||
bool is_folded = (item.flags & EngineDisplayFlags::IsFolded) != EngineDisplayFlags::None;
|
||||
bool shaded = (item.flags & EngineDisplayFlags::Shaded) != EngineDisplayFlags::None;
|
||||
|
||||
if (item.indent > 0) {
|
||||
/* Draw tree continuation lines. */
|
||||
int tx = (rtl ? ir.right : ir.left) + offset;
|
||||
int ty = y - WidgetDimensions::scaled.matrix.top;
|
||||
for (uint lvl = 1; lvl <= item.indent; ++lvl) {
|
||||
if (HasBit(item.level_mask, lvl)) GfxDrawLine(tx, ty, tx, ty + step_size - 1, linecolour, WidgetDimensions::scaled.fullbevel.top);
|
||||
if (lvl < item.indent) tx += level_width;
|
||||
}
|
||||
/* Draw our node in the tree. */
|
||||
int ycentre = y + normal_text_y_offset + GetCharacterHeight(FS_NORMAL) / 2 - 1;
|
||||
if (!HasBit(item.level_mask, item.indent)) GfxDrawLine(tx, ty, tx, ycentre, linecolour, WidgetDimensions::scaled.fullbevel.top);
|
||||
GfxDrawLine(tx, ycentre, tx + offset - (rtl ? -1 : 1), ycentre, linecolour, WidgetDimensions::scaled.fullbevel.top);
|
||||
}
|
||||
|
||||
/* Note: num_engines is only used in the autoreplace GUI, so it is correct to use _local_company here. */
|
||||
const uint num_engines = GetGroupNumEngines(_local_company, selected_group, item.engine_id);
|
||||
|
||||
@@ -1303,14 +1321,6 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li
|
||||
Rect fr = ir.Indent(indent, rtl).WithWidth(circle_width, rtl);
|
||||
DrawSpriteIgnorePadding(is_folded ? SPR_CIRCLE_FOLDED : SPR_CIRCLE_UNFOLDED, PAL_NONE, {fr.left, y, fr.right, y + ir.Height() - 1}, SA_CENTER);
|
||||
}
|
||||
if (indent > 0) {
|
||||
/* Draw tree lines */
|
||||
Rect fr = ir.Indent(indent - WidgetDimensions::scaled.hsep_indent, rtl).WithWidth(circle_width, rtl);
|
||||
int ycenter = y + normal_text_y_offset + GetCharacterHeight(FS_NORMAL) / 2;
|
||||
bool continues = std::next(it) != std::end(eng_list) && std::next(it)->indent == item.indent;
|
||||
GfxDrawLine(fr.left + circle_width / 2, y - WidgetDimensions::scaled.matrix.top, fr.left + circle_width / 2, continues ? y - WidgetDimensions::scaled.matrix.top + step_size - 1 : ycenter, linecolour, WidgetDimensions::scaled.fullbevel.top);
|
||||
GfxDrawLine(fr.left + circle_width / 2, ycenter, fr.right, ycenter, linecolour, WidgetDimensions::scaled.fullbevel.top);
|
||||
}
|
||||
y += step_size;
|
||||
}
|
||||
}
|
||||
@@ -1338,6 +1348,44 @@ void DisplayVehicleSortDropDown(Window *w, VehicleType vehicle_type, int selecte
|
||||
ShowDropDownMenu(w, _engine_sort_listing[vehicle_type], selected, button, 0, hidden_mask);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add children to GUI engine list to build a hierarchical tree.
|
||||
* @param dst Destination list.
|
||||
* @param src Source list.
|
||||
* @param parent Current tree parent (set by self with recursion).
|
||||
* @param indent Current tree indentation level (set by self with recursion).
|
||||
*/
|
||||
void GUIEngineListAddChildren(GUIEngineList &dst, const GUIEngineList &src, EngineID parent, uint8_t indent)
|
||||
{
|
||||
for (const auto &item : src) {
|
||||
if (item.variant_id != parent || item.engine_id == parent) continue;
|
||||
|
||||
const Engine *e = Engine::Get(item.engine_id);
|
||||
EngineDisplayFlags flags = item.flags;
|
||||
if (e->display_last_variant != INVALID_ENGINE) flags &= ~EngineDisplayFlags::Shaded;
|
||||
dst.emplace_back(e->display_last_variant == INVALID_ENGINE ? item.engine_id : e->display_last_variant, item.engine_id, flags, indent);
|
||||
|
||||
/* Add variants if not folded */
|
||||
if ((item.flags & (EngineDisplayFlags::HasVariants | EngineDisplayFlags::IsFolded)) == EngineDisplayFlags::HasVariants) {
|
||||
/* Add this engine again as a child */
|
||||
if ((item.flags & EngineDisplayFlags::Shaded) == EngineDisplayFlags::None) {
|
||||
dst.emplace_back(item.engine_id, item.engine_id, EngineDisplayFlags::None, indent + 1);
|
||||
}
|
||||
GUIEngineListAddChildren(dst, src, item.engine_id, indent + 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (indent > 0 || dst.empty()) return;
|
||||
|
||||
/* Hierarchy is complete, traverse in reverse to find where indentation levels continue. */
|
||||
uint16_t level_mask = 0;
|
||||
for (auto it = std::rbegin(dst); std::next(it) != std::rend(dst); ++it) {
|
||||
auto next_it = std::next(it);
|
||||
SB(level_mask, it->indent, 1, it->indent <= next_it->indent);
|
||||
next_it->level_mask = level_mask;
|
||||
}
|
||||
}
|
||||
|
||||
/** Enum referring to the Hotkeys in the build vehicle window */
|
||||
enum BuildVehicleHotkeys {
|
||||
BVHK_FOCUS_FILTER_BOX, ///< Focus the edit box for editing the filter string
|
||||
@@ -1359,27 +1407,6 @@ struct BuildVehicleWindowBase : Window {
|
||||
this->listview_mode = (tile == INVALID_TILE) && !virtual_train_mode;
|
||||
}
|
||||
|
||||
void AddChildren(GUIEngineList &eng_list, const GUIEngineList &source, EngineID parent, int indent)
|
||||
{
|
||||
for (const auto &item : source) {
|
||||
if (item.variant_id != parent || item.engine_id == parent) continue;
|
||||
|
||||
const Engine *e = Engine::Get(item.engine_id);
|
||||
EngineDisplayFlags flags = item.flags;
|
||||
if (e->display_last_variant != INVALID_ENGINE) flags &= ~EngineDisplayFlags::Shaded;
|
||||
eng_list.emplace_back(e->display_last_variant == INVALID_ENGINE ? item.engine_id : e->display_last_variant, item.engine_id, flags, indent);
|
||||
|
||||
/* Add variants if not folded */
|
||||
if ((item.flags & (EngineDisplayFlags::HasVariants | EngineDisplayFlags::IsFolded)) == EngineDisplayFlags::HasVariants) {
|
||||
/* Add this engine again as a child */
|
||||
if ((item.flags & EngineDisplayFlags::Shaded) == EngineDisplayFlags::None) {
|
||||
eng_list.emplace_back(item.engine_id, item.engine_id, EngineDisplayFlags::None, indent + 1);
|
||||
}
|
||||
AddChildren(eng_list, source, item.engine_id, indent + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AddVirtualEngine(Train *toadd)
|
||||
{
|
||||
if (this->virtual_train_out == nullptr) return;
|
||||
@@ -1873,7 +1900,7 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
||||
default: NOT_REACHED();
|
||||
case VEH_TRAIN:
|
||||
this->GenerateBuildTrainList(list);
|
||||
AddChildren(this->eng_list, list, INVALID_ENGINE, 0);
|
||||
GUIEngineListAddChildren(this->eng_list, list);
|
||||
this->eng_list.shrink_to_fit();
|
||||
this->eng_list.RebuildDone();
|
||||
return;
|
||||
@@ -1914,7 +1941,7 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
||||
EngList_Sort(this->eng_list, _engine_sort_functions[this->vehicle_type][this->sort_criteria]);
|
||||
|
||||
this->eng_list.swap(list);
|
||||
AddChildren(this->eng_list, list, INVALID_ENGINE, 0);
|
||||
GUIEngineListAddChildren(this->eng_list, list, INVALID_ENGINE, 0);
|
||||
this->eng_list.shrink_to_fit();
|
||||
this->eng_list.RebuildDone();
|
||||
}
|
||||
@@ -2083,43 +2110,43 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_BV_LIST:
|
||||
resize->height = GetEngineListHeight(this->vehicle_type);
|
||||
size->height = 3 * resize->height;
|
||||
size->width = std::max(size->width, GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_left + GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_right + 165) + padding.width;
|
||||
resize.height = GetEngineListHeight(this->vehicle_type);
|
||||
size.height = 3 * resize.height;
|
||||
size.width = std::max(size.width, GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_left + GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_right + 165) + padding.width;
|
||||
break;
|
||||
|
||||
case WID_BV_PANEL:
|
||||
size->height = GetCharacterHeight(FS_NORMAL) * this->details_height + padding.height;
|
||||
size.height = GetCharacterHeight(FS_NORMAL) * this->details_height + padding.height;
|
||||
break;
|
||||
|
||||
case WID_BV_SORT_ASCENDING_DESCENDING: {
|
||||
Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->widget_data);
|
||||
d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better.
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_BV_CARGO_FILTER_DROPDOWN:
|
||||
size->width = std::max(size->width, GetDropDownListDimension(this->BuildCargoDropDownList()).width + padding.width);
|
||||
size.width = std::max(size.width, GetDropDownListDimension(this->BuildCargoDropDownList()).width + padding.width);
|
||||
break;
|
||||
|
||||
case WID_BV_BUILD:
|
||||
*size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON + this->vehicle_type);
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON + this->vehicle_type));
|
||||
size->width += padding.width;
|
||||
size->height += padding.height;
|
||||
size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON + this->vehicle_type);
|
||||
size = maxdim(size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON + this->vehicle_type));
|
||||
size.width += padding.width;
|
||||
size.height += padding.height;
|
||||
break;
|
||||
|
||||
case WID_BV_SHOW_HIDE:
|
||||
*size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON + this->vehicle_type);
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON + this->vehicle_type));
|
||||
size->width += padding.width;
|
||||
size->height += padding.height;
|
||||
size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON + this->vehicle_type);
|
||||
size = maxdim(size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON + this->vehicle_type));
|
||||
size.width += padding.width;
|
||||
size.height += padding.height;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2677,10 +2704,10 @@ struct BuildVehicleWindowTrainAdvanced final : BuildVehicleWindowBase {
|
||||
GUIEngineList list;
|
||||
|
||||
this->GenerateBuildTrainList(list, this->loco, false, _sorter_loco);
|
||||
AddChildren(this->loco.eng_list, list, INVALID_ENGINE, 0);
|
||||
GUIEngineListAddChildren(this->loco.eng_list, list, INVALID_ENGINE, 0);
|
||||
|
||||
this->GenerateBuildTrainList(list, this->wagon, true, _sorter_wagon);
|
||||
AddChildren(this->wagon.eng_list, list, INVALID_ENGINE, 0);
|
||||
GUIEngineListAddChildren(this->wagon.eng_list, list, INVALID_ENGINE, 0);
|
||||
|
||||
this->loco.eng_list.shrink_to_fit();
|
||||
this->loco.eng_list.RebuildDone();
|
||||
@@ -2987,17 +3014,17 @@ struct BuildVehicleWindowTrainAdvanced final : BuildVehicleWindowBase {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, const Dimension &padding, Dimension &fill, Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_BV_LIST_LOCO: {
|
||||
resize->height = GetEngineListHeight(this->vehicle_type);
|
||||
size->height = 3 * resize->height;
|
||||
resize.height = GetEngineListHeight(this->vehicle_type);
|
||||
size.height = 3 * resize.height;
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_BV_PANEL_LOCO: {
|
||||
size->height = this->loco.details_height;
|
||||
size.height = this->loco.details_height;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3005,18 +3032,18 @@ struct BuildVehicleWindowTrainAdvanced final : BuildVehicleWindowBase {
|
||||
Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->widget_data);
|
||||
d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better.
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_BV_LIST_WAGON: {
|
||||
resize->height = GetEngineListHeight(this->vehicle_type);
|
||||
size->height = 3 * resize->height;
|
||||
resize.height = GetEngineListHeight(this->vehicle_type);
|
||||
size.height = 3 * resize.height;
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_BV_PANEL_WAGON: {
|
||||
size->height = this->wagon.details_height;
|
||||
size.height = this->wagon.details_height;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3024,22 +3051,22 @@ struct BuildVehicleWindowTrainAdvanced final : BuildVehicleWindowBase {
|
||||
Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->widget_data);
|
||||
d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better.
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_BV_SHOW_HIDE_LOCO: // Fallthrough
|
||||
case WID_BV_SHOW_HIDE_WAGON:
|
||||
case WID_BV_COMB_SHOW_HIDE: {
|
||||
*size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON + this->vehicle_type);
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON + this->vehicle_type));
|
||||
size->width += padding.width;
|
||||
size->height += padding.height;
|
||||
size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON + this->vehicle_type);
|
||||
size = maxdim(size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON + this->vehicle_type));
|
||||
size.width += padding.width;
|
||||
size.height += padding.height;
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_BV_RENAME_LOCO: {
|
||||
*size = maxdim(*size, NWidgetLeaf::GetResizeBoxDimension());
|
||||
size = maxdim(size, NWidgetLeaf::GetResizeBoxDimension());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -330,7 +330,7 @@ struct CheatWindow : Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_C_PANEL) return;
|
||||
|
||||
@@ -379,8 +379,8 @@ struct CheatWindow : Window {
|
||||
this->line_height = std::max<uint>(this->line_height, SETTING_BUTTON_HEIGHT);
|
||||
this->line_height = std::max<uint>(this->line_height, GetCharacterHeight(FS_NORMAL)) + WidgetDimensions::scaled.framerect.Vertical();
|
||||
|
||||
size->width = width + WidgetDimensions::scaled.hsep_wide * 4 + this->box.width + SETTING_BUTTON_WIDTH /* stuff on the left */ + WidgetDimensions::scaled.hsep_wide * 2 /* extra spacing on right */;
|
||||
size->height = WidgetDimensions::scaled.framerect.Vertical() + this->line_height * lines;
|
||||
size.width = width + WidgetDimensions::scaled.hsep_wide * 4 + this->box.width + SETTING_BUTTON_WIDTH /* stuff on the left */ + WidgetDimensions::scaled.hsep_wide * 2 /* extra spacing on right */;
|
||||
size.height = WidgetDimensions::scaled.framerect.Vertical() + this->line_height * lines;
|
||||
}
|
||||
|
||||
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
|
||||
|
@@ -387,29 +387,29 @@ struct CompanyFinancesWindow : Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_CF_EXPS_CATEGORY:
|
||||
size->width = GetMaxCategoriesWidth();
|
||||
size->height = GetTotalCategoriesHeight();
|
||||
size.width = GetMaxCategoriesWidth();
|
||||
size.height = GetTotalCategoriesHeight();
|
||||
break;
|
||||
|
||||
case WID_CF_EXPS_PRICE1:
|
||||
case WID_CF_EXPS_PRICE2:
|
||||
case WID_CF_EXPS_PRICE3:
|
||||
size->height = GetTotalCategoriesHeight();
|
||||
size.height = GetTotalCategoriesHeight();
|
||||
[[fallthrough]];
|
||||
|
||||
case WID_CF_BALANCE_VALUE:
|
||||
case WID_CF_LOAN_VALUE:
|
||||
case WID_CF_OWN_VALUE:
|
||||
SetDParamMaxValue(0, this->max_money);
|
||||
size->width = std::max(GetStringBoundingBox(STR_FINANCES_NEGATIVE_INCOME).width, GetStringBoundingBox(STR_FINANCES_POSITIVE_INCOME).width) + padding.width;
|
||||
size.width = std::max(GetStringBoundingBox(STR_FINANCES_NEGATIVE_INCOME).width, GetStringBoundingBox(STR_FINANCES_POSITIVE_INCOME).width) + padding.width;
|
||||
break;
|
||||
|
||||
case WID_CF_INTEREST_RATE:
|
||||
size->height = GetCharacterHeight(FS_NORMAL);
|
||||
size.height = GetCharacterHeight(FS_NORMAL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -761,7 +761,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_SCL_SPACER_DROPDOWN: {
|
||||
@@ -779,7 +779,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
size->width = std::max(size->width, 5 + d.width + padding.width);
|
||||
size.width = std::max(size.width, 5 + d.width + padding.width);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -788,15 +788,15 @@ public:
|
||||
this->square = GetSpriteSize(SPR_SQUARE);
|
||||
this->line_height = std::max(this->square.height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height;
|
||||
|
||||
size->height = 5 * this->line_height;
|
||||
resize->width = 1;
|
||||
resize->height = this->line_height;
|
||||
size.height = 5 * this->line_height;
|
||||
resize.width = 1;
|
||||
resize.height = this->line_height;
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_SCL_SEC_COL_DROPDOWN:
|
||||
if (!_loaded_newgrf_features.has_2CC) {
|
||||
size->width = 0;
|
||||
size.width = 0;
|
||||
break;
|
||||
}
|
||||
[[fallthrough]];
|
||||
@@ -805,9 +805,9 @@ public:
|
||||
this->square = GetSpriteSize(SPR_SQUARE);
|
||||
int string_padding = this->square.width + WidgetDimensions::scaled.hsep_normal + padding.width;
|
||||
for (Colours colour = COLOUR_BEGIN; colour != COLOUR_END; colour++) {
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COLOUR_DARK_BLUE + colour).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;
|
||||
}
|
||||
}
|
||||
@@ -1448,31 +1448,31 @@ public:
|
||||
this->number_dim = number_dim;
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT:
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_FACE_EARRING));
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_FACE_MOUSTACHE));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_FACE_EARRING));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_FACE_MOUSTACHE));
|
||||
break;
|
||||
|
||||
case WID_SCMF_TIE_EARRING_TEXT:
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_FACE_EARRING));
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_FACE_TIE));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_FACE_EARRING));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_FACE_TIE));
|
||||
break;
|
||||
|
||||
case WID_SCMF_LIPS_MOUSTACHE_TEXT:
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_FACE_LIPS));
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_FACE_MOUSTACHE));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_FACE_LIPS));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_FACE_MOUSTACHE));
|
||||
break;
|
||||
|
||||
case WID_SCMF_FACE:
|
||||
*size = maxdim(*size, GetScaledSpriteSize(SPR_GRADIENT));
|
||||
size = maxdim(size, GetScaledSpriteSize(SPR_GRADIENT));
|
||||
break;
|
||||
|
||||
case WID_SCMF_HAS_MOUSTACHE_EARRING:
|
||||
case WID_SCMF_HAS_GLASSES:
|
||||
*size = this->yesno_dim;
|
||||
size = this->yesno_dim;
|
||||
break;
|
||||
|
||||
case WID_SCMF_EYECOLOUR:
|
||||
@@ -1485,7 +1485,7 @@ public:
|
||||
case WID_SCMF_COLLAR:
|
||||
case WID_SCMF_TIE_EARRING:
|
||||
case WID_SCMF_GLASSES:
|
||||
*size = this->number_dim;
|
||||
size = this->number_dim;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1876,7 +1876,7 @@ struct CompanyInfrastructureWindow : Window
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
const Company *c = Company::Get((CompanyID)this->window_number);
|
||||
|
||||
@@ -1884,24 +1884,24 @@ struct CompanyInfrastructureWindow : Window
|
||||
case WID_CI_DESC: {
|
||||
uint rail_lines = 1; // Starts at 1 because a line is also required for the section title
|
||||
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT).width);
|
||||
|
||||
for (const auto &rt : _sorted_railtypes) {
|
||||
if (HasBit(this->railtypes, rt)) {
|
||||
rail_lines++;
|
||||
size->width = std::max(size->width, GetStringBoundingBox(GetRailTypeInfo(rt)->strings.name).width + WidgetDimensions::scaled.hsep_indent);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(GetRailTypeInfo(rt)->strings.name).width + WidgetDimensions::scaled.hsep_indent);
|
||||
}
|
||||
}
|
||||
if (this->railtypes != RAILTYPES_NONE) {
|
||||
rail_lines++;
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS).width + WidgetDimensions::scaled.hsep_indent);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS).width + WidgetDimensions::scaled.hsep_indent);
|
||||
}
|
||||
|
||||
uint road_lines = 1; // Starts at 1 because a line is also required for the section title
|
||||
uint tram_lines = 1;
|
||||
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT).width);
|
||||
|
||||
for (const auto &rt : _sorted_roadtypes) {
|
||||
if (HasBit(this->roadtypes, rt)) {
|
||||
@@ -1910,18 +1910,18 @@ struct CompanyInfrastructureWindow : Window
|
||||
} else {
|
||||
tram_lines++;
|
||||
}
|
||||
size->width = std::max(size->width, GetStringBoundingBox(GetRoadTypeInfo(rt)->strings.name).width + WidgetDimensions::scaled.hsep_indent);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(GetRoadTypeInfo(rt)->strings.name).width + WidgetDimensions::scaled.hsep_indent);
|
||||
}
|
||||
}
|
||||
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS).width + WidgetDimensions::scaled.hsep_indent);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS).width + WidgetDimensions::scaled.hsep_indent);
|
||||
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS).width + WidgetDimensions::scaled.hsep_indent);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS).width + WidgetDimensions::scaled.hsep_indent);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS).width + WidgetDimensions::scaled.hsep_indent);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS).width + WidgetDimensions::scaled.hsep_indent);
|
||||
|
||||
size->width += padding.width;
|
||||
size.width += padding.width;
|
||||
|
||||
uint total_height = ((rail_lines + road_lines + tram_lines + 2 + 3) * GetCharacterHeight(FS_NORMAL)) + (4 * WidgetDimensions::scaled.vsep_sparse);
|
||||
|
||||
@@ -1930,9 +1930,9 @@ struct CompanyInfrastructureWindow : Window
|
||||
|
||||
this->vscroll->SetCount(total_height);
|
||||
|
||||
size->height = std::max(size->height, std::min<uint>(8 * GetCharacterHeight(FS_NORMAL), total_height));
|
||||
size.height = std::max(size.height, std::min<uint>(8 * GetCharacterHeight(FS_NORMAL), total_height));
|
||||
uint target_height = std::min<uint>(40 * GetCharacterHeight(FS_NORMAL), total_height);
|
||||
this->height_extra = (target_height > size->height) ? (target_height - size->height) : 0;
|
||||
this->height_extra = (target_height > size.height) ? (target_height - size.height) : 0;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1967,13 +1967,13 @@ struct CompanyInfrastructureWindow : Window
|
||||
if (_settings_game.economy.infrastructure_maintenance) {
|
||||
SetDParamMaxValue(0, this->GetTotalMaintenanceCost() * 12); // Convert to per year
|
||||
this->total_width = GetStringBoundingBox(EconTime::UsingWallclockUnits() ? STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD : STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR).width + WidgetDimensions::scaled.hsep_indent * 2;
|
||||
size->width = std::max(size->width, this->total_width);
|
||||
size.width = std::max(size.width, this->total_width);
|
||||
|
||||
SetDParamMaxValue(0, max_cost * 12); // Convert to per year
|
||||
count_width += std::max(this->total_width, GetStringBoundingBox(EconTime::UsingWallclockUnits() ? STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_PERIOD : STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL_YEAR).width);
|
||||
}
|
||||
|
||||
size->width = std::max(size->width, count_width);
|
||||
size.width = std::max(size.width, count_width);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2356,11 +2356,11 @@ struct CompanyWindow : Window
|
||||
this->DrawWidgets();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_C_FACE:
|
||||
*size = maxdim(*size, GetScaledSpriteSize(SPR_GRADIENT));
|
||||
size = maxdim(size, GetScaledSpriteSize(SPR_GRADIENT));
|
||||
break;
|
||||
|
||||
case WID_C_DESC_COLOUR_SCHEME_EXAMPLE: {
|
||||
@@ -2368,31 +2368,31 @@ struct CompanyWindow : Window
|
||||
Dimension d = GetSpriteSize(SPR_VEH_BUS_SW_VIEW, &offset);
|
||||
d.width -= offset.x;
|
||||
d.height -= offset.y;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_C_DESC_COMPANY_VALUE:
|
||||
SetDParam(0, INT64_MAX); // Arguably the maximum company value
|
||||
size->width = GetStringBoundingBox(STR_COMPANY_VIEW_COMPANY_VALUE).width;
|
||||
size.width = GetStringBoundingBox(STR_COMPANY_VIEW_COMPANY_VALUE).width;
|
||||
break;
|
||||
|
||||
case WID_C_DESC_VEHICLE_COUNTS:
|
||||
SetDParamMaxValue(0, 5000); // Maximum number of vehicles
|
||||
for (uint i = 0; i < lengthof(_company_view_vehicle_count_strings); i++) {
|
||||
size->width = std::max(size->width, GetStringBoundingBox(_company_view_vehicle_count_strings[i]).width + padding.width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(_company_view_vehicle_count_strings[i]).width + padding.width);
|
||||
}
|
||||
break;
|
||||
|
||||
case WID_C_DESC_INFRASTRUCTURE_COUNTS:
|
||||
SetDParamMaxValue(0, UINT_MAX);
|
||||
size->width = GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL).width;
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_WATER).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_STATION).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_NONE).width);
|
||||
size->width += padding.width;
|
||||
size.width = GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL).width;
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_WATER).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_STATION).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_NONE).width);
|
||||
size.width += padding.width;
|
||||
break;
|
||||
|
||||
case WID_C_DESC_OWNERS: {
|
||||
@@ -2400,7 +2400,7 @@ struct CompanyWindow : Window
|
||||
SetDParamMaxValue(0, 75);
|
||||
SetDParam(1, c2->index);
|
||||
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_SHARES_OWNED_BY).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_SHARES_OWNED_BY).width);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2413,20 +2413,20 @@ struct CompanyWindow : Window
|
||||
case WID_C_HOSTILE_TAKEOVER:
|
||||
case WID_C_COMPANY_PASSWORD:
|
||||
case WID_C_COMPANY_JOIN:
|
||||
size->width = GetStringBoundingBox(STR_COMPANY_VIEW_VIEW_HQ_BUTTON).width;
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_BUILD_HQ_BUTTON).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_RELOCATE_HQ).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_GIVE_MONEY_BUTTON).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_PASSWORD).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_JOIN).width);
|
||||
size->width += padding.width;
|
||||
size.width = GetStringBoundingBox(STR_COMPANY_VIEW_VIEW_HQ_BUTTON).width;
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_BUILD_HQ_BUTTON).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_RELOCATE_HQ).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_GIVE_MONEY_BUTTON).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_PASSWORD).width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(STR_COMPANY_VIEW_JOIN).width);
|
||||
size.width += padding.width;
|
||||
break;
|
||||
|
||||
|
||||
case WID_C_HAS_PASSWORD:
|
||||
if (_networking) *size = maxdim(*size, GetSpriteSize(SPR_LOCK));
|
||||
if (_networking) size = maxdim(size, GetSpriteSize(SPR_LOCK));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2807,18 +2807,18 @@ struct BuyCompanyWindow : Window {
|
||||
this->Window::Close();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_BC_FACE:
|
||||
*size = GetScaledSpriteSize(SPR_GRADIENT);
|
||||
size = GetScaledSpriteSize(SPR_GRADIENT);
|
||||
break;
|
||||
|
||||
case WID_BC_QUESTION:
|
||||
const Company *c = Company::Get((CompanyID)this->window_number);
|
||||
SetDParam(0, c->index);
|
||||
SetDParam(1, this->company_value);
|
||||
size->height = GetStringHeight(this->hostile_takeover ? STR_BUY_COMPANY_HOSTILE_TAKEOVER : STR_BUY_COMPANY_MESSAGE, size->width);
|
||||
size.height = GetStringHeight(this->hostile_takeover ? STR_BUY_COMPANY_HOSTILE_TAKEOVER : STR_BUY_COMPANY_MESSAGE, size.width);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -25,7 +25,7 @@
|
||||
template <typename T>
|
||||
constexpr T abs(const T a)
|
||||
{
|
||||
return (a < (T)0) ? -a : a;
|
||||
return (a < static_cast<T>(0)) ? -a : a;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -41,7 +41,7 @@ constexpr T Align(const T x, uint n)
|
||||
{
|
||||
assert((n & (n - 1)) == 0 && n != 0);
|
||||
n--;
|
||||
return (T)((x + n) & ~((T)n));
|
||||
return static_cast<T>((x + n) & ~static_cast<T>(n));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -57,8 +57,8 @@ constexpr T Align(const T x, uint n)
|
||||
template <typename T>
|
||||
constexpr T *AlignPtr(T *x, uint n)
|
||||
{
|
||||
static_assert(sizeof(size_t) == sizeof(void *));
|
||||
return reinterpret_cast<T *>(Align((size_t)x, n));
|
||||
static_assert(sizeof(uintptr_t) == sizeof(void *));
|
||||
return reinterpret_cast<T *>(Align(reinterpret_cast<uintptr_t>(x), n));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -254,7 +254,7 @@ constexpr T Delta(const T a, const T b)
|
||||
template <typename T>
|
||||
constexpr bool IsInsideBS(const T x, const size_t base, const size_t size)
|
||||
{
|
||||
return (size_t)(x - base) < size;
|
||||
return static_cast<size_t>(x - base) < size;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -271,9 +271,9 @@ template <typename T, std::enable_if_t<std::disjunction_v<std::is_convertible<T,
|
||||
constexpr bool IsInsideMM(const T x, const size_t min, const size_t max) noexcept
|
||||
{
|
||||
if constexpr (std::is_base_of_v<StrongTypedefBase, T>) {
|
||||
return (size_t)(x.base() - min) < (max - min);
|
||||
return static_cast<size_t>(x.base() - min) < (max - min);
|
||||
} else {
|
||||
return (size_t)(x - min) < (max - min);
|
||||
return static_cast<size_t>(x - min) < (max - min);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -106,7 +106,7 @@ struct SetDateWindow : Window {
|
||||
ShowDropDownList(this, std::move(list), selected, widget);
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
Dimension d = {0, 0};
|
||||
switch (widget) {
|
||||
@@ -132,7 +132,7 @@ struct SetDateWindow : Window {
|
||||
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = d;
|
||||
size = d;
|
||||
}
|
||||
|
||||
void SetStringParameters(WidgetID widget) const override
|
||||
@@ -225,7 +225,7 @@ struct SetMinutesWindow : SetDateWindow
|
||||
ShowDropDownList(this, std::move(list), selected, widget);
|
||||
}
|
||||
|
||||
virtual void UpdateWidgetSize(WidgetID widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||
virtual void UpdateWidgetSize(WidgetID widget, Dimension &size, const Dimension &padding, Dimension &fill, Dimension &resize) override
|
||||
{
|
||||
Dimension d = {0, 0};
|
||||
switch (widget) {
|
||||
@@ -248,7 +248,7 @@ struct SetMinutesWindow : SetDateWindow
|
||||
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = d;
|
||||
size = d;
|
||||
}
|
||||
|
||||
virtual void SetStringParameters(WidgetID widget) const override
|
||||
|
@@ -82,7 +82,7 @@ struct DebugLevel {
|
||||
};
|
||||
|
||||
#define DEBUG_LEVEL(x) { #x, &_debug_##x##_level }
|
||||
static const DebugLevel debug_level[] = {
|
||||
static const DebugLevel _debug_levels[] = {
|
||||
DEBUG_LEVEL(driver),
|
||||
DEBUG_LEVEL(grf),
|
||||
DEBUG_LEVEL(map),
|
||||
@@ -117,20 +117,17 @@ struct DebugLevel {
|
||||
*/
|
||||
char *DumpDebugFacilityNames(char *buf, char *last)
|
||||
{
|
||||
size_t length = 0;
|
||||
for (const DebugLevel *i = debug_level; i != endof(debug_level); ++i) {
|
||||
if (length == 0) {
|
||||
bool written = false;
|
||||
for (const auto &debug_level : _debug_levels) {
|
||||
if (!written) {
|
||||
buf = strecpy(buf, "List of debug facility names:\n", last);
|
||||
} else {
|
||||
buf = strecpy(buf, ", ", last);
|
||||
length += 2;
|
||||
}
|
||||
buf = strecpy(buf, i->name, last);
|
||||
length += strlen(i->name);
|
||||
buf = strecpy(buf, debug_level.name, last);
|
||||
written = true;
|
||||
}
|
||||
if (length > 0) {
|
||||
buf = strecpy(buf, "\n\n", last);
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
|
||||
@@ -243,13 +240,11 @@ void SetDebugString(const char *s, void (*error_func)(const char *))
|
||||
|
||||
/* Global debugging level? */
|
||||
if (*s >= '0' && *s <= '9') {
|
||||
const DebugLevel *i;
|
||||
|
||||
v = std::strtoul(s, &end, 0);
|
||||
s = end;
|
||||
|
||||
for (i = debug_level; i != endof(debug_level); ++i) {
|
||||
new_levels[i->name] = v;
|
||||
for (const auto &debug_level : _debug_levels) {
|
||||
new_levels[debug_level.name] = v;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,9 +259,9 @@ void SetDebugString(const char *s, void (*error_func)(const char *))
|
||||
|
||||
/* check debugging levels */
|
||||
const DebugLevel *found = nullptr;
|
||||
for (const DebugLevel *i = debug_level; i != endof(debug_level); ++i) {
|
||||
if (s == t + strlen(i->name) && strncmp(t, i->name, s - t) == 0) {
|
||||
found = i;
|
||||
for (const auto &debug_level : _debug_levels) {
|
||||
if (s == t + strlen(debug_level.name) && strncmp(t, debug_level.name, s - t) == 0) {
|
||||
found = &debug_level;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -285,10 +280,10 @@ void SetDebugString(const char *s, void (*error_func)(const char *))
|
||||
}
|
||||
|
||||
/* Apply the changes after parse is successful */
|
||||
for (const DebugLevel *i = debug_level; i != endof(debug_level); ++i) {
|
||||
const auto &nl = new_levels.find(i->name);
|
||||
for (const auto &debug_level : _debug_levels) {
|
||||
const auto &nl = new_levels.find(debug_level.name);
|
||||
if (nl != new_levels.end()) {
|
||||
*i->level = nl->second;
|
||||
*debug_level.level = nl->second;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -301,8 +296,8 @@ void SetDebugString(const char *s, void (*error_func)(const char *))
|
||||
std::string GetDebugString()
|
||||
{
|
||||
std::string result;
|
||||
for (size_t i = 0; i < lengthof(debug_level); i++) {
|
||||
result += stdstr_fmt("%s%s=%d", i == 0 ? "" : ", ", debug_level[i].name, *(debug_level[i].level));
|
||||
for (const auto &debug_level : _debug_levels) {
|
||||
result += stdstr_fmt("%s%s=%d", result.empty() ? "" : ", ", debug_level.name, *(debug_level.level));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@@ -302,13 +302,13 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual void UpdateWidgetSize(WidgetID widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||
virtual void UpdateWidgetSize(WidgetID widget, Dimension &size, const Dimension &padding, Dimension &fill, Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_DB_LIST:
|
||||
resize->height = DeparturesWindow::entry_height;
|
||||
size->height = 2 * resize->height;
|
||||
size->width = this->min_width;
|
||||
resize.height = DeparturesWindow::entry_height;
|
||||
size.height = 2 * resize.height;
|
||||
size.width = this->min_width;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -655,7 +655,7 @@ struct DepotWindow : Window {
|
||||
this->flag_size = maxdim(GetScaledSpriteSize(SPR_FLAG_VEH_STOPPED), GetScaledSpriteSize(SPR_FLAG_VEH_RUNNING));
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_D_MATRIX: {
|
||||
@@ -681,18 +681,18 @@ struct DepotWindow : Window {
|
||||
}
|
||||
int base_width = this->count_width + this->header_width + padding.width;
|
||||
|
||||
resize->height = std::max<uint>(this->cell_size.height, min_height + padding.height);
|
||||
resize.height = std::max<uint>(this->cell_size.height, min_height + padding.height);
|
||||
if (this->type == VEH_TRAIN) {
|
||||
resize->width = 1;
|
||||
size->width = base_width + 2 * ScaleSpriteTrad(29); // about 2 parts
|
||||
size->height = resize->height * 6;
|
||||
resize.width = 1;
|
||||
size.width = base_width + 2 * ScaleSpriteTrad(29); // about 2 parts
|
||||
size.height = resize.height * 6;
|
||||
} else {
|
||||
resize->width = base_width + this->cell_size.extend_left + this->cell_size.extend_right;
|
||||
size->width = resize->width * (this->type == VEH_ROAD ? 5 : 3);
|
||||
size->height = resize->height * (this->type == VEH_ROAD ? 5 : 3);
|
||||
resize.width = base_width + this->cell_size.extend_left + this->cell_size.extend_right;
|
||||
size.width = resize.width * (this->type == VEH_ROAD ? 5 : 3);
|
||||
size.height = resize.height * (this->type == VEH_ROAD ? 5 : 3);
|
||||
}
|
||||
fill->width = resize->width;
|
||||
fill->height = resize->height;
|
||||
fill.width = resize.width;
|
||||
fill.height = resize.height;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -529,13 +529,13 @@ public:
|
||||
UpdateDocksDirection();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_BDD_X:
|
||||
case WID_BDD_Y:
|
||||
size->width = ScaleGUITrad(96) + WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||
size->height = ScaleGUITrad(64) + WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
size.width = ScaleGUITrad(96) + WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||
size.height = ScaleGUITrad(64) + WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -203,9 +203,9 @@ struct DropdownWindow : Window {
|
||||
if (this->position.y < button_rect.top && list_dim.height > widget_dim.height) this->vscroll->UpdatePosition(INT_MAX);
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget == WID_DM_ITEMS) *size = this->items_dim;
|
||||
if (widget == WID_DM_ITEMS) size = this->items_dim;
|
||||
}
|
||||
|
||||
Point OnInitialPosition([[maybe_unused]] int16_t sm_width, [[maybe_unused]] int16_t sm_height, [[maybe_unused]] int window_number) override
|
||||
|
@@ -77,7 +77,7 @@ struct EnginePreviewWindow : Window {
|
||||
this->flags |= WF_STICKY;
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_EP_QUESTION) return;
|
||||
|
||||
@@ -97,11 +97,11 @@ struct EnginePreviewWindow : Window {
|
||||
}
|
||||
this->vehicle_space = std::max<int>(ScaleSpriteTrad(40), y - y_offs);
|
||||
|
||||
size->width = std::max(size->width, x + std::abs(x_offs));
|
||||
size.width = std::max(size.width, x + std::abs(x_offs));
|
||||
SetDParam(0, GetEngineCategoryName(engine));
|
||||
size->height = GetStringHeight(STR_ENGINE_PREVIEW_MESSAGE, size->width) + WidgetDimensions::scaled.vsep_wide + GetCharacterHeight(FS_NORMAL) + this->vehicle_space;
|
||||
size.height = GetStringHeight(STR_ENGINE_PREVIEW_MESSAGE, size.width) + WidgetDimensions::scaled.vsep_wide + GetCharacterHeight(FS_NORMAL) + this->vehicle_space;
|
||||
SetDParam(0, engine);
|
||||
size->height += GetStringHeight(GetEngineInfoString(engine), size->width);
|
||||
size.height += GetStringHeight(GetEngineInfoString(engine), size.width);
|
||||
}
|
||||
|
||||
void DrawWidget(const Rect &r, WidgetID widget) const override
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#define ENGINE_GUI_H
|
||||
|
||||
#include "engine_type.h"
|
||||
#include "group_type.h"
|
||||
#include "sortlist_type.h"
|
||||
#include "gfx_type.h"
|
||||
#include "vehicle_type.h"
|
||||
@@ -40,9 +41,10 @@ struct GUIEngineListItem {
|
||||
EngineID engine_id; ///< Engine to display in build purchase list
|
||||
EngineID variant_id; ///< Variant group of the engine.
|
||||
EngineDisplayFlags flags; ///< Flags for toggling/drawing (un)folded status and controlling indentation.
|
||||
int8_t indent; ///< Display indentation level.
|
||||
uint8_t indent; ///< Display indentation level.
|
||||
uint16_t level_mask; ///< Mask of level continuations.
|
||||
|
||||
GUIEngineListItem(EngineID engine_id, EngineID variant_id, EngineDisplayFlags flags, int indent) : engine_id(engine_id), variant_id(variant_id), flags(flags), indent(indent) {}
|
||||
GUIEngineListItem(EngineID engine_id, EngineID variant_id, EngineDisplayFlags flags, uint8_t indent) : engine_id(engine_id), variant_id(variant_id), flags(flags), indent(indent), level_mask(0) {}
|
||||
|
||||
/* Used when searching list only by engine_id. */
|
||||
bool operator == (const EngineID &other) const { return this->engine_id == other; }
|
||||
@@ -70,7 +72,10 @@ extern bool _engine_sort_show_hidden_engines[];
|
||||
extern const StringID _engine_sort_listing[][14];
|
||||
extern EngList_SortTypeFunction * const _engine_sort_functions[][13];
|
||||
|
||||
/* Functions in build_vehicle_gui.cpp */
|
||||
uint GetEngineListHeight(VehicleType type);
|
||||
void DisplayVehicleSortDropDown(Window *w, VehicleType vehicle_type, int selected, WidgetID button);
|
||||
void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_list, const class Scrollbar &sb, EngineID selected_id, bool show_count, GroupID selected_group);
|
||||
void GUIEngineListAddChildren(GUIEngineList &dst, const GUIEngineList &src, EngineID parent = INVALID_ENGINE, uint8_t indent = 0);
|
||||
|
||||
#endif /* ENGINE_GUI_H */
|
||||
|
@@ -178,27 +178,28 @@ public:
|
||||
this->InitNested();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_EM_MESSAGE: {
|
||||
CopyInDParam(this->params);
|
||||
if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack);
|
||||
|
||||
this->height_summary = GetStringHeight(this->summary_msg, size->width);
|
||||
this->height_detailed = (this->detailed_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->detailed_msg, size->width);
|
||||
this->height_extra = (this->extra_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->extra_msg, size->width);
|
||||
this->height_summary = GetStringHeight(this->summary_msg, size.width);
|
||||
this->height_detailed = (this->detailed_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->detailed_msg, size.width);
|
||||
this->height_extra = (this->extra_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->extra_msg, size.width);
|
||||
|
||||
if (this->textref_stack_size > 0) StopTextRefStackUsage();
|
||||
|
||||
uint panel_height = this->height_summary;
|
||||
if (this->detailed_msg != INVALID_STRING_ID) panel_height += this->height_detailed + WidgetDimensions::scaled.vsep_wide;
|
||||
if (this->extra_msg != INVALID_STRING_ID) panel_height += this->height_extra + WidgetDimensions::scaled.vsep_wide;
|
||||
size->height = std::max(size->height, panel_height);
|
||||
|
||||
size.height = std::max(size.height, panel_height);
|
||||
break;
|
||||
}
|
||||
case WID_EM_FACE:
|
||||
*size = maxdim(*size, GetScaledSpriteSize(SPR_GRADIENT));
|
||||
size = maxdim(size, GetScaledSpriteSize(SPR_GRADIENT));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -343,7 +344,7 @@ void ShowFirstError()
|
||||
*/
|
||||
void UnshowCriticalError()
|
||||
{
|
||||
ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0);
|
||||
ErrmsgWindow *w = dynamic_cast<ErrmsgWindow *>(FindWindowById(WC_ERRMSG, 0));
|
||||
if (_window_system_initialized && w != nullptr) {
|
||||
if (w->IsCritical()) _error_list.push_front(*w);
|
||||
_window_system_initialized = false;
|
||||
@@ -399,7 +400,7 @@ void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel
|
||||
ErrorMessageData data(summary_msg, detailed_msg, no_timeout ? 0 : _settings_client.gui.errmsg_duration, x, y, textref_stack_grffile, textref_stack_size, textref_stack, extra_msg);
|
||||
data.CopyOutDParams();
|
||||
|
||||
ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0);
|
||||
ErrmsgWindow *w = dynamic_cast<ErrmsgWindow *>(FindWindowById(WC_ERRMSG, 0));
|
||||
if (w != nullptr) {
|
||||
if (w->IsCritical()) {
|
||||
/* A critical error is currently shown. */
|
||||
@@ -423,7 +424,7 @@ void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel
|
||||
*/
|
||||
bool HideActiveErrorMessage()
|
||||
{
|
||||
ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0);
|
||||
ErrmsgWindow *w = dynamic_cast<ErrmsgWindow *>(FindWindowById(WC_ERRMSG, 0));
|
||||
if (w == nullptr) return false;
|
||||
w->Close();
|
||||
return true;
|
||||
|
@@ -586,23 +586,23 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_SL_BACKGROUND:
|
||||
size->height = 2 * GetCharacterHeight(FS_NORMAL) + padding.height;
|
||||
size.height = 2 * GetCharacterHeight(FS_NORMAL) + padding.height;
|
||||
break;
|
||||
|
||||
case WID_SL_DRIVES_DIRECTORIES_LIST:
|
||||
resize->height = GetCharacterHeight(FS_NORMAL);
|
||||
size->height = resize->height * 10 + padding.height;
|
||||
resize.height = GetCharacterHeight(FS_NORMAL);
|
||||
size.height = resize.height * 10 + padding.height;
|
||||
break;
|
||||
case WID_SL_SORT_BYNAME:
|
||||
case WID_SL_SORT_BYDATE: {
|
||||
Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->widget_data);
|
||||
d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better.
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -535,32 +535,32 @@ struct FramerateWindow : Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_FRW_RATE_GAMELOOP:
|
||||
SetDParam(0, STR_FRAMERATE_FPS_GOOD);
|
||||
SetDParam(1, 999999);
|
||||
SetDParam(2, 2);
|
||||
*size = GetStringBoundingBox(STR_FRAMERATE_RATE_GAMELOOP);
|
||||
size = GetStringBoundingBox(STR_FRAMERATE_RATE_GAMELOOP);
|
||||
break;
|
||||
case WID_FRW_RATE_DRAWING:
|
||||
SetDParam(0, STR_FRAMERATE_FPS_GOOD);
|
||||
SetDParam(1, 999999);
|
||||
SetDParam(2, 2);
|
||||
*size = GetStringBoundingBox(STR_FRAMERATE_RATE_BLITTER);
|
||||
size = GetStringBoundingBox(STR_FRAMERATE_RATE_BLITTER);
|
||||
break;
|
||||
case WID_FRW_RATE_FACTOR:
|
||||
SetDParam(0, 999999);
|
||||
SetDParam(1, 2);
|
||||
*size = GetStringBoundingBox(STR_FRAMERATE_SPEED_FACTOR);
|
||||
size = GetStringBoundingBox(STR_FRAMERATE_SPEED_FACTOR);
|
||||
break;
|
||||
|
||||
case WID_FRW_TIMES_NAMES: {
|
||||
size->width = 0;
|
||||
size->height = GetCharacterHeight(FS_NORMAL) + WidgetDimensions::scaled.vsep_normal + MIN_ELEMENTS * GetCharacterHeight(FS_NORMAL);
|
||||
resize->width = 0;
|
||||
resize->height = GetCharacterHeight(FS_NORMAL);
|
||||
size.width = 0;
|
||||
size.height = GetCharacterHeight(FS_NORMAL) + WidgetDimensions::scaled.vsep_normal + MIN_ELEMENTS * GetCharacterHeight(FS_NORMAL);
|
||||
resize.width = 0;
|
||||
resize.height = GetCharacterHeight(FS_NORMAL);
|
||||
for (PerformanceElement e : DISPLAY_ORDER_PFE) {
|
||||
if (_pf_data[e].num_valid == 0) continue;
|
||||
Dimension line_size;
|
||||
@@ -571,7 +571,7 @@ struct FramerateWindow : Window {
|
||||
SetDParamStr(1, GetAIName(e - PFE_AI0));
|
||||
line_size = GetStringBoundingBox(STR_FRAMERATE_AI);
|
||||
}
|
||||
size->width = std::max(size->width, line_size.width);
|
||||
size.width = std::max(size.width, line_size.width);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -579,14 +579,14 @@ struct FramerateWindow : Window {
|
||||
case WID_FRW_TIMES_CURRENT:
|
||||
case WID_FRW_TIMES_AVERAGE:
|
||||
case WID_FRW_ALLOCSIZE: {
|
||||
*size = GetStringBoundingBox(STR_FRAMERATE_CURRENT + (widget - WID_FRW_TIMES_CURRENT));
|
||||
size = GetStringBoundingBox(STR_FRAMERATE_CURRENT + (widget - WID_FRW_TIMES_CURRENT));
|
||||
SetDParam(0, 999999);
|
||||
SetDParam(1, 2);
|
||||
Dimension item_size = GetStringBoundingBox(STR_FRAMERATE_MS_GOOD);
|
||||
size->width = std::max(size->width, item_size.width);
|
||||
size->height += GetCharacterHeight(FS_NORMAL) * MIN_ELEMENTS + WidgetDimensions::scaled.vsep_normal;
|
||||
resize->width = 0;
|
||||
resize->height = GetCharacterHeight(FS_NORMAL);
|
||||
size.width = std::max(size.width, item_size.width);
|
||||
size.height += GetCharacterHeight(FS_NORMAL) * MIN_ELEMENTS + WidgetDimensions::scaled.vsep_normal;
|
||||
resize.width = 0;
|
||||
resize.height = GetCharacterHeight(FS_NORMAL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -776,7 +776,7 @@ struct FrametimeGraphWindow : Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget == WID_FGW_GRAPH) {
|
||||
SetDParam(0, 100);
|
||||
@@ -788,10 +788,10 @@ struct FrametimeGraphWindow : Window {
|
||||
graph_size.height = std::max(100u, 10 * (size_ms_label.height + 1));
|
||||
/* Always 2:1 graph area */
|
||||
graph_size.width = 2 * graph_size.height;
|
||||
*size = graph_size;
|
||||
size = graph_size;
|
||||
|
||||
size->width += size_ms_label.width + 2;
|
||||
size->height += size_s_label.height + 2;
|
||||
size.width += size_ms_label.width + 2;
|
||||
size.height += size_s_label.height + 2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -813,8 +813,8 @@ struct FrametimeGraphWindow : Window {
|
||||
{ TIMESTAMP_PRECISION * 3, 4 },
|
||||
{ TIMESTAMP_PRECISION * 1, 2 },
|
||||
};
|
||||
for (const ScaleDef *sc = hscales; sc < hscales + lengthof(hscales); sc++) {
|
||||
if (range < sc->range) this->horizontal_scale = sc->scale;
|
||||
for (const auto &sc : hscales) {
|
||||
if (range < sc.range) this->horizontal_scale = sc.scale;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -832,8 +832,8 @@ struct FrametimeGraphWindow : Window {
|
||||
TIMESTAMP_PRECISION / 50,
|
||||
TIMESTAMP_PRECISION / 200,
|
||||
};
|
||||
for (const TimingMeasurement *sc = vscales; sc < vscales + lengthof(vscales); sc++) {
|
||||
if (range < *sc) this->vertical_scale = (int)*sc;
|
||||
for (const auto &sc : vscales) {
|
||||
if (range < sc) this->vertical_scale = (int)sc;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1066,11 +1066,11 @@ void ConPrintFramerate()
|
||||
|
||||
bool printed_anything = false;
|
||||
|
||||
for (const PerformanceElement *e = rate_elements; e < rate_elements + lengthof(rate_elements); e++) {
|
||||
auto &pf = _pf_data[*e];
|
||||
for (const auto &e : rate_elements) {
|
||||
auto &pf = _pf_data[e];
|
||||
if (pf.num_valid == 0) continue;
|
||||
IConsolePrint(TC_GREEN, "{} rate: {:.2f}fps (expected: {:.2f}fps)",
|
||||
MEASUREMENT_NAMES[*e],
|
||||
MEASUREMENT_NAMES[e],
|
||||
pf.GetRate(),
|
||||
pf.expected_rate);
|
||||
printed_anything = true;
|
||||
|
@@ -143,19 +143,19 @@ struct GSConfigWindow : public Window {
|
||||
this->vscroll->SetCount(this->visible_settings.size());
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_GSC_SETTINGS:
|
||||
this->line_height = std::max(SETTING_BUTTON_HEIGHT, GetCharacterHeight(FS_NORMAL)) + padding.height;
|
||||
resize->width = 1;
|
||||
resize->height = this->line_height;
|
||||
size->height = 5 * this->line_height;
|
||||
resize.width = 1;
|
||||
resize.height = this->line_height;
|
||||
size.height = 5 * this->line_height;
|
||||
break;
|
||||
|
||||
case WID_GSC_GSLIST:
|
||||
this->line_height = GetCharacterHeight(FS_NORMAL) + padding.height;
|
||||
size->height = 1 * this->line_height;
|
||||
size.height = 1 * this->line_height;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -644,15 +644,15 @@ struct GenerateLandscapeWindow : public Window {
|
||||
this->SetDirty();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
Dimension d{0, (uint)GetCharacterHeight(FS_NORMAL)};
|
||||
const StringID *strs = nullptr;
|
||||
switch (widget) {
|
||||
case WID_GL_TEMPERATE: case WID_GL_ARCTIC:
|
||||
case WID_GL_TROPICAL: case WID_GL_TOYLAND:
|
||||
size->width += WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||
size->height += WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
size.width += WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||
size.height += WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
break;
|
||||
|
||||
case WID_GL_HEIGHTMAP_HEIGHT_TEXT:
|
||||
@@ -683,12 +683,12 @@ struct GenerateLandscapeWindow : public Window {
|
||||
|
||||
case WID_GL_SNOW_LEVEL_TEXT:
|
||||
SetDParamMaxValue(0, MAX_TILE_HEIGHT);
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_JUST_INT));
|
||||
break;
|
||||
|
||||
case WID_GL_RAINFOREST_LEVEL_TEXT:
|
||||
SetDParamMaxValue(0, MAX_RAINFOREST_HEIGHT);
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_JUST_INT));
|
||||
break;
|
||||
|
||||
case WID_GL_HEIGHTMAP_SIZE_TEXT:
|
||||
@@ -737,7 +737,7 @@ struct GenerateLandscapeWindow : public Window {
|
||||
break;
|
||||
|
||||
case WID_GL_HEIGHTMAP_NAME_TEXT:
|
||||
size->width = 0;
|
||||
size.width = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -750,7 +750,7 @@ struct GenerateLandscapeWindow : public Window {
|
||||
}
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
}
|
||||
|
||||
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
|
||||
@@ -1271,14 +1271,14 @@ struct CreateScenarioWindow : public Window
|
||||
this->DrawWidgets();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
StringID str = STR_JUST_INT;
|
||||
switch (widget) {
|
||||
case WID_CS_TEMPERATE: case WID_CS_ARCTIC:
|
||||
case WID_CS_TROPICAL: case WID_CS_TOYLAND:
|
||||
size->width += WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||
size->height += WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
size.width += WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||
size.height += WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
break;
|
||||
|
||||
case WID_CS_START_DATE_TEXT:
|
||||
@@ -1301,7 +1301,7 @@ struct CreateScenarioWindow : public Window
|
||||
Dimension d = GetStringBoundingBox(str);
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
}
|
||||
|
||||
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
|
||||
@@ -1560,23 +1560,23 @@ struct GenerateProgressWindow : public Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_GP_PROGRESS_BAR: {
|
||||
SetDParamMaxValue(0, 100);
|
||||
*size = GetStringBoundingBox(STR_GENERATION_PROGRESS);
|
||||
size = GetStringBoundingBox(STR_GENERATION_PROGRESS);
|
||||
/* We need some spacing for the 'border' */
|
||||
size->height += WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size->width += WidgetDimensions::scaled.frametext.Vertical();
|
||||
size.height += WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size.width += WidgetDimensions::scaled.frametext.Vertical();
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_GP_PROGRESS_TEXT:
|
||||
for (uint i = 0; i < GWP_CLASS_COUNT; i++) {
|
||||
size->width = std::max(size->width, GetStringBoundingBox(_generation_class_table[i]).width + padding.width);
|
||||
size.width = std::max(size.width, GetStringBoundingBox(_generation_class_table[i]).width + padding.width);
|
||||
}
|
||||
size->height = GetCharacterHeight(FS_NORMAL) * 2 + WidgetDimensions::scaled.vsep_normal;
|
||||
size.height = GetCharacterHeight(FS_NORMAL) * 2 + WidgetDimensions::scaled.vsep_normal;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -168,18 +168,18 @@ struct GoalListWindow : public Window {
|
||||
return num;
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_GOAL_LIST) return;
|
||||
Dimension d = GetStringBoundingBox(STR_GOALS_NONE);
|
||||
|
||||
resize->width = 1;
|
||||
resize->height = d.height;
|
||||
resize.width = 1;
|
||||
resize.height = d.height;
|
||||
|
||||
d.height *= 5;
|
||||
d.width += WidgetDimensions::scaled.framerect.Horizontal();
|
||||
d.height += WidgetDimensions::scaled.framerect.Vertical();
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -388,12 +388,12 @@ struct GoalQuestionWindow : public Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_GQ_QUESTION) return;
|
||||
|
||||
SetDParamStr(0, this->question);
|
||||
size->height = GetStringHeight(STR_JUST_RAW_STRING, size->width);
|
||||
size.height = GetStringHeight(STR_JUST_RAW_STRING, size.width);
|
||||
}
|
||||
|
||||
void DrawWidget(const Rect &r, WidgetID widget) const override
|
||||
|
@@ -539,7 +539,7 @@ protected:
|
||||
}
|
||||
|
||||
public:
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_GRAPH_GRAPH) return;
|
||||
|
||||
@@ -570,9 +570,9 @@ public:
|
||||
SetDParam(1, INT64_MAX);
|
||||
uint y_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL).width;
|
||||
|
||||
size->width = std::max<uint>(size->width, ScaleGUITrad(5) + y_label_width + this->num_vert_lines * (x_label_width + ScaleGUITrad(5)) + ScaleGUITrad(9));
|
||||
size->height = std::max<uint>(size->height, ScaleGUITrad(5) + (1 + MIN_GRAPH_NUM_LINES_Y * 2 + (this->draw_dates ? 3 : 1)) * GetCharacterHeight(FS_SMALL) + ScaleGUITrad(4));
|
||||
size->height = std::max<uint>(size->height, size->width / 3);
|
||||
size.width = std::max<uint>(size.width, ScaleGUITrad(5) + y_label_width + this->num_vert_lines * (x_label_width + ScaleGUITrad(5)) + ScaleGUITrad(9));
|
||||
size.height = std::max<uint>(size.height, ScaleGUITrad(5) + (1 + MIN_GRAPH_NUM_LINES_Y * 2 + (this->draw_dates ? 3 : 1)) * GetCharacterHeight(FS_SMALL) + ScaleGUITrad(4));
|
||||
size.height = std::max<uint>(size.height, size.width / 3);
|
||||
}
|
||||
|
||||
void DrawWidget(const Rect &r, WidgetID widget) const override
|
||||
@@ -805,7 +805,7 @@ struct ExcludingCargoBaseGraphWindow : BaseGraphWindow {
|
||||
this->legend_width = (GetCharacterHeight(FS_SMALL) - ScaleGUITrad(1)) * 9 / 6;
|
||||
}
|
||||
|
||||
virtual void UpdateWidgetSize(WidgetID widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||
virtual void UpdateWidgetSize(WidgetID widget, Dimension &size, const Dimension &padding, Dimension &fill, Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_ECBG_MATRIX) {
|
||||
BaseGraphWindow::UpdateWidgetSize(widget, size, padding, fill, resize);
|
||||
@@ -818,13 +818,13 @@ struct ExcludingCargoBaseGraphWindow : BaseGraphWindow {
|
||||
d.width += this->legend_width + WidgetDimensions::scaled.hsep_normal; // colour field
|
||||
d.width += WidgetDimensions::scaled.framerect.Horizontal();
|
||||
d.height += WidgetDimensions::scaled.framerect.Vertical();
|
||||
*size = maxdim(d, *size);
|
||||
size = maxdim(d, size);
|
||||
}
|
||||
|
||||
this->line_height = size->height;
|
||||
size->height = this->line_height * 11; /* Default number of cargo types in most climates. */
|
||||
resize->width = 0;
|
||||
resize->height = this->line_height;
|
||||
this->line_height = size.height;
|
||||
size.height = this->line_height * 11; /* Default number of cargo types in most climates. */
|
||||
resize.width = 0;
|
||||
resize.height = this->line_height;
|
||||
}
|
||||
|
||||
virtual void DrawWidget(const Rect &r, WidgetID widget) const override
|
||||
@@ -1353,14 +1353,14 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_CPR_MATRIX) {
|
||||
BaseGraphWindow::UpdateWidgetSize(widget, size, padding, fill, resize);
|
||||
return;
|
||||
}
|
||||
|
||||
size->height = GetCharacterHeight(FS_SMALL) + WidgetDimensions::scaled.framerect.Vertical();
|
||||
size.height = GetCharacterHeight(FS_SMALL) + WidgetDimensions::scaled.framerect.Vertical();
|
||||
|
||||
for (const CargoSpec *cs : _sorted_standard_cargo_specs) {
|
||||
SetDParam(0, cs->name);
|
||||
@@ -1368,13 +1368,13 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
|
||||
d.width += this->legend_width + WidgetDimensions::scaled.hsep_normal; // colour field
|
||||
d.width += WidgetDimensions::scaled.framerect.Horizontal();
|
||||
d.height += WidgetDimensions::scaled.framerect.Vertical();
|
||||
*size = maxdim(d, *size);
|
||||
size = maxdim(d, size);
|
||||
}
|
||||
|
||||
this->line_height = size->height;
|
||||
size->height = this->line_height * 11; /* Default number of cargo types in most climates. */
|
||||
resize->width = 0;
|
||||
resize->height = this->line_height;
|
||||
this->line_height = size.height;
|
||||
size.height = this->line_height * 11; /* Default number of cargo types in most climates. */
|
||||
resize.width = 0;
|
||||
resize.height = this->line_height;
|
||||
}
|
||||
|
||||
void DrawWidget(const Rect &r, WidgetID widget) const override
|
||||
@@ -1619,12 +1619,12 @@ struct PerformanceRatingDetailWindow : Window {
|
||||
uint score_detail_left;
|
||||
uint score_detail_right;
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_PRD_SCORE_FIRST:
|
||||
this->bar_height = GetCharacterHeight(FS_NORMAL) + WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
size->height = this->bar_height + WidgetDimensions::scaled.matrix.Vertical();
|
||||
size.height = this->bar_height + WidgetDimensions::scaled.matrix.Vertical();
|
||||
|
||||
uint score_info_width = 0;
|
||||
for (uint i = SCORE_BEGIN; i < SCORE_END; i++) {
|
||||
@@ -1660,9 +1660,9 @@ struct PerformanceRatingDetailWindow : Window {
|
||||
SetDParam(1, max);
|
||||
uint score_detail_width = GetStringBoundingBox(STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY).width;
|
||||
|
||||
size->width = WidgetDimensions::scaled.frametext.Horizontal() + score_info_width + WidgetDimensions::scaled.hsep_wide + this->bar_width + WidgetDimensions::scaled.hsep_wide + score_detail_width;
|
||||
size.width = WidgetDimensions::scaled.frametext.Horizontal() + score_info_width + WidgetDimensions::scaled.hsep_wide + this->bar_width + WidgetDimensions::scaled.hsep_wide + score_detail_width;
|
||||
uint left = WidgetDimensions::scaled.frametext.left;
|
||||
uint right = size->width - WidgetDimensions::scaled.frametext.right;
|
||||
uint right = size.width - WidgetDimensions::scaled.frametext.right;
|
||||
|
||||
bool rtl = _current_text_dir == TD_RTL;
|
||||
this->score_info_left = rtl ? right - score_info_width : left;
|
||||
@@ -1942,7 +1942,7 @@ struct StationCargoGraphWindow final : BaseGraphWindow {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, const Dimension &padding, Dimension &fill, Dimension &resize) override
|
||||
{
|
||||
if (widget < WID_SCG_MATRIX) {
|
||||
BaseGraphWindow::UpdateWidgetSize(widget, size, padding, fill, resize);
|
||||
@@ -1955,13 +1955,13 @@ struct StationCargoGraphWindow final : BaseGraphWindow {
|
||||
d.width += this->legend_width + 4; // color field
|
||||
d.width += WidgetDimensions::scaled.framerect.Horizontal();
|
||||
d.height += WidgetDimensions::scaled.framerect.Vertical();
|
||||
*size = maxdim(d, *size);
|
||||
size = maxdim(d, size);
|
||||
}
|
||||
|
||||
this->line_height = size->height;
|
||||
size->height = this->line_height * 11; /* Default number of cargo types in most climates. */
|
||||
resize->width = 0;
|
||||
resize->height = this->line_height;
|
||||
this->line_height = size.height;
|
||||
size.height = this->line_height * 11; /* Default number of cargo types in most climates. */
|
||||
resize.width = 0;
|
||||
resize.height = this->line_height;
|
||||
}
|
||||
|
||||
void DrawWidget(const Rect &r, WidgetID widget) const override
|
||||
|
@@ -491,54 +491,54 @@ public:
|
||||
this->Window::Close();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_GL_LIST_GROUP:
|
||||
size->width = this->ComputeGroupInfoSize();
|
||||
resize->height = this->tiny_step_height;
|
||||
fill->height = this->tiny_step_height;
|
||||
size.width = this->ComputeGroupInfoSize();
|
||||
resize.height = this->tiny_step_height;
|
||||
fill.height = this->tiny_step_height;
|
||||
break;
|
||||
|
||||
case WID_GL_ALL_VEHICLES:
|
||||
case WID_GL_DEFAULT_VEHICLES:
|
||||
size->width = this->ComputeGroupInfoSize();
|
||||
size->height = this->tiny_step_height;
|
||||
size.width = this->ComputeGroupInfoSize();
|
||||
size.height = this->tiny_step_height;
|
||||
break;
|
||||
|
||||
case WID_GL_SORT_BY_ORDER: {
|
||||
Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->widget_data);
|
||||
d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better.
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_GL_LIST_VEHICLE:
|
||||
this->ComputeGroupInfoSize();
|
||||
resize->height = GetVehicleListHeight(this->vli.vtype, this->tiny_step_height);
|
||||
size->height = 4 * resize->height;
|
||||
resize.height = GetVehicleListHeight(this->vli.vtype, this->tiny_step_height);
|
||||
size.height = 4 * resize.height;
|
||||
break;
|
||||
|
||||
case WID_GL_GROUP_BY_DROPDOWN:
|
||||
size->width = GetStringListWidth(this->vehicle_group_by_names) + padding.width;
|
||||
size.width = GetStringListWidth(this->vehicle_group_by_names) + padding.width;
|
||||
break;
|
||||
|
||||
case WID_GL_SORT_BY_DROPDOWN:
|
||||
size->width = GetStringListWidth(this->vehicle_group_none_sorter_names);
|
||||
size->width = std::max(size->width, GetStringListWidth(this->vehicle_group_shared_orders_sorter_names));
|
||||
size->width += padding.width;
|
||||
size.width = GetStringListWidth(EconTime::UsingWallclockUnits() ? this->vehicle_group_none_sorter_names_wallclock : this->vehicle_group_none_sorter_names_calendar);
|
||||
size.width = std::max(size.width, GetStringListWidth(EconTime::UsingWallclockUnits() ? this->vehicle_group_shared_orders_sorter_names_wallclock : this->vehicle_group_shared_orders_sorter_names_calendar));
|
||||
size.width += padding.width;
|
||||
break;
|
||||
|
||||
case WID_GL_FILTER_BY_CARGO:
|
||||
size->width = std::max(size->width, GetDropDownListDimension(this->BuildCargoDropDownList(true)).width + padding.width);
|
||||
size.width = std::max(size.width, GetDropDownListDimension(this->BuildCargoDropDownList(true)).width + padding.width);
|
||||
break;
|
||||
|
||||
case WID_GL_MANAGE_VEHICLES_DROPDOWN: {
|
||||
Dimension d = this->GetActionDropdownSize(true, true, this->vli.vtype == VEH_TRAIN);
|
||||
d.height += padding.height;
|
||||
d.width += padding.width;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1338,7 +1338,7 @@ void ShowCompanyGroupForVehicle(const Vehicle *v)
|
||||
*/
|
||||
static inline VehicleGroupWindow *FindVehicleGroupWindow(VehicleType vt, Owner owner)
|
||||
{
|
||||
return (VehicleGroupWindow *)FindWindowById(GetWindowClassForVehicleType(vt), VehicleListIdentifier(VL_GROUP_LIST, vt, owner).Pack());
|
||||
return dynamic_cast<VehicleGroupWindow *>(FindWindowById(GetWindowClassForVehicleType(vt), VehicleListIdentifier(VL_GROUP_LIST, vt, owner).Pack()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -26,12 +26,12 @@ static std::vector<HotkeyList*> *_hotkey_lists = nullptr;
|
||||
|
||||
/** String representation of a keycode */
|
||||
struct KeycodeNames {
|
||||
const char *name; ///< Name of the keycode
|
||||
const std::string_view name; ///< Name of the keycode
|
||||
WindowKeyCodes keycode; ///< The keycode
|
||||
};
|
||||
|
||||
/** Array of non-standard keycodes that can be used in the hotkeys config file. */
|
||||
static const KeycodeNames _keycode_to_name[] = {
|
||||
static const std::initializer_list<KeycodeNames> _keycode_to_name = {
|
||||
{"SHIFT", WKC_SHIFT},
|
||||
{"CTRL", WKC_CTRL},
|
||||
{"ALT", WKC_ALT},
|
||||
@@ -103,9 +103,9 @@ static uint16_t ParseCode(const char *start, const char *end)
|
||||
while (start < end && *start == ' ') start++;
|
||||
while (end > start && *end == ' ') end--;
|
||||
std::string_view str{start, (size_t)(end - start)};
|
||||
for (uint i = 0; i < lengthof(_keycode_to_name); i++) {
|
||||
if (StrEqualsIgnoreCase(str, _keycode_to_name[i].name)) {
|
||||
return _keycode_to_name[i].keycode;
|
||||
for (const auto &kn : _keycode_to_name) {
|
||||
if (StrEqualsIgnoreCase(str, kn.name)) {
|
||||
return kn.keycode;
|
||||
}
|
||||
}
|
||||
if (end - start == 1) {
|
||||
@@ -196,9 +196,9 @@ static std::string KeycodeToString(uint16_t keycode)
|
||||
if (!str.empty()) str += "+";
|
||||
keycode = keycode & ~WKC_SPECIAL_KEYS;
|
||||
|
||||
for (uint i = 0; i < lengthof(_keycode_to_name); i++) {
|
||||
if (_keycode_to_name[i].keycode == keycode) {
|
||||
str += _keycode_to_name[i].name;
|
||||
for (const auto &kn : _keycode_to_name) {
|
||||
if (kn.keycode == keycode) {
|
||||
str += kn.name;
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
@@ -361,36 +361,34 @@ class BuildIndustryWindow : public Window {
|
||||
* @param prefixstr String to use for the first item
|
||||
* @return A formatted raw string
|
||||
*/
|
||||
std::string MakeCargoListString(const CargoID *cargolist, const CargoSuffix *cargo_suffix, size_t cargolistlen, StringID prefixstr) const
|
||||
std::string MakeCargoListString(const std::span<const CargoID> cargolist, const std::span<const CargoSuffix> cargo_suffix, StringID prefixstr) const
|
||||
{
|
||||
assert(cargolist.size() == cargo_suffix.size());
|
||||
|
||||
std::string cargostring;
|
||||
size_t firstcargo = cargolistlen;
|
||||
size_t numcargo = 0;
|
||||
size_t firstcargo;
|
||||
|
||||
size_t j = 0;
|
||||
for (; j < cargolistlen; j++) {
|
||||
if (cargolist[j] == INVALID_CARGO) continue;
|
||||
if (firstcargo == cargolistlen) {
|
||||
for (size_t j = 0; j < cargolist.size(); j++) {
|
||||
if (!IsValidCargoID(cargolist[j])) continue;
|
||||
numcargo++;
|
||||
if (numcargo == 1) {
|
||||
firstcargo = j;
|
||||
j++;
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
SetDParam(0, CargoSpec::Get(cargolist[j])->name);
|
||||
SetDParamStr(1, cargo_suffix[j].text);
|
||||
cargostring += GetString(STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION);
|
||||
}
|
||||
|
||||
if (firstcargo < cargolistlen) {
|
||||
if (numcargo > 0) {
|
||||
SetDParam(0, CargoSpec::Get(cargolist[firstcargo])->name);
|
||||
SetDParamStr(1, cargo_suffix[firstcargo].text);
|
||||
GetString(StringBuilder(cargostring), prefixstr);
|
||||
cargostring = GetString(prefixstr) + cargostring;
|
||||
} else {
|
||||
SetDParam(0, STR_JUST_NOTHING);
|
||||
SetDParamStr(1, "");
|
||||
GetString(StringBuilder(cargostring), prefixstr);
|
||||
}
|
||||
|
||||
for (; j < cargolistlen; j++) {
|
||||
if (cargolist[j] == INVALID_CARGO) continue;
|
||||
SetDParam(0, CargoSpec::Get(cargolist[j])->name);
|
||||
SetDParamStr(1, cargo_suffix[j].text);
|
||||
GetString(StringBuilder(cargostring), STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION);
|
||||
cargostring = GetString(prefixstr);
|
||||
}
|
||||
|
||||
return cargostring;
|
||||
@@ -421,7 +419,7 @@ public:
|
||||
this->SetupArrays();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_DPI_MATRIX_WIDGET: {
|
||||
@@ -429,10 +427,10 @@ public:
|
||||
for (const auto &indtype : this->list) {
|
||||
d = maxdim(d, GetStringBoundingBox(GetIndustrySpec(indtype)->name));
|
||||
}
|
||||
resize->height = std::max<uint>(this->legend.height, GetCharacterHeight(FS_NORMAL)) + padding.height;
|
||||
resize.height = std::max<uint>(this->legend.height, GetCharacterHeight(FS_NORMAL)) + padding.height;
|
||||
d.width += this->legend.width + WidgetDimensions::scaled.hsep_wide + padding.width;
|
||||
d.height = 5 * resize->height;
|
||||
*size = maxdim(*size, d);
|
||||
d.height = 5 * resize.height;
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -450,7 +448,7 @@ public:
|
||||
|
||||
/* Measure the accepted cargoes, if any. */
|
||||
GetAllCargoSuffixes(CARGOSUFFIX_IN, CST_FUND, nullptr, indtype, indsp, indsp->accepts_cargo, cargo_suffix);
|
||||
std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo.data(), cargo_suffix.data(), indsp->accepts_cargo.size(), STR_INDUSTRY_VIEW_REQUIRES_N_CARGO);
|
||||
std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo, cargo_suffix, STR_INDUSTRY_VIEW_REQUIRES_N_CARGO);
|
||||
Dimension strdim = GetStringBoundingBox(cargostring);
|
||||
if (strdim.width > max_minwidth) {
|
||||
extra_lines_req = std::max(extra_lines_req, strdim.width / max_minwidth + 1);
|
||||
@@ -460,7 +458,7 @@ public:
|
||||
|
||||
/* Measure the produced cargoes, if any. */
|
||||
GetAllCargoSuffixes(CARGOSUFFIX_OUT, CST_FUND, nullptr, indtype, indsp, indsp->produced_cargo, cargo_suffix);
|
||||
cargostring = this->MakeCargoListString(indsp->produced_cargo.data(), cargo_suffix.data(), indsp->produced_cargo.size(), STR_INDUSTRY_VIEW_PRODUCES_N_CARGO);
|
||||
cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, STR_INDUSTRY_VIEW_PRODUCES_N_CARGO);
|
||||
strdim = GetStringBoundingBox(cargostring);
|
||||
if (strdim.width > max_minwidth) {
|
||||
extra_lines_prd = std::max(extra_lines_prd, strdim.width / max_minwidth + 1);
|
||||
@@ -476,8 +474,8 @@ public:
|
||||
|
||||
/* Set it to something more sane :) */
|
||||
height += extra_lines_prd + extra_lines_req + extra_lines_newgrf;
|
||||
size->height = height * GetCharacterHeight(FS_NORMAL) + padding.height;
|
||||
size->width = d.width + padding.width;
|
||||
size.height = height * GetCharacterHeight(FS_NORMAL) + padding.height;
|
||||
size.width = d.width + padding.width;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -487,7 +485,7 @@ public:
|
||||
d = maxdim(d, GetStringBoundingBox(STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY));
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -566,12 +564,12 @@ public:
|
||||
|
||||
/* Draw the accepted cargoes, if any. Otherwise, will print "Nothing". */
|
||||
GetAllCargoSuffixes(CARGOSUFFIX_IN, CST_FUND, nullptr, this->selected_type, indsp, indsp->accepts_cargo, cargo_suffix);
|
||||
std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo.data(), cargo_suffix.data(), indsp->accepts_cargo.size(), STR_INDUSTRY_VIEW_REQUIRES_N_CARGO);
|
||||
std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo, cargo_suffix, STR_INDUSTRY_VIEW_REQUIRES_N_CARGO);
|
||||
ir.top = DrawStringMultiLine(ir, cargostring);
|
||||
|
||||
/* Draw the produced cargoes, if any. Otherwise, will print "Nothing". */
|
||||
GetAllCargoSuffixes(CARGOSUFFIX_OUT, CST_FUND, nullptr, this->selected_type, indsp, indsp->produced_cargo, cargo_suffix);
|
||||
cargostring = this->MakeCargoListString(indsp->produced_cargo.data(), cargo_suffix.data(), indsp->produced_cargo.size(), STR_INDUSTRY_VIEW_PRODUCES_N_CARGO);
|
||||
cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, STR_INDUSTRY_VIEW_PRODUCES_N_CARGO);
|
||||
ir.top = DrawStringMultiLine(ir, cargostring);
|
||||
|
||||
/* Get the additional purchase info text, if it has not already been queried. */
|
||||
@@ -1038,9 +1036,9 @@ public:
|
||||
if (widget == WID_IV_CAPTION) SetDParam(0, this->window_number);
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget == WID_IV_INFO) size->height = this->info_height;
|
||||
if (widget == WID_IV_INFO) size.height = this->info_height;
|
||||
}
|
||||
|
||||
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
|
||||
@@ -1755,14 +1753,14 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_ID_DROPDOWN_ORDER: {
|
||||
Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->widget_data);
|
||||
d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better.
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1773,17 +1771,17 @@ public:
|
||||
}
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_ID_INDUSTRY_LIST: {
|
||||
Dimension d = GetStringBoundingBox(STR_INDUSTRY_DIRECTORY_NONE);
|
||||
resize->height = d.height;
|
||||
resize.height = d.height;
|
||||
d.height *= 5;
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2670,21 +2668,21 @@ struct IndustryCargoesWindow : public Window {
|
||||
CargoesField::cargo_field_width = CargoesField::cargo_border.width * 2 + CargoesField::cargo_line.width * CargoesField::max_cargoes + CargoesField::cargo_space.width * (CargoesField::max_cargoes - 1);
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_IC_PANEL:
|
||||
resize->height = CargoesField::normal_height;
|
||||
size->width = CargoesField::industry_width * 3 + CargoesField::cargo_field_width * 2 + WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size->height = CargoesField::small_height + 2 * resize->height + WidgetDimensions::scaled.frametext.Vertical();
|
||||
resize.height = CargoesField::normal_height;
|
||||
size.width = CargoesField::industry_width * 3 + CargoesField::cargo_field_width * 2 + WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size.height = CargoesField::small_height + 2 * resize.height + WidgetDimensions::scaled.frametext.Vertical();
|
||||
break;
|
||||
|
||||
case WID_IC_IND_DROPDOWN:
|
||||
size->width = std::max(size->width, this->ind_textsize.width + padding.width);
|
||||
size.width = std::max(size.width, this->ind_textsize.width + padding.width);
|
||||
break;
|
||||
|
||||
case WID_IC_CARGO_DROPDOWN:
|
||||
size->width = std::max(size->width, this->cargo_textsize.width + padding.width);
|
||||
size.width = std::max(size.width, this->cargo_textsize.width + padding.width);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -298,13 +298,13 @@ struct SelectGameWindow : public Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_SGI_TEMPERATE_LANDSCAPE: case WID_SGI_ARCTIC_LANDSCAPE:
|
||||
case WID_SGI_TROPIC_LANDSCAPE: case WID_SGI_TOYLAND_LANDSCAPE:
|
||||
size->width += WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||
size->height += WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
size.width += WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||
size.height += WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -3002,7 +3002,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Spoor tipe
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF veranderlike 60+x parameter (heksadesimaal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Belyn sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Volgende sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Gaan na die volgende "sprite", Ignoreer enige pseudo/her-kleur/font "sprites" en spring terug na die begin
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gaan na sprite
|
||||
|
@@ -2859,7 +2859,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :نوع سكة
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}متغير الاضافات الجديدة +60 * نمط (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}موائمة صورة العفريتة {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}العفريتة التالية
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}نابع للعفريتة الطبيعية التالية، تجاوز اي عفريتة موقوفة/ مصبوغة/مخطوطة و انهي المتاعة في النهاية.
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}اذهب الى العفريتة
|
||||
|
@@ -2830,7 +2830,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Trenbide mota
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF aldagaia 60+x parametroetan (hexadecimala)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}"Sprit"-a lerrokatu {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Urrengo "sprit"-a
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Hurrengo grafiko arrunta erabili, pseudo/birkoloretu/grafiko tipoak desgaituz
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Joan "sprit"-era
|
||||
|
@@ -3817,7 +3817,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Тып даро
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Парамэтр зьменнай NewGRF 60+x (шаснаццаткавы)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Выраўноўваньне спрайта {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Наступны спрайт
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Перайсьці да наступнага звычайнага спрайта, прапускаючы змяняючыя колер, шрыфтавыя, псэўдаспрайты. Пераход з канца сьпісу да першага спрайта.
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Перайсьці да спрайта
|
||||
|
@@ -269,8 +269,8 @@ STR_UNITS_PERIODS :{NUM}{NBSP}per
|
||||
|
||||
# Common window strings
|
||||
STR_LIST_FILTER_TITLE :{BLACK}Filtro:
|
||||
STR_LIST_FILTER_OSKTITLE :{BLACK}Inserir uma ou mais palavras-chave para filtrar a lista
|
||||
STR_LIST_FILTER_TOOLTIP :{BLACK}Introduza uma ou mais palavras-chave para procurar na lista
|
||||
STR_LIST_FILTER_OSKTITLE :{BLACK}Introduza uma palavra-chave para filtrar a lista
|
||||
STR_LIST_FILTER_TOOLTIP :{BLACK}Introduzir uma ou mais palavras-chave para procurar na lista
|
||||
|
||||
STR_TOOLTIP_GROUP_ORDER :{BLACK}Escolher a ordem de agrupamento
|
||||
STR_TOOLTIP_SORT_ORDER :{BLACK}Escolher a ordenação (descendente/ascendente)
|
||||
@@ -384,7 +384,7 @@ STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausar o
|
||||
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Avanço rápido do jogo
|
||||
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opções e configurações
|
||||
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salvar, abrir ou abandonar o jogo, sair do programa
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Abrir mapa, visualização extra, fluxo de cargas ou lista de placas
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Abrir mapa, visualização extra, fluxo de carga ou lista de placas
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Abrir lista de localidades ou encontrar localidade
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Abrir lista de subsídios
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Abrir lista de estações da empresa
|
||||
@@ -410,7 +410,7 @@ STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Abrir me
|
||||
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_LAND_BLOCK_INFORMATION :{BLACK}Abrir informações do terreno, menu de captura de tela, créditos do OpenTTD ou ferramentas de desenvolvedor
|
||||
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Trocar barras de ferramentas
|
||||
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Trocar barra de ferramentas
|
||||
|
||||
# Extra tooltips for the scenario editor toolbar
|
||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Salvar cenário, abrir cenário, abandonar editor de cenário, sair
|
||||
@@ -499,7 +499,7 @@ STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Fundar nova ind
|
||||
STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Construção de ferrovia
|
||||
STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Construção de ferrovia eletrificada
|
||||
STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Construção de monotrilho
|
||||
STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Construção de MagLev
|
||||
STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Construção de Maglev
|
||||
|
||||
# Road construction menu
|
||||
STR_ROAD_MENU_ROAD_CONSTRUCTION :Construção de estrada
|
||||
@@ -732,7 +732,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Empreendedor
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrial
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalista
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnata
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mandachuva
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Grande magnata
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnata do Século
|
||||
STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY}
|
||||
STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA})
|
||||
@@ -836,11 +836,11 @@ STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLAC
|
||||
STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Cidadãos celebram . . .{}Primeira embarcação chega em {STATION}!
|
||||
STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Cidadãos celebram . . .{}Primeira aeronave chega em {STATION}!
|
||||
|
||||
STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Acidente de Trem!{}{COMMA} morrem na explosão após a colisão
|
||||
STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Acidente de Trem!{}{COMMA} morre{P "" m} na explosão após a colisão
|
||||
STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Acidente Rodoviário!{}Condutor morre na explosão após a colisão com um trem
|
||||
STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Acidente Rodoviário!{}{COMMA} morrem na explosão após a colisão com um trem
|
||||
STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Acidente Aéreo!{}{COMMA} morrem na explosão em {STATION}
|
||||
STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Acidente Aéreo!{}Aeronave ficou sem combustível, {COMMA} morrem na explosão
|
||||
STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Acidente Rodoviário!{}{COMMA} morre{P "" m} na explosão após a colisão com um trem
|
||||
STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Acidente Aéreo!{}{COMMA} morre{P "" m} na explosão em {STATION}
|
||||
STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Acidente Aéreo!{}Aeronave ficou sem combustível, {COMMA} morre{P "" m} na explosão
|
||||
|
||||
STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Desastre de Zepelim em {STATION}!
|
||||
STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Veículo rodoviário destruído em colisão com OVNI!
|
||||
@@ -988,7 +988,7 @@ STR_GAME_OPTIONS_CURRENCY_ISK :Coroa Islandesa
|
||||
STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italiana
|
||||
STR_GAME_OPTIONS_CURRENCY_NLG :Florim Holandês
|
||||
STR_GAME_OPTIONS_CURRENCY_NOK :Coroa Norueguesa
|
||||
STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Polonês
|
||||
STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Polonês
|
||||
STR_GAME_OPTIONS_CURRENCY_RON :Leu Romeno
|
||||
STR_GAME_OPTIONS_CURRENCY_RUR :Rublo Russo
|
||||
STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Esloveno
|
||||
@@ -1188,7 +1188,7 @@ STR_SUBSIDY_X4 :x4
|
||||
|
||||
###length 4
|
||||
STR_CLIMATE_TEMPERATE_LANDSCAPE :Clima temperado
|
||||
STR_CLIMATE_SUB_ARCTIC_LANDSCAPE :Clima subárctico
|
||||
STR_CLIMATE_SUB_ARCTIC_LANDSCAPE :Clima subártico
|
||||
STR_CLIMATE_SUB_TROPICAL_LANDSCAPE :Clima subtropical
|
||||
STR_CLIMATE_TOYLAND_LANDSCAPE :Terra dos Brinquedos
|
||||
|
||||
@@ -1523,8 +1523,8 @@ STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Idade relativa
|
||||
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} m{P 0 ês eses} antes
|
||||
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} m{P 0 ês eses} depois
|
||||
|
||||
STR_CONFIG_SETTING_AUTORENEW_MONEY :Quantia mínima de dinheiro necessária para fazer renovação automática: {STRING}
|
||||
STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Quantia mínima de dinheiro que deve existir na conta bancária para a renovação automática de veículos ser considerada
|
||||
STR_CONFIG_SETTING_AUTORENEW_MONEY :Dinheiro mínimo necessário para fazer renovação automática: {STRING}
|
||||
STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Quantia mínima de dinheiro que deve permanecer no banco antes de considerar a renovação automática de veículos
|
||||
|
||||
STR_CONFIG_SETTING_ERRMSG_DURATION :Duração da mensagem de erro: {STRING}
|
||||
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
|
||||
@@ -2461,8 +2461,8 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Obtendo
|
||||
|
||||
STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconectar
|
||||
|
||||
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Introduza a senha
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa protegida. Introduza a senha
|
||||
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Digite a senha
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa protegida. Digite a senha
|
||||
|
||||
# Network company list added strings
|
||||
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Jogadores conectados
|
||||
@@ -3088,7 +3088,7 @@ STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Constru
|
||||
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classe da estação: {LTBLUE}{STRING}
|
||||
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estação: {LTBLUE}{STRING}
|
||||
STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Classe do aeroporto: {LTBLUE}{STRING}
|
||||
STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nome do aeroporto: {LTBLUE}{STRING}
|
||||
STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Tipo de aeroporto: {LTBLUE}{STRING}
|
||||
STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nome do quadrado do aeroporto: {LTBLUE}{STRING}
|
||||
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
|
||||
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceita: {LTBLUE}
|
||||
@@ -3390,7 +3390,7 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Modifica
|
||||
STR_GENERATION_WORLD :{WHITE}Gerando Mundo...
|
||||
STR_GENERATION_ABORT :{BLACK}Cancelar
|
||||
STR_GENERATION_ABORT_CAPTION :{WHITE}Cancelar Geração de Mundo
|
||||
STR_GENERATION_ABORT_MESSAGE :{YELLOW}Você realmente deseja cancelar a geração?
|
||||
STR_GENERATION_ABORT_MESSAGE :{YELLOW}Você quer mesmo cancelar a geração?
|
||||
STR_GENERATION_PROGRESS :{WHITE}{NUM}% completo
|
||||
STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM}
|
||||
STR_GENERATION_WORLD_GENERATION :{BLACK}Geração de mundo
|
||||
@@ -3489,7 +3489,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo de estrada
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parâmetro da variável 60+x do NewGRF (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alinhando sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Alinhando sprite: ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Alinhando sprite: Ação 0xA, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Alinhando sprite: Ação 0x5, tipe {HEX}, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Próximo sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Ir para o próximo sprite normal, pulando quaisquer sprites falsos/recoloridos/tipo de letra, retornando do último sprite para o primeiro
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir para o sprite
|
||||
@@ -3498,6 +3500,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite a
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Ir para o sprite normal anterior, pulando quaisquer sprites falsos/recoloridos/tipo de letra, retornando do primeiro sprite para o último
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representação do sprite atualmente selecionado. O alinhamento é ignorado ao desenhar este sprite
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Mover o sprite, alterando os deslocamentos X e Y. Ctrl+Clique para mover o sprite 8 unidades por vez
|
||||
STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM}
|
||||
|
||||
###length 2
|
||||
STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Deslocamento centralizado
|
||||
@@ -3588,7 +3591,7 @@ STR_INVALID_VEHICLE :<veículo invá
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Procurando NewGRFs
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Procurando NewGRFs. Dependendo da quantidade isto pode demorar...
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Procurando NewGRFs. Dependendo da quantidade, isso pode demorar...
|
||||
STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} procurado{P "" s} de {NUM} NewGRF{P "" s} estimado{P "" s}
|
||||
STR_NEWGRF_SCAN_ARCHIVES :Procurando por arquivos
|
||||
|
||||
@@ -4591,7 +4594,7 @@ STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Tempo de vida r
|
||||
STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Confiabilidade máxima
|
||||
###next-name-looks-similar
|
||||
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Como comparar os dados do veículo com o valor passado
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Como comparar os dados do veículo com o valor que foi passado
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :for igual a
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :for diferente de
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :for menor que
|
||||
@@ -4922,7 +4925,7 @@ STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... arqu
|
||||
STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... não foi possível converter o tipo de imagem. A imagem deve ser PNG de 8 ou 24-bit
|
||||
STR_ERROR_PNGMAP_MISC :{WHITE}... alguma coisa deu errado (provavelmente arquivo corrompido)
|
||||
|
||||
STR_ERROR_BMPMAP :{WHITE}Não é possível carregar paisagem de BMP...
|
||||
STR_ERROR_BMPMAP :{WHITE}Não foi possível carregar paisagem de BMP...
|
||||
STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... não foi possível converter o tipo de imagem
|
||||
|
||||
STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... imagem é muito grande
|
||||
@@ -4935,7 +4938,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Somente
|
||||
|
||||
# Screenshot related messages
|
||||
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Captura tela enorme
|
||||
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}A captura de tela terá uma resolução de {COMMA}x{COMMA} pixels. Essa captura pode demorar. Deseja continuar?
|
||||
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}A captura de tela terá uma resolução de {COMMA}x{COMMA} pixels. Fazer essa captura pode demorar. Você deseja continuar?
|
||||
|
||||
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Mapa de altitudes '{STRING}' gravado com sucesso. O pico mais alto tem {NUM}
|
||||
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Captura de tela '{STRING}' gravada com sucesso
|
||||
@@ -5103,7 +5106,7 @@ STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... deve
|
||||
STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Trens só podem ser modificados quando estão parados num depósito
|
||||
STR_ERROR_TRAIN_TOO_LONG :{WHITE}Trem é muito longo
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Não é possível inverter a direção do veículo...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... composto por várias unidades
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... é composto por várias unidades
|
||||
STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Tipos de trilhos incompatíveis
|
||||
|
||||
STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Não é possível mover o veículo...
|
||||
@@ -5122,7 +5125,7 @@ STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... não
|
||||
|
||||
# Autoreplace related errors
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} fica muito longo depois da substituição
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Regras de substituição automática/renovação não foram aplicadas
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Nenhuma regra de substituição automática/renovação aplicada
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(limite de dinheiro)
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}O novo veículo não pode transportar {STRING}
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}O novo veículo não pode ser adaptado na ordem {NUM}
|
||||
@@ -5347,15 +5350,15 @@ STR_DESKTOP_SHORTCUT_COMMENT :Um jogo de simu
|
||||
|
||||
# Translatable descriptions in media/baseset/*.ob* files
|
||||
###external 10
|
||||
STR_BASEGRAPHICS_DOS_DESCRIPTION :Gráficos Originais do Transport Tycoon Deluxe, edição DOS.
|
||||
STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Gráficos Originais do Transport Tycoon Deluxe, edição DOS (alemã).
|
||||
STR_BASEGRAPHICS_WIN_DESCRIPTION :Gráficos Originais do Transport Tycoon, edição Windows.
|
||||
STR_BASESOUNDS_DOS_DESCRIPTION :Sons Originais do Transport Tycoon Deluxe, edição DOS.
|
||||
STR_BASESOUNDS_WIN_DESCRIPTION :Sons Originais do Transport Tycoon Deluxe, edição Windows.
|
||||
STR_BASEGRAPHICS_DOS_DESCRIPTION :Gráficos originais do Transport Tycoon Deluxe, edição DOS.
|
||||
STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Gráficos originais do Transport Tycoon Deluxe, edição DOS (alemã).
|
||||
STR_BASEGRAPHICS_WIN_DESCRIPTION :Gráficos originais do Transport Tycoon Deluxe, edição Windows.
|
||||
STR_BASESOUNDS_DOS_DESCRIPTION :Sons originais do Transport Tycoon Deluxe, edição DOS.
|
||||
STR_BASESOUNDS_WIN_DESCRIPTION :Sons originais do Transport Tycoon Deluxe, edição Windows.
|
||||
STR_BASESOUNDS_NONE_DESCRIPTION :Um conjunto de sons vazio.
|
||||
STR_BASEMUSIC_WIN_DESCRIPTION :Música Original do Transport Tycoon Deluxe, edição Windows.
|
||||
STR_BASEMUSIC_DOS_DESCRIPTION :Música Original do Transport Tycoon Deluxe, edição DOS.
|
||||
STR_BASEMUSIC_TTO_DESCRIPTION :Música Original do Transport Tycoon, edição DOS (Original/Editor Mundial).
|
||||
STR_BASEMUSIC_WIN_DESCRIPTION :Música original do Transport Tycoon Deluxe, edição Windows.
|
||||
STR_BASEMUSIC_DOS_DESCRIPTION :Música original do Transport Tycoon Deluxe, edição DOS.
|
||||
STR_BASEMUSIC_TTO_DESCRIPTION :Música original do Transport Tycoon, edição DOS (Original/Editor Mundial).
|
||||
STR_BASEMUSIC_NONE_DESCRIPTION :Um conjunto de músicas vazio.
|
||||
|
||||
##id 0x2000
|
||||
@@ -5834,6 +5837,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING1 :{STRING}
|
||||
STR_JUST_STRING2 :{STRING}
|
||||
STR_JUST_STRING4 :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
@@ -3053,7 +3053,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Вид желе
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметър на променливата 60+x на NewGRF (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Следващ sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Продължи към следващия нормален sprite, Пропускайки всички псевдо/прерисувани/текстови sprite и ги облечи в края
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Иди на sprite
|
||||
|
@@ -525,7 +525,7 @@ STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historial de mi
|
||||
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Esborra tots els missatges
|
||||
|
||||
# About menu
|
||||
STR_ABOUT_MENU_LAND_BLOCK_INFO :Informació de la casella
|
||||
STR_ABOUT_MENU_LAND_BLOCK_INFO :Detalls de les caselles
|
||||
STR_ABOUT_MENU_HELP :Ajuda i manuals
|
||||
STR_ABOUT_MENU_TOGGLE_CONSOLE :Commuta la consola
|
||||
STR_ABOUT_MENU_AI_DEBUG :Depuració de les IA i l'script de partida
|
||||
@@ -3070,7 +3070,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Seleccio
|
||||
STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Selecciona la indústria que vols mostrar
|
||||
|
||||
# Land area window
|
||||
STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informació del terreny
|
||||
STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Detalls de la casella
|
||||
STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centra la vista principal al lloc on està la casella. Amb Ctrl+clic, s'obre una vista nova on hi ha la casella.
|
||||
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Cost de neteja: {LTBLUE}N/A
|
||||
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Cost de neteja: {RED}{CURRENCY_LONG}
|
||||
@@ -3489,7 +3489,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipus de carret
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paràmetre NewGRF variable 60+x (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alineant sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Alineació de l'sprite: ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Alineació de l'sprite: Acció 0xA, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Alineació de l'sprite: Acció 0x5, tipus {HEX}, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite següent
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procedeix cap al següent sprite normal, saltant qualsevol sprite pseudo/recolor/font i passant de l'últim sprite al primer
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Vés a l'sprite
|
||||
@@ -3498,6 +3500,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite a
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Procedeix cap a l'sprite normal anterior, saltant qualsevol sprite pseudo/recolor/font i passant del primer sprite a l'últim
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representació de l'sprite seleccionat actualment. L'alineació s'ignora quan es dibuixa aquest sprite
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Desplaça l'sprite un píxel en el sentit indicat. Amb Ctrl+Clic el desplaça 8 píxels.
|
||||
STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM}
|
||||
|
||||
###length 2
|
||||
STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Modificador centrat
|
||||
@@ -5834,6 +5837,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING1 :{STRING}
|
||||
STR_JUST_STRING2 :{STRING}
|
||||
STR_JUST_STRING4 :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
@@ -3172,7 +3172,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Vrsta željezni
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF varijabla 60+x parametar (heksadecimalni)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Poravnanje sprite-a {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sljedeći sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Otiđi na sljedeći normalni sprite, preskačući svaki pseudo/prebojani/font sprite i nakon dolaska na zadnjeg prebaci na prvi
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Otiđi na sprite
|
||||
|
@@ -3574,7 +3574,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Typ silnice
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Hodnota NewGRF proměnné 60+x (šestnáctkově)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Zarovávání spritu {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Další sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Jít na další normální sprite (s grafikou), přičemž se přeskakují pseudo-/barvící/znakové sprity a při dosažení konce se jde zase na začátek
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Jít na sprite
|
||||
|
@@ -3488,7 +3488,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Vej type
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variabel 60+x parameter (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Justerer sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Næste sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsæt til næste normale sprite, spring pseudo/omfarvning/font-sprites over og med omløb fra enden til starten
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til sprite
|
||||
|
@@ -3488,7 +3488,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Wegtype
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parameter 60+x voor NewGRF-variabele (hexadecimaal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Sprite uitlijnen {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Volgende sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Doorgaan met volgende normale sprite, alle pseudo-/herkleur-/lettertype-sprites overslaan; bij het einde terug naar het begin
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ga naar sprite
|
||||
|
@@ -3488,7 +3488,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Road type
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({RAW_STRING})
|
||||
STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Aligning sprite: ({RAW_STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Aligning sprite: Action 0xA, {COMMA} ({RAW_STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Aligning sprite: Action 0x5, type {HEX}, {COMMA} ({RAW_STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolour/font sprites and wrapping around from the last sprite to the first
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Go to sprite
|
||||
@@ -3497,6 +3499,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around from the first sprite to the last
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets. Ctrl+Click to move the sprite eight units at a time
|
||||
STR_SPRITE_ALIGNER_SPRITE :{RAW_STRING}:{NUM}
|
||||
|
||||
###length 2
|
||||
STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Offset centred
|
||||
@@ -5833,6 +5836,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING1 :{STRING1}
|
||||
STR_JUST_STRING2 :{STRING2}
|
||||
STR_JUST_STRING4 :{STRING4}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{RAW_STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{RAW_STRING}
|
||||
|
@@ -3488,7 +3488,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Road type
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Aligning sprite: ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Aligning sprite: Action 0xA, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Aligning sprite: Action 0x5, type {HEX}, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolour/font sprites and wrapping around at the end
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Go to sprite
|
||||
@@ -3497,6 +3499,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around at the begin
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets
|
||||
STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM}
|
||||
|
||||
###length 2
|
||||
STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Offset centred
|
||||
@@ -5833,6 +5836,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING1 :{STRING}
|
||||
STR_JUST_STRING2 :{STRING}
|
||||
STR_JUST_STRING4 :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
@@ -3488,7 +3488,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Road type
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolor/font sprites and wrapping around from the last sprite to the first
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Go to sprite
|
||||
|
@@ -3541,7 +3541,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tee tüüp
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF muutuf 60+x parameeter (kuueteistkümnendsüsteemis)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Järgmine sprait
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Jätka järgmise normaalse spraidini, Jättes vahele iga pseudo/taasvärvitud/fondi spraidid ja pakkides lõpu ümber
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mine spraidini
|
||||
|
@@ -2659,7 +2659,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Breyta slag
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite
|
||||
|
||||
###length 2
|
||||
|
@@ -3488,7 +3488,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tien tyyppi
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF muuttujan 60+x parametri (heksadesimaali)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Kohdistetaan spriteä {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Kohdistettava sprite: ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Kohdistettava sprite: Toimenpide 0xA, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Kohdistettava sprite: Toimenpide 0x5, tyyppi {HEX}, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Seuraava sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Siirry seuraavaan tavalliseen spriteen; mahdolliset pseudo-, uudelleenväritys- ja fonttispritet ohitetaan; viimeisen spriten jälkeen siirrytään ensimmäiseen
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mene spriteen
|
||||
@@ -3497,6 +3499,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Edelline
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Jatka edelliseen tavalliseen spriteen ja hyppää yli kaikki pseudo-/uudelleenväritetyt/fontti- spritet ja mene loppuun kun päästään ensimmäiseen
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Valitun spriten esitys. Siirrosta ei huomioida tätä spriteä piirrettäessä
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Liikuta spriteä ympäriinsä, muuttaen X- ja Y-sijainteja. Ctrl+napsautus siirtää spriteä kahdeksan yksikköä kerralla.
|
||||
STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM}
|
||||
|
||||
###length 2
|
||||
STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Siirros keskitetty
|
||||
@@ -3531,10 +3534,10 @@ STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF-tiedosto, j
|
||||
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Liian monta NewGRF:ää on ladattu
|
||||
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Lisäosan {1:STRING} lataaminen staattisena NewGRF:nä lisäosan {2:STRING} kanssa voi johtaa tahdistusvirheisiin
|
||||
STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Odottamaton sprite (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Tuntematon Action 0-ominaisuus {4:HEX} (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Tuntematon toimenpiteen 0 ominaisuus {4:HEX} (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_INVALID_ID :Yritys käyttää virheellistä ID:tä (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sisältää korruptoituneen spriten. Kaikki korruptoituneet spritet näkyvät punaisina kysymysmerkkeinä (?)
|
||||
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sisältää useita Action 8-merkintöjä (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Toimenpide 8 esiintyy moneen kertaan (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_READ_BOUNDS :Luku pseudo-spriten ohi (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_GRM_FAILED :Pyydetyt GRF-resurssit eivät ole saatavilla (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{2:STRING} poisti käytöstä NewGRF:n {1:STRING}
|
||||
@@ -5833,6 +5836,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING1 :{STRING}
|
||||
STR_JUST_STRING2 :{STRING}
|
||||
STR_JUST_STRING4 :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
@@ -3489,7 +3489,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Type de route
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramètre de variable NewGRF 60+x (héxadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alignement du sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite suivant
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Se rendre au prochain sprite normal, en ignorant les pseudo-sprites et les sprites de recoloration et de police, et en bouclant du dernier vers le premier
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Aller au sprite
|
||||
|
@@ -2806,7 +2806,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :spoar soart
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF fariabele 60+x parameter (heksadesimaal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Rjochted ôfbylding {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Folgend flak
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Gean fierder nei de folgjende ôfbylding, sla pseudo/werkleure/lettertype ôfbyldings oer en begjin wer oernei at it ein berikke is
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gean nei ôfbylding
|
||||
|
@@ -3188,7 +3188,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Seòrsa an rèi
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramadair 60+x (sia-dheicheach) caochladair NewGRF
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}A' co-thaobhachadh sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}An t-ath sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Lean air adhart dhan ath sprite àbhaisteach, a' gearradh leum thairis air sprites mas fhìor/ath-dhathaidh/crutha-chlò is a' pasgadh aig an deireadh gun chiad sprite
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Rach dhan sprite
|
||||
|
@@ -3487,7 +3487,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo de estrada
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parámetro de variable NewGRF 60+x (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aliñar sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Seguinte sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Ir ao sprite seguinte, ignorando pseudosprites, sprites recoloreados e sprites de fonte, e volvendo a empezar ao chegar á fin
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir a sprite
|
||||
|
@@ -3489,7 +3489,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Straßentyp
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF-Variable 60+x Parameter (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Ausrichtung von Sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nächstes Sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Gehe zum nächsten normalen Sprite und überspringe alle Pseudo-, Recolour- und Schriftsprites (springt ggf. vom ersten bis zum letzten Sprite)
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gehe zu Sprite
|
||||
|
@@ -3580,7 +3580,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Τύπος δρ
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Μεταβλητή NewGRF 60+x παράμετρος (δεκαεξαδικό)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Ευθυγράμμιση sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Στοίχηση sprite: ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Στοίχηση sprite: Ενέργεια 0xA, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Στοίχηση sprite: Ενέργεια 0x5, τύπος {HEX}, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Επόμενο στοιχείο
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Συνέχισε στο επόμενο κανονικό sprite, προσπερνώντας οποιοδήποτε ψευδό/επαναναχρωματιζόμενο/γραμματοσειράς sprite και κάνε τις τελικές διαδικασίες στο τέλος
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Μετακίνηση στο στοιχείο
|
||||
@@ -3589,6 +3591,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Προη
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Προχώρησε στο προηγούμενο κανονικό sprite, προσπερνώντας οποιαδήποτε ψευδό/επαναχρωματιζόμενα/γραμματοσειράς sprites και ξαναεκτέλεσε τη διαδικασία από το πρώτο sprite ως το τελεταίο
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Επανεμφάνιση του επιλεγμένου sprite. Η ευθυγράμμιση αγνοείται όταν γίνεται η σχεδίαση του sprite
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Μετακίνηση του sprite τριγύρω, αλλάζοντας τα στίγματα Χ και Υ. Ctrl+Κλικ για να μετακινήσετε το sprite μονάδες τη φορά.
|
||||
STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM}
|
||||
|
||||
###length 2
|
||||
STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Μετατόπιση κέντρου
|
||||
@@ -5937,6 +5940,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING1 :{STRING}
|
||||
STR_JUST_STRING2 :{STRING}
|
||||
STR_JUST_STRING4 :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
@@ -3069,7 +3069,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :סוג מסיל
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}משתנה NewGRF פרמטר 60+x (הקסה-דצימלי)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}מיישר ספרייט {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}הספרייט הבא
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}עבור לספרייט הבא, כאשר נדלג על כל הספרייטים המיוחדים ולבסוף נחזור לתחילת הרשימה
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}דלג לספרייט
|
||||
|
@@ -3549,7 +3549,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Út típus
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF változó 60+x paraméter (hexadecimális)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Elhelyezési sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Következő sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Továbbhaladás a következő normál spritera, kihagyva bármilyen ál/átszínező/betű spriteokat, a végén folytatva az elsővel
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ugrás a spritehoz
|
||||
|
@@ -2768,7 +2768,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tegund spora
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF breyta 60+x stilling (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Samræmi hreyfimynd{COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Næsta hreyfimynd
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Halda áfram á næstu venjulegu hreyfimynd, sleppir gervi/endurlitun/letur hreyfimyndum og fer aftur á byrjun í lokin.
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Velja hreyfimynd
|
||||
|
@@ -3424,7 +3424,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipe jalan
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Variabel NewGRF harus 60+x (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Menjajarkan sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite berikutnya
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Pergi ke sprite normal berikutnya, lewati sprite bayangan/warna ulang/huruf dan pembungkus saat mulai
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Pergi ke sprite
|
||||
|
@@ -3208,7 +3208,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Cineál iarnró
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Athróg NewGRF paraiméadar 60+x (heicsidheachúil)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Ag ailíniú sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}An chéad sprite eile
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Téigh chuig an chéad gnáth-sprite eile, ag scipeáil thar aon bhréag-sprite nó sprite athdhathaithe/clófhoirne agus ag timfhilleadh ag an deireadh
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Téigh chuig sprite
|
||||
|
@@ -3527,7 +3527,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo di strada
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parametro variabile NewGRF 60+x (esadecimale)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Allineamento sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Successivo
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procede al successivo sprite normale, saltanto qualsiasi sprite speciale, di ricoloramento o carattere e tornando al primo se viene raggiunto l'ultimo della lista
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Vai a
|
||||
|
@@ -3295,7 +3295,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :線路の種類
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRFの可変60+xパラメーター (16進)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}スプライト{COMMA} 配列 ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}次のスプライト
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}次のノーマルスプライトに進みます。始端と終端は連続しているものとみなし、疑似/リカラー/フォントスプライトはスキップします
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}スプライトへ飛ぶ
|
||||
|
@@ -3489,7 +3489,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :도로 종류
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF 변수 60+x 매개 변수 (16진법)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}스프라이트 정렬 {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}다음 스프라이트
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}(유사/재색상/글씨 스프라이트를 제외한) 다음 보통 스프라이트로 이동하고, 마지막 스프라이트에 다다르면 다시 처음으로 돌아갑니다.
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}스프라이트 번호 입력
|
||||
|
@@ -3157,7 +3157,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Typus ferriviae
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF var 60+x parametrum (sedecimale)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Dirigens spiritum {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Spiritum secundum
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procedere ad spiritum naturalem secundum et, termino contacto, ad primum revertere
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ire ad spiritum
|
||||
|
@@ -1497,7 +1497,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Transportlīdze
|
||||
STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kad ieslēgts, visi transportlīdzekļu modeļi pēc to ieviešanas vienmēr ir pieejami
|
||||
|
||||
STR_CONFIG_SETTING_TIMEKEEPING_UNITS :Laika uzskaite: {STRING}
|
||||
STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Izvēlieties spēles laika mērīšanas vienības. Vēlāk to nevar mainīt.{}{}Kalendāra pamatā ir klasiskā OpenTTD pieredze, kurā gads sastāv no 12 mēnešiem un katru mēnesi ir 28–31 diena.{}{}{}Uz sienas pulksteni balstītā laikā, kravu ražošanā un finansēs tā vietā tiek balstītas uz vienas minūtes soli, kas ir aptuveni tikpat ilgs, cik 30 dienu mēnesis aizņem kalendāra režīmā. Tie ir sagrupēti 12 minūšu periodos, kas ir līdzvērtīgi gadam kalendāra režīmā.{}{}{}Abos režīmos vienmēr ir klasisks kalendārs, kas tiek izmantots transportlīdzekļu, māju un citas infrastruktūras parādīšanās spēlē.
|
||||
STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT :Izvēlieties spēles laika mērīšanas vienības. Vēlāk to nevar mainīt.{}{}Kalendāra pamatā ir klasiskā OpenTTD pieredze, kurā gads sastāv no 12 mēnešiem un katrā mēnesī ir 28–31 diena.{}{}{}Uz sienas pulksteni balstītā laikā, kravu ražošanā un finanses tiek balstītas uz vienas minūtes soli, kas ir aptuveni tikpat ilgs laiks, cik 30 dienu mēnesis aizņem kalendāra režīmā. Tie ir sagrupēti 12 minūšu periodos, kas ir līdzvērtīgi gadam kalendāra režīmā.{}{}{}Abos no šiem režīmiem vienmēr ir klasisks kalendārs, kas tiek izmantots transportlīdzekļu, māju un citas infrastruktūras datu ievadīšanai.
|
||||
###length 2
|
||||
STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR :Kalendārs
|
||||
STR_CONFIG_SETTING_TIMEKEEPING_UNITS_WALLCLOCK :Sienas pulkstenis
|
||||
@@ -1569,7 +1569,7 @@ STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sniega līnijas
|
||||
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Izvēlieties, kādā augstumā sākas sniegs subarktiskajā ainavā. Sniegs ietekmē arī nozares ražošanas un pilsētu izaugsmi. Var mainīt tikai, izmantojot scenāriju redaktoru, vai citādi aprēķināt, izmantojot "sniega segumu"
|
||||
|
||||
STR_CONFIG_SETTING_SNOW_COVERAGE :Sniega pārklājums: {STRING}
|
||||
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Izvēlieties aptuveno sniega daudzumu subarktiskajā ainavā. Sniegs ietekmē arī nozares ražošanas un pilsētu izaugsmei. Izmanto tikai kartes ģenerēšanas laikā. Uz jūras līmeņa un piekrastes abpagaliem nekad nav sniega.
|
||||
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Izvēlieties aptuveno sniega daudzumu subarktiskajā ainavā. Sniegs ietekmē nozares ražošanas un pilsētu izaugsmes prasības. Izmanto tikai kartes ģenerēšanas laikā. Uz jūras līmeņa un piekrastes lauciņiem nekad nav sniega
|
||||
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
|
||||
|
||||
STR_CONFIG_SETTING_DESERT_COVERAGE :Tuksneša pārklājums: {STRING}
|
||||
@@ -1632,7 +1632,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :{G=f}tumši za
|
||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :{G=f}violeta
|
||||
|
||||
STR_CONFIG_SETTING_LINKGRAPH_COLOURS :Kravas plūsmu pārklājuma krāsas: {STRING}
|
||||
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Iestatiet kravas plūsmu pārklājumam izmantoto krāsu shēmu.
|
||||
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :Iestatiet kravas plūsmas pārklājumam izmantoto krāsu shēmu
|
||||
###length 4
|
||||
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_RED :Zaļš uz sarkanu (orģināli)
|
||||
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :Zaļš uz zilu
|
||||
@@ -2059,7 +2059,7 @@ STR_CONFIG_SETTING_DEMAND_SIZE :Atpakaļceļa k
|
||||
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Uzstādod šo mazāk par 100% liks simetriskajai sadalei izturēties vairāk kā asimetriskajai. Mazāk kravas ar varu tiks sūtīts atpakaļ ja noteikts daudzums tiks sūtīts uz piestātni. Ja jūs uzstādīsiet to uz 0% simetriskā sadale izturēsies tā pat kā asimetriskā.
|
||||
|
||||
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Īso ceļu piesātinājums pirms sākt izmantot augstas ietilpības ceļus: {STRING}
|
||||
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Nereti starp divām stacijām ir vairāki ceļi. Kravu sadale vispirms piesātinās īsāko maršrutu, pēc tam izmantos nākamo īsāko maršrutu līdz tas būs piesātināts, un tā tālāk. Piesātinājumu nosaka novērtējot ietilpību un plānoto izmantojumu. Kad visi ceļi ir piesātināti un vēl ir palicis pieprasījumus, tas pārslogos visus ceļus, dodot priekšroku ceļiem ar lielāko ietilpību. Algoritms visbiežāk nepareizi novērtēs ietilpību. Šis iestatījums jums atļaus norādīt, līdz cik procentiem īsākais ceļš ir jāpiesātina pirmajā piegājienā pirms izvēlēties garāku ceļu. Iestatiet to uz mazāk kā 100%, lai izvairītos no pārpildītām stacijām, ja kapacitāte ir pārvērtēta.
|
||||
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Bieži starp divām noteiktām stacijām ir vairāki ceļi. Cargodist vispirms piesātinās īsāko ceļu, pēc tam izmantos otro īsāko ceļu, līdz tas ir piesātināts un tā tālāk. Piesātinājumu nosaka jaudas un plānotā lietojuma novērtējums. Kad tas būs piesātināts ar visiem ceļiem, ja joprojām būs pieprasījums, tas pārslogos visus ceļus, dodot priekšroku tiem, kuriem ir liela ietilpība. Tomēr lielāko daļu laika algoritms precīzi nenovērtēs jaudu. Šis iestatījums ļauj norādīt, cik procentus īsākam ceļam jābūt piesātinātam pirmajā piegājienā, pirms tiek izvēlēts nākamais garākais ceļš. Iestatiet to uz mazāku par 100%, lai izvairītos no pārpildītām stacijām pārmērīgas jaudas gadījumā
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Ātruma vienības (sauszemes): {STRING}
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Ātruma vienības (jūras): {STRING}
|
||||
@@ -2985,9 +2985,9 @@ STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Stādīt
|
||||
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normāls
|
||||
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Stādiet atsevišķus kokus, velkot pāri ainavai.
|
||||
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Birze
|
||||
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Stādiet mazus mežus, velkot pāri ainavai.
|
||||
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Stādiet nelielus mežus, velkot pāri ainavai.
|
||||
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Mežs
|
||||
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Stādiet lielos mežus, velkot pāri ainavai.
|
||||
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Stādiet lielus mežus, velkot pāri ainavai
|
||||
|
||||
# Land generation window (SE)
|
||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Zemes radīšana
|
||||
@@ -3491,7 +3491,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Ceļa tips
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF mainīgā 60+x parametrs (heksadecimāls)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Gariņa līdzināšana {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Gariņu izlīdzināšana: ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Gariņu izlīdzināšana: Darbība 0xA, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Gariņu izlīdzināšana: Darbība 0x5, tips {HEX}, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nākamais gariņš
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Pāriet uz nākamo parasto gariņu, izlaižot visus pseido/pārkrāsotos/fonta gariņus
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Iet pie gariņa
|
||||
@@ -3500,6 +3502,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Iepriek
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Iet pie iepriekšējā parastā gariņa, izlaižot visus pseido/pārkrāsotos/fonta gariņus
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Atlasītā gariņa attēlojums. To attēlojot, izkārtojums netiek ievērots
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pārvietot gariņu, lai mainītu X un Y vērtības. Ctrl+klikšķis, lai vienā piegājienā pārvietotu gariņu par astoņām vienībām
|
||||
STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM}
|
||||
|
||||
###length 2
|
||||
STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Nobīde centrēta
|
||||
@@ -4458,7 +4461,7 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ietilpī
|
||||
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Pārvadājumu ieņēmumi: {LTBLUE}{CURRENCY_LONG}
|
||||
|
||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}{NBSP}dienas{BLACK} {STRING}
|
||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}{NBSP}minūtes{BLACK} {STRING}
|
||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}{NBSP}minūte{P s es ""}{BLACK} {STRING}
|
||||
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Apkopes intervāls: {LTBLUE}{COMMA}%{BLACK} {STRING}
|
||||
STR_VEHICLE_DETAILS_LAST_SERVICE_DATE :Pēdējā apkalpošana: {LTBLUE}{DATE_LONG}
|
||||
STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO :Pēdējā apkope: pirms {LTBLUE}{NUM} minūtēm
|
||||
@@ -4908,7 +4911,9 @@ STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Plānoti
|
||||
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_UNABLE_TO_READ_DRIVE :{BLACK}Nevar lasīt disku
|
||||
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spēles saglabāšana neizdevās...
|
||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nevar dzēst failu
|
||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Spēles ielāde neizdevās...
|
||||
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_TOO_NEW_SAVEGAME :Spēle ir saglabāta ar jaunāku versiju
|
||||
@@ -5840,6 +5845,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING1 :{STRING}
|
||||
STR_JUST_STRING2 :{STRING}
|
||||
STR_JUST_STRING4 :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
@@ -3460,7 +3460,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Bėgio tipas
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Plėtinio kintamojo 60+x parametras (šešioliktainėje sistemoje)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Lygiuojamas spruklys {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Tolesnis spruklys
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Įkelti tolesnį spruklį
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Nurodyti spruklį
|
||||
|
@@ -3485,7 +3485,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Stroossentyp
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF Variabel 60+x Parameter (hexadezimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alignéiren d'Sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nächst Sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Géi weider op déi nächst normal Sprite, iwwersprang all pseudo/recolour/font Sprite an sprang un den Ufank no der leschter.
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Géi op Sprite
|
||||
|
@@ -2669,7 +2669,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Jenis landasan
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Pemboleh ubah NewGRF, parameter 60+x (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Megalih peperi {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Peperi seterusnya
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Teruskan ke peperi seterusan yang biasa, melangkau sebarang peperi pseudo/warna kembali/fon dan memusing balik semula
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Pergi ke peperi
|
||||
|
@@ -3490,7 +3490,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Veitype
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF-variabel 60+x parameter (heksadesimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Forskyver sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Neste sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsett til neste normale sprite og hopp over enhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved begynnelsen
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til sprite
|
||||
|
@@ -2844,7 +2844,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Jernbanetype
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF-variabel 60+x parameter (heksadesimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Forskyver sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Neste sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsett til neste normale sprite og hopp over einhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved byrjinga
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til sprite
|
||||
|
@@ -2675,7 +2675,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :نوع ریل
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}متغیر NewGRF 60 + پارامتر (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}جابجا کردن تصویر گرافیک {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}تصویر بعدی
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}نمایش تصویر بعدی، بدون انجام دادن هر گونه تغییرات در آخر
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}رفتن به تصویر
|
||||
|
@@ -3868,7 +3868,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Rodzaj drogi
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGFR zmienna 60+parametr x (heksadecymalnie)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Wyrównywanie sprite'a {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Wyrównywanie sprite'a: ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Wyrównywanie sprite'a: Action 0xA, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Wyrównywanie sprite'a: Action 0x5, typ {HEX}, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Następny sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Idź do następnego normalnego sprite'a, pomijając jakiekolwiek pseudo / przebarwione / czcionkowe sprite'y, a po ostatnim przejdź do pierwszego
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Idź do sprite'a
|
||||
@@ -3877,6 +3879,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Poprzedn
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Idź do poprzedniego normalnego sprite'a, pomijając jakiekolwiek pseudo / przebarwione / czcionkowe sprite'y, a po pierwszym przejdź do ostatniego
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Prezentacja wybranego sprite'a. Wyrównanie jest ignorowane podczas rysowania tego sprite'a
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Poruszaj spritem, zmieniając przesunięcia X i Y. Ctrl+klik aby przesunąć o 8 jednostek na raz
|
||||
STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM}
|
||||
|
||||
###length 2
|
||||
STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Wyśrodkowanie przesunięcia
|
||||
@@ -6274,6 +6277,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING1 :{STRING}
|
||||
STR_JUST_STRING2 :{STRING}
|
||||
STR_JUST_STRING4 :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
@@ -1714,10 +1714,10 @@ STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quando ativo, o
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Durante pausa permitir: {STRING}
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Seleccionar que acções podem ser feitas enquanto o jogo está em pausa
|
||||
###length 4
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nenhuma acção
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nenhuma ação
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Todas as acções sem construção
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Todas expecto acções que modificam o terreno
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Todas as acções
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Todas as ações
|
||||
|
||||
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usar a lista avançada de veículos: {STRING}
|
||||
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ativar a utilização de listas avançadas de veículos para o agrupamento de veículos
|
||||
@@ -2091,8 +2091,8 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Métrico (l)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³)
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unidades de esforço de tracção: {STRING}
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Quando a força de tracção é mostrada no interface de utilizador, mostrar na unidade seleccionada
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unidades de esforço de tração: {STRING}
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Sempre que o esforço de tração (ou força de tração) for exibido na interface do utilizador, será mostrado nessas unidades
|
||||
###length 3
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Métrico (kgf)
|
||||
@@ -3489,7 +3489,9 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo de estrada
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parâmetro da variável 60+x do NewGRF (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}A alinhar gráfico {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_CAPTION_NO_ACTION :{WHITE}Alinhando sprite: ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}Alinhando sprite: Ação 0xA, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTION5 :{WHITE}Alinhando sprite: Ação 0x5, tipo {HEX}, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Gráfico seguinte
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceder ao gráfico normal seguinte, ignorando quaisquer gráficos pseudo/recolorir/tipo-de-letra e dando a volta no fim
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir para o gráfico
|
||||
@@ -3498,6 +3500,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Gráfico
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceder ao gráfico normal anterior, ignorando quaisquer gráficos pseudo/recolorir/tipo-de-letra e dando a volta no início
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representação do gráfico seleccionado actualmente. O alinhamento é ignorado a desenhar este gráfico
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Desloca o gráfico, alterando os intervalos X e Y. Ctrl+Clique desloca o gráfico 8 unidades de uma só vez
|
||||
STR_SPRITE_ALIGNER_SPRITE :{STRING}:{NUM}
|
||||
|
||||
###length 2
|
||||
STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Deslocamento centrado
|
||||
@@ -3535,7 +3538,7 @@ STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Gráfico invál
|
||||
STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Propriedade de Ação 0 desconhecida {4:HEX} (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_INVALID_ID :Tentativa de uso de ID Inválido (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contém um objecto gráfico corrompido. Todos os objectos gráficos corrompidos serão apresentados como um ponto de interrogação (?) vermelho.
|
||||
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém múltiplas entradas Action 8 - (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém múltiplas entradas Ação 8 - (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_READ_BOUNDS :Leitura além dos limites do pseudo-sprite (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF pedidos não disponíveis (sprite {3:NUM})
|
||||
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desativado por {STRING}
|
||||
@@ -3647,10 +3650,10 @@ STR_LOCAL_AUTHORITY_ZONE :{BLACK}Zona
|
||||
STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Mostrar a zona dentro dos limites da autoridade local
|
||||
STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Classificações de empresas de transporte:
|
||||
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
|
||||
STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Acções disponíveis:
|
||||
STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de acções disponíveis nesta localidade - fazer clique no item para mais detalhes
|
||||
STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Ações disponíveis:
|
||||
STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de ações disponíveis nesta localidade - clique no item para mais detalhes
|
||||
STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Aplicar
|
||||
STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Realizar a acção destacada na lista acima
|
||||
STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Realizar a ação destacada na lista acima
|
||||
|
||||
###length 8
|
||||
STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Pequena campanha publicitária
|
||||
@@ -4092,7 +4095,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Todos os tipos
|
||||
STR_PURCHASE_INFO_NONE :Nenhum
|
||||
STR_PURCHASE_INFO_ENGINES_ONLY :Apenas locomotivas
|
||||
STR_PURCHASE_INFO_ALL_BUT :Todas menos {CARGO_LIST}
|
||||
STR_PURCHASE_INFO_MAX_TE :{BLACK}Máx. Força de Tracção: {GOLD}{FORCE}
|
||||
STR_PURCHASE_INFO_MAX_TE :{BLACK}Esforço de Tração Máx: {GOLD}{FORCE}
|
||||
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} mosaicos
|
||||
STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de aeronave: {GOLD}{STRING}
|
||||
|
||||
@@ -5834,6 +5837,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING1 :{STRING}
|
||||
STR_JUST_STRING2 :{STRING}
|
||||
STR_JUST_STRING4 :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
@@ -3481,7 +3481,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tip de drum
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parametru variabilă 60+x NewGRF (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aliniere imagine {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Imaginea următoare
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Mergi la următoarea imagine normală, sărind peste pseudo-imagini, recolorări sau fonturi și repornește când s-a ajuns la sfârșit
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mergi la imagine
|
||||
|
@@ -3663,7 +3663,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Тип доро
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметр переменной NewGRF 60+x (шестнадцатеричный)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Выравнивание спрайта {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Следующий спрайт
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Перейти к следующему нормальному спрайту, пропуская изменяющие цвет, шрифтовые, псевдоспрайты. Переход из конца списка к первому спрайту.
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Перейти к спрайту
|
||||
|
@@ -3613,7 +3613,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Vrsta puta
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF promenljiva 60+x parametar (heksadecimalno)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Poravnjavanje sprajta {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sledeći sprajt
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Prelazi na sledeći normalan sprajt, preskačući sve pseudo/prebojavajuće/font sprajtove i vraća se na početak posle zadnjeg
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Idi na sprajt
|
||||
|
@@ -3488,7 +3488,7 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :道路类型
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x 参数 (十六进制)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}定位 sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_CAPTION_ACTIONA :{WHITE}对齐中的 Sprite:Action 0xA, {COMMA} ({STRING}:{NUM})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}下一个 sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}继续处理下个正常的图形元素,略过任何虚位/重新着色/文字字型相关的图形元素;并且在处理到最后的图形元素后,返回第一个图形元素继续处理。
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}前往 sprite
|
||||
|
@@ -3556,7 +3556,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Typ cesty
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variabilný 60+x parameter (hexadecimálne)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Zarovnanie sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Ďalší sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Prejsť na najbližší normálny sprite, vynechajúc akékoľvek falošné/prefarbené sprites a sprites fontu použité na konci
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Prejsť na sprite
|
||||
|
@@ -3082,7 +3082,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tip železnice
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF spremenljivka 60+x parameter (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Uravnavam sličico {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Naslednja sličica
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Nadaljuj k naslednji navadni sličici, zanemari vse navidezne/pobarvane/besedilne sličice in okvir na koncu
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Pojdi na sličico
|
||||
|
@@ -3489,7 +3489,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipo de carrete
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parámetro de variable NewGRF 60+x (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alinear sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Siguiente sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Va al siguiente sprite (ignorando pseudosprites, sprites recoloreados y sprites de fuente) y pasa del último al primer sprite
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir a sprite
|
||||
|
@@ -3419,7 +3419,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo de ferroca
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parámetro de variable NewGRF 60+x (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alinear sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Siguiente sprite
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Ir al siguiente sprite (ignorando pseudosprites, sprites coloreados y sprites de fuente) y pasar del último al primer sprite
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir a sprite
|
||||
|
@@ -3488,7 +3488,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Vägtyp
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variabel 60+x parameter (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Justera spriteobjekt {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nästa spriteobjekt
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsätt till nästa nomala spriteobjekt, ignorera eventuella pseudo/recolour/font spriteobjekt och börja om efter sista spriteobjektet
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå till spriteobjekt
|
||||
|
@@ -3192,7 +3192,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :இரயில
|
||||
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}ஸ்பிரிட் ஒழுங்காக்கப்படுகிறது {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}அடுத்த ஸ்பிரைட்டு
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}ஸ்பிரைட்டுயிற்கு செல்லவும்
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}முந்தைய ஸ்பிரைட்டு
|
||||
|
@@ -3014,7 +3014,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :ประเภ
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF ตัวแปร 60+x parameter (hexadecimal)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}sprite ถัดไป
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}เคลื่อนไปยัง sprite ปกติอันถัดไป โดยข้าม pseudo/recolour/font และวกกลับเมื่อถึงจุดสิ้นสุด
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}ไปยัง sprite
|
||||
|
@@ -3373,7 +3373,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :道路類型
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x 參數(16 進位)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}定位 Sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}下一個子畫面
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}繼續處理下個正常的子畫面,略過任何虛位/重新著色/文字字型相關的子畫面,並在到達最後的子畫面後,返回第一個子畫面繼續進行處理。
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}前往子畫面
|
||||
|
@@ -3487,7 +3487,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Yol türü:
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF değişkeni 60+x parametresi (onaltılı)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Nesne hizalanıyor {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sonraki nesne
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Tüm sahte/yeniden renklendirme/yazı tipi nesnelerini ve sondaki nesneden atlayarak bir sonraki normal nesneye geç
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Nesneye git
|
||||
|
@@ -485,10 +485,10 @@ STR_SORT_BY_RATING_MIN :за найни
|
||||
STR_SORT_BY_ENGINE_ID :за ID (класичний порядок)
|
||||
STR_SORT_BY_COST :за ціною
|
||||
STR_SORT_BY_POWER :за потужністю
|
||||
STR_SORT_BY_TRACTIVE_EFFORT :за силою тяги
|
||||
STR_SORT_BY_TRACTIVE_EFFORT :за тяговим зусиллям
|
||||
STR_SORT_BY_INTRO_DATE :за датою випуску
|
||||
STR_SORT_BY_RUNNING_COST :за вартістю експлуатації
|
||||
STR_SORT_BY_POWER_VS_RUNNING_COST :за потужністю/вартістю експ.
|
||||
STR_SORT_BY_POWER_VS_RUNNING_COST :за співвідношенням потужність/вартість експлуатації
|
||||
STR_SORT_BY_CARGO_CAPACITY :за місткістю
|
||||
STR_SORT_BY_RANGE :за дальністю
|
||||
STR_SORT_BY_POPULATION :за населенням
|
||||
@@ -505,10 +505,10 @@ STR_SORT_BY_AVERAGE_PROFIT_THIS_PERIOD :Середні
|
||||
|
||||
# Group by options for vehicle list
|
||||
STR_GROUP_BY_NONE :Нема
|
||||
STR_GROUP_BY_SHARED_ORDERS :Спільні накази
|
||||
STR_GROUP_BY_SHARED_ORDERS :Спільні завдання
|
||||
|
||||
# Order button in shared orders vehicle list
|
||||
STR_GOTO_ORDER_VIEW :{BLACK}Накази
|
||||
STR_GOTO_ORDER_VIEW :{BLACK}Завдання
|
||||
STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Відкрити вікно завдань
|
||||
|
||||
# Tooltips for the main toolbar
|
||||
@@ -1151,7 +1151,7 @@ STR_GAME_OPTIONS_CURRENCY_LVL :Латвійс
|
||||
STR_GAME_OPTIONS_CURRENCY_PTE :Португальське ескудо
|
||||
|
||||
STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автозбереження
|
||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Виберіть період автозбереження гри
|
||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Виберіть інтервал автозбереження
|
||||
|
||||
# Autosave dropdown
|
||||
###length 5
|
||||
@@ -1165,27 +1165,27 @@ STR_GAME_OPTIONS_LANGUAGE :{BLACK}Мова
|
||||
STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Виберіть мову інтерфейса користувача
|
||||
STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}% виконано)
|
||||
|
||||
STR_GAME_OPTIONS_FULLSCREEN :{BLACK}На весь екран
|
||||
STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Натисніть цю кнопку щоб грати на весь екран
|
||||
STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Повноекранний режим
|
||||
STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Натисніть цю кнопку, щоби грати в OpenTTD у повноекранному режимі
|
||||
|
||||
STR_GAME_OPTIONS_RESOLUTION :{BLACK}Роздільна здатність
|
||||
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Виберіть роздільну здатність екрану
|
||||
STR_GAME_OPTIONS_RESOLUTION :{BLACK}Роздільна здатність екрана
|
||||
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Виберіть, яку роздільну здатність екрана використовувати
|
||||
STR_GAME_OPTIONS_RESOLUTION_OTHER :інша
|
||||
STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM}
|
||||
|
||||
STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Прискорення апаратного забезпечення
|
||||
STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Апаратне прискорення
|
||||
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Увімкнутий прапорець дозволить використання грою прискорення апаратного забезпечення. Налаштування запрацює тільки після перезапуску гри
|
||||
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Налаштування запрацює тільки після перезапуску гри
|
||||
|
||||
STR_GAME_OPTIONS_VIDEO_VSYNC :Вертикальна синхронізація
|
||||
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Увімкнутий прапорець дозволить вертикальну синхронізацію екрану. Налаштування запрацює тільки після перезапуску гри. Працює тільки за увімкнутого прискорення апаратного забезпечення.
|
||||
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}Вертикальна синхронізація
|
||||
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Позначте цей прапорець для використання вертикальної синхронізації. Зміни застосуються тільки після перезапуску гри. Працює лише за увімкненого апаратного прискорення
|
||||
|
||||
STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Поточний драйвер: {STRING}
|
||||
STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Використовуваний драйвер: {STRING}
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Розмір інтерфейсу
|
||||
STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Перетягніть повзунок для встановлення розміру інтерфейсу. Ctrl+протягування для точнішого перетягування
|
||||
STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Автоматично визначений розмір
|
||||
STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Увімкнутий прапорець дозволить автоматично визначити розмір інтерфейсу
|
||||
STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Визначати розмір автоматично
|
||||
STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Позначте цей прапорець для того, щоби визначати розмір інтерфейсу автоматично
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Межі шкали
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :BLACK}Увімкнутий прапорець дозволить змінити розмір інтерфейсу
|
||||
@@ -1211,10 +1211,10 @@ STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Пере
|
||||
|
||||
STR_GAME_OPTIONS_GRAPHICS :{BLACK}Графіка
|
||||
|
||||
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Показати швидкість оновлення
|
||||
STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK}Обрати швидкість оновлення екрану
|
||||
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Частота оновлення екрана
|
||||
STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK}Оберіть, яку частоту оновлення екрана використовувати
|
||||
STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Гц
|
||||
STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Оновлення з частотою понад 60ГГц може зашкодити роботі гри.
|
||||
STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Частота оновлення екрана вища за 75 Гц може вплинути на швидкодію
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базовий набір графіки
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Оберіть, яку основну графіку використовувати (неможливо змінити у грі, тільки з головного меню)
|
||||
@@ -1420,8 +1420,8 @@ STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Ніяких п
|
||||
STR_CONFIG_SETTING_INTEREST_RATE :Процентна ставка: {STRING}
|
||||
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Процентна ставка за позиками; також контролює інфляцію, якщо вона увімкнена
|
||||
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS :Експлуатаційні витрати: {STRING}
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Встановіть вартість обслуговування та експлуатаційні витрати на транспорт та інфраструктуру
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS :Вартість експлуатації: {STRING}
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Встановіть вартість обслуговування та вартість експлуатації на транспорт та інфраструктуру
|
||||
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Швидкість будівництва: {STRING}
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Обмеження кількості будівельних дій для ШІ
|
||||
@@ -1541,11 +1541,11 @@ STR_CONFIG_SETTING_SHOWFINANCES_PERIOD :Показув
|
||||
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :При включенні наприкінці кожного року виринає вікно фінансів для легшого огляду фінансового стану компанії.
|
||||
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT_PERIOD :При включенні наприкінці кожного періоду виринає вікно фінансів для легшого огляду фінансового стану компанії.
|
||||
|
||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Створювати накази з поміткою «без зупинки»: {STRING}
|
||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Створювати завдання з поміткою «без зупинки»: {STRING}
|
||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Якщо в завданні транспортного засобу не вказана помітка «без зупинки», то він зупиняєтся на всіх станціях на своєму шляху. Якщо увімкнути це налаштування, то нові завдання будуть автоматично створюватися з поміткою «без зупинки» і транспортний засіб буде зупинятися лише на вказаних станціях. При необхідності помітку можна зняти або встановити власноруч.
|
||||
|
||||
STR_CONFIG_SETTING_STOP_LOCATION :Створювати накази для поїздів з зупинкою {STRING} платформи
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Оберіть кінець платформи для зупинки потягів у нових наказах. "на початку": початок платформи в напрямку руху; "посередині": середина платформи; "наприкінці": кінець платформи в напрямку руху. Окремі накази для зупинки можна встановити клацнувши на текст наказу
|
||||
STR_CONFIG_SETTING_STOP_LOCATION :Створювати завдання для поїздів з зупинкою {STRING} платформи
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Оберіть кінець платформи для зупинки потягів у нових завданнях. Опція "на початку" – початок платформи в напрямку руху; "посередині" – середина платформи; "наприкінці" – кінець платформи в напрямку руху. Окремі завдання для зупинки можна встановити клацнувши на текст завдання
|
||||
###length 3
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :на початку
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :посередині
|
||||
@@ -2254,7 +2254,7 @@ STR_CONFIG_SETTING_ACCOUNTING :Облік
|
||||
STR_CONFIG_SETTING_VEHICLES :Транспорт
|
||||
STR_CONFIG_SETTING_VEHICLES_PHYSICS :Фізика
|
||||
STR_CONFIG_SETTING_VEHICLES_ROUTING :Маршрути
|
||||
STR_CONFIG_SETTING_VEHICLES_ORDERS :Накази
|
||||
STR_CONFIG_SETTING_VEHICLES_ORDERS :Завдання
|
||||
STR_CONFIG_SETTING_LIMITATIONS :Обмеження
|
||||
STR_CONFIG_SETTING_ACCIDENTS :Катастрофи
|
||||
STR_CONFIG_SETTING_GENWORLD :Створення світу
|
||||
@@ -3628,7 +3628,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Тип доро
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметр змінної NewGRF 60+x (шістнадцятковий)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Вирівнювання спрайту {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Наступний спрайт
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Йти до наступного нормального спрайту, пропускаючи будь-які псевдо/перемальовані/шрифтові спрайти і загортаючи навколо (wrap) починаючи з останнього спрайту закінчуючи першим
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Йти до спрайту
|
||||
@@ -3911,7 +3910,7 @@ STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN
|
||||
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинг
|
||||
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Показати рейтинг станції
|
||||
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH :{BLACK}Постачання впродовж місяця і місцевий рейтинг:
|
||||
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :BLACK}Постачання впродовж хвилини і місцевий рейтинг:
|
||||
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE :{BLACK}Постачання впродовж хвилини і місцевий рейтинг:
|
||||
STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%)
|
||||
|
||||
STR_STATION_VIEW_GROUP :{BLACK}Групувати по
|
||||
@@ -4412,7 +4411,7 @@ STR_ENGINE_PREVIEW_TEXT4 :{BLACK}{STRING}
|
||||
STR_ENGINE_PREVIEW_COST_WEIGHT :Ціна: {CURRENCY_LONG} Маса: {WEIGHT_SHORT}
|
||||
STR_ENGINE_PREVIEW_COST_MAX_SPEED :Ціна: {CURRENCY_LONG} Швидкість: {VELOCITY}
|
||||
STR_ENGINE_PREVIEW_SPEED_POWER :Швидкість: {VELOCITY} Потужність: {POWER}
|
||||
STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Швидкість: {VELOCITY} Потужність: {POWER} Макс. тяга: {FORCE}
|
||||
STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE :Швидкість: {VELOCITY} Потужність: {POWER} Максимальне тягове зусилля: {FORCE}
|
||||
STR_ENGINE_PREVIEW_TYPE :Тип літального апарата: {STRING}
|
||||
STR_ENGINE_PREVIEW_TYPE_RANGE :Тип літального апарата: {STRING} Дальність: {COMMA} клітин{P ка ки ок }
|
||||
STR_ENGINE_PREVIEW_RUNCOST_YEAR :Вартість експлуатації: {CURRENCY_LONG}/рік
|
||||
@@ -4440,8 +4439,8 @@ STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Вибе
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Почати оновлення
|
||||
STR_REPLACE_VEHICLES_NOW :Замінити усі ТС зараз
|
||||
STR_REPLACE_VEHICLES_WHEN_OLD :Замінювати лише застарілі ТС
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Натисніть для запуску оновлення потягів, що вибрані праворуч, на потяги, що вибрані праворуч
|
||||
STR_REPLACE_NOT_REPLACING :{BLACK}Не можна оновити
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Натисніть для запуску оновлення потягів, що вибрані ліворуч, на потяги, що вибрані праворуч
|
||||
STR_REPLACE_NOT_REPLACING :{BLACK}Поки що не оновлюється
|
||||
STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Не вибрано транспортного засобу
|
||||
STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} коли застаріє
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Зупинити оновлення
|
||||
@@ -4450,11 +4449,11 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Нати
|
||||
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Переключення між вікнами заміни потягів та вагонів.
|
||||
STR_REPLACE_ENGINES :Локомотиви
|
||||
STR_REPLACE_WAGONS :Вагони
|
||||
STR_REPLACE_ALL_RAILTYPE :Весь з/д транспорт
|
||||
STR_REPLACE_ALL_RAILTYPE :Весь залізничний транспорт
|
||||
STR_REPLACE_ALL_ROADTYPE :Всі автомобілі
|
||||
|
||||
###length 2
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Виберіть тип колії, для якого ви збираєтесь оновити потяги
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Виберіть тип колії, для якої ви збираєтесь оновити потяги
|
||||
STR_REPLACE_HELP_ROADTYPE :{BLACK}Виберіть тип дороги, на який хочете замінити двигуни
|
||||
###next-name-looks-similar
|
||||
|
||||
@@ -4505,9 +4504,9 @@ STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Пере
|
||||
|
||||
###length VEHICLE_TYPES
|
||||
STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Показати маршрут поїзда. Ctrl+клац показує розклад поїзда
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Показати накази авто. Ctrl+клац показує розклад авто
|
||||
STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Показати накази корабля. Ctrl+клац показує розклад корабля
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Показати накази літака. Ctrl+клац показує розклад літака
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Показати завдання транспортного засобу. Ctrl+клац показує розклад ТЗ
|
||||
STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Показати завдання корабля. Ctrl+клац показує розклад корабля
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Показати завдання літака. Ctrl+клац показує розклад літака
|
||||
|
||||
###length VEHICLE_TYPES
|
||||
STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Показати детальну інформацію
|
||||
@@ -4524,7 +4523,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Пото
|
||||
# Messages in the start stop button in the vehicle view
|
||||
STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Вантаження
|
||||
STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Відходить
|
||||
STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Чекає на звільнення
|
||||
STR_VEHICLE_STATUS_WAITING_UNBUNCHING :{LTBLUE}Чекає на розподілення за інтервалом
|
||||
STR_VEHICLE_STATUS_CRASHED :{RED}Аварія!
|
||||
STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Зламався
|
||||
STR_VEHICLE_STATUS_STOPPED :{RED}Зупинено
|
||||
@@ -4538,7 +4537,7 @@ STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}{VELOCI
|
||||
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_SERVICE_VEL :{LTBLUE}{1:VELOCITY} - Техогляд у {0:DEPOT}
|
||||
STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Звільнити і обслужити в {0:DEPOT}
|
||||
STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_UNBUNCH_VEL :{LTBLUE}{1:VELOCITY} - Обслуговується та чекає на розподілення в {0:DEPOT}
|
||||
|
||||
STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL :{LTBLUE}{1:VELOCITY} - Неможливо досягти {0:STATION}
|
||||
STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL :{LTBLUE}{1:VELOCITY} - Неможливо досягти {0:WAYPOINT}
|
||||
@@ -4572,7 +4571,7 @@ STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс
|
||||
STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Тип: {LTBLUE}{STRING}
|
||||
STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Тип: {LTBLUE}{STRING} {BLACK}Дальність: {LTBLUE}{COMMA} клітин{P ка ки ок }
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Макс. швидкість: {LTBLUE}{VELOCITY}
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Макс. тяга: {LTBLUE}{FORCE}
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Максимальна швидкість: {LTBLUE}{VELOCITY} {BLACK}Максимальне тягове зусилля: {LTBLUE}{FORCE}
|
||||
|
||||
STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Дохід цього року: {LTBLUE}{CURRENCY_LONG} (торік: {CURRENCY_LONG})
|
||||
STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR_MIN_PERFORMANCE :{BLACK}Дохід цього року: {LTBLUE}{CURRENCY_LONG} (минулого року: {CURRENCY_LONG}) {BLACK}Найгірше: {LTBLUE}{POWER_TO_WEIGHT}
|
||||
@@ -4663,7 +4662,7 @@ STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Пере
|
||||
STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Переобладнати літак для перевезення вибраного виду вантажу
|
||||
|
||||
# Order view
|
||||
STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Накази)
|
||||
STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Завдання)
|
||||
STR_ORDERS_TIMETABLE_VIEW :{BLACK}Розклад
|
||||
STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Переключитись на розклад
|
||||
|
||||
@@ -4706,7 +4705,7 @@ STR_ORDER_DROP_REFIT_AUTO_ANY :Доступн
|
||||
STR_ORDER_DROP_GO_ALWAYS_DEPOT :Завжди прямувати
|
||||
STR_ORDER_DROP_SERVICE_DEPOT :Прямувати при потребі в техогляді
|
||||
STR_ORDER_DROP_HALT_DEPOT :Прямувати і зупинитись
|
||||
STR_ORDER_DROP_UNBUNCH :Звільнити
|
||||
STR_ORDER_DROP_UNBUNCH :Розподілити по інтервалу
|
||||
|
||||
# Depot action tooltips, one per vehicle type
|
||||
###length VEHICLE_TYPES
|
||||
@@ -4716,7 +4715,7 @@ STR_ORDER_SHIP_DEPOT_ACTION_TOOLTIP :{BLACK}Вибе
|
||||
STR_ORDER_HANGAR_ACTION_TOOLTIP :{BLACK}Виберіть дію до виконання в цьому ангарі
|
||||
###next-name-looks-similar
|
||||
|
||||
STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Дані транспорту для базування наказу
|
||||
STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Дані транспорту для базування завдання
|
||||
|
||||
# Conditional order variables, must follow order of OrderConditionVariable enum
|
||||
###length 8
|
||||
@@ -4744,20 +4743,20 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Знач
|
||||
STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Введіть значення для порівняння
|
||||
|
||||
STR_ORDERS_SKIP_BUTTON :{BLACK}Пропуск
|
||||
STR_ORDERS_SKIP_TOOLTIP :{BLACK}Пропустити поточний наказ, і виконувати наступний. Ctrl+клац для переходу до обраного наказу
|
||||
STR_ORDERS_SKIP_TOOLTIP :{BLACK}Пропустити поточне завдання, і виконати наступне. Ctrl+клац для переходу до обраного завдання
|
||||
|
||||
STR_ORDERS_DELETE_BUTTON :{BLACK}Видалити
|
||||
STR_ORDERS_DELETE_TOOLTIP :{BLACK}Видалити виділене завдання
|
||||
STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Видалити всі накази
|
||||
STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Скасувати спільні накази
|
||||
STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Припинити використовути спільні накази. Ctrl+клац видаляє всі накази для цього транспорту
|
||||
STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Видалити всі завдання
|
||||
STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Скасувати спільні завдання
|
||||
STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Припинити використання спільних завдань. Ctrl+клац видаляє всі завдання для цього транспорту
|
||||
|
||||
STR_ORDERS_GO_TO_BUTTON :{BLACK}Прямувати
|
||||
STR_ORDER_GO_TO_NEAREST_DEPOT :Прямувати до найближчого депо
|
||||
STR_ORDER_GO_TO_NEAREST_HANGAR :Прямувати в найближчий ангар
|
||||
STR_ORDER_CONDITIONAL :Зміна наказу з умовою
|
||||
STR_ORDER_SHARE :Спільні накази
|
||||
STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Вставити новий наказ перед обраним або додати в кінець списку. Ctrl+клац на станції аби наказати "повне завантаження будь-якого вантажу". Ctrl+клац на точці маршруту аби змінити налаштування "без зупинок" на протилежне. Ctrl+клаці на гаражі для "звільнення". Клац мишею на авто копіює його накази. Ctrl+клац на авто сворює спільні накази. Наказ із гаражем вимикає автоматичний техогляд авто
|
||||
STR_ORDER_CONDITIONAL :Змінити завдання, за умови
|
||||
STR_ORDER_SHARE :Спільні завдання
|
||||
STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Вставити нове завдання перед обраним або додати в кінець списку. Ctrl+клац на станції для завдання "повне завантаження будь-якого вантажу". Ctrl+клац на точці маршруту аби змінити налаштування "без зупинок" на протилежне. Ctrl+клац на гаражі для "автоматичного розподілення". Клац мишею на авто копіює його завдання. Ctrl+клац на авто створює спільні завдання. Завдання з гаражем вимикає автоматичний техогляд транспортного засобу
|
||||
|
||||
STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Показати транспорт з таким самим маршрутом
|
||||
|
||||
@@ -4783,7 +4782,7 @@ STR_ORDER_REFIT_ORDER :(Переобл
|
||||
STR_ORDER_REFIT_STOP_ORDER :(Переобладнати на {STRING} і зупинити)
|
||||
STR_ORDER_STOP_ORDER :(зупинити)
|
||||
|
||||
STR_ORDER_WAIT_TO_UNBUNCH :(чекає звільнення)
|
||||
STR_ORDER_WAIT_TO_UNBUNCH :(чекати на розподілення за інтервалом)
|
||||
|
||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Неможливо використати станцію){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||
@@ -4828,21 +4827,21 @@ STR_ORDER_STOP_LOCATION_FAR_END :[кінець]
|
||||
|
||||
STR_ORDER_OUT_OF_RANGE :{RED} (Наступний пункт призначення поза межею досяжності)
|
||||
|
||||
STR_ORDER_CONDITIONAL_UNCONDITIONAL :Перейти до наказу {COMMA}
|
||||
STR_ORDER_CONDITIONAL_NUM :Перейти до наказу {COMMA}, якщо {STRING} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_TRUE_FALSE :Перейти до наказу {COMMA}, якщо {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_UNCONDITIONAL :Перейти до завдання {COMMA}
|
||||
STR_ORDER_CONDITIONAL_NUM :Перейти до завдання {COMMA}, якщо {STRING} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_TRUE_FALSE :Перейти до завдання {COMMA}, якщо {STRING} {STRING}
|
||||
|
||||
STR_INVALID_ORDER :{RED} (Невірний наказ)
|
||||
STR_INVALID_ORDER :{RED} (Неправильне завдання)
|
||||
|
||||
# Time table window
|
||||
STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (розклад)
|
||||
STR_TIMETABLE_ORDER_VIEW :{BLACK}Завдання
|
||||
STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Переключитись до вікна завдань
|
||||
|
||||
STR_TIMETABLE_TOOLTIP :{BLACK}Розклад - клацніть мишою на наказ, щоб виділити його
|
||||
STR_TIMETABLE_TOOLTIP :{BLACK}Розклад - клацніть мишею на завдання, щоб виділити його
|
||||
|
||||
STR_TIMETABLE_NO_TRAVEL :Не прямувати
|
||||
STR_TIMETABLE_NOT_TIMETABLEABLE :В дорозі (час руху враховано в наступному не автоматичному наказі)
|
||||
STR_TIMETABLE_NOT_TIMETABLEABLE :В дорозі (час руху враховано в наступному не автоматичному завданні)
|
||||
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :В дорозі (час не вказано)
|
||||
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Прямувати (без розкладу) зі швидкістю, що не перевищує {2:VELOCITY} (час не вказано)
|
||||
STR_TIMETABLE_TRAVEL_FOR :В дорозі {STRING}
|
||||
@@ -4867,21 +4866,21 @@ STR_TIMETABLE_STATUS_START_IN_SECONDS.r :{BLACK}Цей
|
||||
STR_TIMETABLE_STATUS_START_IN_SECONDS.d :{BLACK}Цей розклад почнеться після {COMMA} секунд
|
||||
|
||||
STR_TIMETABLE_START :{BLACK}Початок розкладу
|
||||
STR_TIMETABLE_START_TOOLTIP :{BLACK}Обрати початок розкладу. Ctrl+клац для рівного розподілу початку руху транспорту зі спільним наказом. Якщо наказ із розкладом, транспорт розподілиться за відносним порядком
|
||||
STR_TIMETABLE_START_TOOLTIP :{BLACK}Обрати початок розкладу. Ctrl+клац для рівного розподілу початку руху транспорту зі спільними завданнями. Якщо завдання включає в себе розклад, транспорт розподілиться по маршруту з його урахуванням
|
||||
|
||||
STR_TIMETABLE_START_SECONDS_QUERY :Секунд до початку розкладу
|
||||
|
||||
STR_TIMETABLE_CHANGE_TIME :{BLACK}Змінити час
|
||||
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Змінити час, впродовж якого має виконуватись наказ. Ctrl+клац змінить час в усіх наказах
|
||||
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Змінити час, впродовж якого має виконуватись завдання. Ctrl+клац змінить час в усіх завданнях
|
||||
|
||||
STR_TIMETABLE_CLEAR_TIME :{BLACK}Скасувати час
|
||||
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Скасувати час виконання виділеного наказу. Ctrl+клац скасує обмеження часу в усіх наказах
|
||||
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Скасувати час виконання виділеного завдання. Ctrl+клац скасує обмеження часу в усіх завданнях
|
||||
|
||||
STR_TIMETABLE_CHANGE_SPEED :{BLACK}Змінити обмеж. швидкості
|
||||
STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Змінити обмеження швидкості для виділеного пункту. Ctrl+клац змінить швидкість в усіх завданнях
|
||||
|
||||
STR_TIMETABLE_CLEAR_SPEED :{BLACK}Скасувати обмеж. швидкості
|
||||
STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Скасувати обмеження швидкості для виділеного пункту. Ctrl+клац скасує обмеження швидкості в усіх наказах
|
||||
STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Скасувати обмеження швидкості для виділеного завдання. Ctrl+клац скасує обмеження швидкості в усіх завданнях
|
||||
|
||||
STR_TIMETABLE_RESET_LATENESS :{BLACK}Скасувати відхилення
|
||||
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Скасувати лічильник відхилення від графіка, щоб транспорт встигав. Ctrl+клац, щоб скасувати лічильник для всієї групи транспорту. При цьому останній транспорт йтиме за графіком, а інші випереджатимуть графік.
|
||||
@@ -5255,18 +5254,18 @@ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Немо
|
||||
STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Неправильний тип депо
|
||||
|
||||
# Depot unbunching related errors
|
||||
STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... можливий тільки один звільнений наказ
|
||||
STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... неможливо використати наказ "повне завантаження", якщо транспорт звільнено
|
||||
STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... неможливо звільнити транспорт з наказом "повне завантаження"
|
||||
STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... неможливо використати стандартні накази, якщо транспорт звільнено
|
||||
STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... неможливо звільнити транспорт зі стандартним наказом
|
||||
STR_ERROR_UNBUNCHING_ONLY_ONE_ALLOWED :{WHITE}... дозволяється не більше одного завдання на розподілення по інтервалу
|
||||
STR_ERROR_UNBUNCHING_NO_FULL_LOAD :{WHITE}... неможливо використати завдання "повне завантаження", якщо транспорт має завдання на розподілення
|
||||
STR_ERROR_UNBUNCHING_NO_UNBUNCHING_FULL_LOAD :{WHITE}... неможливо задати завдання на розподілення, якщо транспорт має завдання з умовою на "повне завантаження"
|
||||
STR_ERROR_UNBUNCHING_NO_CONDITIONAL :{WHITE}... неможливо використати стандартні завдання, якщо транспорт має завдання на розподілення
|
||||
STR_ERROR_UNBUNCHING_NO_UNBUNCHING_CONDITIONAL :{WHITE}... неможливо задати завдання на розподілення, якщо транспорт має завдання з додатковими умовами
|
||||
|
||||
# Autoreplace related errors
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} дуже довгий після оновлення
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Правила автозаміни/оновлення не застосовувалися
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(бракує коштів)
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Новий транспорт не може перевозити {STRING}
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Нове авто не може змінити наказ {NUM}
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Новий транспорт не може переобладнатися згідно з завданням {NUM}
|
||||
|
||||
# Rail construction errors
|
||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Неможливе з'єднання колії
|
||||
@@ -5437,12 +5436,12 @@ STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Літа
|
||||
# Order related errors
|
||||
STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Немає місця для нових завдань
|
||||
STR_ERROR_TOO_MANY_ORDERS :{WHITE}Занадто багато завдань
|
||||
STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Неможливо додати наказ...
|
||||
STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Неможливо видалити наказ...
|
||||
STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Неможливо змінити наказ...
|
||||
STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Не можна перемістити цей наказ...
|
||||
STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Не можна пропустити цей наказ...
|
||||
STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Не можна перейти до цього наказу...
|
||||
STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Неможливо додати завдання...
|
||||
STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Неможливо видалити завдання...
|
||||
STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Неможливо змінити завдання...
|
||||
STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Неможливо перемістити це завдання...
|
||||
STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Не можна пропустити це завдання...
|
||||
STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Неможливо перейти до цього завдання...
|
||||
STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... транспорт не може йти на всі станції
|
||||
STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... транспорт не може йти на цю станцію
|
||||
STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... транспорт, що має спільний з цим розклад, не може йти на цю станцію
|
||||
@@ -5450,7 +5449,7 @@ STR_ERROR_CAN_T_COPY_ORDER_VEHICLE_LIST :{WHITE}... не
|
||||
STR_ERROR_CAN_T_SHARE_ORDER_VEHICLE_LIST :WHITE}... не увесь транспорт має спільні завдання
|
||||
|
||||
STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Неможливо розділити список завдань...
|
||||
STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Неможливо скасувати спільні накази...
|
||||
STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Неможливо скасувати спільні завдання...
|
||||
STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Неможливо скопіювати список завдань...
|
||||
STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... занадто далеко від попереднього пункту призначення
|
||||
STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... літак не може летіти так далеко
|
||||
|
@@ -2264,7 +2264,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :طرزِ ریل
|
||||
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE} صف بندھی کے sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK} اگلی sprite
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK} جایئے sprite تک
|
||||
STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK} جایئے sprite کی طرف۔ اگر sprite اصلی نھیں تو اگلی sprite کی طرف جائیے
|
||||
|
@@ -3488,7 +3488,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Loại đườn
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Biến số NewGRF là 60+x (dạng hexa)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Điều chỉnh sprite {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite tiếp
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Chuyển tới sprite bình thường kế tiếp, bỏ qua các loại sprite và căn theo điểm kết thúc
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Đi tới sprite
|
||||
|
@@ -3488,7 +3488,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Math ffordd
|
||||
STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramedr newidyn NewGRF 60+x (hecsaddigidol)
|
||||
|
||||
# Sprite aligner window
|
||||
STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alinio corlun {COMMA} ({STRING})
|
||||
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Corlun nesaf
|
||||
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Mynd i'r corlun cyffredin nesaf, gan hepgor unrhyw gorluniau ailliwio/ffont/llidgorluniau, ac amlapio o'r corlun olaf i'r gyntaf
|
||||
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mynd i gorlun
|
||||
|
@@ -129,7 +129,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_PLT_BACKGROUND) return;
|
||||
|
||||
@@ -162,8 +162,8 @@ public:
|
||||
|
||||
this->text_width = widest_width + WidgetDimensions::scaled.hsep_indent * 3; // Keep some extra spacing
|
||||
|
||||
size->width = WidgetDimensions::scaled.framerect.Horizontal() + this->ordinal_width + this->icon.width + this->text_width + WidgetDimensions::scaled.hsep_wide;
|
||||
size->height = this->line_height * MAX_COMPANIES + WidgetDimensions::scaled.framerect.Vertical();
|
||||
size.width = WidgetDimensions::scaled.framerect.Horizontal() + this->ordinal_width + this->icon.width + this->text_width + WidgetDimensions::scaled.hsep_wide;
|
||||
size.height = this->line_height * MAX_COMPANIES + WidgetDimensions::scaled.framerect.Vertical();
|
||||
}
|
||||
|
||||
void OnGameTick() override
|
||||
@@ -359,7 +359,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_SLT_BACKGROUND) return;
|
||||
|
||||
@@ -385,18 +385,18 @@ public:
|
||||
if (!show_icon_column) this->icon_size.width = 0;
|
||||
else this->icon_size.width += WidgetDimensions::scaled.hsep_wide;
|
||||
|
||||
size->width = this->rank_width + this->icon_size.width + this->text_width + this->score_width + WidgetDimensions::scaled.framerect.Horizontal() + WidgetDimensions::scaled.hsep_wide * 2;
|
||||
size->height = this->line_height * std::max<uint>(3u, (unsigned)this->rows.size()) + WidgetDimensions::scaled.framerect.Vertical();
|
||||
size.width = this->rank_width + this->icon_size.width + this->text_width + this->score_width + WidgetDimensions::scaled.framerect.Horizontal() + WidgetDimensions::scaled.hsep_wide * 2;
|
||||
size.height = this->line_height * std::max<uint>(3u, (unsigned)this->rows.size()) + WidgetDimensions::scaled.framerect.Vertical();
|
||||
|
||||
if (!lt->header.empty()) {
|
||||
SetDParamStr(0, lt->header);
|
||||
this->header_height = GetStringHeight(STR_JUST_RAW_STRING, size->width - WidgetDimensions::scaled.framerect.Horizontal()) + WidgetDimensions::scaled.vsep_wide;
|
||||
size->height += header_height;
|
||||
this->header_height = GetStringHeight(STR_JUST_RAW_STRING, size.width - WidgetDimensions::scaled.framerect.Horizontal()) + WidgetDimensions::scaled.vsep_wide;
|
||||
size.height += header_height;
|
||||
} else this->header_height = 0;
|
||||
|
||||
if (!lt->footer.empty()) {
|
||||
SetDParamStr(0, lt->footer);
|
||||
size->height += GetStringHeight(STR_JUST_RAW_STRING, size->width - WidgetDimensions::scaled.framerect.Horizontal()) + WidgetDimensions::scaled.vsep_wide;
|
||||
size.height += GetStringHeight(STR_JUST_RAW_STRING, size.width - WidgetDimensions::scaled.framerect.Horizontal()) + WidgetDimensions::scaled.vsep_wide;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -840,7 +840,7 @@ void LinkGraphLegendWindow::SetOverlay(LinkGraphOverlay *overlay)
|
||||
}
|
||||
}
|
||||
|
||||
void LinkGraphLegendWindow::UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize)
|
||||
void LinkGraphLegendWindow::UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize)
|
||||
{
|
||||
if (IsInsideMM(widget, WID_LGL_SATURATION_FIRST, WID_LGL_SATURATION_LAST + 1)) {
|
||||
StringID str = STR_NULL;
|
||||
@@ -855,7 +855,7 @@ void LinkGraphLegendWindow::UpdateWidgetSize(WidgetID widget, Dimension *size, [
|
||||
Dimension dim = GetStringBoundingBox(str, FS_SMALL);
|
||||
dim.width += padding.width;
|
||||
dim.height += padding.height;
|
||||
*size = maxdim(*size, dim);
|
||||
size = maxdim(size, dim);
|
||||
}
|
||||
}
|
||||
if (IsInsideMM(widget, WID_LGL_CARGO_FIRST, WID_LGL_CARGO_LAST + 1)) {
|
||||
@@ -863,7 +863,7 @@ void LinkGraphLegendWindow::UpdateWidgetSize(WidgetID widget, Dimension *size, [
|
||||
Dimension dim = GetStringBoundingBox(cargo->abbrev, FS_SMALL);
|
||||
dim.width += padding.width;
|
||||
dim.height += padding.height;
|
||||
*size = maxdim(*size, dim);
|
||||
size = maxdim(size, dim);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -138,7 +138,7 @@ public:
|
||||
LinkGraphLegendWindow(WindowDesc *desc, int window_number);
|
||||
void SetOverlay(LinkGraphOverlay *overlay);
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override;
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override;
|
||||
void DrawWidget(const Rect &r, WidgetID widget) const override;
|
||||
bool OnTooltip([[maybe_unused]] Point pt, WidgetID widget, TooltipCloseCondition close_cond) override;
|
||||
void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override;
|
||||
|
@@ -90,23 +90,23 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_LI_BACKGROUND) return;
|
||||
|
||||
size->height = WidgetDimensions::scaled.frametext.Vertical();
|
||||
size.height = WidgetDimensions::scaled.frametext.Vertical();
|
||||
for (size_t i = 0; i < this->landinfo_data.size(); i++) {
|
||||
uint width = GetStringBoundingBox(this->landinfo_data[i]).width + WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size->width = std::max(size->width, width);
|
||||
size.width = std::max(size.width, width);
|
||||
|
||||
size->height += GetCharacterHeight(FS_NORMAL) + (i == 0 ? WidgetDimensions::scaled.vsep_wide : WidgetDimensions::scaled.vsep_normal);
|
||||
size.height += GetCharacterHeight(FS_NORMAL) + (i == 0 ? WidgetDimensions::scaled.vsep_wide : WidgetDimensions::scaled.vsep_normal);
|
||||
}
|
||||
|
||||
if (!this->cargo_acceptance.empty()) {
|
||||
uint width = GetStringBoundingBox(this->cargo_acceptance).width + WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size->width = std::max(size->width, std::min(static_cast<uint>(ScaleGUITrad(300)), width));
|
||||
size.width = std::max(size.width, std::min(static_cast<uint>(ScaleGUITrad(300)), width));
|
||||
SetDParamStr(0, cargo_acceptance);
|
||||
size->height += GetStringHeight(STR_JUST_RAW_STRING, size->width - WidgetDimensions::scaled.frametext.Horizontal());
|
||||
size.height += GetStringHeight(STR_JUST_RAW_STRING, size.width - WidgetDimensions::scaled.frametext.Horizontal());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -441,7 +441,7 @@ static WindowDesc _about_desc(__FILE__, __LINE__,
|
||||
std::begin(_nested_about_widgets), std::end(_nested_about_widgets)
|
||||
);
|
||||
|
||||
static const char * const _credits[] = {
|
||||
static const std::initializer_list<const std::string_view> _credits = {
|
||||
"Original design by Chris Sawyer",
|
||||
"Original graphics by Simon Foster",
|
||||
"",
|
||||
@@ -533,7 +533,7 @@ struct AboutWindow : public Window {
|
||||
if (widget == WID_A_COPYRIGHT) SetDParamStr(0, _openttd_revision_year);
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_A_SCROLLING_TEXT) return;
|
||||
|
||||
@@ -543,10 +543,10 @@ struct AboutWindow : public Window {
|
||||
d.height = this->line_height * num_visible_lines;
|
||||
|
||||
d.width = 0;
|
||||
for (uint i = 0; i < lengthof(_credits); i++) {
|
||||
d.width = std::max(d.width, GetStringBoundingBox(_credits[i]).width);
|
||||
for (const auto &str : _credits) {
|
||||
d.width = std::max(d.width, GetStringBoundingBox(str).width);
|
||||
}
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
|
||||
/* Set scroll interval based on required speed. To keep scrolling smooth,
|
||||
* the interval is adjusted rather than the distance moved. */
|
||||
@@ -560,9 +560,9 @@ struct AboutWindow : public Window {
|
||||
int y = this->text_position;
|
||||
|
||||
/* Show all scrolling _credits */
|
||||
for (uint i = 0; i < lengthof(_credits); i++) {
|
||||
for (const auto &str : _credits) {
|
||||
if (y >= r.top + 7 && y < r.bottom - this->line_height) {
|
||||
DrawString(r.left, r.right, y, _credits[i], TC_BLACK, SA_LEFT | SA_FORCE);
|
||||
DrawString(r.left, r.right, y, str, TC_BLACK, SA_LEFT | SA_FORCE);
|
||||
}
|
||||
y += this->line_height;
|
||||
}
|
||||
@@ -574,7 +574,7 @@ struct AboutWindow : public Window {
|
||||
if (count > 0) {
|
||||
this->text_position -= count;
|
||||
/* If the last text has scrolled start a new from the start */
|
||||
if (this->text_position < (int)(this->GetWidget<NWidgetBase>(WID_A_SCROLLING_TEXT)->pos_y - lengthof(_credits) * this->line_height)) {
|
||||
if (this->text_position < (int)(this->GetWidget<NWidgetBase>(WID_A_SCROLLING_TEXT)->pos_y - std::size(_credits) * this->line_height)) {
|
||||
this->text_position = this->GetWidget<NWidgetBase>(WID_A_SCROLLING_TEXT)->pos_y + this->GetWidget<NWidgetBase>(WID_A_SCROLLING_TEXT)->current_y;
|
||||
}
|
||||
this->SetWidgetDirty(WID_A_SCROLLING_TEXT);
|
||||
@@ -755,21 +755,21 @@ struct TooltipsWindow : public Window
|
||||
return pt;
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_TT_BACKGROUND) return;
|
||||
if (this->params.size() == 0) {
|
||||
size->width = std::min<uint>(GetStringBoundingBox(this->buffer).width, ScaleGUITrad(194));
|
||||
size->height = GetStringHeight(this->buffer, size->width);
|
||||
size.width = std::min<uint>(GetStringBoundingBox(this->buffer).width, ScaleGUITrad(194));
|
||||
size.height = GetStringHeight(this->buffer, size.width);
|
||||
} else {
|
||||
CopyInDParam(this->params);
|
||||
size->width = std::min<uint>(GetStringBoundingBox(this->string_id).width, ScaleGUITrad(194));
|
||||
size->height = GetStringHeight(this->string_id, size->width);
|
||||
size.width = std::min<uint>(GetStringBoundingBox(this->string_id).width, ScaleGUITrad(194));
|
||||
size.height = GetStringHeight(this->string_id, size.width);
|
||||
}
|
||||
|
||||
/* Increase slightly to have some space around the box. */
|
||||
size->width += WidgetDimensions::scaled.framerect.Horizontal() + WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||
size->height += WidgetDimensions::scaled.framerect.Vertical() + WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
size.width += WidgetDimensions::scaled.framerect.Horizontal() + WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||
size.height += WidgetDimensions::scaled.framerect.Vertical() + WidgetDimensions::scaled.fullbevel.Vertical();
|
||||
}
|
||||
|
||||
void DrawWidget(const Rect &r, WidgetID widget) const override
|
||||
@@ -1061,17 +1061,17 @@ struct QueryStringWindow : public Window
|
||||
this->ReInit();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget == WID_QS_DEFAULT && (this->flags & QSF_ENABLE_DEFAULT) == 0) {
|
||||
/* We don't want this widget to show! */
|
||||
fill->width = 0;
|
||||
resize->width = 0;
|
||||
size->width = 0;
|
||||
fill.width = 0;
|
||||
resize.width = 0;
|
||||
size.width = 0;
|
||||
}
|
||||
|
||||
if (widget == WID_QS_WARNING) {
|
||||
*size = this->warning_size;
|
||||
size = this->warning_size;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1241,13 +1241,13 @@ struct QueryWindow : public Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget != WID_Q_TEXT) return;
|
||||
|
||||
if (!this->precomposed) this->message_str = GetString(this->message);
|
||||
|
||||
*size = GetStringMultiLineBoundingBox(this->message_str, *size);
|
||||
size = GetStringMultiLineBoundingBox(this->message_str, size);
|
||||
}
|
||||
|
||||
void DrawWidget(const Rect &r, WidgetID widget) const override
|
||||
|
@@ -526,7 +526,7 @@ struct MusicTrackSelectionWindow : public Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_MTS_PLAYLIST: {
|
||||
@@ -538,7 +538,7 @@ struct MusicTrackSelectionWindow : public Window {
|
||||
}
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -555,7 +555,7 @@ struct MusicTrackSelectionWindow : public Window {
|
||||
}
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -708,7 +708,7 @@ struct MusicWindow : public Window {
|
||||
);
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
/* Make sure that WID_M_SHUFFLE and WID_M_PROGRAMME have the same size.
|
||||
@@ -718,7 +718,7 @@ struct MusicWindow : public Window {
|
||||
Dimension d = maxdim(GetStringBoundingBox(STR_MUSIC_PROGRAM), GetStringBoundingBox(STR_MUSIC_SHUFFLE));
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -726,7 +726,7 @@ struct MusicWindow : public Window {
|
||||
Dimension d = GetStringBoundingBox(STR_MUSIC_TRACK_NONE);
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -738,7 +738,7 @@ struct MusicWindow : public Window {
|
||||
}
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
size = maxdim(size, d);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -170,7 +170,7 @@ const NetworkServerGameInfo &GetCurrentNetworkServerGameInfo()
|
||||
* @param config The GRF to handle.
|
||||
* @param name The name of the NewGRF, empty when unknown.
|
||||
*/
|
||||
static void HandleIncomingNetworkGameInfoGRFConfig(GRFConfig *config, std::string name)
|
||||
static void HandleIncomingNetworkGameInfoGRFConfig(GRFConfig *config, std::string_view name)
|
||||
{
|
||||
/* Find the matching GRF file */
|
||||
const GRFConfig *f = FindGRFConfig(config->ident.grfid, FGCM_EXACT, &config->ident.md5sum);
|
||||
|
@@ -117,21 +117,21 @@ void BaseNetworkContentDownloadStatusWindow::Close([[maybe_unused]] int data)
|
||||
this->Window::Close();
|
||||
}
|
||||
|
||||
void BaseNetworkContentDownloadStatusWindow::UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize)
|
||||
void BaseNetworkContentDownloadStatusWindow::UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize)
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_NCDS_PROGRESS_BAR:
|
||||
SetDParamMaxDigits(0, 8);
|
||||
SetDParamMaxDigits(1, 8);
|
||||
SetDParamMaxDigits(2, 8);
|
||||
*size = GetStringBoundingBox(STR_CONTENT_DOWNLOAD_PROGRESS_SIZE);
|
||||
size = GetStringBoundingBox(STR_CONTENT_DOWNLOAD_PROGRESS_SIZE);
|
||||
/* We need some spacing for the 'border' */
|
||||
size->height += WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size->width += WidgetDimensions::scaled.frametext.Vertical();
|
||||
size.height += WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size.width += WidgetDimensions::scaled.frametext.Vertical();
|
||||
break;
|
||||
|
||||
case WID_NCDS_PROGRESS_TEXT:
|
||||
size->height = GetCharacterHeight(FS_NORMAL) * 2 + WidgetDimensions::scaled.vsep_normal;
|
||||
size.height = GetCharacterHeight(FS_NORMAL) * 2 + WidgetDimensions::scaled.vsep_normal;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -589,25 +589,25 @@ public:
|
||||
this->checkbox_size = maxdim(maxdim(GetSpriteSize(SPR_BOX_EMPTY), GetSpriteSize(SPR_BOX_CHECKED)), GetSpriteSize(SPR_BLOT));
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_NCL_CHECKBOX:
|
||||
size->width = this->checkbox_size.width + padding.width;
|
||||
size.width = this->checkbox_size.width + padding.width;
|
||||
break;
|
||||
|
||||
case WID_NCL_TYPE: {
|
||||
Dimension d = *size;
|
||||
Dimension d = size;
|
||||
for (int i = CONTENT_TYPE_BEGIN; i < CONTENT_TYPE_END; i++) {
|
||||
d = maxdim(d, GetStringBoundingBox(STR_CONTENT_TYPE_BASE_GRAPHICS + i - CONTENT_TYPE_BASE_GRAPHICS));
|
||||
}
|
||||
size->width = d.width + padding.width;
|
||||
size.width = d.width + padding.width;
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_NCL_MATRIX:
|
||||
resize->height = std::max(this->checkbox_size.height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height;
|
||||
size->height = 10 * resize->height;
|
||||
resize.height = std::max(this->checkbox_size.height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height;
|
||||
size.height = 10 * resize.height;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -33,7 +33,7 @@ public:
|
||||
BaseNetworkContentDownloadStatusWindow(WindowDesc *desc);
|
||||
|
||||
void Close([[maybe_unused]] int data = 0) override;
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override;
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override;
|
||||
void DrawWidget(const Rect &r, WidgetID widget) const override;
|
||||
void OnDownloadProgress(const ContentInfo *ci, int bytes) override;
|
||||
};
|
||||
|
@@ -484,48 +484,48 @@ public:
|
||||
this->flag_offset = this->blot_offset + ScaleGUITrad(2) + GetSpriteSize(SPR_BLOT).width;
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_NG_MATRIX:
|
||||
resize->height = std::max(GetSpriteSize(SPR_BLOT).height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height;
|
||||
fill->height = resize->height;
|
||||
size->height = 12 * resize->height;
|
||||
resize.height = std::max(GetSpriteSize(SPR_BLOT).height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height;
|
||||
fill.height = resize.height;
|
||||
size.height = 12 * resize.height;
|
||||
break;
|
||||
|
||||
case WID_NG_LASTJOINED:
|
||||
size->height = std::max(GetSpriteSize(SPR_BLOT).height, (uint)GetCharacterHeight(FS_NORMAL)) + WidgetDimensions::scaled.matrix.Vertical();
|
||||
size.height = std::max(GetSpriteSize(SPR_BLOT).height, (uint)GetCharacterHeight(FS_NORMAL)) + WidgetDimensions::scaled.matrix.Vertical();
|
||||
break;
|
||||
|
||||
case WID_NG_LASTJOINED_SPACER:
|
||||
size->width = NWidgetScrollbar::GetVerticalDimension().width;
|
||||
size.width = NWidgetScrollbar::GetVerticalDimension().width;
|
||||
break;
|
||||
|
||||
case WID_NG_NAME:
|
||||
size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow
|
||||
size.width += 2 * Window::SortButtonWidth(); // Make space for the arrow
|
||||
break;
|
||||
|
||||
case WID_NG_CLIENTS:
|
||||
size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow
|
||||
size.width += 2 * Window::SortButtonWidth(); // Make space for the arrow
|
||||
SetDParamMaxValue(0, MAX_CLIENTS);
|
||||
SetDParamMaxValue(1, MAX_CLIENTS);
|
||||
SetDParamMaxValue(2, MAX_COMPANIES);
|
||||
SetDParamMaxValue(3, MAX_COMPANIES);
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_SERVER_LIST_GENERAL_ONLINE));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_NETWORK_SERVER_LIST_GENERAL_ONLINE));
|
||||
break;
|
||||
|
||||
case WID_NG_MAPSIZE:
|
||||
size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow
|
||||
size.width += 2 * Window::SortButtonWidth(); // Make space for the arrow
|
||||
SetDParamMaxValue(0, MAX_MAP_SIZE);
|
||||
SetDParamMaxValue(1, MAX_MAP_SIZE);
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT));
|
||||
break;
|
||||
|
||||
case WID_NG_DATE:
|
||||
case WID_NG_YEARS:
|
||||
size->width += 2 * Window::SortButtonWidth(); // Make space for the arrow
|
||||
size.width += 2 * Window::SortButtonWidth(); // Make space for the arrow
|
||||
SetDParamMaxValue(0, 5);
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_JUST_INT));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1021,13 +1021,13 @@ struct NetworkStartServerWindow : public Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_NSS_CONNTYPE_BTN:
|
||||
*size = maxdim(maxdim(GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_LOCAL), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_PUBLIC)), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY));
|
||||
size->width += padding.width;
|
||||
size->height += padding.height;
|
||||
size = maxdim(maxdim(GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_LOCAL), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_PUBLIC)), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY));
|
||||
size.width += padding.width;
|
||||
size.height += padding.height;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1684,7 +1684,7 @@ public:
|
||||
this->SetWidgetDisabledState(WID_CL_SERVER_NAME_EDIT, !_network_server);
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_CL_SERVER_NAME:
|
||||
@@ -1695,14 +1695,14 @@ public:
|
||||
const NetworkClientInfo *own_ci = NetworkClientInfo::GetByClientID(_network_own_client_id);
|
||||
SetDParamStr(0, own_ci != nullptr ? own_ci->client_name : _settings_client.network.client_name);
|
||||
}
|
||||
*size = GetStringBoundingBox(STR_JUST_RAW_STRING);
|
||||
size->width = std::min(size->width, static_cast<uint>(ScaleGUITrad(200))); // By default, don't open the window too wide.
|
||||
size = GetStringBoundingBox(STR_JUST_RAW_STRING);
|
||||
size.width = std::min(size.width, static_cast<uint>(ScaleGUITrad(200))); // By default, don't open the window too wide.
|
||||
break;
|
||||
|
||||
case WID_CL_SERVER_VISIBILITY:
|
||||
*size = maxdim(maxdim(GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_LOCAL), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_PUBLIC)), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY));
|
||||
size->width += padding.width;
|
||||
size->height += padding.height;
|
||||
size = maxdim(maxdim(GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_LOCAL), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_PUBLIC)), GetStringBoundingBox(STR_NETWORK_SERVER_VISIBILITY_INVITE_ONLY));
|
||||
size.width += padding.width;
|
||||
size.height += padding.height;
|
||||
break;
|
||||
|
||||
case WID_CL_MATRIX: {
|
||||
@@ -1710,10 +1710,10 @@ public:
|
||||
height += WidgetDimensions::scaled.framerect.Vertical();
|
||||
this->line_height = std::max(height, (uint)GetCharacterHeight(FS_NORMAL)) + padding.height;
|
||||
|
||||
resize->width = 1;
|
||||
resize->height = this->line_height;
|
||||
fill->height = this->line_height;
|
||||
size->height = std::max(size->height, 5 * this->line_height);
|
||||
resize.width = 1;
|
||||
resize.height = this->line_height;
|
||||
fill.height = this->line_height;
|
||||
size.height = std::max(size.height, 5 * this->line_height);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2173,28 +2173,28 @@ struct NetworkJoinStatusWindow : Window {
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_NJS_PROGRESS_BAR:
|
||||
/* Account for the statuses */
|
||||
for (uint i = 0; i < NETWORK_JOIN_STATUS_END; i++) {
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_CONNECTING_1 + i));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_NETWORK_CONNECTING_1 + i));
|
||||
}
|
||||
/* For the number of waiting (other) players */
|
||||
SetDParamMaxValue(0, MAX_CLIENTS);
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_CONNECTING_WAITING));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_NETWORK_CONNECTING_WAITING));
|
||||
/* We need some spacing for the 'border' */
|
||||
size->height += WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size->width += WidgetDimensions::scaled.frametext.Vertical();
|
||||
size.height += WidgetDimensions::scaled.frametext.Horizontal();
|
||||
size.width += WidgetDimensions::scaled.frametext.Vertical();
|
||||
break;
|
||||
|
||||
case WID_NJS_PROGRESS_TEXT:
|
||||
/* Account for downloading ~ 10 MiB */
|
||||
SetDParamMaxDigits(0, 8);
|
||||
SetDParamMaxDigits(1, 8);
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_CONNECTING_DOWNLOADING_1));
|
||||
*size = maxdim(*size, GetStringBoundingBox(STR_NETWORK_CONNECTING_DOWNLOADING_1));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_NETWORK_CONNECTING_DOWNLOADING_1));
|
||||
size = maxdim(size, GetStringBoundingBox(STR_NETWORK_CONNECTING_DOWNLOADING_1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2245,7 +2245,7 @@ void ShowJoinStatusWindow()
|
||||
|
||||
void ShowNetworkNeedPassword(NetworkPasswordType npt, std::shared_ptr<NetworkAuthenticationPasswordRequest> request)
|
||||
{
|
||||
NetworkJoinStatusWindow *w = (NetworkJoinStatusWindow *)FindWindowById(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN);
|
||||
NetworkJoinStatusWindow *w = dynamic_cast<NetworkJoinStatusWindow *>(FindWindowById(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN));
|
||||
if (w == nullptr) return;
|
||||
w->request = request;
|
||||
|
||||
@@ -2381,10 +2381,10 @@ struct NetworkAskRelayWindow : public Window {
|
||||
this->Window::Close();
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget == WID_NAR_TEXT) {
|
||||
*size = GetStringBoundingBox(STR_NETWORK_ASK_RELAY_TEXT);
|
||||
size = GetStringBoundingBox(STR_NETWORK_ASK_RELAY_TEXT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2484,10 +2484,10 @@ struct NetworkAskSurveyWindow : public Window {
|
||||
this->InitNested(0);
|
||||
}
|
||||
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
|
||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
|
||||
{
|
||||
if (widget == WID_NAS_TEXT) {
|
||||
*size = GetStringBoundingBox(STR_NETWORK_ASK_SURVEY_TEXT);
|
||||
size = GetStringBoundingBox(STR_NETWORK_ASK_SURVEY_TEXT);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -11,6 +11,8 @@
|
||||
#define NETWORK_TYPE_H
|
||||
|
||||
#include "../core/enum_type.hpp"
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
/** How many clients can we have */
|
||||
static const uint MAX_CLIENTS = 255;
|
||||
|
608
src/newgrf.cpp
608
src/newgrf.cpp
File diff suppressed because it is too large
Load Diff
19
src/newgrf.h
19
src/newgrf.h
@@ -15,6 +15,7 @@
|
||||
#include "road_type.h"
|
||||
#include "fileio_type.h"
|
||||
#include "debug.h"
|
||||
#include "newgrf_act5.h"
|
||||
#include "core/bitmath_func.hpp"
|
||||
#include "core/alloc_type.hpp"
|
||||
#include "core/mem_func.hpp"
|
||||
@@ -237,21 +238,6 @@ struct GRFVariableMapEntry {
|
||||
uint32_t output_param = 0;
|
||||
};
|
||||
|
||||
/** The type of action 5 type. */
|
||||
enum Action5BlockType {
|
||||
A5BLOCK_FIXED, ///< Only allow replacing a whole block of sprites. (TTDP compatible)
|
||||
A5BLOCK_ALLOW_OFFSET, ///< Allow replacing any subset by specifiing an offset.
|
||||
A5BLOCK_INVALID, ///< unknown/not-implemented type
|
||||
};
|
||||
/** Information about a single action 5 type. */
|
||||
struct Action5Type {
|
||||
Action5BlockType block_type; ///< How is this Action5 type processed?
|
||||
SpriteID sprite_base; ///< Load the sprites starting from this sprite.
|
||||
uint16_t min_sprites; ///< If the Action5 contains less sprites, the whole block will be ignored.
|
||||
uint16_t max_sprites; ///< If the Action5 contains more sprites, only the first max_sprites sprites will be used.
|
||||
const char *name; ///< Name for error messages.
|
||||
};
|
||||
|
||||
struct Action5TypeRemapDefinition {
|
||||
const char *name; // nullptr indicates the end of the list
|
||||
const Action5Type info;
|
||||
@@ -450,6 +436,9 @@ void ResetPersistentNewGRFData();
|
||||
#define grfmsg(severity, ...) if ((severity) == 0 || _debug_grf_level >= (severity)) _intl_grfmsg(severity, __VA_ARGS__)
|
||||
void CDECL _intl_grfmsg(int severity, const char *str, ...) WARN_FORMAT(2, 3);
|
||||
|
||||
void GrfMsgI(int severity, const std::string &msg);
|
||||
#define GrfMsg(severity, format_string, ...) GrfMsgI(severity, fmt::format(FMT_STRING(format_string), ## __VA_ARGS__))
|
||||
|
||||
bool GetGlobalVariable(uint8_t param, uint32_t *value, const GRFFile *grffile);
|
||||
|
||||
StringID MapGRFStringID(uint32_t grfid, StringID str);
|
||||
|
31
src/newgrf_act5.h
Normal file
31
src/newgrf_act5.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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 newgrf_act5.h Information about NewGRF Action 5. */
|
||||
|
||||
#ifndef NEWGRF_ACT5_H
|
||||
#define NEWGRF_ACT5_H
|
||||
|
||||
/** The type of action 5 type. */
|
||||
enum Action5BlockType {
|
||||
A5BLOCK_FIXED, ///< Only allow replacing a whole block of sprites. (TTDP compatible)
|
||||
A5BLOCK_ALLOW_OFFSET, ///< Allow replacing any subset by specifiing an offset.
|
||||
A5BLOCK_INVALID, ///< unknown/not-implemented type
|
||||
};
|
||||
|
||||
/** Information about a single action 5 type. */
|
||||
struct Action5Type {
|
||||
Action5BlockType block_type; ///< How is this Action5 type processed?
|
||||
SpriteID sprite_base; ///< Load the sprites starting from this sprite.
|
||||
uint16_t min_sprites; ///< If the Action5 contains less sprites, the whole block will be ignored.
|
||||
uint16_t max_sprites; ///< If the Action5 contains more sprites, only the first max_sprites sprites will be used.
|
||||
const char *name; ///< Name for error messages.
|
||||
};
|
||||
|
||||
std::span<const Action5Type> GetAction5Types();
|
||||
|
||||
#endif /* NEWGRF_ACT5_H */
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user