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:
Jonathan G Rennison
2024-05-31 18:43:32 +01:00
148 changed files with 1821 additions and 1696 deletions

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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),
@@ -106,7 +106,7 @@ struct DebugLevel {
DEBUG_LEVEL(random),
DEBUG_LEVEL(statecsum),
#endif
};
};
#undef DEBUG_LEVEL
/**
@@ -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);
}
if (length > 0) {
buf = strecpy(buf, "\n\n", last);
buf = strecpy(buf, debug_level.name, last);
written = true;
}
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;
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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 */

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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()));
}
/**

View File

@@ -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;
}
}

View File

@@ -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
{
std::string cargostring;
size_t firstcargo = cargolistlen;
assert(cargolist.size() == cargo_suffix.size());
size_t j = 0;
for (; j < cargolistlen; j++) {
if (cargolist[j] == INVALID_CARGO) continue;
if (firstcargo == cargolistlen) {
std::string cargostring;
size_t numcargo = 0;
size_t firstcargo;
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;
}
}

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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}اذهب الى العفريتة

View File

@@ -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

View File

@@ -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}Перайсьці да спрайта

View File

@@ -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}

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}

View File

@@ -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}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}

View File

@@ -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}דלג לספרייט

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}スプライトへ飛ぶ

View File

@@ -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}스프라이트 번호 입력

View File

@@ -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

View File

@@ -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 2831 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 2831 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 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}

View File

@@ -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į

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}رفتن به تصویر

View File

@@ -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}

View File

@@ -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}

View File

@@ -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

View File

@@ -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}Перейти к спрайту

View File

@@ -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

View File

@@ -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}对齐中的 SpriteAction 0xA, {COMMA} ({STRING}:{NUM})
STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}下一个 sprite
STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}继续处理下个正常的图形元素,略过任何虚位/重新着色/文字字型相关的图形元素;并且在处理到最后的图形元素后,返回第一个图形元素继续处理。
STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}前往 sprite

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}முந்தைய ஸ்பிரைட்டு

View File

@@ -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

View File

@@ -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}前往子畫面

View File

@@ -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

View File

@@ -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}... літак не може летіти так далеко

View File

@@ -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 کی طرف جائیے

View File

@@ -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

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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;
};

View File

@@ -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);
}
}

View File

@@ -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;

File diff suppressed because it is too large Load Diff

View File

@@ -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
View 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