Merge branch 'master' into jgrpp
# Conflicts: # src/lang/russian.txt # src/linkgraph/linkgraph_gui.cpp # src/news_gui.cpp # src/town_cmd.cpp # src/town_gui.cpp
This commit is contained in:
@@ -860,7 +860,7 @@ public:
|
||||
|
||||
this->InitNested(window_number);
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_IV_VIEWPORT);
|
||||
nvp->InitializeViewport(this, Industry::Get(window_number)->location.GetCenterTile(), ZOOM_LVL_INDUSTRY);
|
||||
nvp->InitializeViewport(this, Industry::Get(window_number)->location.GetCenterTile(), ScaleZoomGUI(ZOOM_LVL_INDUSTRY));
|
||||
|
||||
this->InvalidateData();
|
||||
}
|
||||
|
@@ -384,7 +384,7 @@ STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Wegenbou
|
||||
STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Tramsporen bouwen
|
||||
STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Bomen planten. Shift schakelt tussen planten/inschatting van de kosten
|
||||
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Bord plaatsen
|
||||
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Object plaatsen. Shift schakelt tussen bouwen/inschatting van de kosten
|
||||
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Object plaatsen. Ctrl selecteert een diagonaal gebied. Shift+klik wisselt tussen bouwen/verwachte kosten weergeven.
|
||||
|
||||
# Scenario editor file menu
|
||||
###length 7
|
||||
@@ -2824,11 +2824,11 @@ STR_LANDSCAPING_TOOLBAR :{WHITE}Terreina
|
||||
STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Verlaag een hoek van het land. Slepen verlaagt de eerste geselecteerde hoek en brengt het geselecteerde gebied naar de hoogte van die hoek. Ctrl selecteert het gebied diagonaal. Shift maakt een inschatting van de kosten
|
||||
STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Verhoog een hoek van het land. Slepen verhoogt de eerste geselecteerde hoek en brengt het geselecteerde gebied naar de hoogte van die hoek. Ctrl selecteert het gebied diagonaal. Shift maakt een inschatting van de kosten
|
||||
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Land egaliseren op hoogte van eerst geselecteerde hoek. Ctrl selecteert een diagonaal gebied. Shift+klik wisselt tussen bouwen/verwachte kosten weergeven.
|
||||
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Land kopen voor toekomstig gebruik. Shift+klik wisselt tussen bouwen/verwachte kosten weergeven.
|
||||
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Land kopen voor toekomstig gebruik. Ctrl selecteert een diagonaal gebied. Shift+klik wisselt tussen bouwen/verwachte kosten weergeven.
|
||||
|
||||
# Object construction window
|
||||
STR_OBJECT_BUILD_CAPTION :{WHITE}Keuze van object
|
||||
STR_OBJECT_BUILD_TOOLTIP :{BLACK}Object selecteren voor bouwen. Shift+Klik wisselt tussen bouwen/verwachte kosten weergeven.
|
||||
STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selecteer object om te bouwen. Ctrl selecteert een diagonaal gebied. Shift+klik wisselt tussen bouwen/verwachte kosten weergeven.
|
||||
STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Hiermee selecteer je de klasse van het te bouwen object
|
||||
STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Bekijk het object
|
||||
STR_OBJECT_BUILD_SIZE :{BLACK}Grootte: {GOLD}{NUM} x {NUM} tegels
|
||||
@@ -4942,6 +4942,7 @@ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Object i
|
||||
STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... hoofdkantoor in de weg
|
||||
STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kan dit stuk land niet kopen...
|
||||
STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... het is al van jou!
|
||||
STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE}... bouwlimiet voor objecten bereikt
|
||||
|
||||
# Group related errors
|
||||
STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan groep niet creëren...
|
||||
|
@@ -3145,6 +3145,11 @@ STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLA
|
||||
STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturated
|
||||
STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overloaded
|
||||
|
||||
# Linkgraph tooltip
|
||||
STR_LINKGRAPH_STATS_TOOLTIP :{BLACK}{CARGO_LONG} to be transported per month from {STATION} to {STATION} ({COMMA}% of capacity){RAW_STRING}
|
||||
STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG} to be transported back ({COMMA}% of capacity)
|
||||
STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}Average travel time: {NUM}{NBSP}day{P "" s}
|
||||
|
||||
# Base for station construction window(s)
|
||||
STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Coverage area highlight
|
||||
STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Off
|
||||
|
@@ -2849,7 +2849,7 @@ STR_LANDSCAPING_TOOLBAR :{WHITE}Landscap
|
||||
STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Lower a corner of land. Dragging lowers the first selected corner and levels the selected area to the new corner height. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate
|
||||
STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Raise a corner of land. Dragging raises the first selected corner and levels the selected area to the new corner height. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate
|
||||
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Level an area of land to the height of the first selected corner. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate
|
||||
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Purchase land for future use. Shift toggles building/showing cost estimate
|
||||
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Purchase land for future use. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate
|
||||
|
||||
# Object construction window
|
||||
STR_OBJECT_BUILD_CAPTION :{WHITE}Object Selection
|
||||
|
@@ -1183,6 +1183,7 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsydzjeferman
|
||||
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Stel yn hoefolle der betelle wurdt foar subsidiearre ferbinings
|
||||
|
||||
|
||||
STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{NUM} jier
|
||||
###setting-zero-is-special
|
||||
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Boukosten: {STRING}
|
||||
@@ -2076,6 +2077,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Fier in
|
||||
# Network connecting window
|
||||
STR_NETWORK_CONNECTING_CAPTION :{WHITE}Ferbyning meitsje...
|
||||
|
||||
STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} klïïnt{P "" en} foar dy
|
||||
STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} Delhelle oant
|
||||
STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} delhelle
|
||||
|
||||
@@ -2157,6 +2159,7 @@ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ûnjildich of
|
||||
STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :ferkearde revyzje
|
||||
STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :namme is al beset
|
||||
STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :ferkeard wachtwurd
|
||||
STR_NETWORK_ERROR_CLIENT_CHEATER :besocht falsk te spieljen
|
||||
STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :joech tevolle opdrachten
|
||||
STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :kaart delheljen duorret te lang
|
||||
STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :kaart ferwurkje duorret te lang
|
||||
@@ -2174,6 +2177,7 @@ STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spulskript
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :Ferlit
|
||||
STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} der is ien bykommen(Client #{2:NUM})
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} is in neie taskôger
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} hat it spul ferlitten ({2:STRING})
|
||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} hat syn/har namme oanpast nei {STRING}
|
||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Tsjinner hat de ferbining sluten
|
||||
|
||||
@@ -2188,6 +2192,7 @@ STR_CONTENT_OPEN_URL :{BLACK}Webside
|
||||
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Webside foar dizze ynhâld besykje
|
||||
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Delhelje
|
||||
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Begjinne mei delheljen fan selektearre ynhâld
|
||||
STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Totaal om te delheljen: {WHITE}{BYTES}
|
||||
STR_CONTENT_DETAIL_TITLE :{SILVER}KONTENT INFO
|
||||
|
||||
###length 5
|
||||
@@ -2207,6 +2212,7 @@ STR_CONTENT_TYPE_AI_LIBRARY :AI biblioteek
|
||||
STR_CONTENT_TYPE_SCENARIO :Lânskip
|
||||
STR_CONTENT_TYPE_HEIGHTMAP :Hichtemap
|
||||
STR_CONTENT_TYPE_BASE_SOUNDS :Basislûden
|
||||
STR_CONTENT_TYPE_BASE_MUSIC :Basisset for musyk
|
||||
STR_CONTENT_TYPE_GAME_SCRIPT :Spulskript
|
||||
STR_CONTENT_TYPE_GS_LIBRARY :GS biblioteek
|
||||
|
||||
@@ -2297,6 +2303,7 @@ STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Oantal b
|
||||
STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Selektear oantal banen foar treinstasjon
|
||||
STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Stasjon lengte
|
||||
STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Selektear lengte fan treinstasjon
|
||||
STR_STATION_BUILD_DRAG_DROP :Sleepe en los litte
|
||||
|
||||
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Selektearje type stasjon om te bouwe
|
||||
|
||||
@@ -2605,10 +2612,12 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD-
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-{STRING} It OpenTTD team
|
||||
|
||||
# Framerate display window
|
||||
STR_FRAMERATE_CURRENT :Aktueel
|
||||
|
||||
###length 15
|
||||
|
||||
###length 15
|
||||
STR_FRAMETIME_CAPTION_AI :Kompjûterspiler {NUM} {STRING}
|
||||
|
||||
|
||||
# Save/load game/scenario
|
||||
@@ -2743,7 +2752,10 @@ STR_NEWGRF_SETTINGS_VERSION :{BLACK}Ferzje:
|
||||
STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Leechte noch wurkjende ferzje: {SILVER}{NUM}
|
||||
STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING}
|
||||
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palet: {SILVER}{STRING}
|
||||
STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Oarspronklik (W)
|
||||
STR_NEWGRF_SETTINGS_PALETTE_LEGACY_32BPP :Oarspronklik (W) / 32 bpp
|
||||
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parameters: {SILVER}{STRING}
|
||||
STR_NEWGRF_SETTINGS_PARAMETER_NONE :Gjin
|
||||
|
||||
STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}gjin ynformaasje beskikber
|
||||
STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Keppelt bestând koe net fûn wurde
|
||||
@@ -2907,6 +2919,7 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Stêdsnamme Fer
|
||||
|
||||
# Town local authority window
|
||||
STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} gemeente
|
||||
STR_LOCAL_AUTHORITY_ZONE :{BLACK}Sône
|
||||
STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Transportbedrieuwwurdearring:
|
||||
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
|
||||
STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Mooglike aksjes:
|
||||
@@ -3081,6 +3094,7 @@ STR_FINANCES_SECTION_OTHER :{GOLD}Oaren
|
||||
STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG}
|
||||
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
|
||||
STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Jild
|
||||
STR_FINANCES_OWN_FUNDS_TITLE :{WHITE}Eigen fûnsen
|
||||
STR_FINANCES_LOAN_TITLE :{WHITE}Liening
|
||||
STR_FINANCES_MAX_LOAN :{WHITE}Maksimale Liening: {BLACK}{CURRENCY_LONG}
|
||||
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
|
||||
@@ -3411,6 +3425,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Stjoer f
|
||||
###length VEHICLE_TYPES
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Rydrjochting fan trein omkeare
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :Lit fiertug omkeare
|
||||
|
||||
###length VEHICLE_TYPES
|
||||
STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Trein ombouwe om in oar soart fracht mei te nimmen
|
||||
@@ -3512,6 +3527,7 @@ STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Totale F
|
||||
STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}
|
||||
|
||||
# Vehicle refit
|
||||
STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Ombouwe)
|
||||
STR_REFIT_TITLE :{GOLD}Selektearje it soart fracht om mei te nimmen:
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nije kapasiteit: {GOLD}{CARGO_LONG}{}{BLACK}Kosten fan ombou: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nije kapasiteit: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}kosten fan werfolje: {RED}{CURRENCY_LONG}
|
||||
@@ -3716,7 +3732,7 @@ STR_AI_DEBUG_CONTINUE :{BLACK}Trjochge
|
||||
STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Lit debug output fan dizze AI sjen
|
||||
STR_AI_GAME_SCRIPT :{BLACK}Spulskript
|
||||
|
||||
STR_ERROR_AI_NO_AI_FOUND :Gjin geskikte compjûterspiler fûn.{}Disse compjûterspiler is in dummy en docht neat.{}Jo kinne compjûterspilers delhelje fan 'Online Inhâld' ôf.
|
||||
STR_ERROR_AI_NO_AI_FOUND :Gjin geskikte kompjûterspiler fûn.{}Disse kompjûterspiler is in dummy en docht neat.{}Jo kinne kompjûterspilers delhelje fan 'Online Inhâld' ôf.
|
||||
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Spulskript debugskerm is allinich beskikber foar de tsjinner
|
||||
|
||||
# AI configuration window
|
||||
|
@@ -385,7 +385,7 @@ STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Construi
|
||||
STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Construção de carris para elétricos
|
||||
STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantar árvores. Shift alterna contruir/mostrar custo estimado
|
||||
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Colocar sinais
|
||||
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar objecto. Shift alterna contruir/mostrar custo estimado
|
||||
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar objeto. Ctrl seleciona a área diagonalmente. Shift alterna construir/mostrar custo estimado
|
||||
|
||||
# Scenario editor file menu
|
||||
###length 7
|
||||
@@ -2825,11 +2825,11 @@ STR_LANDSCAPING_TOOLBAR :{WHITE}Terreno
|
||||
STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Baixar terreno. Ao pressionar e arrastar o cursor, o primeiro ponto selecionado é rebaixado e o terreno da área selecionada é nivelado com a nova altura do primeiro ponto. Ctrl seleciona a área na diagonal. Shift mostra a estimativa de custos.
|
||||
STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar terreno. Ao pressionar e arrastar o cursor, o primeiro ponto selecionado é elevado e o terreno da área selecionada é nivelado com a nova altura do primeiro ponto. Ctrl seleciona a área na diagonal. Shift mostra a estimativa de custos.
|
||||
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nívelar uma área de terreno até a altura do primeiro ponto selecionado. Ctrl selecciona a área na diagonal. Shift mostra a estimativa de custos.
|
||||
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar terreno para uso futuro. Shift mostra a estimativa de custos.
|
||||
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar terreno para uso futuro. Ctrl seleciona a área diagonalmente. Shift alterna entre construir/mostrar custo estimado
|
||||
|
||||
# Object construction window
|
||||
STR_OBJECT_BUILD_CAPTION :{WHITE}Selecção de Objecto
|
||||
STR_OBJECT_BUILD_TOOLTIP :{BLACK}Seleccionar objecto para construir. Shift alterna construir/mostrar custo estimado
|
||||
STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selecionar objeto para construir. Ctrl seleciona a área diagonalmente. Shift alterna construir/mostrar custo estimado
|
||||
STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Selecionar a classe do objecto a construir
|
||||
STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Pré-visualização do objecto
|
||||
STR_OBJECT_BUILD_SIZE :{BLACK}Tamanho: {GOLD}{NUM} x {NUM} quadrados
|
||||
@@ -4943,6 +4943,7 @@ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objecto
|
||||
STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... sede de empresa no caminho
|
||||
STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Não é possível comprar esta área de terreno...
|
||||
STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... já a possui!
|
||||
STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE}... atingido o limite de construção de objeto
|
||||
|
||||
# Group related errors
|
||||
STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Impossível criar grupo...
|
||||
|
@@ -3003,7 +3003,7 @@ STR_LANDSCAPING_TOOLBAR :{WHITE}Ланд
|
||||
STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Опустить угол земли. Перетаскивание опускает первый выбранный угол и выравнивает выбранную область до новой высоты угла. Ctrl выбирает область по диагонали. При нажатом Shift - оценка стоимости строительства.
|
||||
STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Поднять угол земли. Перетаскивание поднимает первый выбранный угол и выравнивает выбранную область до новой высоты угла. Ctrl выбирает область по диагонали. При нажатом Shift - оценка стоимости строительства.
|
||||
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Выровнять землю до высоты первого выбранного угла. Ctrl выбирает область по диагонали. При нажатом Shift - оценка стоимости выравнивания.
|
||||
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Покупка земли. При нажатом Shift - оценка стоимости покупки.
|
||||
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Покупка земли.{}При нажатом Ctrl выбираются клетки по диагонали.{}При нажатом Shift - оценка стоимости покупки.
|
||||
STR_LANDSCAPING_TOOLTIP_RULER_TOOL :{BLACK}Виртуальная линейка для измерения расстояний и высот
|
||||
|
||||
# Object construction window
|
||||
|
@@ -170,7 +170,7 @@ void LinkGraphOverlay::RebuildCache(bool incremental)
|
||||
item->from_pt = from_pt;
|
||||
item->to_pt = to_pt;
|
||||
}
|
||||
this->AddStats(lg.Monthly(edge.Capacity()), lg.Monthly(edge.Usage()),
|
||||
this->AddStats(c, lg.Monthly(edge.Capacity()), lg.Monthly(edge.Usage()),
|
||||
ge.flows.GetFlowVia(to->index), from->owner == OWNER_NONE || to->owner == OWNER_NONE,
|
||||
item->prop);
|
||||
}
|
||||
@@ -345,11 +345,12 @@ inline bool LinkGraphOverlay::IsLinkVisible(Point pta, Point ptb, const DrawPixe
|
||||
* @param new_shared If the new link is shared.
|
||||
* @param cargo LinkProperties to write the information to.
|
||||
*/
|
||||
/* static */ void LinkGraphOverlay::AddStats(uint new_cap, uint new_usg, uint new_plan, bool new_shared, LinkProperties &cargo)
|
||||
/* static */ void LinkGraphOverlay::AddStats(CargoID new_cargo, uint new_cap, uint new_usg, uint new_plan, bool new_shared, LinkProperties &cargo)
|
||||
{
|
||||
/* multiply the numbers by 32 in order to avoid comparing to 0 too often. */
|
||||
if (cargo.capacity == 0 ||
|
||||
std::max(cargo.usage, cargo.planned) * 32 / (cargo.capacity + 1) < std::max(new_usg, new_plan) * 32 / (new_cap + 1)) {
|
||||
cargo.Usage() * 32 / (cargo.capacity + 1) < std::max(new_usg, new_plan) * 32 / (new_cap + 1)) {
|
||||
cargo.cargo = new_cargo;
|
||||
cargo.capacity = new_cap;
|
||||
cargo.usage = new_usg;
|
||||
cargo.planned = new_plan;
|
||||
@@ -417,7 +418,7 @@ void LinkGraphOverlay::DrawLinks(const DrawPixelInfo *dpi) const
|
||||
*/
|
||||
void LinkGraphOverlay::DrawContent(Point pta, Point ptb, const LinkProperties &cargo) const
|
||||
{
|
||||
uint usage_or_plan = std::min(cargo.capacity * 2 + 1, std::max(cargo.usage, cargo.planned));
|
||||
uint usage_or_plan = std::min(cargo.capacity * 2 + 1, cargo.Usage());
|
||||
int colour = LinkGraphOverlay::LINK_COLOURS[_settings_client.gui.linkgraph_colours][usage_or_plan * lengthof(LinkGraphOverlay::LINK_COLOURS[0]) / (cargo.capacity * 2 + 2)];
|
||||
int width = ScaleGUITrad(this->scale);
|
||||
int dash = cargo.shared ? width * 4 : 0;
|
||||
@@ -483,6 +484,56 @@ void LinkGraphOverlay::DrawStationDots(const DrawPixelInfo *dpi) const
|
||||
GfxDrawLine(x + w2, y - w1, x + w2, y + w2, border_colour);
|
||||
}
|
||||
|
||||
bool LinkGraphOverlay::ShowTooltip(Point pt, TooltipCloseCondition close_cond)
|
||||
{
|
||||
for (LinkList::const_reverse_iterator i(this->cached_links.rbegin()); i != this->cached_links.rend(); ++i) {
|
||||
if (!Station::IsValidID(i->from_id)) continue;
|
||||
if (!Station::IsValidID(i->to_id)) continue;
|
||||
|
||||
Point pta = i->from_pt;
|
||||
Point ptb = i->to_pt;
|
||||
|
||||
/* Check the distance from the cursor to the line defined by the two stations. */
|
||||
auto check_distance = [&]() -> bool {
|
||||
int64 a = ((ptb.x - pta.x) * (pta.y - pt.y) - (pta.x - pt.x) * (ptb.y - pta.y));
|
||||
return ((a * a) / ((ptb.x - pta.x) * (ptb.x - pta.x) + (ptb.y - pta.y) * (ptb.y - pta.y))) <= 16;
|
||||
};
|
||||
const auto &link = i->prop;
|
||||
if (link.Usage() > 0 &&
|
||||
pt.x + 2 >= std::min(pta.x, ptb.x) &&
|
||||
pt.x - 2 <= std::max(pta.x, ptb.x) &&
|
||||
check_distance()) {
|
||||
|
||||
static char buf[1024];
|
||||
buf[0] = 0;
|
||||
|
||||
/* Fill buf with more information if this is a bidirectional link. */
|
||||
for (LinkList::const_reverse_iterator j = std::next(i); j != this->cached_links.rend(); ++j) {
|
||||
if (j->from_id == i->to_id && j->to_id == i->from_id) {
|
||||
if (j->prop.Usage() > 0) {
|
||||
SetDParam(0, j->prop.cargo);
|
||||
SetDParam(1, j->prop.Usage());
|
||||
SetDParam(2, j->prop.Usage() * 100 / (j->prop.capacity + 1));
|
||||
GetString(buf, STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION, lastof(buf));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SetDParam(0, link.cargo);
|
||||
SetDParam(1, link.Usage());
|
||||
SetDParam(2, i->from_id);
|
||||
SetDParam(3, i->to_id);
|
||||
SetDParam(4, link.Usage() * 100 / (link.capacity + 1));
|
||||
SetDParamStr(5, buf);
|
||||
GuiShowTooltips(this->window, STR_LINKGRAPH_STATS_TOOLTIP, 0, nullptr, close_cond);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
GuiShowTooltips(this->window, STR_NULL, 0, nullptr, close_cond);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the middle of a station in the current window.
|
||||
* @param st The station we're looking for.
|
||||
|
@@ -19,14 +19,19 @@
|
||||
#include <vector>
|
||||
|
||||
/**
|
||||
* Properties of a link between two stations.
|
||||
* Monthly statistics for a link between two stations.
|
||||
* Only the cargo type of the most saturated linkgraph is taken into account.
|
||||
*/
|
||||
struct LinkProperties {
|
||||
LinkProperties() : capacity(0), usage(0), planned(0), shared(false) {}
|
||||
LinkProperties() : capacity(0), usage(0), planned(0), cargo(CT_INVALID), shared(false) {}
|
||||
|
||||
/** Return the usage of the link to display. */
|
||||
uint Usage() const { return std::max(this->usage, this->planned); }
|
||||
|
||||
uint capacity; ///< Capacity of the link.
|
||||
uint usage; ///< Actual usage of the link.
|
||||
uint planned; ///< Planned usage of the link.
|
||||
CargoID cargo; ///< Cargo type of the link.
|
||||
bool shared; ///< If this is a shared link to be drawn dashed.
|
||||
};
|
||||
|
||||
@@ -74,6 +79,8 @@ public:
|
||||
void SetCargoMask(CargoTypes cargo_mask);
|
||||
void SetCompanyMask(uint32 company_mask);
|
||||
|
||||
bool ShowTooltip(Point pt, TooltipCloseCondition close_cond);
|
||||
|
||||
/** Mark the linkgraph dirty to be rebuilt next time Draw() is called. */
|
||||
void SetDirty() { this->dirty = true; }
|
||||
|
||||
@@ -105,7 +112,7 @@ protected:
|
||||
bool IsPointVisible(Point pt, const DrawPixelInfo *dpi, int padding = 0) const;
|
||||
void GetWidgetDpi(DrawPixelInfo *dpi, uint margin = 0) const;
|
||||
|
||||
static void AddStats(uint new_cap, uint new_usg, uint new_flow, bool new_shared, LinkProperties &cargo);
|
||||
static void AddStats(CargoID new_cargo, uint new_cap, uint new_usg, uint new_flow, bool new_shared, LinkProperties &cargo);
|
||||
static void DrawVertex(int x, int y, int size, int colour, int border_colour);
|
||||
};
|
||||
|
||||
|
@@ -250,7 +250,7 @@ struct MainWindow : Window
|
||||
ResizeWindow(this, _screen.width, _screen.height);
|
||||
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_M_VIEWPORT);
|
||||
nvp->InitializeViewport(this, TileXY(32, 32), ZOOM_LVL_VIEWPORT);
|
||||
nvp->InitializeViewport(this, TileXY(32, 32), ScaleZoomGUI(ZOOM_LVL_VIEWPORT));
|
||||
|
||||
this->viewport->map_type = (ViewportMapType) _settings_client.gui.default_viewport_map_mode;
|
||||
this->viewport->overlay = new LinkGraphOverlay(this, WID_M_VIEWPORT, 0, 0, 3);
|
||||
@@ -491,6 +491,12 @@ struct MainWindow : Window
|
||||
}
|
||||
}
|
||||
|
||||
bool OnTooltip(Point pt, int widget, TooltipCloseCondition close_cond) override
|
||||
{
|
||||
if (widget != WID_M_VIEWPORT) return false;
|
||||
return this->viewport->overlay->ShowTooltip(pt, close_cond);
|
||||
}
|
||||
|
||||
/**
|
||||
* Some data on this window has become invalid.
|
||||
* @param data Information about the changed data.
|
||||
|
@@ -309,7 +309,7 @@ struct NewsWindow : Window {
|
||||
/* Initialize viewport if it exists. */
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_N_VIEWPORT);
|
||||
if (nvp != nullptr) {
|
||||
nvp->InitializeViewport(this, ni->reftype1 == NR_VEHICLE ? 0x80000000 | ni->ref1 : GetReferenceTile(ni->reftype1, ni->ref1), ZOOM_LVL_NEWS);
|
||||
nvp->InitializeViewport(this, ni->reftype1 == NR_VEHICLE ? 0x80000000 | ni->ref1 : GetReferenceTile(ni->reftype1, ni->ref1), ScaleZoomGUI(ZOOM_LVL_NEWS));
|
||||
if (this->ni->flags & NF_NO_TRANSPARENT) nvp->disp_flags |= ND_NO_TRANSPARENCY;
|
||||
if ((this->ni->flags & NF_INCOLOUR) == 0) {
|
||||
nvp->disp_flags |= ND_SHADE_GREY;
|
||||
|
@@ -1317,6 +1317,27 @@ static bool CanRoadContinueIntoNextTile(const Town *t, const TileIndex tile, con
|
||||
return DoCommand(next_tile, rcmd | (rt << 4), t->index, DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD).Succeeded();
|
||||
}
|
||||
|
||||
/**
|
||||
* CircularTileSearch proc which checks for a nearby parallel bridge to avoid building redundant bridges.
|
||||
* @param tile The tile to search.
|
||||
* @param user_data Reference to the valid direction of the proposed bridge.
|
||||
* @return true if another bridge exists, else false.
|
||||
*/
|
||||
static bool RedundantBridgeExistsNearby(TileIndex tile, void *user_data)
|
||||
{
|
||||
/* Don't look into the void. */
|
||||
if (!IsValidTile(tile)) return false;
|
||||
|
||||
/* Only consider bridge head tiles. */
|
||||
if (!IsBridgeTile(tile)) return false;
|
||||
|
||||
/* Only consider road bridges. */
|
||||
if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) return false;
|
||||
|
||||
/* If the bridge is facing the same direction as the proposed bridge, we've found a redundant bridge. */
|
||||
return (GetTileSlope(tile) & InclinedSlope(ReverseDiagDir(*(DiagDirection *)user_data)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Grows the town with a bridge.
|
||||
* At first we check if a bridge is reasonable.
|
||||
@@ -1381,9 +1402,14 @@ static bool GrowTownWithBridge(const Town *t, const TileIndex tile, const DiagDi
|
||||
/* Make sure the road can be continued past the bridge. At this point, bridge_tile holds the end tile of the bridge. */
|
||||
if (!CanRoadContinueIntoNextTile(t, bridge_tile, bridge_dir)) return false;
|
||||
|
||||
/* If another parallel bridge exists nearby, this one would be redundant and shouldn't be built. We don't care about flat bridges. */
|
||||
TileIndex search = tile;
|
||||
DiagDirection direction_to_match = bridge_dir;
|
||||
if (slope != SLOPE_FLAT && CircularTileSearch(&search, bridge_length, 0, 0, RedundantBridgeExistsNearby, &direction_to_match)) return false;
|
||||
|
||||
std::bitset <MAX_BRIDGES> tried;
|
||||
uint n = MAX_BRIDGES;
|
||||
byte bridge_type = RandomRange (n);
|
||||
byte bridge_type = RandomRange(n);
|
||||
|
||||
for (;;) {
|
||||
/* Can we actually build the bridge? */
|
||||
@@ -1397,14 +1423,14 @@ static bool GrowTownWithBridge(const Town *t, const TileIndex tile, const DiagDi
|
||||
/* Try a different bridge. */
|
||||
tried[bridge_type] = true;
|
||||
n--;
|
||||
assert (n + tried.count() == MAX_BRIDGES);
|
||||
assert(n + tried.count() == MAX_BRIDGES);
|
||||
if (n == 0) break;
|
||||
|
||||
bridge_type = 0;
|
||||
uint i = RandomRange (n);
|
||||
uint i = RandomRange(n);
|
||||
while (tried[bridge_type] || (i-- > 0)) {
|
||||
bridge_type++;
|
||||
assert (bridge_type < MAX_BRIDGES);
|
||||
assert(bridge_type < MAX_BRIDGES);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -44,6 +44,7 @@
|
||||
#include <algorithm>
|
||||
|
||||
#include "safeguards.h"
|
||||
#include "zoom_func.h"
|
||||
|
||||
TownKdtree _town_local_authority_kdtree(&Kdtree_TownXYFunc);
|
||||
|
||||
@@ -338,7 +339,7 @@ public:
|
||||
|
||||
this->flags |= WF_DISABLE_VP_SCROLL;
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_TV_VIEWPORT);
|
||||
nvp->InitializeViewport(this, this->town->xy, ZOOM_LVL_NEWS);
|
||||
nvp->InitializeViewport(this, this->town->xy, ScaleZoomGUI(ZOOM_LVL_TOWN));
|
||||
}
|
||||
|
||||
~TownViewWindow()
|
||||
|
@@ -3566,7 +3566,7 @@ public:
|
||||
}
|
||||
this->FinishInitNested(window_number);
|
||||
this->owner = v->owner;
|
||||
this->GetWidget<NWidgetViewport>(WID_VV_VIEWPORT)->InitializeViewport(this, this->window_number | (1 << 31), _vehicle_view_zoom_levels[v->type]);
|
||||
this->GetWidget<NWidgetViewport>(WID_VV_VIEWPORT)->InitializeViewport(this, this->window_number | (1 << 31), ScaleZoomGUI(_vehicle_view_zoom_levels[v->type]));
|
||||
|
||||
this->GetWidget<NWidgetCore>(WID_VV_START_STOP)->tool_tip = STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP + v->type;
|
||||
this->GetWidget<NWidgetCore>(WID_VV_RENAME)->tool_tip = STR_VEHICLE_DETAILS_TRAIN_RENAME + v->type;
|
||||
|
@@ -62,8 +62,8 @@ public:
|
||||
this->InitNested(window_number);
|
||||
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_EV_VIEWPORT);
|
||||
nvp->InitializeViewport(this, 0, ZOOM_LVL_VIEWPORT);
|
||||
if (_settings_client.gui.zoom_min == ZOOM_LVL_VIEWPORT) this->DisableWidget(WID_EV_ZOOM_IN);
|
||||
nvp->InitializeViewport(this, 0, ScaleZoomGUI(ZOOM_LVL_VIEWPORT));
|
||||
if (_settings_client.gui.zoom_min == viewport->zoom) this->DisableWidget(WID_EV_ZOOM_IN);
|
||||
|
||||
Point pt;
|
||||
if (tile == INVALID_TILE) {
|
||||
|
@@ -28,6 +28,7 @@
|
||||
#include "table/strings.h"
|
||||
|
||||
#include "safeguards.h"
|
||||
#include "zoom_func.h"
|
||||
|
||||
/** GUI for accessing waypoints and buoys. */
|
||||
struct WaypointWindow : Window {
|
||||
@@ -100,7 +101,7 @@ public:
|
||||
this->flags |= WF_DISABLE_VP_SCROLL;
|
||||
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_W_VIEWPORT);
|
||||
nvp->InitializeViewport(this, this->GetCenterTile(), ZOOM_LVL_VIEWPORT);
|
||||
nvp->InitializeViewport(this, this->GetCenterTile(), ScaleZoomGUI(ZOOM_LVL_VIEWPORT));
|
||||
|
||||
this->OnInvalidateData(0);
|
||||
}
|
||||
|
@@ -3023,6 +3023,7 @@ static void MouseLoop(MouseClick click, int mousewheel)
|
||||
_scrolling_viewport = w;
|
||||
_cursor.fix_at = (_settings_client.gui.scroll_mode == VSM_VIEWPORT_RMB_FIXED ||
|
||||
_settings_client.gui.scroll_mode == VSM_MAP_RMB_FIXED);
|
||||
DispatchRightClickEvent(w, x - w->left, y - w->top);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@@ -3032,7 +3033,6 @@ static void MouseLoop(MouseClick click, int mousewheel)
|
||||
}
|
||||
}
|
||||
|
||||
if (vp == nullptr || (w->flags & WF_DISABLE_VP_SCROLL)) {
|
||||
switch (click) {
|
||||
case MC_LEFT:
|
||||
case MC_DOUBLE_LEFT:
|
||||
@@ -3053,7 +3053,6 @@ static void MouseLoop(MouseClick click, int mousewheel)
|
||||
DispatchHoverEvent(w, x - w->left, y - w->top);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* We're not doing anything with 2D scrolling, so reset the value. */
|
||||
_cursor.h_wheel = 0;
|
||||
@@ -3121,6 +3120,7 @@ void HandleMouseEvents()
|
||||
click = MC_HOVER;
|
||||
_input_events_this_tick++;
|
||||
_mouse_hovering = true;
|
||||
hover_time = std::chrono::steady_clock::now();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@@ -79,6 +79,26 @@ static inline int UnScaleGUI(int value)
|
||||
return UnScaleByZoom(value, ZOOM_LVL_GUI);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scale zoom level relative to GUI zoom.
|
||||
* @param value zoom level to scale
|
||||
* @return scaled zoom level
|
||||
*/
|
||||
static inline ZoomLevel ScaleZoomGUI(ZoomLevel value)
|
||||
{
|
||||
return std::clamp(ZoomLevel(value + (ZOOM_LVL_GUI - ZOOM_LVL_OUT_4X)), ZOOM_LVL_MIN, ZOOM_LVL_MAX);
|
||||
}
|
||||
|
||||
/**
|
||||
* UnScale zoom level relative to GUI zoom.
|
||||
* @param value zoom level to scale
|
||||
* @return un-scaled zoom level
|
||||
*/
|
||||
static inline ZoomLevel UnScaleZoomGUI(ZoomLevel value)
|
||||
{
|
||||
return std::clamp(ZoomLevel(value - (ZOOM_LVL_GUI - ZOOM_LVL_OUT_4X)), ZOOM_LVL_MIN, ZOOM_LVL_MAX);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scale traditional pixel dimensions to GUI zoom level.
|
||||
* @param value Pixel amount at #ZOOM_LVL_BASE (traditional "normal" interface size).
|
||||
|
@@ -39,7 +39,7 @@ enum ZoomLevel : byte {
|
||||
ZOOM_LVL_VIEWPORT = ZOOM_LVL_OUT_4X, ///< Default zoom level for viewports.
|
||||
ZOOM_LVL_NEWS = ZOOM_LVL_OUT_4X, ///< Default zoom level for the news messages.
|
||||
ZOOM_LVL_INDUSTRY = ZOOM_LVL_OUT_8X, ///< Default zoom level for the industry view.
|
||||
ZOOM_LVL_TOWN = ZOOM_LVL_OUT_8X, ///< Default zoom level for the town view.
|
||||
ZOOM_LVL_TOWN = ZOOM_LVL_OUT_4X, ///< Default zoom level for the town view.
|
||||
ZOOM_LVL_AIRCRAFT = ZOOM_LVL_OUT_4X, ///< Default zoom level for the aircraft view.
|
||||
ZOOM_LVL_SHIP = ZOOM_LVL_OUT_4X, ///< Default zoom level for the ship view.
|
||||
ZOOM_LVL_TRAIN = ZOOM_LVL_OUT_4X, ///< Default zoom level for the train view.
|
||||
|
Reference in New Issue
Block a user