mirror of https://github.com/OpenTTD/OpenTTD
Compare commits
6 Commits
32634270b0
...
c6cbcc699d
Author | SHA1 | Date |
---|---|---|
|
c6cbcc699d | |
|
ae917cb8c6 | |
|
47d8f72205 | |
|
ef4514862b | |
|
621d7cc44d | |
|
ce6bc21641 |
|
@ -493,7 +493,7 @@ public:
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_AP_CLASS_DROPDOWN:
|
case WID_AP_CLASS_DROPDOWN:
|
||||||
ShowDropDownList(this, BuildAirportClassDropDown(), _selected_airport_class, WID_AP_CLASS_DROPDOWN);
|
this->HandleDropdownListButtonClick(BuildAirportClassDropDown(), _selected_airport_class, WID_AP_CLASS_DROPDOWN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_AP_AIRPORT_LIST: {
|
case WID_AP_AIRPORT_LIST: {
|
||||||
|
|
|
@ -534,16 +534,16 @@ public:
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
list.push_back(MakeDropDownListStringItem(STR_REPLACE_ENGINES, 1));
|
list.push_back(MakeDropDownListStringItem(STR_REPLACE_ENGINES, 1));
|
||||||
list.push_back(MakeDropDownListStringItem(STR_REPLACE_WAGONS, 0));
|
list.push_back(MakeDropDownListStringItem(STR_REPLACE_WAGONS, 0));
|
||||||
ShowDropDownList(this, std::move(list), this->replace_engines ? 1 : 0, WID_RV_TRAIN_ENGINEWAGON_DROPDOWN);
|
this->HandleDropdownListButtonClick(std::move(list), this->replace_engines ? 1 : 0, WID_RV_TRAIN_ENGINEWAGON_DROPDOWN);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case WID_RV_RAIL_TYPE_DROPDOWN: // Railtype selection dropdown menu
|
case WID_RV_RAIL_TYPE_DROPDOWN: // Railtype selection dropdown menu
|
||||||
ShowDropDownList(this, GetRailTypeDropDownList(true, true), this->sel_railtype, widget);
|
this->HandleDropdownListButtonClick(GetRailTypeDropDownList(true, true), this->sel_railtype, widget);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_RV_ROAD_TYPE_DROPDOWN: // Roadtype selection dropdown menu
|
case WID_RV_ROAD_TYPE_DROPDOWN: // Roadtype selection dropdown menu
|
||||||
ShowDropDownList(this, GetRoadTypeDropDownList(RTTB_ROAD | RTTB_TRAM, true, true), this->sel_roadtype, widget);
|
this->HandleDropdownListButtonClick(GetRoadTypeDropDownList(RTTB_ROAD | RTTB_TRAM, true, true), this->sel_roadtype, widget);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: {
|
case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: {
|
||||||
|
@ -563,7 +563,7 @@ public:
|
||||||
ReplaceClick_StartReplace(false);
|
ReplaceClick_StartReplace(false);
|
||||||
} else {
|
} else {
|
||||||
bool replacment_when_old = EngineHasReplacementWhenOldForCompany(Company::Get(_local_company), this->sel_engine[0], this->sel_group);
|
bool replacment_when_old = EngineHasReplacementWhenOldForCompany(Company::Get(_local_company), this->sel_engine[0], this->sel_group);
|
||||||
ShowDropDownMenu(this, _start_replace_dropdown, replacment_when_old ? 1 : 0, WID_RV_START_REPLACE, !this->replace_engines ? 1 << 1 : 0, 0);
|
this->HandleDropdownMenuButtonClick(_start_replace_dropdown, replacment_when_old ? 1 : 0, WID_RV_START_REPLACE, !this->replace_engines ? 1 << 1 : 0, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -278,7 +278,7 @@ public:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_BBS_DROPDOWN_CRITERIA:
|
case WID_BBS_DROPDOWN_CRITERIA:
|
||||||
ShowDropDownMenu(this, BuildBridgeWindow::sorter_names, this->bridges.SortType(), WID_BBS_DROPDOWN_CRITERIA, 0, 0);
|
this->HandleDropdownMenuButtonClick(BuildBridgeWindow::sorter_names, this->bridges.SortType(), WID_BBS_DROPDOWN_CRITERIA, 0, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1675,12 +1675,12 @@ struct BuildVehicleWindow : Window {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_BV_CARGO_FILTER_DROPDOWN: // Select cargo filtering criteria dropdown menu
|
case WID_BV_CARGO_FILTER_DROPDOWN: // Select cargo filtering criteria dropdown menu
|
||||||
ShowDropDownList(this, this->BuildCargoDropDownList(), this->cargo_filter_criteria, widget);
|
this->HandleDropdownListButtonClick(this->BuildCargoDropDownList(), this->cargo_filter_criteria, widget);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_BV_CONFIGURE_BADGES:
|
case WID_BV_CONFIGURE_BADGES:
|
||||||
if (this->badge_classes.GetClasses().empty()) break;
|
if (this->badge_classes.GetClasses().empty()) break;
|
||||||
ShowDropDownList(this, this->BuildBadgeConfigurationList(), -1, widget, 0, false, true);
|
this->HandleDropdownListButtonClick(this->BuildBadgeConfigurationList(), -1, widget, 0, false, true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_BV_SHOW_HIDE: {
|
case WID_BV_SHOW_HIDE: {
|
||||||
|
@ -1706,7 +1706,7 @@ struct BuildVehicleWindow : Window {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (IsInsideMM(widget, this->badge_filters.first, this->badge_filters.second)) {
|
if (IsInsideMM(widget, this->badge_filters.first, this->badge_filters.second)) {
|
||||||
ShowDropDownList(this, this->GetWidget<NWidgetBadgeFilter>(widget)->GetDropDownList(), -1, widget, 0, false);
|
this->HandleDropdownListButtonClick(this->GetWidget<NWidgetBadgeFilter>(widget)->GetDropDownList(), -1, widget, 0, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -660,7 +660,7 @@ private:
|
||||||
} else {
|
} else {
|
||||||
sel = default_col;
|
sel = default_col;
|
||||||
}
|
}
|
||||||
ShowDropDownList(this, std::move(list), sel, widget);
|
this->HandleDropdownListButtonClick(std::move(list), sel, widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BuildGroupList(CompanyID owner)
|
void BuildGroupList(CompanyID owner)
|
||||||
|
|
|
@ -96,7 +96,7 @@ struct SetDateWindow : Window {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowDropDownList(this, std::move(list), selected, widget);
|
this->HandleDropdownListButtonClick(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
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "depot_base.h"
|
#include "depot_base.h"
|
||||||
#include "spritecache.h"
|
#include "spritecache.h"
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
|
#include "sound_func.h"
|
||||||
#include "vehicle_func.h"
|
#include "vehicle_func.h"
|
||||||
#include "company_func.h"
|
#include "company_func.h"
|
||||||
#include "tilehighlight_func.h"
|
#include "tilehighlight_func.h"
|
||||||
|
@ -815,6 +816,8 @@ struct DepotWindow : Window {
|
||||||
} else {
|
} else {
|
||||||
ResetObjectToPlace();
|
ResetObjectToPlace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_D_LOCATION:
|
case WID_D_LOCATION:
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
#include "gfx_func.h"
|
#include "gfx_func.h"
|
||||||
#include "gfx_type.h"
|
#include "gfx_type.h"
|
||||||
#include "palette_func.h"
|
#include "palette_func.h"
|
||||||
#include "window_gui.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base list item class from which others are derived.
|
* Base list item class from which others are derived.
|
||||||
|
|
|
@ -654,26 +654,27 @@ struct GenerateLandscapeWindow : public Window {
|
||||||
case WID_GL_TROPICAL:
|
case WID_GL_TROPICAL:
|
||||||
case WID_GL_TOYLAND:
|
case WID_GL_TOYLAND:
|
||||||
SetNewLandscapeType(LandscapeType(widget - WID_GL_TEMPERATE));
|
SetNewLandscapeType(LandscapeType(widget - WID_GL_TEMPERATE));
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_MAPSIZE_X_PULLDOWN: // Mapsize X
|
case WID_GL_MAPSIZE_X_PULLDOWN: // Mapsize X
|
||||||
ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_x, WID_GL_MAPSIZE_X_PULLDOWN);
|
this->HandleDropdownListButtonClick(BuildMapsizeDropDown(), _settings_newgame.game_creation.map_x, WID_GL_MAPSIZE_X_PULLDOWN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_MAPSIZE_Y_PULLDOWN: // Mapsize Y
|
case WID_GL_MAPSIZE_Y_PULLDOWN: // Mapsize Y
|
||||||
ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_y, WID_GL_MAPSIZE_Y_PULLDOWN);
|
this->HandleDropdownListButtonClick(BuildMapsizeDropDown(), _settings_newgame.game_creation.map_y, WID_GL_MAPSIZE_Y_PULLDOWN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_TOWN_PULLDOWN: // Number of towns
|
case WID_GL_TOWN_PULLDOWN: // Number of towns
|
||||||
ShowDropDownMenu(this, _num_towns, _settings_newgame.difficulty.number_towns, WID_GL_TOWN_PULLDOWN, 0, 0);
|
this->HandleDropdownMenuButtonClick(_num_towns, _settings_newgame.difficulty.number_towns, WID_GL_TOWN_PULLDOWN, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_TOWNNAME_DROPDOWN: // Townname generator
|
case WID_GL_TOWNNAME_DROPDOWN: // Townname generator
|
||||||
ShowDropDownList(this, BuildTownNameDropDown(), _settings_newgame.game_creation.town_name, WID_GL_TOWNNAME_DROPDOWN);
|
this->HandleDropdownListButtonClick(BuildTownNameDropDown(), _settings_newgame.game_creation.town_name, WID_GL_TOWNNAME_DROPDOWN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_INDUSTRY_PULLDOWN: // Number of industries
|
case WID_GL_INDUSTRY_PULLDOWN: // Number of industries
|
||||||
ShowDropDownMenu(this, _num_inds, _settings_newgame.difficulty.industry_density, WID_GL_INDUSTRY_PULLDOWN, 0, 0);
|
this->HandleDropdownMenuButtonClick(_num_inds, _settings_newgame.difficulty.industry_density, WID_GL_INDUSTRY_PULLDOWN, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_GENERATE_BUTTON: { // Generate
|
case WID_GL_GENERATE_BUTTON: { // Generate
|
||||||
|
@ -718,6 +719,7 @@ struct GenerateLandscapeWindow : public Window {
|
||||||
case WID_GL_HEIGHTMAP_HEIGHT_TEXT: // Height level text
|
case WID_GL_HEIGHTMAP_HEIGHT_TEXT: // Height level text
|
||||||
this->widget_id = WID_GL_HEIGHTMAP_HEIGHT_TEXT;
|
this->widget_id = WID_GL_HEIGHTMAP_HEIGHT_TEXT;
|
||||||
ShowQueryString(GetString(STR_JUST_INT, _settings_newgame.game_creation.heightmap_height), STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT, 4, this, CS_NUMERAL, QueryStringFlag::EnableDefault);
|
ShowQueryString(GetString(STR_JUST_INT, _settings_newgame.game_creation.heightmap_height), STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT, 4, this, CS_NUMERAL, QueryStringFlag::EnableDefault);
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
@ -753,6 +755,7 @@ struct GenerateLandscapeWindow : public Window {
|
||||||
case WID_GL_SNOW_COVERAGE_TEXT: // Snow coverage text
|
case WID_GL_SNOW_COVERAGE_TEXT: // Snow coverage text
|
||||||
this->widget_id = WID_GL_SNOW_COVERAGE_TEXT;
|
this->widget_id = WID_GL_SNOW_COVERAGE_TEXT;
|
||||||
ShowQueryString(GetString(STR_JUST_INT, _settings_newgame.game_creation.snow_coverage), STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT, 4, this, CS_NUMERAL, QueryStringFlag::EnableDefault);
|
ShowQueryString(GetString(STR_JUST_INT, _settings_newgame.game_creation.snow_coverage), STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT, 4, this, CS_NUMERAL, QueryStringFlag::EnableDefault);
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_DESERT_COVERAGE_DOWN:
|
case WID_GL_DESERT_COVERAGE_DOWN:
|
||||||
|
@ -770,15 +773,16 @@ struct GenerateLandscapeWindow : public Window {
|
||||||
case WID_GL_DESERT_COVERAGE_TEXT: // Desert line text
|
case WID_GL_DESERT_COVERAGE_TEXT: // Desert line text
|
||||||
this->widget_id = WID_GL_DESERT_COVERAGE_TEXT;
|
this->widget_id = WID_GL_DESERT_COVERAGE_TEXT;
|
||||||
ShowQueryString(GetString(STR_JUST_INT, _settings_newgame.game_creation.desert_coverage), STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT, 4, this, CS_NUMERAL, QueryStringFlag::EnableDefault);
|
ShowQueryString(GetString(STR_JUST_INT, _settings_newgame.game_creation.desert_coverage), STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT, 4, this, CS_NUMERAL, QueryStringFlag::EnableDefault);
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_HEIGHTMAP_ROTATION_PULLDOWN: // Heightmap rotation
|
case WID_GL_HEIGHTMAP_ROTATION_PULLDOWN: // Heightmap rotation
|
||||||
ShowDropDownMenu(this, _rotation, _settings_newgame.game_creation.heightmap_rotation, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN, 0, 0);
|
this->HandleDropdownMenuButtonClick(_rotation, _settings_newgame.game_creation.heightmap_rotation, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_TERRAIN_PULLDOWN: // Terrain type
|
case WID_GL_TERRAIN_PULLDOWN: // Terrain type
|
||||||
/* For the original map generation only the first four are valid. */
|
/* For the original map generation only the first four are valid. */
|
||||||
ShowDropDownMenu(this, _elevations, _settings_newgame.difficulty.terrain_type, WID_GL_TERRAIN_PULLDOWN, 0, _settings_newgame.game_creation.land_generator == LG_ORIGINAL ? ~0xF : 0);
|
this->HandleDropdownMenuButtonClick(_elevations, _settings_newgame.difficulty.terrain_type, WID_GL_TERRAIN_PULLDOWN, 0, _settings_newgame.game_creation.land_generator == LG_ORIGINAL ? ~0xF : 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_WATER_PULLDOWN: { // Water quantity
|
case WID_GL_WATER_PULLDOWN: { // Water quantity
|
||||||
|
@ -787,45 +791,50 @@ struct GenerateLandscapeWindow : public Window {
|
||||||
if (_settings_newgame.game_creation.land_generator == LG_ORIGINAL) {
|
if (_settings_newgame.game_creation.land_generator == LG_ORIGINAL) {
|
||||||
SetBit(hidden_mask, CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY);
|
SetBit(hidden_mask, CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY);
|
||||||
}
|
}
|
||||||
ShowDropDownMenu(this, _sea_lakes, _settings_newgame.difficulty.quantity_sea_lakes, WID_GL_WATER_PULLDOWN, 0, hidden_mask);
|
this->HandleDropdownMenuButtonClick(_sea_lakes, _settings_newgame.difficulty.quantity_sea_lakes, WID_GL_WATER_PULLDOWN, 0, hidden_mask);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case WID_GL_RIVER_PULLDOWN: // Amount of rivers
|
case WID_GL_RIVER_PULLDOWN: // Amount of rivers
|
||||||
ShowDropDownMenu(this, _rivers, _settings_newgame.game_creation.amount_of_rivers, WID_GL_RIVER_PULLDOWN, 0, 0);
|
this->HandleDropdownMenuButtonClick(_rivers, _settings_newgame.game_creation.amount_of_rivers, WID_GL_RIVER_PULLDOWN, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_SMOOTHNESS_PULLDOWN: // Map smoothness
|
case WID_GL_SMOOTHNESS_PULLDOWN: // Map smoothness
|
||||||
ShowDropDownMenu(this, _smoothness, _settings_newgame.game_creation.tgen_smoothness, WID_GL_SMOOTHNESS_PULLDOWN, 0, 0);
|
this->HandleDropdownMenuButtonClick(_smoothness, _settings_newgame.game_creation.tgen_smoothness, WID_GL_SMOOTHNESS_PULLDOWN, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_VARIETY_PULLDOWN: // Map variety
|
case WID_GL_VARIETY_PULLDOWN: // Map variety
|
||||||
ShowDropDownMenu(this, _variety, _settings_newgame.game_creation.variety, WID_GL_VARIETY_PULLDOWN, 0, 0);
|
this->HandleDropdownMenuButtonClick(_variety, _settings_newgame.game_creation.variety, WID_GL_VARIETY_PULLDOWN, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Freetype map borders */
|
/* Freetype map borders */
|
||||||
case WID_GL_WATER_NW:
|
case WID_GL_WATER_NW:
|
||||||
_settings_newgame.game_creation.water_borders.Flip(BorderFlag::NorthWest);
|
_settings_newgame.game_creation.water_borders.Flip(BorderFlag::NorthWest);
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
this->InvalidateData();
|
this->InvalidateData();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_WATER_NE:
|
case WID_GL_WATER_NE:
|
||||||
_settings_newgame.game_creation.water_borders.Flip(BorderFlag::NorthEast);
|
_settings_newgame.game_creation.water_borders.Flip(BorderFlag::NorthEast);
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
this->InvalidateData();
|
this->InvalidateData();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_WATER_SE:
|
case WID_GL_WATER_SE:
|
||||||
_settings_newgame.game_creation.water_borders.Flip(BorderFlag::SouthEast);
|
_settings_newgame.game_creation.water_borders.Flip(BorderFlag::SouthEast);
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
this->InvalidateData();
|
this->InvalidateData();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_WATER_SW:
|
case WID_GL_WATER_SW:
|
||||||
_settings_newgame.game_creation.water_borders.Flip(BorderFlag::SouthWest);
|
_settings_newgame.game_creation.water_borders.Flip(BorderFlag::SouthWest);
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
this->InvalidateData();
|
this->InvalidateData();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_BORDERS_RANDOM:
|
case WID_GL_BORDERS_RANDOM:
|
||||||
_settings_newgame.game_creation.water_borders = (_settings_newgame.game_creation.water_borders == BorderFlag::Random) ? BorderFlag{} : BorderFlag::Random;
|
_settings_newgame.game_creation.water_borders = (_settings_newgame.game_creation.water_borders == BorderFlag::Random) ? BorderFlag{} : BorderFlag::Random;
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
this->InvalidateData();
|
this->InvalidateData();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1134,11 +1143,11 @@ struct CreateScenarioWindow : public Window
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_CS_MAPSIZE_X_PULLDOWN: // Mapsize X
|
case WID_CS_MAPSIZE_X_PULLDOWN: // Mapsize X
|
||||||
ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_x, WID_CS_MAPSIZE_X_PULLDOWN);
|
this->HandleDropdownListButtonClick(BuildMapsizeDropDown(), _settings_newgame.game_creation.map_x, WID_CS_MAPSIZE_X_PULLDOWN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_CS_MAPSIZE_Y_PULLDOWN: // Mapsize Y
|
case WID_CS_MAPSIZE_Y_PULLDOWN: // Mapsize Y
|
||||||
ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_y, WID_CS_MAPSIZE_Y_PULLDOWN);
|
this->HandleDropdownListButtonClick(BuildMapsizeDropDown(), _settings_newgame.game_creation.map_y, WID_CS_MAPSIZE_Y_PULLDOWN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_CS_EMPTY_WORLD: // Empty world / flat world
|
case WID_CS_EMPTY_WORLD: // Empty world / flat world
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "cargotype.h"
|
#include "cargotype.h"
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
#include "window_func.h"
|
#include "window_func.h"
|
||||||
|
#include "sound_func.h"
|
||||||
#include "gfx_func.h"
|
#include "gfx_func.h"
|
||||||
#include "core/geometry_func.hpp"
|
#include "core/geometry_func.hpp"
|
||||||
#include "currency.h"
|
#include "currency.h"
|
||||||
|
@ -90,6 +91,8 @@ struct GraphLegendWindow : Window {
|
||||||
InvalidateWindowData(WC_DELIVERED_CARGO, 0);
|
InvalidateWindowData(WC_DELIVERED_CARGO, 0);
|
||||||
InvalidateWindowData(WC_PERFORMANCE_HISTORY, 0);
|
InvalidateWindowData(WC_PERFORMANCE_HISTORY, 0);
|
||||||
InvalidateWindowData(WC_COMPANY_VALUE, 0);
|
InvalidateWindowData(WC_COMPANY_VALUE, 0);
|
||||||
|
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -716,6 +719,8 @@ public:
|
||||||
case WID_GRAPH_RANGE_MATRIX: {
|
case WID_GRAPH_RANGE_MATRIX: {
|
||||||
int row = GetRowFromWidget(pt.y, widget, 0, GetCharacterHeight(FS_SMALL) + WidgetDimensions::scaled.framerect.Vertical());
|
int row = GetRowFromWidget(pt.y, widget, 0, GetCharacterHeight(FS_SMALL) + WidgetDimensions::scaled.framerect.Vertical());
|
||||||
|
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
|
|
||||||
if (HasBit(this->masked_range, row)) break;
|
if (HasBit(this->masked_range, row)) break;
|
||||||
ToggleBit(this->excluded_range, row);
|
ToggleBit(this->excluded_range, row);
|
||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
|
@ -1255,6 +1260,8 @@ struct BaseCargoGraphWindow : BaseGraphWindow {
|
||||||
int row = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_GRAPH_MATRIX);
|
int row = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_GRAPH_MATRIX);
|
||||||
if (row >= this->vscroll->GetCount()) return;
|
if (row >= this->vscroll->GetCount()) return;
|
||||||
|
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
|
|
||||||
for (const CargoSpec *cs : _sorted_cargo_specs) {
|
for (const CargoSpec *cs : _sorted_cargo_specs) {
|
||||||
if (!HasBit(this->cargo_types, cs->Index())) continue;
|
if (!HasBit(this->cargo_types, cs->Index())) continue;
|
||||||
if (row-- > 0) continue;
|
if (row-- > 0) continue;
|
||||||
|
|
|
@ -700,15 +700,15 @@ public:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_GROUP_BY_DROPDOWN: // Select grouping option dropdown menu
|
case WID_GL_GROUP_BY_DROPDOWN: // Select grouping option dropdown menu
|
||||||
ShowDropDownMenu(this, this->vehicle_group_by_names, this->grouping, WID_GL_GROUP_BY_DROPDOWN, 0, 0);
|
this->HandleDropdownMenuButtonClick(this->vehicle_group_by_names, this->grouping, WID_GL_GROUP_BY_DROPDOWN, 0, 0);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case WID_GL_SORT_BY_DROPDOWN: // Select sorting criteria dropdown menu
|
case WID_GL_SORT_BY_DROPDOWN: // Select sorting criteria dropdown menu
|
||||||
ShowDropDownMenu(this, this->GetVehicleSorterNames(), this->vehgroups.SortType(), WID_GL_SORT_BY_DROPDOWN, 0, (this->vli.vtype == VEH_TRAIN || this->vli.vtype == VEH_ROAD) ? 0 : (1 << 10));
|
this->HandleDropdownMenuButtonClick(this->GetVehicleSorterNames(), this->vehgroups.SortType(), WID_GL_SORT_BY_DROPDOWN, 0, (this->vli.vtype == VEH_TRAIN || this->vli.vtype == VEH_ROAD) ? 0 : (1 << 10));
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case WID_GL_FILTER_BY_CARGO: // Select filtering criteria dropdown menu
|
case WID_GL_FILTER_BY_CARGO: // Select filtering criteria dropdown menu
|
||||||
ShowDropDownList(this, this->BuildCargoDropDownList(false), this->cargo_filter_criteria, widget);
|
this->HandleDropdownListButtonClick(this->BuildCargoDropDownList(false), this->cargo_filter_criteria, widget);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_ALL_VEHICLES: // All vehicles button
|
case WID_GL_ALL_VEHICLES: // All vehicles button
|
||||||
|
@ -849,7 +849,7 @@ public:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GL_MANAGE_VEHICLES_DROPDOWN: {
|
case WID_GL_MANAGE_VEHICLES_DROPDOWN: {
|
||||||
ShowDropDownList(this, this->BuildActionDropdownList(true, Group::IsValidID(this->vli.ToGroupID()), IsDefaultGroupID(this->vli.ToGroupID())), -1, WID_GL_MANAGE_VEHICLES_DROPDOWN);
|
this->HandleDropdownListButtonClick(this->BuildActionDropdownList(true, Group::IsValidID(this->vli.ToGroupID()), IsDefaultGroupID(this->vli.ToGroupID())), -1, WID_GL_MANAGE_VEHICLES_DROPDOWN);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1798,15 +1798,15 @@ public:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_ID_DROPDOWN_CRITERIA:
|
case WID_ID_DROPDOWN_CRITERIA:
|
||||||
ShowDropDownMenu(this, IndustryDirectoryWindow::sorter_names, this->industries.SortType(), WID_ID_DROPDOWN_CRITERIA, 0, 0);
|
this->HandleDropdownMenuButtonClick(IndustryDirectoryWindow::sorter_names, this->industries.SortType(), WID_ID_DROPDOWN_CRITERIA, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_ID_FILTER_BY_ACC_CARGO: // Cargo filter dropdown
|
case WID_ID_FILTER_BY_ACC_CARGO: // Cargo filter dropdown
|
||||||
ShowDropDownList(this, this->BuildCargoDropDownList(), this->accepted_cargo_filter_criteria, widget);
|
this->HandleDropdownListButtonClick(this->BuildCargoDropDownList(), this->accepted_cargo_filter_criteria, widget);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_ID_FILTER_BY_PROD_CARGO: // Cargo filter dropdown
|
case WID_ID_FILTER_BY_PROD_CARGO: // Cargo filter dropdown
|
||||||
ShowDropDownList(this, this->BuildCargoDropDownList(), this->produced_cargo_filter_criteria, widget);
|
this->HandleDropdownListButtonClick(this->BuildCargoDropDownList(), this->produced_cargo_filter_criteria, widget);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_ID_INDUSTRY_LIST: {
|
case WID_ID_INDUSTRY_LIST: {
|
||||||
|
@ -3092,7 +3092,7 @@ struct IndustryCargoesWindow : public Window {
|
||||||
}
|
}
|
||||||
if (!lst.empty()) {
|
if (!lst.empty()) {
|
||||||
int selected = (this->ind_cargo >= NUM_INDUSTRYTYPES) ? (int)(this->ind_cargo - NUM_INDUSTRYTYPES) : -1;
|
int selected = (this->ind_cargo >= NUM_INDUSTRYTYPES) ? (int)(this->ind_cargo - NUM_INDUSTRYTYPES) : -1;
|
||||||
ShowDropDownList(this, std::move(lst), selected, WID_IC_CARGO_DROPDOWN);
|
this->HandleDropdownListButtonClick(std::move(lst), selected, WID_IC_CARGO_DROPDOWN);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3106,7 +3106,7 @@ struct IndustryCargoesWindow : public Window {
|
||||||
}
|
}
|
||||||
if (!lst.empty()) {
|
if (!lst.empty()) {
|
||||||
int selected = (this->ind_cargo < NUM_INDUSTRYTYPES) ? (int)this->ind_cargo : -1;
|
int selected = (this->ind_cargo < NUM_INDUSTRYTYPES) ? (int)this->ind_cargo : -1;
|
||||||
ShowDropDownList(this, std::move(lst), selected, WID_IC_IND_DROPDOWN);
|
this->HandleDropdownListButtonClick(std::move(lst), selected, WID_IC_IND_DROPDOWN);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,6 +267,7 @@ STR_UNITS_YEARS :{NUM}{NBSP}năm
|
||||||
STR_UNITS_PERIODS :{NUM}{NBSP}kỳ
|
STR_UNITS_PERIODS :{NUM}{NBSP}kỳ
|
||||||
|
|
||||||
STR_LIST_SEPARATOR :,{SPACE}
|
STR_LIST_SEPARATOR :,{SPACE}
|
||||||
|
STR_TRUNCATION_ELLIPSIS :...
|
||||||
|
|
||||||
# Common window strings
|
# Common window strings
|
||||||
STR_LIST_FILTER_TITLE :{BLACK}Lọc:
|
STR_LIST_FILTER_TITLE :{BLACK}Lọc:
|
||||||
|
@ -285,7 +286,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Đóng c
|
||||||
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tiêu đề cửa sổ - kéo nó để di chuyển cửa số
|
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tiêu đề cửa sổ - kéo nó để di chuyển cửa số
|
||||||
STR_TOOLTIP_SHADE :{BLACK}Thu gọn cửa sổ - Chỉ hiển thị thanh tiêu đề
|
STR_TOOLTIP_SHADE :{BLACK}Thu gọn cửa sổ - Chỉ hiển thị thanh tiêu đề
|
||||||
STR_TOOLTIP_DEBUG :{BLACK}Hiện thông tin debug của NewGRF
|
STR_TOOLTIP_DEBUG :{BLACK}Hiện thông tin debug của NewGRF
|
||||||
STR_TOOLTIP_DEFSIZE :{BLACK}Chuyển cửa sổ về kích thước mặc định. Ctrl+Click để lưu kích thước hiện tại làm mặc định
|
STR_TOOLTIP_DEFSIZE :{BLACK}Chuyển cửa sổ về kích thước mặc định. Ctrl+Click để lưu kích thước hiện tại làm mặc định. Ctri+Click kép để thiết lập lại mặc định cũ.
|
||||||
STR_TOOLTIP_STICKY :{BLACK}Đánh dấu không-thể-đóng khi bấm nút "Đóng Tất Cả Cửa Sổ". Ctrl+Click để lưu thành trạng thái mặc định
|
STR_TOOLTIP_STICKY :{BLACK}Đánh dấu không-thể-đóng khi bấm nút "Đóng Tất Cả Cửa Sổ". Ctrl+Click để lưu thành trạng thái mặc định
|
||||||
STR_TOOLTIP_RESIZE :{BLACK}Click và kéo để thay đổi kích thước cửa sổ
|
STR_TOOLTIP_RESIZE :{BLACK}Click và kéo để thay đổi kích thước cửa sổ
|
||||||
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Bật kích cỡ cửa sổ lớn/nhỏ
|
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Bật kích cỡ cửa sổ lớn/nhỏ
|
||||||
|
@ -451,6 +452,12 @@ STR_SETTINGS_MENU_SANDBOX_OPTIONS :Tuỳ chọn Sa
|
||||||
STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Thiết lập hiệu ứng trong suốt
|
STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Thiết lập hiệu ứng trong suốt
|
||||||
STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Hiển thị tên thị trấn
|
STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Hiển thị tên thị trấn
|
||||||
STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Hiển thị tên nhà ga
|
STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Hiển thị tên nhà ga
|
||||||
|
STR_SETTINGS_MENU_STATION_NAMES_TRAIN :Ga tàu
|
||||||
|
STR_SETTINGS_MENU_STATION_NAMES_LORRY :Trạm xe tải
|
||||||
|
STR_SETTINGS_MENU_STATION_NAMES_BUS :Trạm xe buýt
|
||||||
|
STR_SETTINGS_MENU_STATION_NAMES_SHIP :Cảng
|
||||||
|
STR_SETTINGS_MENU_STATION_NAMES_PLANE :Sân bay
|
||||||
|
STR_SETTINGS_MENU_STATION_NAMES_GHOST :Trạm ma
|
||||||
STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Hiển thị tên điểm mốc
|
STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Hiển thị tên điểm mốc
|
||||||
STR_SETTINGS_MENU_SIGNS_DISPLAYED :Hiển thị ký hiệu
|
STR_SETTINGS_MENU_SIGNS_DISPLAYED :Hiển thị ký hiệu
|
||||||
STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Hiển thị biển hiệu và tên của đối thủ
|
STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Hiển thị biển hiệu và tên của đối thủ
|
||||||
|
@ -627,8 +634,11 @@ STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Không h
|
||||||
STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Bật/tắt đồ thị cho hàng hóa này
|
STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Bật/tắt đồ thị cho hàng hóa này
|
||||||
STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING}
|
STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING}
|
||||||
|
|
||||||
|
STR_GRAPH_INDUSTRY_CAPTION :{WHITE}{INDUSTRY} - Lịch sử hàng hóa
|
||||||
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Đã cung cấp
|
STR_GRAPH_INDUSTRY_RANGE_PRODUCED :Đã cung cấp
|
||||||
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Đã vận chuyển
|
STR_GRAPH_INDUSTRY_RANGE_TRANSPORTED :Đã vận chuyển
|
||||||
|
STR_GRAPH_INDUSTRY_RANGE_DELIVERED :Đã giao
|
||||||
|
STR_GRAPH_INDUSTRY_RANGE_WAITING :Đang chờ...
|
||||||
|
|
||||||
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Hiện chi tiết đánh giá chỉ số năng suất
|
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Hiện chi tiết đánh giá chỉ số năng suất
|
||||||
|
|
||||||
|
@ -958,11 +968,14 @@ STR_GAME_OPTIONS_TAB_SOUND :Âm thanh
|
||||||
STR_GAME_OPTIONS_TAB_SOUND_TOOLTIP :Lựa chọn thiết lập cho âm thanh và nhạc
|
STR_GAME_OPTIONS_TAB_SOUND_TOOLTIP :Lựa chọn thiết lập cho âm thanh và nhạc
|
||||||
STR_GAME_OPTIONS_TAB_SOCIAL :Xã hội
|
STR_GAME_OPTIONS_TAB_SOCIAL :Xã hội
|
||||||
STR_GAME_OPTIONS_TAB_SOCIAL_TOOLTIP :Chọn thiết lập các tích hợp xã hội
|
STR_GAME_OPTIONS_TAB_SOCIAL_TOOLTIP :Chọn thiết lập các tích hợp xã hội
|
||||||
|
STR_GAME_OPTIONS_TAB_ADVANCED :Tùy chọn nâng cao
|
||||||
|
STR_GAME_OPTIONS_TAB_ADVANCED_TOOLTIP :Thay đổi tùy chọn nâng cao
|
||||||
|
|
||||||
STR_GAME_OPTIONS_VOLUME :Âm lượng
|
STR_GAME_OPTIONS_VOLUME :Âm lượng
|
||||||
STR_GAME_OPTIONS_SFX_VOLUME :Hiệu ứng âm thanh
|
STR_GAME_OPTIONS_SFX_VOLUME :Hiệu ứng âm thanh
|
||||||
STR_GAME_OPTIONS_MUSIC_VOLUME :Âm nhạc
|
STR_GAME_OPTIONS_MUSIC_VOLUME :Âm nhạc
|
||||||
|
|
||||||
|
STR_GAME_OPTIONS_SETTING :{STRING}: {ORANGE}{STRING}
|
||||||
|
|
||||||
STR_GAME_OPTIONS_VOLUME_MARK :{NUM}%
|
STR_GAME_OPTIONS_VOLUME_MARK :{NUM}%
|
||||||
|
|
||||||
|
@ -1016,6 +1029,7 @@ STR_GAME_OPTIONS_CURRENCY_IDR :Rupiah Indonesi
|
||||||
STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysia
|
STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysia
|
||||||
STR_GAME_OPTIONS_CURRENCY_LVL :Lát-vi-a Lats
|
STR_GAME_OPTIONS_CURRENCY_LVL :Lát-vi-a Lats
|
||||||
STR_GAME_OPTIONS_CURRENCY_PTE :Escudo Bồ Đào Nha
|
STR_GAME_OPTIONS_CURRENCY_PTE :Escudo Bồ Đào Nha
|
||||||
|
STR_GAME_OPTIONS_CURRENCY_UAH :Hryvnia Ukraina
|
||||||
|
|
||||||
STR_GAME_OPTIONS_AUTOSAVE_FRAME :Lưu tự động
|
STR_GAME_OPTIONS_AUTOSAVE_FRAME :Lưu tự động
|
||||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :Lựa chọn khoảng thời gian tự động lưu
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :Lựa chọn khoảng thời gian tự động lưu
|
||||||
|
@ -1049,6 +1063,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :Đánh dấu v
|
||||||
|
|
||||||
STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :Trình điều khiển hiện tại: {STRING}
|
STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :Trình điều khiển hiện tại: {STRING}
|
||||||
|
|
||||||
|
STR_GAME_OPTIONS_INTERFACE :Giao diện
|
||||||
|
|
||||||
STR_GAME_OPTIONS_GUI_SCALE_FRAME :Kích thước giao diện
|
STR_GAME_OPTIONS_GUI_SCALE_FRAME :Kích thước giao diện
|
||||||
STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :Kéo thanh trượt để điều chỉnh kích thước giao diện. Giữ Ctrl để điều chỉnh liên tục
|
STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :Kéo thanh trượt để điều chỉnh kích thước giao diện. Giữ Ctrl để điều chỉnh liên tục
|
||||||
|
@ -1073,6 +1088,7 @@ STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :Sẽ mở trìn
|
||||||
STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :Xem trước kết quả khảo sát
|
STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :Xem trước kết quả khảo sát
|
||||||
STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :Hiển thị kết quả khảo sát ở ván chơi hiện tại
|
STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :Hiển thị kết quả khảo sát ở ván chơi hiện tại
|
||||||
|
|
||||||
|
STR_GAME_OPTIONS_DISPLAY :Hiển thị
|
||||||
|
|
||||||
STR_GAME_OPTIONS_REFRESH_RATE :Tần số quét màn hình
|
STR_GAME_OPTIONS_REFRESH_RATE :Tần số quét màn hình
|
||||||
STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :Chọn tần số quét màn hình
|
STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :Chọn tần số quét màn hình
|
||||||
|
@ -1094,7 +1110,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :Thông tin thê
|
||||||
STR_GAME_OPTIONS_ONLINE_CONTENT :Tải Nội Dung
|
STR_GAME_OPTIONS_ONLINE_CONTENT :Tải Nội Dung
|
||||||
STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Kiểm tra những nội dung mới & cập nhật để tải về
|
STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Kiểm tra những nội dung mới & cập nhật để tải về
|
||||||
|
|
||||||
STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(không có plugins được cài đặt để tích hợp vào nền tảng xã hội)
|
STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :(không có plugins được cài đặt để tích hợp vào nền tảng xã hội)
|
||||||
|
|
||||||
STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{STRING} ({STRING})
|
STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{STRING} ({STRING})
|
||||||
STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :Nền tảng:
|
STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :Nền tảng:
|
||||||
|
@ -1288,6 +1304,9 @@ STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lãi xuất vay
|
||||||
STR_CONFIG_SETTING_RUNNING_COSTS :Chi phí hoạt động: {STRING}
|
STR_CONFIG_SETTING_RUNNING_COSTS :Chi phí hoạt động: {STRING}
|
||||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Thiết lập mức độ tính chi phí bảo trì và vận hành đối với phương tiện và hạ tầng giao thông
|
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Thiết lập mức độ tính chi phí bảo trì và vận hành đối với phương tiện và hạ tầng giao thông
|
||||||
###length 3
|
###length 3
|
||||||
|
STR_CONFIG_SETTING_RUNNING_COSTS_LOW :Thấp
|
||||||
|
STR_CONFIG_SETTING_RUNNING_COSTS_MEDIUM :Trung bình
|
||||||
|
STR_CONFIG_SETTING_RUNNING_COSTS_HIGH :Cao
|
||||||
|
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Tốc độ xây dựng: {STRING}
|
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Tốc độ xây dựng: {STRING}
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Giới hạn hành động xây dựng của AI
|
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Giới hạn hành động xây dựng của AI
|
||||||
|
@ -1310,6 +1329,9 @@ STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Không có tr
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Chi phí xây dựng: {STRING}
|
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Chi phí xây dựng: {STRING}
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Thiết lập mức độ xây dựng và chi phí mua sắm
|
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Thiết lập mức độ xây dựng và chi phí mua sắm
|
||||||
###length 3
|
###length 3
|
||||||
|
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_LOW :Thấp
|
||||||
|
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_MEDIUM :Trung bình
|
||||||
|
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HIGH :Cao
|
||||||
|
|
||||||
STR_CONFIG_SETTING_RECESSIONS :Suy thoái: {STRING}
|
STR_CONFIG_SETTING_RECESSIONS :Suy thoái: {STRING}
|
||||||
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Nếu bật, thì các đợt suy thoái sẽ xảy ra vài năm một lần. Trong suy thoái tất cả sản xuất sẽ giảm mạnh (và sẽ trở lại như cũ sau khi suy thoái kết thúc)
|
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Nếu bật, thì các đợt suy thoái sẽ xảy ra vài năm một lần. Trong suy thoái tất cả sản xuất sẽ giảm mạnh (và sẽ trở lại như cũ sau khi suy thoái kết thúc)
|
||||||
|
@ -1979,8 +2001,12 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :không cho phé
|
||||||
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :cho phép
|
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :cho phép
|
||||||
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :cho phép, tùy chọn bố trí đô thị
|
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :cho phép, tùy chọn bố trí đô thị
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_HOUSE_PLACER :Đật từng ngôi nhà: {STRING}
|
||||||
STR_CONFIG_SETTING_HOUSE_PLACER_HELPTEXT :Bật tùy chọn này cho phép người chơi đặt nhà cửa bằng tay
|
STR_CONFIG_SETTING_HOUSE_PLACER_HELPTEXT :Bật tùy chọn này cho phép người chơi đặt nhà cửa bằng tay
|
||||||
###length 3
|
###length 3
|
||||||
|
STR_CONFIG_SETTING_HOUSE_PLACER_FORBIDDEN :Không cho phép
|
||||||
|
STR_CONFIG_SETTING_HOUSE_PLACER_ALLOWED :Cho phép
|
||||||
|
STR_CONFIG_SETTING_HOUSE_PLACER_FULLY_CONSTRUCTED :Cho phép, đã hoàn thành thi công
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Nhu cầu vận chuyển hàng đô thị: {STRING}
|
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Nhu cầu vận chuyển hàng đô thị: {STRING}
|
||||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Lượng hàng hoá cần vận chuyển ở trong đô thị, tỉ lệ với tổng dân số của độ thị.{}Tăng tỉ lệ bình phương: một đô thị to gấp 2 sẽ tăng 4 lần số hành khách.{}Tăng tỉ lệ thuận: một đô thị tăng gấp 2 sẽ tăng gấp 2 lần số hành khách
|
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Lượng hàng hoá cần vận chuyển ở trong đô thị, tỉ lệ với tổng dân số của độ thị.{}Tăng tỉ lệ bình phương: một đô thị to gấp 2 sẽ tăng 4 lần số hành khách.{}Tăng tỉ lệ thuận: một đô thị tăng gấp 2 sẽ tăng gấp 2 lần số hành khách
|
||||||
|
@ -2009,7 +2035,7 @@ STR_CONFIG_SETTING_SOFT_LIMIT :Giới hạn s
|
||||||
STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Số lượng cửa sổ chưa neo (tối đa) trước khi tự động đóng để nhường chỗ khi mở cửa sổ mới
|
STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Số lượng cửa sổ chưa neo (tối đa) trước khi tự động đóng để nhường chỗ khi mở cửa sổ mới
|
||||||
STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA}
|
STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA}
|
||||||
###setting-zero-is-special
|
###setting-zero-is-special
|
||||||
STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :tắt
|
STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :Tắt
|
||||||
|
|
||||||
STR_CONFIG_SETTING_ZOOM_MIN :Độ phóng to tối đa: {STRING}
|
STR_CONFIG_SETTING_ZOOM_MIN :Độ phóng to tối đa: {STRING}
|
||||||
STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Độ phóng to tối đa của cửa sổ. Độ càng cao thì yêu cầu bộ nhớ càng nhiều
|
STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Độ phóng to tối đa của cửa sổ. Độ càng cao thì yêu cầu bộ nhớ càng nhiều
|
||||||
|
@ -2061,9 +2087,9 @@ STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Loại hàng h
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Chế độ phân phối đối với các loại hàng hóa mặc định: {STRING}
|
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Chế độ phân phối đối với các loại hàng hóa mặc định: {STRING}
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Không đối xứng" có nghĩa là số lượng hàng hóa tùy ý có thể được gửi theo một trong hai hướng. "Thủ công" có nghĩa là những loại hàng hóa đó sẽ không được phân phối tự động
|
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Không đối xứng" có nghĩa là số lượng hàng hóa tùy ý có thể được gửi theo một trong hai hướng. "Thủ công" có nghĩa là những loại hàng hóa đó sẽ không được phân phối tự động
|
||||||
###length 3
|
###length 3
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :bằng tay
|
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :Bằng tay
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :bất đối xứng
|
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :Bất đối xứng
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :đối xứng
|
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :Đối xứng
|
||||||
|
|
||||||
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Độ chính xác phân phối: {STRING}
|
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Độ chính xác phân phối: {STRING}
|
||||||
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mức chính xác tính toán đồ thị, nếu giá trị càng cao càng tốn CPU và trò chơi có thể chậm phản ứng, tuy nhiên giá trị thấp sẽ khiến việc phân phối sẽ giảm sự chính xác và bạn sẽ thấy sự khác biệt là hàng hóa không gửi đến chỗ cần đến
|
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mức chính xác tính toán đồ thị, nếu giá trị càng cao càng tốn CPU và trò chơi có thể chậm phản ứng, tuy nhiên giá trị thấp sẽ khiến việc phân phối sẽ giảm sự chính xác và bạn sẽ thấy sự khác biệt là hàng hóa không gửi đến chỗ cần đến
|
||||||
|
@ -2124,7 +2150,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m)
|
||||||
STR_CONFIG_SETTING_LOCALISATION :Tiêu Chuẩn Đo Lường
|
STR_CONFIG_SETTING_LOCALISATION :Tiêu Chuẩn Đo Lường
|
||||||
STR_CONFIG_SETTING_GRAPHICS :Đồ họa
|
STR_CONFIG_SETTING_GRAPHICS :Đồ họa
|
||||||
STR_CONFIG_SETTING_SOUND :Âm thanh
|
STR_CONFIG_SETTING_SOUND :Âm thanh
|
||||||
STR_CONFIG_SETTING_INTERFACE :Giao Diện
|
STR_CONFIG_SETTING_INTERFACE :Giao diện
|
||||||
STR_CONFIG_SETTING_INTERFACE_GENERAL :Tổng quát
|
STR_CONFIG_SETTING_INTERFACE_GENERAL :Tổng quát
|
||||||
STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Vùng nhìn
|
STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Vùng nhìn
|
||||||
STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Xây Dựng
|
STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Xây Dựng
|
||||||
|
@ -2178,6 +2204,8 @@ STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... khô
|
||||||
STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... trình điều khiển GPU đã làm trò chơi bị lỗi. Tăng tốc phần cứng đã được tắt
|
STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... trình điều khiển GPU đã làm trò chơi bị lỗi. Tăng tốc phần cứng đã được tắt
|
||||||
|
|
||||||
# Intro window
|
# Intro window
|
||||||
|
STR_INTRO_CAPTION :{WHITE}OpenTTD
|
||||||
|
STR_INTRO_VERSION :OpenTTD {REV}
|
||||||
|
|
||||||
STR_INTRO_NEW_GAME :{BLACK}Màn Chơi Mới
|
STR_INTRO_NEW_GAME :{BLACK}Màn Chơi Mới
|
||||||
STR_INTRO_LOAD_GAME :{BLACK}Nạp Ván Chơi
|
STR_INTRO_LOAD_GAME :{BLACK}Nạp Ván Chơi
|
||||||
|
@ -2311,16 +2339,19 @@ STR_FACE_SIMPLE_TOOLTIP :{BLACK}Trình c
|
||||||
STR_FACE_LOAD :{BLACK}Nạp
|
STR_FACE_LOAD :{BLACK}Nạp
|
||||||
STR_FACE_LOAD_TOOLTIP :{BLACK}Chọn vẻ mặt ưa thích
|
STR_FACE_LOAD_TOOLTIP :{BLACK}Chọn vẻ mặt ưa thích
|
||||||
STR_FACE_LOAD_DONE :{WHITE}Vẻ mặt ưa thích đã được nạp từ file thiết lập của OpenTTD.
|
STR_FACE_LOAD_DONE :{WHITE}Vẻ mặt ưa thích đã được nạp từ file thiết lập của OpenTTD.
|
||||||
STR_FACE_FACECODE :{BLACK}Khuôn mặt thứ.
|
STR_FACE_FACECODE :{BLACK}Mã số khuôn mặt
|
||||||
STR_FACE_FACECODE_TOOLTIP :{BLACK}Xem và/hoặc sửa số vẻ mặt của chủ tịch công ty
|
STR_FACE_FACECODE_TOOLTIP :{BLACK}Xem và/hoặc sửa mã số gương mặt của chủ tịch công ty
|
||||||
STR_FACE_FACECODE_CAPTION :{WHITE}Xem và/hoặc chọn số bộ mặt người chơi
|
STR_FACE_FACECODE_CAPTION :{WHITE}Xem và/hoặc chọn mã số gương mặt người chơi
|
||||||
STR_FACE_FACECODE_SET :{WHITE}Mã số gương mặt mới được thiết lập.
|
STR_FACE_FACECODE_SET :{WHITE}Gương mặt người chơi mới được thiết lập.
|
||||||
STR_FACE_FACECODE_ERR :{WHITE}Không thể thiết lập mã số gương mặt - mã số phải trong khoảng từ 0 đến 4,294,967,295!
|
STR_FACE_FACECODE_ERR :{WHITE}Không thể thiết lập mã số gương mặt - Nhãn và mã số phải hợp lệ
|
||||||
STR_FACE_SAVE :{BLACK}Lưu
|
STR_FACE_SAVE :{BLACK}Lưu
|
||||||
STR_FACE_SAVE_TOOLTIP :{BLACK}Lưu gương mặt yêu thích
|
STR_FACE_SAVE_TOOLTIP :{BLACK}Lưu gương mặt yêu thích
|
||||||
STR_FACE_SAVE_DONE :{WHITE}Gương mặt yêu thích này sẽ được lưu lại trong tập tin cấu hình OpenTTD .
|
STR_FACE_SAVE_DONE :{WHITE}Gương mặt yêu thích này sẽ được lưu lại trong tập tin cấu hình OpenTTD .
|
||||||
|
STR_FACE_SETTING_TOGGLE :{STRING} {ORANGE}{STRING}
|
||||||
|
STR_FACE_SETTING_NUMERIC :{STRING} {ORANGE}{NUM} / {NUM}
|
||||||
STR_FACE_YES :Đồng ý
|
STR_FACE_YES :Đồng ý
|
||||||
STR_FACE_NO :Không
|
STR_FACE_NO :Không
|
||||||
|
STR_FACE_STYLE :Kiểu:
|
||||||
STR_FACE_HAIR :Tóc:
|
STR_FACE_HAIR :Tóc:
|
||||||
STR_FACE_EYEBROWS :Lông mày:
|
STR_FACE_EYEBROWS :Lông mày:
|
||||||
STR_FACE_EYECOLOUR :Màu mắt:
|
STR_FACE_EYECOLOUR :Màu mắt:
|
||||||
|
@ -2607,7 +2638,7 @@ STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} r
|
||||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} đã đổi tên thành {STRING}
|
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} đã đổi tên thành {STRING}
|
||||||
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} tặng {CURRENCY_LONG} cho {STRING}
|
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} tặng {CURRENCY_LONG} cho {STRING}
|
||||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server kết thúc phiên
|
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server kết thúc phiên
|
||||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server khởi động lại...{}Xin chờ...
|
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server khởi động lại...{}{}Xin chờ...
|
||||||
STR_NETWORK_MESSAGE_KICKED :*** {STRING} đã bị đá khỏi ván chơi. Lý do: ({STRING})
|
STR_NETWORK_MESSAGE_KICKED :*** {STRING} đã bị đá khỏi ván chơi. Lý do: ({STRING})
|
||||||
|
|
||||||
STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED :{WHITE}Đăng ký server thất bại
|
STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED :{WHITE}Đăng ký server thất bại
|
||||||
|
@ -2793,6 +2824,10 @@ STR_PICKER_MODE_USED_TOOLTIP :Bật/tắt hi
|
||||||
STR_PICKER_MODE_SAVED :Đã lưu
|
STR_PICKER_MODE_SAVED :Đã lưu
|
||||||
STR_PICKER_MODE_SAVED_TOOLTIP :Bật/tắt hiển thị những hạng mục được lưu
|
STR_PICKER_MODE_SAVED_TOOLTIP :Bật/tắt hiển thị những hạng mục được lưu
|
||||||
|
|
||||||
|
STR_PICKER_PREVIEW_SHRINK :-
|
||||||
|
STR_PICKER_PREVIEW_SHRINK_TOOLTIP :Giảm chiều cao của ảnh xem trước. Ctrl+Click để giảm đến mức tối thiểu
|
||||||
|
STR_PICKER_PREVIEW_EXPAND :+
|
||||||
|
STR_PICKER_PREVIEW_EXPAND_TOOLTIP :Tăng chiều cao của ảnh xem trước. Ctrl+Click để tăng đến mức tối đa
|
||||||
|
|
||||||
STR_PICKER_STATION_CLASS_TOOLTIP :Chọn loại ga bến cần hiển thị
|
STR_PICKER_STATION_CLASS_TOOLTIP :Chọn loại ga bến cần hiển thị
|
||||||
STR_PICKER_STATION_TYPE_TOOLTIP :Chọn loại ga bến để xây. Ctrl+Click để thêm hoặc bớt vào danh sách lưu
|
STR_PICKER_STATION_TYPE_TOOLTIP :Chọn loại ga bến để xây. Ctrl+Click để thêm hoặc bớt vào danh sách lưu
|
||||||
|
@ -2816,6 +2851,7 @@ STR_HOUSE_PICKER_YEARS_FROM :{BLACK}Năm: {O
|
||||||
STR_HOUSE_PICKER_YEARS_UNTIL :{BLACK}Năm: {ORANGE}Đến {NUM}
|
STR_HOUSE_PICKER_YEARS_UNTIL :{BLACK}Năm: {ORANGE}Đến {NUM}
|
||||||
STR_HOUSE_PICKER_SIZE :{BLACK}Kích thước: {ORANGE}{NUM}x{NUM} ô
|
STR_HOUSE_PICKER_SIZE :{BLACK}Kích thước: {ORANGE}{NUM}x{NUM} ô
|
||||||
STR_HOUSE_PICKER_CARGO_ACCEPTED :{BLACK}Hàng hóa được chấp nhận: {ORANGE}
|
STR_HOUSE_PICKER_CARGO_ACCEPTED :{BLACK}Hàng hóa được chấp nhận: {ORANGE}
|
||||||
|
STR_HOUSE_PICKER_CARGO_PRODUCED :{BLACK}Hàng hóa cung cấp: {ORANGE}{CARGO_LIST}
|
||||||
|
|
||||||
STR_HOUSE_PICKER_CLASS_ZONE1 :Ngoài rìa
|
STR_HOUSE_PICKER_CLASS_ZONE1 :Ngoài rìa
|
||||||
STR_HOUSE_PICKER_CLASS_ZONE2 :Ngoại ô
|
STR_HOUSE_PICKER_CLASS_ZONE2 :Ngoại ô
|
||||||
|
@ -2824,6 +2860,7 @@ STR_HOUSE_PICKER_CLASS_ZONE4 :Phía trong ngo
|
||||||
STR_HOUSE_PICKER_CLASS_ZONE5 :Nội thành
|
STR_HOUSE_PICKER_CLASS_ZONE5 :Nội thành
|
||||||
|
|
||||||
STR_HOUSE_PICKER_PROTECT_TITLE :Ngăn chặn nâng cấp
|
STR_HOUSE_PICKER_PROTECT_TITLE :Ngăn chặn nâng cấp
|
||||||
|
STR_HOUSE_PICKER_PROTECT_TOOLTIP :Chọn nếu ngôi nhà này có được bảo vệ khỏi việc bị thay thế hay không khi thị trấn phát triển
|
||||||
STR_HOUSE_PICKER_PROTECT_OFF :Tắt
|
STR_HOUSE_PICKER_PROTECT_OFF :Tắt
|
||||||
STR_HOUSE_PICKER_PROTECT_ON :Bật
|
STR_HOUSE_PICKER_PROTECT_ON :Bật
|
||||||
|
|
||||||
|
@ -3031,6 +3068,11 @@ STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Chọn q
|
||||||
STR_FOUND_TOWN_CITY :{BLACK}Đô thị
|
STR_FOUND_TOWN_CITY :{BLACK}Đô thị
|
||||||
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Thành phố phát triển nhanh hơn thị trấn{}Tuỳ thuộc thiết lập, chúng lớn hơn khi khai sinh
|
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Thành phố phát triển nhanh hơn thị trấn{}Tuỳ thuộc thiết lập, chúng lớn hơn khi khai sinh
|
||||||
|
|
||||||
|
STR_FOUND_TOWN_EXPAND_MODE :{YELLOW}Mở rộng thị trấn:
|
||||||
|
STR_FOUND_TOWN_EXPAND_BUILDINGS :Công trình
|
||||||
|
STR_FOUND_TOWN_EXPAND_BUILDINGS_TOOLTIP :Tăng số công trình của thị trấn
|
||||||
|
STR_FOUND_TOWN_EXPAND_ROADS :Đường sá
|
||||||
|
STR_FOUND_TOWN_EXPAND_ROADS_TOOLTIP :Tăng số đường sá của thị trấn
|
||||||
|
|
||||||
STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Quy hoạch đường đô thị:
|
STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Quy hoạch đường đô thị:
|
||||||
STR_FOUND_TOWN_SELECT_LAYOUT_TOOLTIP :{BLACK}Chọn để quy hoạch đường bộ trong đô thị
|
STR_FOUND_TOWN_SELECT_LAYOUT_TOOLTIP :{BLACK}Chọn để quy hoạch đường bộ trong đô thị
|
||||||
|
@ -3103,6 +3145,8 @@ STR_LANG_AREA_INFORMATION_TRAM_TYPE :{BLACK}Kiểu x
|
||||||
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Giới hạn tốc độ đường ray: {LTBLUE}{VELOCITY}
|
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Giới hạn tốc độ đường ray: {LTBLUE}{VELOCITY}
|
||||||
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Hạn chế tốc độ đường bộ: {LTBLUE}{VELOCITY}
|
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Hạn chế tốc độ đường bộ: {LTBLUE}{VELOCITY}
|
||||||
STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}Tốc độ xe điện giới hạn: {LTBLUE}{VELOCITY}
|
STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}Tốc độ xe điện giới hạn: {LTBLUE}{VELOCITY}
|
||||||
|
STR_LAND_AREA_INFORMATION_TOWN_CAN_UPGRADE :{BLACK}Nâng cấp thị trấn: {LTBLUE}Có thể
|
||||||
|
STR_LAND_AREA_INFORMATION_TOWN_CANNOT_UPGRADE :{BLACK}Nâng cấp thị trấn: {LTBLUE}Không thể
|
||||||
|
|
||||||
# Description of land area of different tiles
|
# Description of land area of different tiles
|
||||||
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Đá
|
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Đá
|
||||||
|
@ -3111,6 +3155,9 @@ STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Đất trống
|
||||||
STR_LAI_CLEAR_DESCRIPTION_GRASS :Bãi cỏ
|
STR_LAI_CLEAR_DESCRIPTION_GRASS :Bãi cỏ
|
||||||
STR_LAI_CLEAR_DESCRIPTION_FIELDS :Cánh đồng
|
STR_LAI_CLEAR_DESCRIPTION_FIELDS :Cánh đồng
|
||||||
STR_LAI_CLEAR_DESCRIPTION_DESERT :Hoang mạc
|
STR_LAI_CLEAR_DESCRIPTION_DESERT :Hoang mạc
|
||||||
|
STR_LAI_CLEAR_DESCRIPTION_SNOWY_ROCKS :Đá có tuyết phủ
|
||||||
|
STR_LAI_CLEAR_DESCRIPTION_SNOWY_ROUGH_LAND :Đất gồ ghề có tuyết phủ
|
||||||
|
STR_LAI_CLEAR_DESCRIPTION_SNOWY_GRASS :Cỏ có tuyết phủ
|
||||||
|
|
||||||
STR_LAI_RAIL_DESCRIPTION_TRACK :Đường ray
|
STR_LAI_RAIL_DESCRIPTION_TRACK :Đường ray
|
||||||
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Đường ray với đèn hiệu khóa
|
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Đường ray với đèn hiệu khóa
|
||||||
|
@ -3579,17 +3626,17 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Đã t
|
||||||
STR_NEWGRF_LIST_MISSING :{RED}Thiếu files
|
STR_NEWGRF_LIST_MISSING :{RED}Thiếu files
|
||||||
|
|
||||||
# NewGRF 'it's broken' warnings
|
# NewGRF 'it's broken' warnings
|
||||||
STR_NEWGRF_BROKEN :{WHITE}Hoạt động của NewGRF '{0:STRING}' có thể gây mất đồng bộ hoặc bị treo.
|
STR_NEWGRF_BROKEN :{WHITE}Hoạt động của NewGRF '{PUSH_COLOUR}{0:STRING}{POP_COLOUR}' có thể gây mất đồng bộ hoặc bị treo.
|
||||||
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Trạng thái đầu kéo '{1:ENGINE}' được thay đổi khi không ở trong xưởng sửa chữa.
|
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Trạng thái đầu kéo '{PUSH_COLOUR}{1:ENGINE}{POP_COLOUR}' được thay đổi khi không ở trong xưởng sửa chữa.
|
||||||
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Nó cắt ngắn độ dài của đoàn tàu '{1:ENGINE}' nếu không ở trong xưởng.
|
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Nó cắt ngắn độ dài của đoàn tàu '{PUSH_COLOUR}{1:ENGINE}{POP_COLOUR}' nếu không ở trong xưởng.
|
||||||
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Sức chứa của phương tiện bị thay đổi '{1:ENGINE}' khi không ở trong xưởng hoặc vì cải biến
|
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Sức chứa của phương tiện bị thay đổi '{PUSH_COLOUR}{1:ENGINE}{POP_COLOUR}' khi không ở trong xưởng hoặc vì cải biến
|
||||||
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Đoàn tàu '{VEHICLE}' của '{COMPANY}' có độ dài không hợp lệ. Sự cố có thể có căn nguyên từ NewGRFs. Ván chơi có thể mất đồng bộ hoặc bị treo
|
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Đoàn tàu '{VEHICLE}' của '{COMPANY}' có độ dài không hợp lệ. Sự cố có thể có căn nguyên từ NewGRFs. Ván chơi có thể mất đồng bộ hoặc bị treo
|
||||||
|
|
||||||
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' không hợp lệ.
|
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{PUSH_COLOUR}{0:STRING}{POP_COLOUR}' không hợp lệ.
|
||||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Danh mục hàng hoá/cải biến được cho '{1:ENGINE}' khác với danh mục mua được sau khi đã có. Việc này khiến cho việc tự thay thế hay là tự cải biến không chính xác.
|
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Danh mục hàng hoá/cải biến được cho '{PUSH_COLOUR}{1:ENGINE}{POP_COLOUR}' khác với danh mục mua được sau khi đã có. Việc này khiến cho việc tự thay thế hay là tự cải biến không chính xác.
|
||||||
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' gây ra một vòng lặp vô tận khi gọi hàm callback.
|
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{PUSH_COLOUR}{1:STRING}{POP_COLOUR}' gây ra một vòng lặp vô tận khi gọi hàm callback.
|
||||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Hàm callback {1:HEX} gửi trả kết quả sai/không rõ {2:HEX}
|
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Hàm callback {1:HEX} gửi trả kết quả sai/không rõ {2:HEX}
|
||||||
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' trả về loại hàng hoá sản xuất không hợp lệ khi gọi lại tại {2:HEX}
|
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{PUSH_COLOUR}{1:STRING}{POP_COLOUR}' trả về loại hàng hoá sản xuất không hợp lệ khi gọi lại tại {2:HEX}
|
||||||
|
|
||||||
# 'User removed essential NewGRFs'-placeholders for stuff without specs
|
# 'User removed essential NewGRFs'-placeholders for stuff without specs
|
||||||
STR_NEWGRF_INVALID_CARGO :<sai kiểu hàng>
|
STR_NEWGRF_INVALID_CARGO :<sai kiểu hàng>
|
||||||
|
@ -3650,6 +3697,10 @@ STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Đổi t
|
||||||
|
|
||||||
STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Mở rộng
|
STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Mở rộng
|
||||||
STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Tăng quy mô đô thị
|
STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Tăng quy mô đô thị
|
||||||
|
STR_TOWN_VIEW_EXPAND_BUILDINGS_BUTTON :{BLACK}Mở rộng công trình
|
||||||
|
STR_TOWN_VIEW_EXPAND_BUILDINGS_TOOLTIP :{BLACK}Tăng số công trình của thị trấn
|
||||||
|
STR_TOWN_VIEW_EXPAND_ROADS_BUTTON :{BLACK}Mở rộng đường
|
||||||
|
STR_TOWN_VIEW_EXPAND_ROADS_TOOLTIP :{BLACK}Tăng số đường sá của thị trấn
|
||||||
STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Xoá
|
STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Xoá
|
||||||
STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Xoá bỏ đô thị này hoàn toàn
|
STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Xoá bỏ đô thị này hoàn toàn
|
||||||
|
|
||||||
|
@ -3975,6 +4026,8 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Sản l
|
||||||
STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Sản lượng phút trước:
|
STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE :{BLACK}Sản lượng phút trước:
|
||||||
STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% đã vận chuyển)
|
STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% đã vận chuyển)
|
||||||
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Xem vị trí trung tâm của nhà máy. Ctrl+Click mở cửa sổ mới để xem
|
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Xem vị trí trung tâm của nhà máy. Ctrl+Click mở cửa sổ mới để xem
|
||||||
|
STR_INDUSTRY_VIEW_CARGO_GRAPH :{BLACK}Đồ thị hàng hóa
|
||||||
|
STR_INDUSTRY_VIEW_CARGO_GRAPH_TOOLTIP :{BLACK}Xem đồ thị lịch sử kinh doanh hàng hóa
|
||||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Mức sản lượng: {YELLOW}{COMMA}%
|
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Mức sản lượng: {YELLOW}{COMMA}%
|
||||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Nhà máy này đã thông báo sắp đóng cửa!
|
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Nhà máy này đã thông báo sắp đóng cửa!
|
||||||
|
|
||||||
|
@ -4386,10 +4439,10 @@ STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Hiện l
|
||||||
STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Hiện lộ trình máy bay. Ctrl+Click để hiện lịch trình
|
STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Hiện lộ trình máy bay. Ctrl+Click để hiện lịch trình
|
||||||
|
|
||||||
###length VEHICLE_TYPES
|
###length VEHICLE_TYPES
|
||||||
STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Hiện chi tiết tàu hoả
|
STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Hiện chi tiết tàu hoả. Ctrl+Click vào để hiện nhóm của tàu hỏa
|
||||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Hiện chi tiết xe
|
STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Hiện chi tiết xe. Ctrl+Click để hiện nhóm phương tiện
|
||||||
STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Hiện chi tiết tàu thuỷ
|
STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Hiện chi tiết tàu thuỷ. Ctrl+Click vào để hiện nhóm của tàu thủy
|
||||||
STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Hiện chi tiết máy bay
|
STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Hiện chi tiết máy bay. Ctrl+Click để hiện nhóm của máy bay
|
||||||
|
|
||||||
###length VEHICLE_TYPES
|
###length VEHICLE_TYPES
|
||||||
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Tác động đến tàu hỏa hiện tại - bấm để dừng/chạy tàu hỏa
|
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Tác động đến tàu hỏa hiện tại - bấm để dừng/chạy tàu hỏa
|
||||||
|
@ -4644,55 +4697,56 @@ STR_ORDER_ROAD_VEHICLE_DEPOT :Xưởng xe
|
||||||
STR_ORDER_SHIP_DEPOT :Xưởng tàu thuỷ
|
STR_ORDER_SHIP_DEPOT :Xưởng tàu thuỷ
|
||||||
###next-name-looks-similar
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
STR_ORDER_GO_TO_NEAREST_HANGAR_FORMAT :{STRING} xưởng sân bay gần nhất
|
||||||
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} gần {STRING} nhất
|
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} gần {STRING} nhất
|
||||||
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
|
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
|
||||||
|
|
||||||
STR_ORDER_REFIT_ORDER :(Cải biến thành {STRING})
|
STR_ORDER_REFIT_ORDER :{SPACE}(Cải biến thành {STRING})
|
||||||
STR_ORDER_REFIT_STOP_ORDER :(Cải biến thành {STRING} và dừng)
|
STR_ORDER_REFIT_STOP_ORDER :{SPACE}(Cải biến thành {STRING} và dừng)
|
||||||
STR_ORDER_STOP_ORDER :(Dừng)
|
STR_ORDER_STOP_ORDER :{SPACE}(Dừng)
|
||||||
|
|
||||||
STR_ORDER_WAIT_TO_UNBUNCH :(Chờ để gỡ gộp)
|
STR_ORDER_WAIT_TO_UNBUNCH :{SPACE}(Chờ để gỡ gộp)
|
||||||
|
|
||||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION}
|
STR_ORDER_GO_TO_STATION :{STRING} {STATION}
|
||||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Không thể sử dụng trạm){POP_COLOUR} {STRING} {STATION}
|
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Không thể sử dụng trạm){POP_COLOUR} {STRING} {STATION}
|
||||||
|
|
||||||
STR_ORDER_IMPLICIT :(Chạy ngầm)
|
STR_ORDER_IMPLICIT :{SPACE}(Chạy ngầm)
|
||||||
|
|
||||||
STR_ORDER_FULL_LOAD :(Bốc đầy hàng)
|
STR_ORDER_FULL_LOAD :{SPACE}(Bốc đầy hàng)
|
||||||
STR_ORDER_FULL_LOAD_ANY :(Bốc đủ bất kỳ hàng nào)
|
STR_ORDER_FULL_LOAD_ANY :{SPACE}(Bốc đủ bất kỳ hàng nào)
|
||||||
STR_ORDER_NO_LOAD :(Không bốc xếp)
|
STR_ORDER_NO_LOAD :{SPACE}(Không bốc xếp)
|
||||||
STR_ORDER_UNLOAD :(Dỡ và lấy hàng khác)
|
STR_ORDER_UNLOAD :{SPACE}(Dỡ và lấy hàng khác)
|
||||||
STR_ORDER_UNLOAD_FULL_LOAD :(Dỡ tất hàng và chờ bốc đầy hàng)
|
STR_ORDER_UNLOAD_FULL_LOAD :{SPACE}(Dỡ tất hàng và chờ bốc đầy hàng)
|
||||||
STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Dỡ tất hàng và chờ bốc đủ bất kỳ hàng nào)
|
STR_ORDER_UNLOAD_FULL_LOAD_ANY :{SPACE}(Dỡ tất hàng và chờ bốc đủ bất kỳ hàng nào)
|
||||||
STR_ORDER_UNLOAD_NO_LOAD :(Dỡ tất hàng và để trống)
|
STR_ORDER_UNLOAD_NO_LOAD :{SPACE}(Dỡ tất hàng và để trống)
|
||||||
STR_ORDER_TRANSFER :(Trung chuyển hàng và lấy hàng khác)
|
STR_ORDER_TRANSFER :{SPACE}(Trung chuyển hàng và lấy hàng khác)
|
||||||
STR_ORDER_TRANSFER_FULL_LOAD :(Trung chuyển và chờ bốc đầy hàng)
|
STR_ORDER_TRANSFER_FULL_LOAD :{SPACE}(Trung chuyển và chờ bốc đầy hàng)
|
||||||
STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Trung chuyển và chờ bốc đủ hàng bất kỳ)
|
STR_ORDER_TRANSFER_FULL_LOAD_ANY :{SPACE}(Trung chuyển và chờ bốc đủ hàng bất kỳ)
|
||||||
STR_ORDER_TRANSFER_NO_LOAD :(Trung chuyển và để trống)
|
STR_ORDER_TRANSFER_NO_LOAD :{SPACE}(Trung chuyển và để trống)
|
||||||
STR_ORDER_NO_UNLOAD :(Không dỡ và lấy hàng)
|
STR_ORDER_NO_UNLOAD :{SPACE}(Không dỡ và lấy hàng)
|
||||||
STR_ORDER_NO_UNLOAD_FULL_LOAD :(Không dỡ và chờ lấy thêm đầy hàng)
|
STR_ORDER_NO_UNLOAD_FULL_LOAD :{SPACE}(Không dỡ và chờ lấy thêm đầy hàng)
|
||||||
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Không dỡ và chờ lấy đủ hàng bất kỳ)
|
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :{SPACE}(Không dỡ và chờ lấy đủ hàng bất kỳ)
|
||||||
STR_ORDER_NO_UNLOAD_NO_LOAD :(Không bốc hàng và không dỡ hàng)
|
STR_ORDER_NO_UNLOAD_NO_LOAD :{SPACE}(Không bốc hàng và không dỡ hàng)
|
||||||
|
|
||||||
STR_ORDER_AUTO_REFIT :(Tự cải biến thành {STRING})
|
STR_ORDER_AUTO_REFIT :{SPACE}(Tự cải biến thành {STRING})
|
||||||
STR_ORDER_FULL_LOAD_REFIT :(Tự cải biến và chất đầy {STRING})
|
STR_ORDER_FULL_LOAD_REFIT :{SPACE}(Tự cải biến và chất đầy {STRING})
|
||||||
STR_ORDER_FULL_LOAD_ANY_REFIT :(Tự cải biến và chất đầy bất kỳ {STRING})
|
STR_ORDER_FULL_LOAD_ANY_REFIT :{SPACE}(Tự cải biến và chất đầy bất kỳ {STRING})
|
||||||
STR_ORDER_UNLOAD_REFIT :(Dỡ hàng và tự cải biến để lấy {STRING})
|
STR_ORDER_UNLOAD_REFIT :{SPACE}(Dỡ hàng và tự cải biến để lấy {STRING})
|
||||||
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Dỡ hàng và tự cải biến đề bốc đầy {STRING})
|
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :{SPACE}(Dỡ hàng và tự cải biến đề bốc đầy {STRING})
|
||||||
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Dỡ hàng và tự cải biến để bốc đầy bất kỳ {STRING})
|
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :{SPACE}(Dỡ hàng và tự cải biến để bốc đầy bất kỳ {STRING})
|
||||||
STR_ORDER_TRANSFER_REFIT :(Trung chuyển và tự cải biến để lấy {STRING})
|
STR_ORDER_TRANSFER_REFIT :{SPACE}(Trung chuyển và tự cải biến để lấy {STRING})
|
||||||
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Trung chuyển và tự cải biến đề bốc đầy {STRING})
|
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :{SPACE}(Trung chuyển và tự cải biến đề bốc đầy {STRING})
|
||||||
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Trung chuyển và tự cải biến để bốc đầy bất kỳ {STRING})
|
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :{SPACE}(Trung chuyển và tự cải biến để bốc đầy bất kỳ {STRING})
|
||||||
STR_ORDER_NO_UNLOAD_REFIT :(Không dỡ hàng và tự cái biến để lấy {STRING})
|
STR_ORDER_NO_UNLOAD_REFIT :{SPACE}(Không dỡ hàng và tự cái biến để lấy {STRING})
|
||||||
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Không dỡ hàng và tự cải biến để bốc đầy {STRING})
|
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :{SPACE}(Không dỡ hàng và tự cải biến để bốc đầy {STRING})
|
||||||
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Không dỡ hàng và tự cải biến để bốc đầy bất kỳ {STRING})
|
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :{SPACE}(Không dỡ hàng và tự cải biến để bốc đầy bất kỳ {STRING})
|
||||||
|
|
||||||
STR_ORDER_AUTO_REFIT_ANY :hàng hóa sẵn có
|
STR_ORDER_AUTO_REFIT_ANY :hàng hóa sẵn có
|
||||||
|
|
||||||
###length 3
|
###length 3
|
||||||
STR_ORDER_STOP_LOCATION_NEAR_END :[đỗ ở đầu gần]
|
STR_ORDER_STOP_LOCATION_NEAR_END :{SPACE}[đỗ ở đầu gần]
|
||||||
STR_ORDER_STOP_LOCATION_MIDDLE :[đỗ ở giữa]
|
STR_ORDER_STOP_LOCATION_MIDDLE :{SPACE}[đỗ ở giữa]
|
||||||
STR_ORDER_STOP_LOCATION_FAR_END :[đỗ ở đầu xa]
|
STR_ORDER_STOP_LOCATION_FAR_END :{SPACE}[đỗ ở đầu xa]
|
||||||
|
|
||||||
STR_ORDER_OUT_OF_RANGE :{RED} (Điểm đến kế tiếp ngoài tầm xa)
|
STR_ORDER_OUT_OF_RANGE :{RED} (Điểm đến kế tiếp ngoài tầm xa)
|
||||||
|
|
||||||
|
@ -4712,14 +4766,15 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Lịch t
|
||||||
STR_TIMETABLE_NO_TRAVEL :Không di chuyển
|
STR_TIMETABLE_NO_TRAVEL :Không di chuyển
|
||||||
STR_TIMETABLE_NOT_TIMETABLEABLE :Hành trình (tự động; tính thời gian theo lịch trình thủ công kế tiếp)
|
STR_TIMETABLE_NOT_TIMETABLEABLE :Hành trình (tự động; tính thời gian theo lịch trình thủ công kế tiếp)
|
||||||
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Di chuyển (không bó buộc theo lịch trình)
|
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Di chuyển (không bó buộc theo lịch trình)
|
||||||
|
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Hành trình với tốc độ tối đa là {VELOCITY} (chưa dựng lịch trình)
|
||||||
STR_TIMETABLE_TRAVEL_FOR :Di chuyển trong {STRING}
|
STR_TIMETABLE_TRAVEL_FOR :Di chuyển trong {STRING}
|
||||||
STR_TIMETABLE_TRAVEL_FOR_SPEED :Lộ trình {STRING} với tốc độ tối đa {VELOCITY}
|
STR_TIMETABLE_TRAVEL_FOR_SPEED :Lộ trình {STRING} với tốc độ tối đa {VELOCITY}
|
||||||
STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Lộ trình (cho {STRING}, chưa có lịch trình)
|
STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Lộ trình (cho {STRING}, chưa có lịch trình)
|
||||||
STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Lộ trình (cho {STRING}, chưa có lịch trình) với tốc độ đối đa {VELOCITY}
|
STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Lộ trình (cho {STRING}, chưa có lịch trình) với tốc độ đối đa {VELOCITY}
|
||||||
STR_TIMETABLE_STAY_FOR_ESTIMATED :(ở lại {STRING}, chưa có lịch trình)
|
STR_TIMETABLE_STAY_FOR_ESTIMATED :{SPACE}(ở lại {STRING}, chưa có lịch trình)
|
||||||
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(di chuyển đến {STRING}, chưa có lịch trình)
|
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :{SPACE}(di chuyển đến {STRING}, chưa có lịch trình)
|
||||||
STR_TIMETABLE_STAY_FOR :và ở lại trong {STRING}
|
STR_TIMETABLE_STAY_FOR :{SPACE}và ở lại trong {STRING}
|
||||||
STR_TIMETABLE_AND_TRAVEL_FOR :và di chuyển trong {STRING}
|
STR_TIMETABLE_AND_TRAVEL_FOR :{SPACE}và di chuyển trong {STRING}
|
||||||
|
|
||||||
STR_TIMETABLE_APPROX_TIME :{BLACK}Lịch trình này sẽ mất khoảng {STRING} để hoàn thành
|
STR_TIMETABLE_APPROX_TIME :{BLACK}Lịch trình này sẽ mất khoảng {STRING} để hoàn thành
|
||||||
STR_TIMETABLE_TOTAL_TIME :{BLACK}Lịch trình này sẽ mất {STRING} để hoàn thành
|
STR_TIMETABLE_TOTAL_TIME :{BLACK}Lịch trình này sẽ mất {STRING} để hoàn thành
|
||||||
|
@ -4738,12 +4793,14 @@ STR_TIMETABLE_START_SECONDS_QUERY :Số giây cho
|
||||||
|
|
||||||
STR_TIMETABLE_CHANGE_TIME :{BLACK}Đổi thời gian
|
STR_TIMETABLE_CHANGE_TIME :{BLACK}Đổi thời gian
|
||||||
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Thay đổi thời lượng của điểm lộ trình được phép sử dụng. Ctrl+Click đặt thời gian cho mọi lộ trình
|
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Thay đổi thời lượng của điểm lộ trình được phép sử dụng. Ctrl+Click đặt thời gian cho mọi lộ trình
|
||||||
|
STR_TIMETABLE_CHANGE_TIME_QUERY :Thay đổi thời gian
|
||||||
|
|
||||||
STR_TIMETABLE_CLEAR_TIME :{BLACK}Xoá thời gian
|
STR_TIMETABLE_CLEAR_TIME :{BLACK}Xoá thời gian
|
||||||
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Xóa thời lượng áp dụng cho điểm lộ trình. Ctrl+Click xoá tất cả thời gian cho mọi lộ trình
|
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Xóa thời lượng áp dụng cho điểm lộ trình. Ctrl+Click xoá tất cả thời gian cho mọi lộ trình
|
||||||
|
|
||||||
STR_TIMETABLE_CHANGE_SPEED :{BLACK}Thay Đổi Giới Hạn Tốc Độ
|
STR_TIMETABLE_CHANGE_SPEED :{BLACK}Thay Đổi Giới Hạn Tốc Độ
|
||||||
STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Thay đổi tốc độ tối đa của lộ trình được chọn. Ctrl+Click đặt tốc độ cho mọi lộ trình
|
STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Thay đổi tốc độ tối đa của lộ trình được chọn. Ctrl+Click đặt tốc độ cho mọi lộ trình
|
||||||
|
STR_TIMETABLE_CHANGE_SPEED_QUERY :Thay đổi giới hạn tốc độ
|
||||||
|
|
||||||
STR_TIMETABLE_CLEAR_SPEED :{BLACK}Xóa Giới Hạn Tốc Độ
|
STR_TIMETABLE_CLEAR_SPEED :{BLACK}Xóa Giới Hạn Tốc Độ
|
||||||
STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Xóa tốc độ đối đa đối với lộ trình được chọn. Ctrl+Click xoá tốc độ cho mọi lộ trình
|
STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Xóa tốc độ đối đa đối với lộ trình được chọn. Ctrl+Click xoá tốc độ cho mọi lộ trình
|
||||||
|
@ -4907,7 +4964,7 @@ STR_GAME_SAVELOAD_NOT_AVAILABLE :<không có s
|
||||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Lưu ván chơi sẽ không có xe điện. Những công trình cho xe điện sẽ bị xoá bỏ
|
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Lưu ván chơi sẽ không có xe điện. Những công trình cho xe điện sẽ bị xoá bỏ
|
||||||
|
|
||||||
# Map generation messages
|
# Map generation messages
|
||||||
STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Sinh bản đồ bị ngưng...{}... không có nơi đặt đô thị
|
STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Sinh bản đồ bị ngưng...{}{}... không có nơi đặt đô thị
|
||||||
STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... không có đô thị nào ở màn chơi kịch bản này
|
STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... không có đô thị nào ở màn chơi kịch bản này
|
||||||
|
|
||||||
STR_ERROR_PNGMAP :{WHITE}Không thể nạp nền từ file PNG...
|
STR_ERROR_PNGMAP :{WHITE}Không thể nạp nền từ file PNG...
|
||||||
|
@ -4946,6 +5003,7 @@ STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Yêu c
|
||||||
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Tạo dốc bị sai hướng
|
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Tạo dốc bị sai hướng
|
||||||
STR_ERROR_CAN_T_DO_THIS :{WHITE}Không làm thế này được...
|
STR_ERROR_CAN_T_DO_THIS :{WHITE}Không làm thế này được...
|
||||||
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Cần giải toả nhà cửa trước
|
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Cần giải toả nhà cửa trước
|
||||||
|
STR_ERROR_BUILDING_IS_PROTECTED :{WHITE}... công trình được bảo vệ
|
||||||
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Không thể dọn dẹp khu vực này...
|
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Không thể dọn dẹp khu vực này...
|
||||||
STR_ERROR_SITE_UNSUITABLE :{WHITE}... điểm không phù hợp
|
STR_ERROR_SITE_UNSUITABLE :{WHITE}... điểm không phù hợp
|
||||||
STR_ERROR_ALREADY_BUILT :{WHITE}... đã xây rồi
|
STR_ERROR_ALREADY_BUILT :{WHITE}... đã xây rồi
|
||||||
|
@ -4998,7 +5056,7 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... quá
|
||||||
STR_ERROR_TOO_MANY_TOWNS :{WHITE}... quá nhiều đô thị
|
STR_ERROR_TOO_MANY_TOWNS :{WHITE}... quá nhiều đô thị
|
||||||
STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... không còn khoảng trống nào trên bản đồ
|
STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... không còn khoảng trống nào trên bản đồ
|
||||||
STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Xây dựng cầu đường đang tiến hành
|
STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Xây dựng cầu đường đang tiến hành
|
||||||
STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Không thể xoá đo thị này...{}Có một ga, bến hoặc xưởng thuộc đô thị hoặc là 1 ô đất của đô thị không thể xoá được.
|
STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Không thể xoá đo thị này...{}{}Có một ga, bến hoặc xưởng thuộc đô thị hoặc là 1 ô đất của đô thị không thể xoá được.
|
||||||
STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... không có nơi nào hợp lý để dựng tượng đài ở trung tâm đô thị này
|
STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... không có nơi nào hợp lý để dựng tượng đài ở trung tâm đô thị này
|
||||||
STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Không thể xây dựng nhà...
|
STR_ERROR_CAN_T_BUILD_HOUSE :{WHITE}Không thể xây dựng nhà...
|
||||||
|
|
||||||
|
@ -5825,6 +5883,7 @@ STR_CURRENCY_SHORT_GIGA :{NBSP}tỷ
|
||||||
STR_CURRENCY_SHORT_TERA :{NBSP}ktỷ
|
STR_CURRENCY_SHORT_TERA :{NBSP}ktỷ
|
||||||
|
|
||||||
STR_JUST_CARGO :{CARGO_LONG}
|
STR_JUST_CARGO :{CARGO_LONG}
|
||||||
|
STR_JUST_LEFT_ARROW :{LEFT_ARROW}
|
||||||
STR_JUST_RIGHT_ARROW :{RIGHT_ARROW}
|
STR_JUST_RIGHT_ARROW :{RIGHT_ARROW}
|
||||||
STR_JUST_CHECKMARK :{CHECKMARK}
|
STR_JUST_CHECKMARK :{CHECKMARK}
|
||||||
STR_JUST_COMMA :{COMMA}
|
STR_JUST_COMMA :{COMMA}
|
||||||
|
@ -5864,3 +5923,11 @@ STR_SHIP :{BLACK}{SHIP}
|
||||||
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
|
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
|
||||||
|
|
||||||
STR_BADGE_NAME_LIST :{STRING}: {GOLD}{STRING}
|
STR_BADGE_NAME_LIST :{STRING}: {GOLD}{STRING}
|
||||||
|
STR_BADGE_CONFIG_MENU_TOOLTIP :Mở thiết lập phù hiệu
|
||||||
|
STR_BADGE_CONFIG_RESET :Thiêt lập lại
|
||||||
|
STR_BADGE_CONFIG_ICONS :{WHITE}Ảnh phù hiệu
|
||||||
|
STR_BADGE_CONFIG_FILTERS :{WHITE}Bộ lọc phù hiệu
|
||||||
|
STR_BADGE_CONFIG_PREVIEW :Ảnh xem trước
|
||||||
|
STR_BADGE_CONFIG_NAME :Tên
|
||||||
|
STR_BADGE_FILTER_ANY_LABEL :Bất cứ {STRING} nào
|
||||||
|
STR_BADGE_FILTER_IS_LABEL :{STRING} là {STRING}
|
||||||
|
|
|
@ -595,7 +595,7 @@ struct MusicTrackSelectionWindow : public Window {
|
||||||
|
|
||||||
case WID_MTS_MUSICSET: {
|
case WID_MTS_MUSICSET: {
|
||||||
int selected = 0;
|
int selected = 0;
|
||||||
ShowDropDownList(this, BuildSetDropDownList<BaseMusic>(&selected), selected, widget);
|
this->HandleDropdownListButtonClick(BuildSetDropDownList<BaseMusic>(&selected), selected, widget);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1019,7 +1019,7 @@ struct NetworkStartServerWindow : public Window {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_NSS_CONNTYPE_BTN: // Connection type
|
case WID_NSS_CONNTYPE_BTN: // Connection type
|
||||||
ShowDropDownList(this, BuildVisibilityDropDownList(), _settings_client.network.server_game_type, WID_NSS_CONNTYPE_BTN);
|
this->HandleDropdownListButtonClick(BuildVisibilityDropDownList(), _settings_client.network.server_game_type, WID_NSS_CONNTYPE_BTN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_NSS_CLIENTS_BTND: case WID_NSS_CLIENTS_BTNU: // Click on up/down button for number of clients
|
case WID_NSS_CLIENTS_BTND: case WID_NSS_CLIENTS_BTNU: // Click on up/down button for number of clients
|
||||||
|
@ -1714,7 +1714,7 @@ public:
|
||||||
case WID_CL_SERVER_VISIBILITY:
|
case WID_CL_SERVER_VISIBILITY:
|
||||||
if (!_network_server) break;
|
if (!_network_server) break;
|
||||||
|
|
||||||
ShowDropDownList(this, BuildVisibilityDropDownList(), _settings_client.network.server_game_type, WID_CL_SERVER_VISIBILITY);
|
this->HandleDropdownListButtonClick(BuildVisibilityDropDownList(), _settings_client.network.server_game_type, WID_CL_SERVER_VISIBILITY);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_CL_MATRIX: {
|
case WID_CL_MATRIX: {
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "newgrf_badge.h"
|
#include "newgrf_badge.h"
|
||||||
#include "newgrf_badge_type.h"
|
#include "newgrf_badge_type.h"
|
||||||
#include "timer/timer_game_calendar.h"
|
#include "timer/timer_game_calendar.h"
|
||||||
|
#include "widget_type.h"
|
||||||
|
|
||||||
class GUIBadgeClasses : public UsedBadgeClasses {
|
class GUIBadgeClasses : public UsedBadgeClasses {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -941,7 +941,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
|
||||||
}
|
}
|
||||||
|
|
||||||
this->CloseChildWindows(WC_QUERY_STRING); // Remove the parameter query window
|
this->CloseChildWindows(WC_QUERY_STRING); // Remove the parameter query window
|
||||||
ShowDropDownList(this, std::move(list), this->preset, WID_NS_PRESET_LIST);
|
this->HandleDropdownListButtonClick(std::move(list), this->preset, WID_NS_PRESET_LIST);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1254,7 +1254,7 @@ public:
|
||||||
} else {
|
} else {
|
||||||
const Order *o = this->vehicle->GetOrder(this->OrderGetSel());
|
const Order *o = this->vehicle->GetOrder(this->OrderGetSel());
|
||||||
assert(o != nullptr);
|
assert(o != nullptr);
|
||||||
ShowDropDownMenu(this, _order_non_stop_drowdown, o->GetNonStopType(), WID_O_NON_STOP, 0,
|
this->HandleDropdownMenuButtonClick(_order_non_stop_drowdown, o->GetNonStopType(), WID_O_NON_STOP, 0,
|
||||||
o->IsType(OT_GOTO_STATION) ? 0 : (o->IsType(OT_GOTO_WAYPOINT) ? 3 : 12));
|
o->IsType(OT_GOTO_STATION) ? 0 : (o->IsType(OT_GOTO_WAYPOINT) ? 3 : 12));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1275,7 +1275,7 @@ public:
|
||||||
case OPOS_SHARE: sel = 3; break;
|
case OPOS_SHARE: sel = 3; break;
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
}
|
}
|
||||||
ShowDropDownMenu(this, this->vehicle->type == VEH_AIRCRAFT ? _order_goto_dropdown_aircraft : _order_goto_dropdown, sel, WID_O_GOTO, 0, 0);
|
this->HandleDropdownMenuButtonClick(this->vehicle->type == VEH_AIRCRAFT ? _order_goto_dropdown_aircraft : _order_goto_dropdown, sel, WID_O_GOTO, 0, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1283,7 +1283,7 @@ public:
|
||||||
if (this->GetWidget<NWidgetLeaf>(widget)->ButtonHit(pt)) {
|
if (this->GetWidget<NWidgetLeaf>(widget)->ButtonHit(pt)) {
|
||||||
this->OrderClick_FullLoad(OLF_FULL_LOAD_ANY, true);
|
this->OrderClick_FullLoad(OLF_FULL_LOAD_ANY, true);
|
||||||
} else {
|
} else {
|
||||||
ShowDropDownMenu(this, _order_full_load_drowdown, this->vehicle->GetOrder(this->OrderGetSel())->GetLoadType(), WID_O_FULL_LOAD, 0, 2);
|
this->HandleDropdownMenuButtonClick(_order_full_load_drowdown, this->vehicle->GetOrder(this->OrderGetSel())->GetLoadType(), WID_O_FULL_LOAD, 0, 2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1291,7 +1291,7 @@ public:
|
||||||
if (this->GetWidget<NWidgetLeaf>(widget)->ButtonHit(pt)) {
|
if (this->GetWidget<NWidgetLeaf>(widget)->ButtonHit(pt)) {
|
||||||
this->OrderClick_Unload(OUFB_UNLOAD, true);
|
this->OrderClick_Unload(OUFB_UNLOAD, true);
|
||||||
} else {
|
} else {
|
||||||
ShowDropDownMenu(this, _order_unload_drowdown, this->vehicle->GetOrder(this->OrderGetSel())->GetUnloadType(), WID_O_UNLOAD, 0, 8);
|
this->HandleDropdownMenuButtonClick(_order_unload_drowdown, this->vehicle->GetOrder(this->OrderGetSel())->GetUnloadType(), WID_O_UNLOAD, 0, 8);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1300,14 +1300,14 @@ public:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_O_DEPOT_ACTION:
|
case WID_O_DEPOT_ACTION:
|
||||||
ShowDropDownMenu(this, _order_depot_action_dropdown, DepotActionStringIndex(this->vehicle->GetOrder(this->OrderGetSel())), WID_O_DEPOT_ACTION, 0, 0);
|
this->HandleDropdownMenuButtonClick(_order_depot_action_dropdown, DepotActionStringIndex(this->vehicle->GetOrder(this->OrderGetSel())), WID_O_DEPOT_ACTION, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_O_REFIT_DROPDOWN:
|
case WID_O_REFIT_DROPDOWN:
|
||||||
if (this->GetWidget<NWidgetLeaf>(widget)->ButtonHit(pt)) {
|
if (this->GetWidget<NWidgetLeaf>(widget)->ButtonHit(pt)) {
|
||||||
this->OrderClick_Refit(0, true);
|
this->OrderClick_Refit(0, true);
|
||||||
} else {
|
} else {
|
||||||
ShowDropDownMenu(this, _order_refit_action_dropdown, 0, WID_O_REFIT_DROPDOWN, 0, 0);
|
this->HandleDropdownMenuButtonClick(_order_refit_action_dropdown, 0, WID_O_REFIT_DROPDOWN, 0, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1320,14 +1320,14 @@ public:
|
||||||
for (const auto &ocv : _order_conditional_variable) {
|
for (const auto &ocv : _order_conditional_variable) {
|
||||||
list.push_back(MakeDropDownListStringItem(STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE + ocv, ocv));
|
list.push_back(MakeDropDownListStringItem(STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE + ocv, ocv));
|
||||||
}
|
}
|
||||||
ShowDropDownList(this, std::move(list), this->vehicle->GetOrder(this->OrderGetSel())->GetConditionVariable(), WID_O_COND_VARIABLE);
|
this->HandleDropdownListButtonClick(std::move(list), this->vehicle->GetOrder(this->OrderGetSel())->GetConditionVariable(), WID_O_COND_VARIABLE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case WID_O_COND_COMPARATOR: {
|
case WID_O_COND_COMPARATOR: {
|
||||||
const Order *o = this->vehicle->GetOrder(this->OrderGetSel());
|
const Order *o = this->vehicle->GetOrder(this->OrderGetSel());
|
||||||
assert(o != nullptr);
|
assert(o != nullptr);
|
||||||
ShowDropDownMenu(this, _order_conditional_condition, o->GetConditionComparator(), WID_O_COND_COMPARATOR, 0, (o->GetConditionVariable() == OCV_REQUIRES_SERVICE) ? 0x3F : 0xC0);
|
this->HandleDropdownMenuButtonClick(_order_conditional_condition, o->GetConditionComparator(), WID_O_COND_COMPARATOR, 0, (o->GetConditionVariable() == OCV_REQUIRES_SERVICE) ? 0x3F : 0xC0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -398,6 +398,8 @@ void PickerWindow::OnClick(Point pt, WidgetID widget, int)
|
||||||
SetBit(this->callbacks.mode, PFM_ALL);
|
SetBit(this->callbacks.mode, PFM_ALL);
|
||||||
}
|
}
|
||||||
this->InvalidateData({PickerInvalidation::Class, PickerInvalidation::Type, PickerInvalidation::Position});
|
this->InvalidateData({PickerInvalidation::Class, PickerInvalidation::Type, PickerInvalidation::Position});
|
||||||
|
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_PW_SHRINK:
|
case WID_PW_SHRINK:
|
||||||
|
@ -441,12 +443,12 @@ void PickerWindow::OnClick(Point pt, WidgetID widget, int)
|
||||||
|
|
||||||
case WID_PW_CONFIGURE_BADGES:
|
case WID_PW_CONFIGURE_BADGES:
|
||||||
if (this->badge_classes.GetClasses().empty()) break;
|
if (this->badge_classes.GetClasses().empty()) break;
|
||||||
ShowDropDownList(this, BuildBadgeClassConfigurationList(this->badge_classes, 1, {}), -1, widget, 0, false, true);
|
this->HandleDropdownListButtonClick(BuildBadgeClassConfigurationList(this->badge_classes, 1, {}), -1, widget, 0, false, true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (IsInsideMM(widget, this->badge_filters.first, this->badge_filters.second)) {
|
if (IsInsideMM(widget, this->badge_filters.first, this->badge_filters.second)) {
|
||||||
ShowDropDownList(this, this->GetWidget<NWidgetBadgeFilter>(widget)->GetDropDownList(), -1, widget, 0, false);
|
this->HandleDropdownListButtonClick(this->GetWidget<NWidgetBadgeFilter>(widget)->GetDropDownList(), -1, widget, 0, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1580,10 +1580,13 @@ public:
|
||||||
if (w != nullptr) ToggleRailButton_Remove(w);
|
if (w != nullptr) ToggleRailButton_Remove(w);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_BS_CONVERT:
|
case WID_BS_CONVERT:
|
||||||
_convert_signal_button = !_convert_signal_button;
|
_convert_signal_button = !_convert_signal_button;
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_BS_DRAG_SIGNALS_DENSITY_DECREASE:
|
case WID_BS_DRAG_SIGNALS_DENSITY_DECREASE:
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
#include "window_gui.h"
|
||||||
|
|
||||||
|
|
||||||
/* == BaseSettingEntry methods == */
|
/* == BaseSettingEntry methods == */
|
||||||
|
|
|
@ -1148,7 +1148,7 @@ struct GameOptionsWindow : Window {
|
||||||
int selected;
|
int selected;
|
||||||
DropDownList list = this->BuildDropDownList(widget, &selected);
|
DropDownList list = this->BuildDropDownList(widget, &selected);
|
||||||
if (!list.empty()) {
|
if (!list.empty()) {
|
||||||
ShowDropDownList(this, std::move(list), selected, widget);
|
this->HandleDropdownListButtonClick(std::move(list), selected, widget);
|
||||||
} else {
|
} else {
|
||||||
if (widget == WID_GO_RESOLUTION_DROPDOWN) ShowErrorMessage(GetEncodedString(STR_ERROR_RESOLUTION_LIST_FAILED), {}, WL_ERROR);
|
if (widget == WID_GO_RESOLUTION_DROPDOWN) ShowErrorMessage(GetEncodedString(STR_ERROR_RESOLUTION_LIST_FAILED), {}, WL_ERROR);
|
||||||
}
|
}
|
||||||
|
@ -1180,7 +1180,7 @@ struct GameOptionsWindow : Window {
|
||||||
int selected;
|
int selected;
|
||||||
DropDownList list = this->BuildDropDownList(widget, &selected);
|
DropDownList list = this->BuildDropDownList(widget, &selected);
|
||||||
if (!list.empty()) {
|
if (!list.empty()) {
|
||||||
ShowDropDownList(this, std::move(list), this->filter.mode, widget);
|
this->HandleDropdownListButtonClick(std::move(list), this->filter.mode, widget);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1189,7 +1189,7 @@ struct GameOptionsWindow : Window {
|
||||||
int selected;
|
int selected;
|
||||||
DropDownList list = this->BuildDropDownList(widget, &selected);
|
DropDownList list = this->BuildDropDownList(widget, &selected);
|
||||||
if (!list.empty()) {
|
if (!list.empty()) {
|
||||||
ShowDropDownList(this, std::move(list), this->filter.type, widget);
|
this->HandleDropdownListButtonClick(std::move(list), this->filter.type, widget);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1735,7 +1735,6 @@ public:
|
||||||
case WID_SM_CENTERMAP: // Center the smallmap again
|
case WID_SM_CENTERMAP: // Center the smallmap again
|
||||||
this->SmallMapCenterOnCurrentPos();
|
this->SmallMapCenterOnCurrentPos();
|
||||||
this->HandleButtonClick(WID_SM_CENTERMAP);
|
this->HandleButtonClick(WID_SM_CENTERMAP);
|
||||||
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_SM_TOGGLETOWNNAME: // Toggle town names
|
case WID_SM_TOGGLETOWNNAME: // Toggle town names
|
||||||
|
|
|
@ -658,12 +658,12 @@ public:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_STL_SORTDROPBTN: // select sorting criteria dropdown menu
|
case WID_STL_SORTDROPBTN: // select sorting criteria dropdown menu
|
||||||
ShowDropDownMenu(this, CompanyStationsWindow::sorter_names, this->stations.SortType(), WID_STL_SORTDROPBTN, 0, 0);
|
this->HandleDropdownMenuButtonClick(CompanyStationsWindow::sorter_names, this->stations.SortType(), WID_STL_SORTDROPBTN, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_STL_CARGODROPDOWN:
|
case WID_STL_CARGODROPDOWN:
|
||||||
this->filter_expanded = false;
|
this->filter_expanded = false;
|
||||||
ShowDropDownList(this, this->BuildCargoDropDownList(this->filter_expanded), -1, widget, 0, false, true);
|
this->HandleDropdownListButtonClick(this->BuildCargoDropDownList(this->filter_expanded), -1, widget, 0, false, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2005,14 +2005,14 @@ struct StationViewWindow : public Window {
|
||||||
* sorting criteria for columns 1, 2, and 3. Column 0 is always
|
* sorting criteria for columns 1, 2, and 3. Column 0 is always
|
||||||
* sorted by cargo type. The others can theoretically be sorted
|
* sorted by cargo type. The others can theoretically be sorted
|
||||||
* by different things but there is no UI for that. */
|
* by different things but there is no UI for that. */
|
||||||
ShowDropDownMenu(this, StationViewWindow::sort_names,
|
this->HandleDropdownMenuButtonClick(StationViewWindow::sort_names,
|
||||||
this->current_mode * 2 + (this->sortings[1] == CargoSortType::Count ? 1 : 0),
|
this->current_mode * 2 + (this->sortings[1] == CargoSortType::Count ? 1 : 0),
|
||||||
WID_SV_SORT_BY, 0, 0);
|
WID_SV_SORT_BY, 0, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case WID_SV_GROUP_BY: {
|
case WID_SV_GROUP_BY: {
|
||||||
ShowDropDownMenu(this, StationViewWindow::group_names, this->grouping_index, WID_SV_GROUP_BY, 0, 0);
|
this->HandleDropdownMenuButtonClick(StationViewWindow::group_names, this->grouping_index, WID_SV_GROUP_BY, 0, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -805,7 +805,7 @@ public:
|
||||||
selected++;
|
selected++;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowDropDownList(this, std::move(list), selected, widget);
|
this->HandleDropdownListButtonClick(std::move(list), selected, widget);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -621,7 +621,6 @@ struct ScenarioEditorLandscapeGenerationWindow : Window {
|
||||||
if (!IsInsideMM(size, 1, 8 + 1)) return;
|
if (!IsInsideMM(size, 1, 8 + 1)) return;
|
||||||
_terraform_size = size;
|
_terraform_size = size;
|
||||||
|
|
||||||
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
|
||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -514,7 +514,7 @@ void TextfileWindow::AfterLoadMarkdown()
|
||||||
for (size_t line : this->jumplist) {
|
for (size_t line : this->jumplist) {
|
||||||
list.push_back(MakeDropDownListStringItem(GetString(STR_TEXTFILE_JUMPLIST_ITEM, this->lines[line].text), (int)line));
|
list.push_back(MakeDropDownListStringItem(GetString(STR_TEXTFILE_JUMPLIST_ITEM, this->lines[line].text), (int)line));
|
||||||
}
|
}
|
||||||
ShowDropDownList(this, std::move(list), -1, widget);
|
this->HandleDropdownListButtonClick(std::move(list), -1, widget);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -857,7 +857,6 @@ static CallBackFunction ToolbarZoomInClick(Window *w)
|
||||||
{
|
{
|
||||||
if (DoZoomInOutWindow(ZOOM_IN, GetMainWindow())) {
|
if (DoZoomInOutWindow(ZOOM_IN, GetMainWindow())) {
|
||||||
w->HandleButtonClick((_game_mode == GM_EDITOR) ? (WidgetID)WID_TE_ZOOM_IN : (WidgetID)WID_TN_ZOOM_IN);
|
w->HandleButtonClick((_game_mode == GM_EDITOR) ? (WidgetID)WID_TE_ZOOM_IN : (WidgetID)WID_TN_ZOOM_IN);
|
||||||
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
|
||||||
}
|
}
|
||||||
return CBF_NONE;
|
return CBF_NONE;
|
||||||
}
|
}
|
||||||
|
@ -868,7 +867,6 @@ static CallBackFunction ToolbarZoomOutClick(Window *w)
|
||||||
{
|
{
|
||||||
if (DoZoomInOutWindow(ZOOM_OUT, GetMainWindow())) {
|
if (DoZoomInOutWindow(ZOOM_OUT, GetMainWindow())) {
|
||||||
w->HandleButtonClick((_game_mode == GM_EDITOR) ? (WidgetID)WID_TE_ZOOM_OUT : (WidgetID)WID_TN_ZOOM_OUT);
|
w->HandleButtonClick((_game_mode == GM_EDITOR) ? (WidgetID)WID_TE_ZOOM_OUT : (WidgetID)WID_TN_ZOOM_OUT);
|
||||||
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
|
||||||
}
|
}
|
||||||
return CBF_NONE;
|
return CBF_NONE;
|
||||||
}
|
}
|
||||||
|
@ -1232,7 +1230,6 @@ static CallBackFunction ToolbarScenDateForward(Window *w)
|
||||||
static CallBackFunction ToolbarScenGenLand(Window *w)
|
static CallBackFunction ToolbarScenGenLand(Window *w)
|
||||||
{
|
{
|
||||||
w->HandleButtonClick(WID_TE_LAND_GENERATE);
|
w->HandleButtonClick(WID_TE_LAND_GENERATE);
|
||||||
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
|
||||||
|
|
||||||
ShowEditorTerraformToolbar();
|
ShowEditorTerraformToolbar();
|
||||||
return CBF_NONE;
|
return CBF_NONE;
|
||||||
|
@ -1256,7 +1253,6 @@ static CallBackFunction ToolbarScenGenTown(int index)
|
||||||
static CallBackFunction ToolbarScenGenIndustry(Window *w)
|
static CallBackFunction ToolbarScenGenIndustry(Window *w)
|
||||||
{
|
{
|
||||||
w->HandleButtonClick(WID_TE_INDUSTRY);
|
w->HandleButtonClick(WID_TE_INDUSTRY);
|
||||||
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
|
||||||
ShowBuildIndustryWindow();
|
ShowBuildIndustryWindow();
|
||||||
return CBF_NONE;
|
return CBF_NONE;
|
||||||
}
|
}
|
||||||
|
@ -1304,7 +1300,6 @@ static CallBackFunction ToolbarScenBuildTram(int index)
|
||||||
static CallBackFunction ToolbarScenBuildDocks(Window *w)
|
static CallBackFunction ToolbarScenBuildDocks(Window *w)
|
||||||
{
|
{
|
||||||
w->HandleButtonClick(WID_TE_WATER);
|
w->HandleButtonClick(WID_TE_WATER);
|
||||||
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
|
||||||
ShowBuildDocksScenToolbar();
|
ShowBuildDocksScenToolbar();
|
||||||
return CBF_NONE;
|
return CBF_NONE;
|
||||||
}
|
}
|
||||||
|
@ -1312,7 +1307,6 @@ static CallBackFunction ToolbarScenBuildDocks(Window *w)
|
||||||
static CallBackFunction ToolbarScenPlantTrees(Window *w)
|
static CallBackFunction ToolbarScenPlantTrees(Window *w)
|
||||||
{
|
{
|
||||||
w->HandleButtonClick(WID_TE_TREES);
|
w->HandleButtonClick(WID_TE_TREES);
|
||||||
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
|
||||||
ShowBuildTreesToolbar();
|
ShowBuildTreesToolbar();
|
||||||
return CBF_NONE;
|
return CBF_NONE;
|
||||||
}
|
}
|
||||||
|
@ -1320,7 +1314,6 @@ static CallBackFunction ToolbarScenPlantTrees(Window *w)
|
||||||
static CallBackFunction ToolbarScenPlaceSign(Window *w)
|
static CallBackFunction ToolbarScenPlaceSign(Window *w)
|
||||||
{
|
{
|
||||||
w->HandleButtonClick(WID_TE_SIGNS);
|
w->HandleButtonClick(WID_TE_SIGNS);
|
||||||
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
|
||||||
return SelectSignTool();
|
return SelectSignTool();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -286,6 +286,8 @@ public:
|
||||||
|
|
||||||
new_show_state ? _town_local_authority_kdtree.Insert(index) : _town_local_authority_kdtree.Remove(index);
|
new_show_state ? _town_local_authority_kdtree.Insert(index) : _town_local_authority_kdtree.Remove(index);
|
||||||
|
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
|
|
||||||
this->town->show_zone = new_show_state;
|
this->town->show_zone = new_show_state;
|
||||||
this->SetWidgetLoweredState(widget, new_show_state);
|
this->SetWidgetLoweredState(widget, new_show_state);
|
||||||
MarkWholeScreenDirty();
|
MarkWholeScreenDirty();
|
||||||
|
@ -937,7 +939,7 @@ public:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_TD_SORT_CRITERIA: // Click on sort criteria dropdown
|
case WID_TD_SORT_CRITERIA: // Click on sort criteria dropdown
|
||||||
ShowDropDownMenu(this, TownDirectoryWindow::sorter_names, this->towns.SortType(), WID_TD_SORT_CRITERIA, 0, 0);
|
this->HandleDropdownMenuButtonClick(TownDirectoryWindow::sorter_names, this->towns.SortType(), WID_TD_SORT_CRITERIA, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_TD_LIST: { // Click on Town Matrix
|
case WID_TD_LIST: { // Click on Town Matrix
|
||||||
|
|
|
@ -2101,16 +2101,16 @@ public:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_VL_GROUP_BY_PULLDOWN: // Select sorting criteria dropdown menu
|
case WID_VL_GROUP_BY_PULLDOWN: // Select sorting criteria dropdown menu
|
||||||
ShowDropDownMenu(this, this->vehicle_group_by_names, this->grouping, WID_VL_GROUP_BY_PULLDOWN, 0, 0);
|
this->HandleDropdownMenuButtonClick(this->vehicle_group_by_names, this->grouping, WID_VL_GROUP_BY_PULLDOWN, 0, 0);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case WID_VL_SORT_BY_PULLDOWN: // Select sorting criteria dropdown menu
|
case WID_VL_SORT_BY_PULLDOWN: // Select sorting criteria dropdown menu
|
||||||
ShowDropDownMenu(this, this->GetVehicleSorterNames(), this->vehgroups.SortType(), WID_VL_SORT_BY_PULLDOWN, 0,
|
this->HandleDropdownMenuButtonClick(this->GetVehicleSorterNames(), this->vehgroups.SortType(), WID_VL_SORT_BY_PULLDOWN, 0,
|
||||||
(this->vli.vtype == VEH_TRAIN || this->vli.vtype == VEH_ROAD) ? 0 : (1 << 10));
|
(this->vli.vtype == VEH_TRAIN || this->vli.vtype == VEH_ROAD) ? 0 : (1 << 10));
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case WID_VL_FILTER_BY_CARGO: // Cargo filter dropdown
|
case WID_VL_FILTER_BY_CARGO: // Cargo filter dropdown
|
||||||
ShowDropDownList(this, this->BuildCargoDropDownList(false), this->cargo_filter_criteria, widget);
|
this->HandleDropdownListButtonClick(this->BuildCargoDropDownList(false), this->cargo_filter_criteria, widget);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_VL_LIST: { // Matrix to show vehicles
|
case WID_VL_LIST: { // Matrix to show vehicles
|
||||||
|
@ -2159,7 +2159,7 @@ public:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_VL_MANAGE_VEHICLES_DROPDOWN: {
|
case WID_VL_MANAGE_VEHICLES_DROPDOWN: {
|
||||||
ShowDropDownList(this, this->BuildActionDropdownList(this->vli.type == VL_STANDARD, false, true), 0, WID_VL_MANAGE_VEHICLES_DROPDOWN);
|
this->HandleDropdownListButtonClick(this->BuildActionDropdownList(this->vli.type == VL_STANDARD, false, true), 0, WID_VL_MANAGE_VEHICLES_DROPDOWN);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2727,7 +2727,7 @@ struct VehicleDetailsWindow : Window {
|
||||||
|
|
||||||
case WID_VD_SERVICE_INTERVAL_DROPDOWN: {
|
case WID_VD_SERVICE_INTERVAL_DROPDOWN: {
|
||||||
const Vehicle *v = Vehicle::Get(this->window_number);
|
const Vehicle *v = Vehicle::Get(this->window_number);
|
||||||
ShowDropDownMenu(this,
|
this->HandleDropdownMenuButtonClick(
|
||||||
TimerGameEconomy::UsingWallclockUnits() ? _service_interval_dropdown_wallclock : _service_interval_dropdown_calendar,
|
TimerGameEconomy::UsingWallclockUnits() ? _service_interval_dropdown_wallclock : _service_interval_dropdown_calendar,
|
||||||
v->ServiceIntervalIsCustom() ? (v->ServiceIntervalIsPercent() ? 2 : 1) : 0, widget, 0, 0);
|
v->ServiceIntervalIsCustom() ? (v->ServiceIntervalIsPercent() ? 2 : 1) : 0, widget, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -30,12 +30,14 @@
|
||||||
#include "hotkeys.h"
|
#include "hotkeys.h"
|
||||||
#include "toolbar_gui.h"
|
#include "toolbar_gui.h"
|
||||||
#include "statusbar_gui.h"
|
#include "statusbar_gui.h"
|
||||||
|
#include "dropdown_func.h"
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
#include "game/game.hpp"
|
#include "game/game.hpp"
|
||||||
#include "video/video_driver.hpp"
|
#include "video/video_driver.hpp"
|
||||||
#include "framerate_type.h"
|
#include "framerate_type.h"
|
||||||
#include "network/network_func.h"
|
#include "network/network_func.h"
|
||||||
#include "news_func.h"
|
#include "news_func.h"
|
||||||
|
#include "sound_func.h"
|
||||||
#include "timer/timer.h"
|
#include "timer/timer.h"
|
||||||
#include "timer/timer_window.h"
|
#include "timer/timer_window.h"
|
||||||
|
|
||||||
|
@ -586,6 +588,38 @@ EventState Window::OnHotkey(int hotkey)
|
||||||
return ES_HANDLED;
|
return ES_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the player clicking on a dropdown list.
|
||||||
|
* @param list Prepopulated DropDownList.
|
||||||
|
* @param selected The initially selected list item.
|
||||||
|
* @param button The widget within the parent window that is used to determine
|
||||||
|
* the list's location.
|
||||||
|
* @param width Override the minimum width determined by the selected widget and list contents.
|
||||||
|
* @param instant_close Set to true if releasing mouse button should close the
|
||||||
|
* list regardless of where the cursor is.
|
||||||
|
* @param persist Set if this dropdown should stay open after an option is selected.
|
||||||
|
*/
|
||||||
|
void Window::HandleDropdownListButtonClick(DropDownList &&list, int selected, WidgetID button, uint width, bool instant_close, bool persist)
|
||||||
|
{
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
|
ShowDropDownList(this, std::forward<DropDownList>(list), selected, button, width, instant_close, persist);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the player clicking on a dropdown menu.
|
||||||
|
* @param strings Menu list.
|
||||||
|
* @param selected Index of initial selected item.
|
||||||
|
* @param button Button widget number of the parent window \a w that wants the dropdown menu.
|
||||||
|
* @param disabled_mask Bitmask for disabled items (items with their bit set are displayed, but not selectable in the dropdown list).
|
||||||
|
* @param hidden_mask Bitmask for hidden items (items with their bit set are not copied to the dropdown list).
|
||||||
|
* @param width Minimum width of the dropdown menu.
|
||||||
|
*/
|
||||||
|
void Window::HandleDropdownMenuButtonClick(std::span<const StringID> strings, int selected, WidgetID button, uint32_t disabled_mask, uint32_t hidden_mask, uint width)
|
||||||
|
{
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
|
ShowDropDownMenu(this, strings, selected, button, disabled_mask, hidden_mask, width);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do all things to make a button look clicked and mark it to be
|
* Do all things to make a button look clicked and mark it to be
|
||||||
* unclicked in a few ticks.
|
* unclicked in a few ticks.
|
||||||
|
@ -596,6 +630,7 @@ void Window::HandleButtonClick(WidgetID widget)
|
||||||
this->LowerWidget(widget);
|
this->LowerWidget(widget);
|
||||||
this->SetTimeout();
|
this->SetTimeout();
|
||||||
this->SetWidgetDirty(widget);
|
this->SetWidgetDirty(widget);
|
||||||
|
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void StartWindowDrag(Window *w);
|
static void StartWindowDrag(Window *w);
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include "vehiclelist.h"
|
#include "vehiclelist.h"
|
||||||
#include "vehicle_type.h"
|
#include "vehicle_type.h"
|
||||||
#include "viewport_type.h"
|
#include "viewport_type.h"
|
||||||
|
#include "dropdown_type.h"
|
||||||
#include "company_type.h"
|
#include "company_type.h"
|
||||||
#include "tile_type.h"
|
#include "tile_type.h"
|
||||||
#include "widget_type.h"
|
#include "widget_type.h"
|
||||||
|
@ -499,6 +500,8 @@ public:
|
||||||
EventState HandleEditBoxKey(WidgetID wid, char32_t key, uint16_t keycode);
|
EventState HandleEditBoxKey(WidgetID wid, char32_t key, uint16_t keycode);
|
||||||
virtual void InsertTextString(WidgetID wid, std::string_view str, bool marked, std::optional<size_t> caret, std::optional<size_t> insert_location, std::optional<size_t> replacement_end);
|
virtual void InsertTextString(WidgetID wid, std::string_view str, bool marked, std::optional<size_t> caret, std::optional<size_t> insert_location, std::optional<size_t> replacement_end);
|
||||||
|
|
||||||
|
void HandleDropdownListButtonClick(DropDownList &&list, int selected, WidgetID button, uint width = 0, bool instant_close = false, bool persist = false);
|
||||||
|
void HandleDropdownMenuButtonClick(std::span<const StringID> strings, int selected, WidgetID button, uint32_t disabled_mask, uint32_t hidden_mask, uint width = 0);
|
||||||
void HandleButtonClick(WidgetID widget);
|
void HandleButtonClick(WidgetID widget);
|
||||||
int GetRowFromWidget(int clickpos, WidgetID widget, int padding, int line_height = -1) const;
|
int GetRowFromWidget(int clickpos, WidgetID widget, int padding, int line_height = -1) const;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue