Merge branch 'house_placing' into jgrpp
This commit is contained in:
@@ -174,6 +174,7 @@ install: bundle
|
||||
$(Q)install -d "$(INSTALL_BINARY_DIR)"
|
||||
$(Q)install -d "$(INSTALL_ICON_DIR)"
|
||||
$(Q)install -d "$(INSTALL_DATA_DIR)/ai"
|
||||
$(Q)install -d "$(INSTALL_DATA_DIR)/game"
|
||||
$(Q)install -d "$(INSTALL_DATA_DIR)/baseset"
|
||||
$(Q)install -d "$(INSTALL_DATA_DIR)/lang"
|
||||
$(Q)install -d "$(INSTALL_DATA_DIR)/scripts"
|
||||
@@ -184,6 +185,7 @@ else
|
||||
endif
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/lang/"* "$(INSTALL_DATA_DIR)/lang"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/ai/"* "$(INSTALL_DATA_DIR)/ai"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/game/"* "$(INSTALL_DATA_DIR)/game"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/baseset/"* "$(INSTALL_DATA_DIR)/baseset"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/data/"* "$(INSTALL_DATA_DIR)/data"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/scripts/"* "$(INSTALL_DATA_DIR)/scripts"
|
||||
|
@@ -3009,7 +3009,7 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :도시 이름
|
||||
|
||||
# Town local authority window
|
||||
STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} 지역 당국
|
||||
STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}회사 운송 성취도:
|
||||
STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}회사에 대한 이 도시의 평판:
|
||||
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
|
||||
STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}가능한 행동:
|
||||
STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}이 도시에 할 수 있는 일 목록 - 상세 정보를 보시려면 클릭하세요
|
||||
|
@@ -512,7 +512,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Monstrar
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Monstrare res fiscales societatis
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Monstrare facta generalia societatis
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Monstrare librum fabularum
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Monstrare indicem metarum
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Monstrare indicem propositorum
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Monstrare formulas graphicas
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Monstrare album foederis societatum
|
||||
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Industriam novam condere vel monstrare indicem industriarum
|
||||
@@ -526,11 +526,11 @@ STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Struere
|
||||
STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Struere vias
|
||||
STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Struere navalia
|
||||
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Struere aeroportus
|
||||
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Monstrare terrae arcam ferramentorum qua potes terram augere/minuere, arbores serere, etc.
|
||||
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Monstrare terrae arcam instrumentorum qua potes terram augere/minuere, arbores serere, etc.
|
||||
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Monstrare fenestram soni musicaeque
|
||||
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Monstrare nuntium novissimum sive optiones nuntii
|
||||
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Indicia terrae regionis, consola, emendatio scripti, imagines conspectus, de OpenTTD
|
||||
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Mutare inter arcas ferramentorum
|
||||
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Mutare inter arcas instrumentorum
|
||||
|
||||
# Extra tooltips for the scenario editor toolbar
|
||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Servare scaenarium, legere scaenarium, relinquere scriptorium scaenarii, exire
|
||||
@@ -1507,7 +1507,7 @@ STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Originalis
|
||||
STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Melior
|
||||
STR_CONFIG_SETTING_ROAD_SIDE :Vehicula viaria: {STRING}
|
||||
STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Eligere latus viae gubernandi
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Circuitus tabulae altitudinum: {STRING}
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotatio tabulae altitudinum: {STRING}
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Sinistrorsus
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Dextrorsus
|
||||
STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Altitudo scaenario plano data: {STRING}
|
||||
@@ -1518,8 +1518,8 @@ STR_CONFIG_SETTING_STATION_SPREAD :Spatium station
|
||||
STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Area maxima in qua partes stationum possunt esse sita. Cave, numeris spatii magnis, ludus lentus sit
|
||||
STR_CONFIG_SETTING_SERVICEATHELIPAD :Ministrare helicoptera automatice in helicopterariis: {STRING}
|
||||
STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Ministrare helicoptera post quemque appulsum, etsi non est tugurium portui
|
||||
STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Connectere terrae arcam ferramentorum arcis ferriviariae/viariae/aquariae/aeriae ferramentorum: {STRING}
|
||||
STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Cum arca ferramentorum constructionis aperitur, etiam plasmationis terrae arca ferramentorum aperitur
|
||||
STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Connectere terrae arcam instrumentorum arcis ferriviariae/viariae/aquariae/aeriae instrumentorum: {STRING}
|
||||
STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Cum arca instrumentorum constructionis aperitur, etiam plasmationis terrae arca instrumentorum aperitur
|
||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Color terrae in tabula adhibitus: {STRING}
|
||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color terrae in tabula geographica parva
|
||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Viridis
|
||||
@@ -1756,8 +1756,8 @@ STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Nulla {RED}(rum
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Modo in silvis plivualibus
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Ubique
|
||||
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS :Locus primariae arcae ferramentorum: {STRING}
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Locus horizontalis arcae ferramentorum primariae apud apicem fenestrae
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS :Locus primariae arcae instrumentorum: {STRING}
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Locus horizontalis arcae instrumentorum primariae apud apicem fenestrae
|
||||
STR_CONFIG_SETTING_STATUSBAR_POS :Locus serae status: {STRING}
|
||||
STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Locus horizontalis serae status apud infimam partem fenestrae
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS :Radius fenestrae adhaerendae: {STRING}
|
||||
@@ -2951,7 +2951,7 @@ STR_MAPGEN_BORDER_RANDOM :{BLACK}Fortuiti
|
||||
STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Fortuiti
|
||||
STR_MAPGEN_BORDER_MANUAL :{BLACK}Manu
|
||||
|
||||
STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Circuitus tabulae altitudinum:
|
||||
STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotatio tabulae altitudinum:
|
||||
STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nomen tabulae altitudinum:
|
||||
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Magnitudo:
|
||||
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
|
||||
@@ -3236,16 +3236,16 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Emere m
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Largiri auctoritatem vicinalem ut tua censio augeatur, at difficultas adest: forsitan animadvertaris et graviter puniaris.{}Pretium: {CURRENCY_LONG}
|
||||
|
||||
# Goal window
|
||||
STR_GOALS_CAPTION :{WHITE}{COMPANY} Metae
|
||||
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Metae Globales
|
||||
STR_GOALS_GLOBAL_TITLE :{BLACK}Metae globales:
|
||||
STR_GOALS_CAPTION :{WHITE}{COMPANY} Proposita
|
||||
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Proposita Universalia
|
||||
STR_GOALS_GLOBAL_TITLE :{BLACK}Proposita universalia:
|
||||
STR_GOALS_TEXT :{ORANGE}{STRING}
|
||||
STR_GOALS_NONE :{ORANGE}- Nullae -
|
||||
STR_GOALS_SPECTATOR_NONE :{ORANGE}- Non applicabiles -
|
||||
STR_GOALS_PROGRESS :{ORANGE}{STRING}
|
||||
STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING}
|
||||
STR_GOALS_COMPANY_TITLE :{BLACK}Metae Societatis:
|
||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Preme in metam ut conspectus moveatur supra industriam/oppidum/tegulam. Ctrl+Preme ut nova fenestra conspectus aperiatur supra industriam/oppidum/tegulam
|
||||
STR_GOALS_COMPANY_TITLE :{BLACK}Proposita Societatis:
|
||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Preme in propositum ut conspectus moveatur supra industriam/oppidum/tegulam. Ctrl+Preme ut nova fenestra conspectus aperiatur supra industriam/oppidum/tegulam
|
||||
|
||||
# Goal question window
|
||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Quaestio
|
||||
@@ -3285,7 +3285,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Preme in
|
||||
|
||||
# Story book window
|
||||
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Librum Fabularum
|
||||
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Librum Fabularum Globalis
|
||||
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Librum Fabularum Universale
|
||||
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
|
||||
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pagina {NUM}
|
||||
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Salire ad quamdam paginam eligendo eam in hac indice
|
||||
@@ -3293,7 +3293,7 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Priorem
|
||||
STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ire ad paginam priorem
|
||||
STR_STORY_BOOK_NEXT_PAGE :{BLACK}Secundam
|
||||
STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ire ad paginam secundam
|
||||
STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Meta irrita
|
||||
STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Propositum irritum
|
||||
|
||||
# Station list window
|
||||
STR_STATION_LIST_TOOLTIP :{BLACK}Nomina stationum - preme in nomen ut conspectus moveatur supra stationem. Ctrl+Preme ut nova fenestra conspectus aperiatur supra stationem
|
||||
@@ -3555,7 +3555,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Greges -
|
||||
STR_GROUP_CREATE_TOOLTIP :{BLACK}Preme ut grex creatur
|
||||
STR_GROUP_DELETE_TOOLTIP :{BLACK}Delere gregem electam
|
||||
STR_GROUP_RENAME_TOOLTIP :{BLACK}Renominare gregem electam
|
||||
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Preme ut vehicula huius gregis custodiantur contra autocommutationem globalem
|
||||
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Preme ut vehicula huius gregis custodiantur contra autocommutationem universalem
|
||||
|
||||
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Gregem Delere
|
||||
STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Esne certus te velle delere hanc gregem eiusque descendentes?
|
||||
|
@@ -205,16 +205,16 @@ STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t
|
||||
STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t
|
||||
STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg
|
||||
|
||||
STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tonn{P "" er}
|
||||
STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonn{P "" er}
|
||||
STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA}{NBSP}tonn
|
||||
STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}{NBSP}tonn{P "" ""}
|
||||
STR_UNITS_WEIGHT_LONG_SI :{COMMA}{NBSP}kg
|
||||
|
||||
STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal
|
||||
STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l
|
||||
STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³
|
||||
|
||||
STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon{P "" er}
|
||||
STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}liter{P "" er}
|
||||
STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP}gallon
|
||||
STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}liter
|
||||
STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³
|
||||
|
||||
STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf
|
||||
@@ -1528,7 +1528,7 @@ STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prosentandel av
|
||||
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Andel av inntekten gitt til de mellomliggende etapper i et overføringssystem, noe som gir mer kontroll over inntektene
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Når du drar en linje, plasser signaler hver: {STRING}
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Angi distansen for når signaler vil bli bygget på et spor frem til neste hinder (signal, kryss), hvis signaler blir dratt
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} kartelement{P 0 "" s}
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} kartelement{P 0 "" er}
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Når du drar en linje, oppretthold fast avstand mellom signaler: {STRING}
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Velg oppførselen til signalplassering ved Ctrl + dragning av signaler. Hvis deaktivert, blir signaler plassert ved tunneler eller broer for å unngå lange strekninger uten signaler. Hvis aktivert, blir signalene plassert for hver N ruter, noe som gjør justering av signaler på parallelle spor enklere
|
||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Bygg vingesignal automatisk før: {STRING}
|
||||
@@ -1577,7 +1577,7 @@ STR_CONFIG_SETTING_STATUSBAR_POS :Statusbarens po
|
||||
STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horisontal posisjon av status verktøylinjen på bunnen av skjermen
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS :Vinduers smekkeradius: {STRING}
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Avstanden mellom vinduer før vinduet som blir flyttet automatisk tilpasset nærliggende vinduer
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piksel{P 0 "" s}
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piks{P 0 el ler}
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Deaktivert
|
||||
STR_CONFIG_SETTING_SOFT_LIMIT :Maksimalt antall flytende vinduer: {STRING}
|
||||
STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Antall ikke-klebrige åpne vinduer før gamle vinduer automatisk blir lukket for å gi plass til nye vinduer
|
||||
@@ -3908,8 +3908,8 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(opphold i {STR
|
||||
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(reise for {STRING}, ikke oppsatt med rutetabell)
|
||||
STR_TIMETABLE_STAY_FOR :og bli værende i {STRING}
|
||||
STR_TIMETABLE_AND_TRAVEL_FOR :og reis i {STRING}
|
||||
STR_TIMETABLE_DAYS :{COMMA}{NBSP}dag{P "" s}
|
||||
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tikk{P "" s}
|
||||
STR_TIMETABLE_DAYS :{COMMA}{NBSP}dag{P "" er}
|
||||
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tikk
|
||||
|
||||
STR_TIMETABLE_TOTAL_TIME :{BLACK}Det vil ta {STRING} å fullføre rutetabellen
|
||||
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Det vil ta minst {STRING} å fullføre denne rutetabellen (rutetabell ikke fullstendig)
|
||||
|
@@ -844,7 +844,7 @@ STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE
|
||||
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE}的调度计划中有无效调度命令
|
||||
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} 有重复调度命令
|
||||
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE}的调度计划有无效的车站
|
||||
STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} 的计划列表中有机场跑道太短不足及起降
|
||||
STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} 的计划列表中有一个机场的跑道太短而不能起降
|
||||
|
||||
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} 即将达到报废年限
|
||||
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} 已经达到报废年限
|
||||
|
@@ -1563,6 +1563,7 @@ STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :langsaam
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :gewoan
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_FAST :snel
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Hiel snel
|
||||
STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 in {COMMA}
|
||||
STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Gjin
|
||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Begjin stêdgrutte fermenigfuldiger: {STRING}
|
||||
|
||||
@@ -1649,6 +1650,7 @@ STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Feroarje
|
||||
# Config errors
|
||||
STR_CONFIG_ERROR_ARRAY :{WHITE}... flater in reeks '{STRING}'
|
||||
STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... ûnjildige wearde '{STRING}' foar '{STRING}'
|
||||
STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :koe net fûn wurde
|
||||
STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :Dat strykt net mei dizze ferzje fan OpenTTD
|
||||
STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ûnbekind
|
||||
|
||||
|
@@ -2875,6 +2875,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Corlun b
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Mynd i'r corlun cyffredin blaenorol, gan hepgor unrhyw gorluniau ailliwio/ffont/llidgorluniau, ac amlapio o'r corlun cyntaf i'r olaf
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Cynrychioliad o'r corlun a ddewiswyd. Fe anwybyddir yr aliniad wrth lunio'r corlun
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Symud y corlun, gan newid yr atredau X ac Y
|
||||
STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Ailosod perthyniad
|
||||
STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Ailosod y dodiadau perthynol
|
||||
STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Dodiad X: {NUM}, Dodiad Y: {NUM} (Absoliwt)
|
||||
STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Dodiad X: {NUM}, Dodiad Y: {NUM} (Perthynol)
|
||||
STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Dewis corlun
|
||||
STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Dewis corlun o ynrhyw fan ar y sgrïn
|
||||
|
||||
|
@@ -63,7 +63,6 @@ NetworkCompanyState *_network_company_states = NULL; ///< Statistics about some
|
||||
ClientID _network_own_client_id; ///< Our client identifier.
|
||||
ClientID _redirect_console_to_client; ///< If not invalid, redirect the console output to a client.
|
||||
bool _network_need_advertise; ///< Whether we need to advertise.
|
||||
uint32 _network_last_advertise_frame; ///< Last time we did advertise.
|
||||
uint8 _network_reconnect; ///< Reconnect timeout
|
||||
StringList _network_bind_list; ///< The addresses to bind on.
|
||||
StringList _network_host_list; ///< The servers we know.
|
||||
@@ -762,7 +761,6 @@ bool NetworkServerStart()
|
||||
if (_network_dedicated) IConsoleCmdExec("exec scripts/on_dedicated.scr 0");
|
||||
|
||||
/* Try to register us to the master server */
|
||||
_network_last_advertise_frame = 0;
|
||||
_network_need_advertise = true;
|
||||
NetworkUDPAdvertise();
|
||||
|
||||
@@ -1079,7 +1077,6 @@ void NetworkStartUp()
|
||||
/* Network is available */
|
||||
_network_available = NetworkCoreInitialize();
|
||||
_network_dedicated = false;
|
||||
_network_last_advertise_frame = 0;
|
||||
_network_need_advertise = true;
|
||||
_network_advertise_retries = 0;
|
||||
|
||||
|
@@ -34,7 +34,6 @@ extern NetworkCompanyState *_network_company_states;
|
||||
extern ClientID _network_own_client_id;
|
||||
extern ClientID _redirect_console_to_client;
|
||||
extern bool _network_need_advertise;
|
||||
extern uint32 _network_last_advertise_frame;
|
||||
extern uint8 _network_reconnect;
|
||||
extern StringList _network_bind_list;
|
||||
extern StringList _network_host_list;
|
||||
|
@@ -42,9 +42,9 @@ static ThreadMutex *_network_udp_mutex = ThreadMutex::New();
|
||||
/** Session key to register ourselves to the master server */
|
||||
static uint64 _session_key = 0;
|
||||
|
||||
static const uint ADVERTISE_NORMAL_INTERVAL = 30000; ///< interval between advertising in ticks (15 minutes)
|
||||
static const uint ADVERTISE_RETRY_INTERVAL = 300; ///< re-advertise when no response after this many ticks (9 seconds)
|
||||
static const uint ADVERTISE_RETRY_TIMES = 3; ///< give up re-advertising after this much failed retries
|
||||
static const uint32 ADVERTISE_NORMAL_INTERVAL = 15 * 60 * 1000; ///< interval between advertising in ms (15 minutes)
|
||||
static const uint32 ADVERTISE_RETRY_INTERVAL = 10 * 1000; ///< re-advertise when no response after this many ms (10 seconds)
|
||||
static const uint32 ADVERTISE_RETRY_TIMES = 3; ///< give up re-advertising after this much failed retries
|
||||
|
||||
NetworkUDPSocketHandler *_udp_client_socket = NULL; ///< udp client socket
|
||||
NetworkUDPSocketHandler *_udp_server_socket = NULL; ///< udp server socket
|
||||
@@ -616,25 +616,37 @@ static void NetworkUDPAdvertiseThread(void *pntr)
|
||||
*/
|
||||
void NetworkUDPAdvertise()
|
||||
{
|
||||
static uint32 _last_advertisement = 0; ///< The time of the last advertisement (used to check for wrapping of time)
|
||||
static uint32 _next_advertisement = 0; ///< The next time we should perform a normal advertisement.
|
||||
static uint32 _next_retry = 0; ///< The next time we should perform a retry of an advertisement.
|
||||
|
||||
/* Check if we should send an advertise */
|
||||
if (!_networking || !_network_server || !_network_udp_server || !_settings_client.network.server_advertise) return;
|
||||
|
||||
if (_network_need_advertise) {
|
||||
if (_network_need_advertise || _realtime_tick < _last_advertisement) {
|
||||
/* Forced advertisement, or a wrapping of time in which case we determine the advertisement/retry times again. */
|
||||
_network_need_advertise = false;
|
||||
_network_advertise_retries = ADVERTISE_RETRY_TIMES;
|
||||
} else {
|
||||
/* Only send once every ADVERTISE_NORMAL_INTERVAL ticks */
|
||||
if (_network_advertise_retries == 0) {
|
||||
if ((_network_last_advertise_frame + ADVERTISE_NORMAL_INTERVAL) > _frame_counter) return;
|
||||
if (_realtime_tick <= _next_advertisement) return;
|
||||
|
||||
_network_advertise_retries = ADVERTISE_RETRY_TIMES;
|
||||
} else {
|
||||
/* An actual retry. */
|
||||
if (_realtime_tick <= _next_retry) return;
|
||||
}
|
||||
|
||||
if ((_network_last_advertise_frame + ADVERTISE_RETRY_INTERVAL) > _frame_counter) return;
|
||||
}
|
||||
|
||||
_network_advertise_retries--;
|
||||
_network_last_advertise_frame = _frame_counter;
|
||||
_last_advertisement = _realtime_tick;
|
||||
_next_advertisement = _realtime_tick + ADVERTISE_NORMAL_INTERVAL;
|
||||
_next_retry = _realtime_tick + ADVERTISE_RETRY_INTERVAL;
|
||||
|
||||
/* Make sure we do not have an overflow when checking these; when time wraps, we simply force an advertisement. */
|
||||
if (_next_advertisement < _last_advertisement) _next_advertisement = UINT32_MAX;
|
||||
if (_next_retry < _last_advertisement) _next_retry = UINT32_MAX;
|
||||
|
||||
if (!ThreadObject::New(NetworkUDPAdvertiseThread, NULL)) {
|
||||
NetworkUDPAdvertiseThread(NULL);
|
||||
|
@@ -483,7 +483,7 @@ static const NWidgetPart _nested_scen_edit_land_gen_widgets[] = {
|
||||
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_ETT_PLACE_DESERT), SetMinimalSize(22, 22),
|
||||
SetFill(0, 1), SetDataTip(SPR_IMG_DESERT, STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA),
|
||||
EndContainer(),
|
||||
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_ETT_PLACE_OBJECT), SetMinimalSize(23, 22),
|
||||
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_ETT_PLACE_OBJECT), SetMinimalSize(23, 22),
|
||||
SetFill(0, 1), SetDataTip(SPR_IMG_TRANSMITTER, STR_SCENEDIT_TOOLBAR_PLACE_OBJECT),
|
||||
NWidget(NWID_SPACER), SetFill(1, 0),
|
||||
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_ETT_PLACE_HOUSE), SetMinimalSize(23, 22),
|
||||
@@ -634,7 +634,7 @@ struct ScenarioEditorLandscapeGenerationWindow : Window {
|
||||
break;
|
||||
|
||||
case WID_ETT_PLACE_HOUSE: // Place house button
|
||||
ShowBuildHousePicker(this);
|
||||
ShowBuildHousePicker();
|
||||
break;
|
||||
|
||||
case WID_ETT_INCREASE_SIZE:
|
||||
@@ -702,10 +702,6 @@ struct ScenarioEditorLandscapeGenerationWindow : Window {
|
||||
VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_DESERT);
|
||||
break;
|
||||
|
||||
case WID_ETT_PLACE_HOUSE: // Place house button
|
||||
PlaceProc_House(tile);
|
||||
break;
|
||||
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
}
|
||||
|
233
src/town_gui.cpp
233
src/town_gui.cpp
@@ -45,6 +45,8 @@
|
||||
|
||||
typedef GUIList<const Town*> GUITownList;
|
||||
|
||||
static void PlaceProc_House(TileIndex tile);
|
||||
|
||||
static const NWidgetPart _nested_town_authority_widgets[] = {
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
|
||||
@@ -1331,12 +1333,13 @@ public:
|
||||
static HouseID _cur_house = INVALID_HOUSE_ID; ///< house selected in the house picker window
|
||||
|
||||
/** The window used for building houses. */
|
||||
class HousePickerWindow : public PickerWindowBase {
|
||||
class HousePickerWindow : public Window {
|
||||
protected:
|
||||
GUIHouseList house_list; ///< list of houses and house sets
|
||||
uint house_offset; ///< index of selected house
|
||||
int house_offset; ///< index of selected house
|
||||
uint house_set; ///< index of selected house set
|
||||
uint line_height; ///< height of a single line in the list of house sets
|
||||
HouseID display_house; ///< house ID of currently displayed house
|
||||
|
||||
void RestoreSelectedHouseIndex()
|
||||
{
|
||||
@@ -1345,6 +1348,7 @@ protected:
|
||||
|
||||
if (this->house_list.Length() == 0) { // no houses at all?
|
||||
_cur_house = INVALID_HOUSE_ID;
|
||||
this->display_house = _cur_house;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1360,6 +1364,16 @@ protected:
|
||||
}
|
||||
}
|
||||
_cur_house = this->house_list.GetHouseAtOffset(this->house_set, this->house_offset);
|
||||
this->display_house = _cur_house;
|
||||
}
|
||||
|
||||
void SelectHouseIntl(uint new_house_set, int new_house_offset)
|
||||
{
|
||||
SetObjectToPlaceWnd(SPR_CURSOR_TOWN, PAL_NONE, HT_RECT, this);
|
||||
this->house_set = new_house_set;
|
||||
this->house_offset = new_house_offset;
|
||||
_cur_house = this->house_list.GetHouseAtOffset(new_house_set, new_house_offset);
|
||||
this->display_house = _cur_house;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1367,14 +1381,13 @@ protected:
|
||||
* @param new_house_set index of the house set
|
||||
* @param new_house_offset offset of the house
|
||||
*/
|
||||
void SelectOtherHouse(uint new_house_set, uint new_house_offset)
|
||||
void SelectOtherHouse(uint new_house_set, int new_house_offset)
|
||||
{
|
||||
assert(new_house_set < this->house_list.NumHouseSets());
|
||||
assert(new_house_offset < this->house_list.NumHousesInHouseSet(new_house_set));
|
||||
assert(new_house_offset < (int) this->house_list.NumHousesInHouseSet(new_house_set));
|
||||
assert(new_house_offset >= 0);
|
||||
|
||||
_cur_house = this->house_list.GetHouseAtOffset(new_house_set, new_house_offset);
|
||||
this->house_set = new_house_set;
|
||||
this->house_offset = new_house_offset;
|
||||
SelectHouseIntl(new_house_set, new_house_offset);
|
||||
|
||||
NWidgetMatrix *matrix = this->GetWidget<NWidgetMatrix>(WID_HP_HOUSE_SELECT_MATRIX);
|
||||
matrix->SetCount(this->house_list.NumHousesInHouseSet(this->house_set));
|
||||
@@ -1395,24 +1408,19 @@ protected:
|
||||
}
|
||||
|
||||
public:
|
||||
HousePickerWindow(WindowDesc *desc, Window *w) : PickerWindowBase(desc, w)
|
||||
HousePickerWindow(WindowDesc *desc, WindowNumber number) : Window(desc)
|
||||
{
|
||||
this->CreateNestedTree();
|
||||
/* there is no shade box but we will shade the window if there is no house to show */
|
||||
this->shade_select = this->GetWidget<NWidgetStacked>(WID_HP_MAIN_PANEL_SEL);
|
||||
NWidgetMatrix *matrix = this->GetWidget<NWidgetMatrix>(WID_HP_HOUSE_SELECT_MATRIX);
|
||||
matrix->SetScrollbar(this->GetScrollbar(WID_HP_HOUSE_SELECT_SCROLL));
|
||||
this->FinishInitNested(0);
|
||||
this->FinishInitNested(number);
|
||||
|
||||
if (_cur_house != INVALID_HOUSE_ID) matrix->SetClicked(this->house_offset); // set clicked item again to make it visible
|
||||
}
|
||||
|
||||
~HousePickerWindow()
|
||||
{
|
||||
DeleteWindowById(WC_SELECT_TOWN, 0);
|
||||
}
|
||||
|
||||
virtual void OnInit()
|
||||
virtual void OnInit() override
|
||||
{
|
||||
this->house_list.Build();
|
||||
this->RestoreSelectedHouseIndex();
|
||||
@@ -1437,88 +1445,122 @@ public:
|
||||
NWidgetMatrix *matrix = this->GetWidget<NWidgetMatrix>(WID_HP_HOUSE_SELECT_MATRIX);
|
||||
matrix->SetCount(this->house_list.NumHousesInHouseSet(this->house_set));
|
||||
matrix->SetClicked(this->house_offset);
|
||||
SelectHouseIntl(this->house_set, this->house_offset);
|
||||
} else {
|
||||
ResetObjectToPlace();
|
||||
}
|
||||
}
|
||||
|
||||
virtual void SetStringParameters(int widget) const
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_HP_CAPTION:
|
||||
if (this->house_list.NumHouseSets() == 1) SetDParamStr(0, this->house_list.GetNameOfHouseSet(0));
|
||||
break;
|
||||
if (widget == WID_HP_CAPTION) {
|
||||
if (this->house_list.NumHouseSets() == 1) SetDParamStr(0, this->house_list.GetNameOfHouseSet(0));
|
||||
} else if (this->display_house == INVALID_HOUSE_ID) {
|
||||
switch (widget) {
|
||||
case WID_HP_CAPTION:
|
||||
break;
|
||||
|
||||
case WID_HP_HOUSE_NAME:
|
||||
SetDParam(0, GetHouseName(_cur_house));
|
||||
break;
|
||||
case WID_HP_HOUSE_ZONES:
|
||||
for (int i = 0; i < HZB_END; i++) {
|
||||
SetDParam(2 * i, STR_HOUSE_BUILD_HOUSE_ZONE_DISABLED);
|
||||
SetDParam(2 * i + 1, i + 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case WID_HP_HISTORICAL_BUILDING:
|
||||
SetDParam(0, HouseSpec::Get(_cur_house)->extra_flags & BUILDING_IS_HISTORICAL ? STR_HOUSE_BUILD_HISTORICAL_BUILDING : STR_EMPTY);
|
||||
break;
|
||||
case WID_HP_HOUSE_YEARS:
|
||||
SetDParam(0, STR_HOUSE_BUILD_YEARS_BAD_YEAR);
|
||||
SetDParam(1, 0);
|
||||
SetDParam(2, STR_HOUSE_BUILD_YEARS_BAD_YEAR);
|
||||
SetDParam(3, 0);
|
||||
break;
|
||||
|
||||
case WID_HP_HOUSE_POPULATION:
|
||||
SetDParam(0, HouseSpec::Get(_cur_house)->population);
|
||||
break;
|
||||
case WID_HP_HOUSE_ACCEPTANCE:
|
||||
SetDParamStr(0, "");
|
||||
break;
|
||||
|
||||
case WID_HP_HOUSE_ZONES: {
|
||||
HouseZones zones = (HouseZones)(HouseSpec::Get(_cur_house)->building_availability & HZ_ZONALL);
|
||||
for (int i = 0; i < HZB_END; i++) {
|
||||
/* colour: gold(enabled)/grey(disabled) */
|
||||
SetDParam(2 * i, HasBit(zones, HZB_END - i - 1) ? STR_HOUSE_BUILD_HOUSE_ZONE_ENABLED : STR_HOUSE_BUILD_HOUSE_ZONE_DISABLED);
|
||||
/* digit: 1(center)/2/3/4/5(edge) */
|
||||
SetDParam(2 * i + 1, i + 1);
|
||||
case WID_HP_HOUSE_SUPPLY:
|
||||
SetDParam(0, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
SetDParam(0, STR_EMPTY);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (widget) {
|
||||
case WID_HP_HOUSE_NAME:
|
||||
SetDParam(0, GetHouseName(this->display_house));
|
||||
break;
|
||||
|
||||
case WID_HP_HISTORICAL_BUILDING:
|
||||
SetDParam(0, HouseSpec::Get(this->display_house)->extra_flags & BUILDING_IS_HISTORICAL ? STR_HOUSE_BUILD_HISTORICAL_BUILDING : STR_EMPTY);
|
||||
break;
|
||||
|
||||
case WID_HP_HOUSE_POPULATION:
|
||||
SetDParam(0, HouseSpec::Get(this->display_house)->population);
|
||||
break;
|
||||
|
||||
case WID_HP_HOUSE_ZONES: {
|
||||
HouseZones zones = (HouseZones)(HouseSpec::Get(this->display_house)->building_availability & HZ_ZONALL);
|
||||
for (int i = 0; i < HZB_END; i++) {
|
||||
/* colour: gold(enabled)/grey(disabled) */
|
||||
SetDParam(2 * i, HasBit(zones, HZB_END - i - 1) ? STR_HOUSE_BUILD_HOUSE_ZONE_ENABLED : STR_HOUSE_BUILD_HOUSE_ZONE_DISABLED);
|
||||
/* digit: 1(center)/2/3/4/5(edge) */
|
||||
SetDParam(2 * i + 1, i + 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_HP_HOUSE_LANDSCAPE: {
|
||||
StringID info = STR_HOUSE_BUILD_LANDSCAPE_ABOVE_OR_BELOW_SNOWLINE;
|
||||
switch (HouseSpec::Get(_cur_house)->building_availability & (HZ_SUBARTC_ABOVE | HZ_SUBARTC_BELOW)) {
|
||||
case HZ_SUBARTC_ABOVE: info = STR_HOUSE_BUILD_LANDSCAPE_ONLY_ABOVE_SNOWLINE; break;
|
||||
case HZ_SUBARTC_BELOW: info = STR_HOUSE_BUILD_LANDSCAPE_ONLY_BELOW_SNOWLINE; break;
|
||||
default: break;
|
||||
case WID_HP_HOUSE_LANDSCAPE: {
|
||||
StringID info = STR_HOUSE_BUILD_LANDSCAPE_ABOVE_OR_BELOW_SNOWLINE;
|
||||
switch (HouseSpec::Get(this->display_house)->building_availability & (HZ_SUBARTC_ABOVE | HZ_SUBARTC_BELOW)) {
|
||||
case HZ_SUBARTC_ABOVE: info = STR_HOUSE_BUILD_LANDSCAPE_ONLY_ABOVE_SNOWLINE; break;
|
||||
case HZ_SUBARTC_BELOW: info = STR_HOUSE_BUILD_LANDSCAPE_ONLY_BELOW_SNOWLINE; break;
|
||||
default: break;
|
||||
}
|
||||
SetDParam(0, info);
|
||||
break;
|
||||
}
|
||||
SetDParam(0, info);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_HP_HOUSE_YEARS: {
|
||||
const HouseSpec *hs = HouseSpec::Get(_cur_house);
|
||||
SetDParam(0, hs->min_year <= _cur_year ? STR_HOUSE_BUILD_YEARS_GOOD_YEAR : STR_HOUSE_BUILD_YEARS_BAD_YEAR);
|
||||
SetDParam(1, hs->min_year);
|
||||
SetDParam(2, hs->max_year >= _cur_year ? STR_HOUSE_BUILD_YEARS_GOOD_YEAR : STR_HOUSE_BUILD_YEARS_BAD_YEAR);
|
||||
SetDParam(3, hs->max_year);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_HP_HOUSE_ACCEPTANCE: {
|
||||
static char buff[DRAW_STRING_BUFFER] = "";
|
||||
char *str = buff;
|
||||
CargoArray cargo;
|
||||
uint32 dummy = 0;
|
||||
AddAcceptedHouseCargo(_cur_house, INVALID_TILE, cargo, &dummy);
|
||||
for (uint i = 0; i < NUM_CARGO; i++) {
|
||||
if (cargo[i] == 0) continue;
|
||||
/* If the accepted value is less than 8, show it in 1/8:ths */
|
||||
SetDParam(0, cargo[i] < 8 ? STR_HOUSE_BUILD_CARGO_VALUE_EIGHTS : STR_HOUSE_BUILD_CARGO_VALUE_JUST_NAME);
|
||||
SetDParam(1, cargo[i]);
|
||||
SetDParam(2, CargoSpec::Get(i)->name);
|
||||
str = GetString(str, str == buff ? STR_HOUSE_BUILD_CARGO_FIRST : STR_HOUSE_BUILD_CARGO_SEPARATED, lastof(buff));
|
||||
case WID_HP_HOUSE_YEARS: {
|
||||
const HouseSpec *hs = HouseSpec::Get(this->display_house);
|
||||
SetDParam(0, hs->min_year <= _cur_year ? STR_HOUSE_BUILD_YEARS_GOOD_YEAR : STR_HOUSE_BUILD_YEARS_BAD_YEAR);
|
||||
SetDParam(1, hs->min_year);
|
||||
SetDParam(2, hs->max_year >= _cur_year ? STR_HOUSE_BUILD_YEARS_GOOD_YEAR : STR_HOUSE_BUILD_YEARS_BAD_YEAR);
|
||||
SetDParam(3, hs->max_year);
|
||||
break;
|
||||
}
|
||||
if (str == buff) GetString(buff, STR_JUST_NOTHING, lastof(buff));
|
||||
SetDParamStr(0, buff);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_HP_HOUSE_SUPPLY: {
|
||||
CargoArray cargo;
|
||||
AddProducedHouseCargo(_cur_house, INVALID_TILE, cargo);
|
||||
uint32 cargo_mask = 0;
|
||||
for (uint i = 0; i < NUM_CARGO; i++) if (cargo[i] != 0) SetBit(cargo_mask, i);
|
||||
SetDParam(0, cargo_mask);
|
||||
break;
|
||||
}
|
||||
case WID_HP_HOUSE_ACCEPTANCE: {
|
||||
static char buff[DRAW_STRING_BUFFER] = "";
|
||||
char *str = buff;
|
||||
CargoArray cargo;
|
||||
uint32 dummy = 0;
|
||||
AddAcceptedHouseCargo(this->display_house, INVALID_TILE, cargo, &dummy);
|
||||
for (uint i = 0; i < NUM_CARGO; i++) {
|
||||
if (cargo[i] == 0) continue;
|
||||
/* If the accepted value is less than 8, show it in 1/8:ths */
|
||||
SetDParam(0, cargo[i] < 8 ? STR_HOUSE_BUILD_CARGO_VALUE_EIGHTS : STR_HOUSE_BUILD_CARGO_VALUE_JUST_NAME);
|
||||
SetDParam(1, cargo[i]);
|
||||
SetDParam(2, CargoSpec::Get(i)->name);
|
||||
str = GetString(str, str == buff ? STR_HOUSE_BUILD_CARGO_FIRST : STR_HOUSE_BUILD_CARGO_SEPARATED, lastof(buff));
|
||||
}
|
||||
if (str == buff) GetString(buff, STR_JUST_NOTHING, lastof(buff));
|
||||
SetDParamStr(0, buff);
|
||||
break;
|
||||
}
|
||||
|
||||
default: break;
|
||||
case WID_HP_HOUSE_SUPPLY: {
|
||||
CargoArray cargo;
|
||||
AddProducedHouseCargo(this->display_house, INVALID_TILE, cargo);
|
||||
uint32 cargo_mask = 0;
|
||||
for (uint i = 0; i < NUM_CARGO; i++) if (cargo[i] != 0) SetBit(cargo_mask, i);
|
||||
SetDParam(0, cargo_mask);
|
||||
break;
|
||||
}
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1612,7 +1654,9 @@ public:
|
||||
}
|
||||
|
||||
case WID_HP_HOUSE_PREVIEW:
|
||||
DrawHouseImage(_cur_house, r.left, r.top, r.right, r.bottom);
|
||||
if (this->display_house != INVALID_HOUSE_ID) {
|
||||
DrawHouseImage(this->display_house, r.left, r.top, r.right, r.bottom);
|
||||
}
|
||||
break;
|
||||
|
||||
case WID_HP_HOUSE_SELECT: {
|
||||
@@ -1645,6 +1689,21 @@ public:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
virtual void OnPlaceObject(Point pt, TileIndex tile) override
|
||||
{
|
||||
PlaceProc_House(tile);
|
||||
}
|
||||
|
||||
virtual void OnPlaceObjectAbort() override
|
||||
{
|
||||
this->house_offset = -1;
|
||||
_cur_house = INVALID_HOUSE_ID;
|
||||
NWidgetMatrix *matrix = this->GetWidget<NWidgetMatrix>(WID_HP_HOUSE_SELECT_MATRIX);
|
||||
matrix->SetClicked(-1);
|
||||
this->UpdateSelectSize();
|
||||
this->SetDirty();
|
||||
}
|
||||
};
|
||||
|
||||
static const NWidgetPart _nested_house_picker_widgets[] = {
|
||||
@@ -1715,12 +1774,9 @@ static WindowDesc _house_picker_desc(
|
||||
* Show our house picker.
|
||||
* @param parent The toolbar window we're associated with.
|
||||
*/
|
||||
void ShowBuildHousePicker(Window *parent)
|
||||
void ShowBuildHousePicker()
|
||||
{
|
||||
if (BringWindowToFrontById(WC_BUILD_HOUSE, 0) != NULL) {
|
||||
return;
|
||||
}
|
||||
new HousePickerWindow(&_house_picker_desc, parent);
|
||||
AllocateWindowDescFront<HousePickerWindow>(&_house_picker_desc, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1820,8 +1876,7 @@ static void ShowSelectTownWindow(const TownList &towns, const CommandContainer &
|
||||
new SelectTownWindow(&_select_town_desc, towns, cmd);
|
||||
}
|
||||
|
||||
|
||||
void PlaceProc_House(TileIndex tile)
|
||||
static void PlaceProc_House(TileIndex tile)
|
||||
{
|
||||
if (_town_pool.items == 0) {
|
||||
ShowErrorMessage(STR_ERROR_CAN_T_BUILD_HOUSE_HERE, STR_ERROR_MUST_FOUND_TOWN_FIRST, WL_INFO);
|
||||
|
@@ -12,11 +12,6 @@
|
||||
#ifndef TOWN_GUI_H
|
||||
#define TOWN_GUI_H
|
||||
|
||||
#include "tile_type.h"
|
||||
|
||||
struct Window;
|
||||
|
||||
void ShowBuildHousePicker(Window *parent);
|
||||
void PlaceProc_House(TileIndex tile);
|
||||
void ShowBuildHousePicker();
|
||||
|
||||
#endif /* TOWN_GUI_H */
|
||||
|
Reference in New Issue
Block a user