diff --git a/.dorpsgek.yml b/.dorpsgek.yml index 8cee58a999..363d8b0b42 100644 --- a/.dorpsgek.yml +++ b/.dorpsgek.yml @@ -12,3 +12,4 @@ notifications: commit-comment: pull-request: issue: + tag-created: diff --git a/.github/workflows/commit-checker.yml b/.github/workflows/commit-checker.yml new file mode 100644 index 0000000000..d2546ab30b --- /dev/null +++ b/.github/workflows/commit-checker.yml @@ -0,0 +1,45 @@ +name: Commit checker + +on: + pull_request: + +jobs: + commit-checker: + name: Commit checker + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 4 + + - name: Get pull-request commits + run: | + set -x + # actions/checkout did a merge checkout of the pull-request. As such, the first + # commit is the merge commit. This means that on HEAD^ is the base branch, and + # on HEAD^2 are the commits from the pull-request. We now check if those trees + # have a common parent. If not, we fetch a few more commits till we do. In result, + # the log between HEAD^ and HEAD^2 will be the commits in the pull-request. + DEPTH=4 + while [ -z "$(git merge-base HEAD^ HEAD^2)" ]; do + git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --deepen=${DEPTH} origin HEAD + DEPTH=$(( ${DEPTH} * 4 )) + done + + # Just to show which commits we are going to evaluate. + git log --oneline HEAD^..HEAD^2 + + - name: Checkout commit-checker + uses: actions/checkout@v2 + with: + repository: OpenTTD/OpenTTD-git-hooks + path: git-hooks + ref: master + + - name: Check commits + run: | + set -x + HOOKS_DIR=./git-hooks/hooks GIT_DIR=.git ./git-hooks/hooks/check-commits.sh HEAD^..HEAD^2 + echo "Commit checks passed" diff --git a/Doxyfile b/Doxyfile index ef7ea3daa3..e288ffbd87 100644 --- a/Doxyfile +++ b/Doxyfile @@ -7,8 +7,8 @@ # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = OpenTTD -PROJECT_NUMBER = +PROJECT_NAME = "OpenTTD Source" +PROJECT_NUMBER = $(VERSION) PROJECT_BRIEF = PROJECT_LOGO = OUTPUT_DIRECTORY = docs/source/ diff --git a/azure-pipelines-ci.yml b/azure-pipelines-ci.yml index 43448f345c..c58a856d93 100644 --- a/azure-pipelines-ci.yml +++ b/azure-pipelines-ci.yml @@ -39,8 +39,6 @@ jobs: strategy: matrix: - commit-checker: - Tag: 'commit-checker' linux-amd64-clang-3.9: Tag: 'linux-amd64-clang-3.9' linux-amd64-gcc-6: diff --git a/src/base_station_base.h b/src/base_station_base.h index c3202877a8..5c8e9314aa 100644 --- a/src/base_station_base.h +++ b/src/base_station_base.h @@ -15,7 +15,6 @@ #include "viewport_type.h" #include "station_map.h" #include "core/geometry_type.hpp" -#include "core/alloc_type.hpp" #include typedef Pool StationPool; @@ -59,7 +58,7 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { char *name; ///< Custom name StringID string_id; ///< Default name (town area) of station - std::unique_ptr cached_name; ///< NOSAVE: Cache of the resolved name of the station, if not using a custom name + mutable std::string cached_name; ///< NOSAVE: Cache of the resolved name of the station, if not using a custom name Town *town; ///< The town this station is associated with Owner owner; ///< The owner of this station @@ -115,8 +114,8 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { inline const char *GetCachedName() const { if (this->name != nullptr) return this->name; - if (!this->cached_name) const_cast(this)->FillCachedName(); - return this->cached_name.get(); + if (this->cached_name.empty()) this->FillCachedName(); + return this->cached_name.c_str(); } virtual void MoveSign(TileIndex new_xy) @@ -183,8 +182,8 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { static void PostDestructor(size_t index); - private: - void FillCachedName(); +private: + void FillCachedName() const; }; /** diff --git a/src/command.cpp b/src/command.cpp index cc6043be1b..a67e83ee9f 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -113,6 +113,7 @@ CommandProc CmdIncreaseLoan; CommandProc CmdDecreaseLoan; CommandProc CmdWantEnginePreview; +CommandProc CmdEngineCtrl; CommandProc CmdSetVehicleUnitNumber; @@ -334,6 +335,7 @@ static const Command _command_proc_table[] = { DEF_CMD(CmdDecreaseLoan, 0, CMDT_MONEY_MANAGEMENT ), // CMD_DECREASE_LOAN DEF_CMD(CmdWantEnginePreview, 0, CMDT_VEHICLE_MANAGEMENT ), // CMD_WANT_ENGINE_PREVIEW + DEF_CMD(CmdEngineCtrl, CMD_DEITY, CMDT_VEHICLE_MANAGEMENT ), // CMD_ENGINE_CTRL DEF_CMD(CmdSetVehicleUnitNumber, 0, CMDT_OTHER_MANAGEMENT ), // CMD_SET_VEHICLE_UNIT_NUMBER diff --git a/src/command_type.h b/src/command_type.h index fd01f76306..bf52d7c4e3 100644 --- a/src/command_type.h +++ b/src/command_type.h @@ -279,6 +279,7 @@ enum Commands { CMD_DECREASE_LOAN, ///< decrease the loan from the bank CMD_WANT_ENGINE_PREVIEW, ///< confirm the preview of an engine + CMD_ENGINE_CTRL, ///< control availability of the engine for companies CMD_SET_VEHICLE_UNIT_NUMBER, ///< sets the unit number of a vehicle diff --git a/src/engine.cpp b/src/engine.cpp index 49e956dc2d..f04664117c 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -720,11 +720,11 @@ void StartupEngines() } /** - * Company \a company accepts engine \a eid for preview. - * @param eid Engine being accepted (is under preview). - * @param company Current company previewing the engine. + * Allows engine \a eid to be used by a company \a company. + * @param eid The engine to enable. + * @param company The company to allow using the engine. */ -static void AcceptEnginePreview(EngineID eid, CompanyID company) +static void EnableEngineForCompany(EngineID eid, CompanyID company) { Engine *e = Engine::Get(eid); Company *c = Company::Get(company); @@ -738,15 +738,45 @@ static void AcceptEnginePreview(EngineID eid, CompanyID company) c->avail_roadtypes = AddDateIntroducedRoadTypes(c->avail_roadtypes | GetRoadTypeInfo(e->u.road.roadtype)->introduces_roadtypes, _date); } - e->preview_company = INVALID_COMPANY; - e->preview_asked = (CompanyMask)-1; + if (company == _local_company) { + AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type); + + /* Update the toolbar. */ + InvalidateWindowData(WC_MAIN_TOOLBAR, 0); + if (e->type == VEH_ROAD) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_ROAD); + if (e->type == VEH_SHIP) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_WATER); + } +} + +/** + * Forbids engine \a eid to be used by a company \a company. + * @param eid The engine to disable. + * @param company The company to forbid using the engine. + */ +static void DisableEngineForCompany(EngineID eid, CompanyID company) +{ + Engine *e = Engine::Get(eid); + + ClrBit(e->company_avail, company); + if (company == _local_company) { AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type); } +} - /* Update the toolbar. */ - if (e->type == VEH_ROAD) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_ROAD); - if (e->type == VEH_SHIP) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_WATER); +/** + * Company \a company accepts engine \a eid for preview. + * @param eid Engine being accepted (is under preview). + * @param company Current company previewing the engine. + */ +static void AcceptEnginePreview(EngineID eid, CompanyID company) +{ + Engine *e = Engine::Get(eid); + + e->preview_company = INVALID_COMPANY; + e->preview_asked = (CompanyMask)-1; + + EnableEngineForCompany(eid, company); /* Notify preview window, that it might want to close. * Note: We cannot directly close the window. @@ -901,6 +931,37 @@ CommandCost CmdWantEnginePreview(TileIndex tile, DoCommandFlag flags, uint32 p1, return CommandCost(); } +/** + * Allow or forbid a specific company to use an engine + * @param tile unused + * @param flags operation to perform + * @param p1 engine id + * @param p2 various bitstuffed elements + * - p2 = (bit 0 - 7) - Company to allow/forbid the use of an engine. + * - p2 = (bit 31) - 0 to forbid, 1 to allow. + * @param text unused + * @return the cost of this operation or an error + */ +CommandCost CmdEngineCtrl(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + if (_current_company != OWNER_DEITY) return CMD_ERROR; + EngineID engine_id = (EngineID)p1; + CompanyID company_id = (CompanyID)GB(p2, 0, 8); + bool allow = HasBit(p2, 31); + + if (!Engine::IsValidID(engine_id) || !Company::IsValidID(company_id)) return CMD_ERROR; + + if (flags & DC_EXEC) { + if (allow) { + EnableEngineForCompany(engine_id, company_id); + } else { + DisableEngineForCompany(engine_id, company_id); + } + } + + return CommandCost(); +} + /** * An engine has become available for general use. * Also handle the exclusive engine preview contract. diff --git a/src/industry.h b/src/industry.h index 01942e0ac3..a53b20c493 100644 --- a/src/industry.h +++ b/src/industry.h @@ -62,7 +62,7 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> { PartOfSubsidy part_of_subsidy; ///< NOSAVE: is this industry a source/destination of a subsidy? StationList stations_near; ///< NOSAVE: List of nearby stations. - std::unique_ptr cached_name; ///< NOSAVE: Cache of the resolved name of the industry + mutable std::string cached_name; ///< NOSAVE: Cache of the resolved name of the industry Owner founder; ///< Founder of the industry Date construction_date; ///< Date of the construction of the industry @@ -160,12 +160,12 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> { inline const char *GetCachedName() const { - if (!this->cached_name) const_cast(this)->FillCachedName(); - return this->cached_name.get(); + if (this->cached_name.empty()) this->FillCachedName(); + return this->cached_name.c_str(); } private: - void FillCachedName(); + void FillCachedName() const; protected: static uint16 counts[NUM_INDUSTRYTYPES]; ///< Number of industries per type ingame diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index f010135fb2..3a7b150bd6 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -2330,21 +2330,19 @@ void Industry::RecomputeProductionMultipliers() } } -void Industry::FillCachedName() +void Industry::FillCachedName() const { char buf[256]; int64 args_array[] = { this->index }; StringParameters tmp_params(args_array); char *end = GetStringWithArgs(buf, STR_INDUSTRY_NAME, &tmp_params, lastof(buf)); - char *alloced = MallocT(end - buf + 1); - memcpy(alloced, buf, end - buf + 1); - this->cached_name.reset(alloced); + this->cached_name.assign(buf, end); } void ClearAllIndustryCachedNames() { for (Industry *ind : Industry::Iterate()) { - ind->cached_name.reset(); + ind->cached_name.clear(); } } diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index 3aa78e813b..352ed2dd0d 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -1703,7 +1703,7 @@ public: if (this->industries.SortType() == 2) this->industries.ForceResort(); break; - case IDIWD_FORCE_RESORT: + default: this->industries.ForceResort(); break; } diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 0df1f6d758..b9b4f282de 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -235,6 +235,8 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vælg fi STR_BUTTON_SORT_BY :{BLACK}Sortér på STR_BUTTON_LOCATION :{BLACK}Lokalitet STR_BUTTON_RENAME :{BLACK}Omdøb +STR_BUTTON_CATCHMENT :{BLACK}Dækning +STR_TOOLTIP_CATCHMENT :{BLACK}Aktiver visning af dækningsområde STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Luk vindue STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Vinduestitel - træk her for at flytte vinduet @@ -263,6 +265,7 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ved at a STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Annuller STR_BUTTON_OK :{BLACK}OK +STR_WARNING_PASSWORD_SECURITY :{YELLOW}Advarsel: Server administratoren kan være i stand til at læse al tekst skrevet her. # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -336,6 +339,7 @@ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zoom ind STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Zoom ud STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Byg jernbanespor STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Byg veje +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Byg sporveje STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Byg havne STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Byg lufthavne STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Åbn landskabsværktøjslinjen for at hæve/sænke terræn, plante træer, osv. @@ -854,13 +858,14 @@ STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}s indtjening sidste år var {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} kan ikke nå til næste destination, da den er uden for rækkevidde -STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stoppet fordi en ombygnings ordre fejlede +STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stoppet fordi en tilpasningsordre fejlede STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Automatisk fornyelse mislykkedes for {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Ny {STRING} er nu tilgængelig! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Ny {STRING} er nu tilgængelig! - {ENGINE} +STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Åbn gruppevinduet med fokus på dette fartøjs gruppe STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} accepterer ikke længere {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} accepterer ikke længere {STRING} eller {STRING} @@ -928,6 +933,9 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgiske Lari STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rialer (IRR) STR_GAME_OPTIONS_CURRENCY_RUB :Ny Russisk Rubel (RUB) STR_GAME_OPTIONS_CURRENCY_MXN :Meksikansk Peso (MXN) +STR_GAME_OPTIONS_CURRENCY_NTD :Ny Taiwan dollar (NTD) +STR_GAME_OPTIONS_CURRENCY_CNY :Kinesisk Renminbi (CNY) +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD) ############ end of currency region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vejkøretøjer @@ -1302,6 +1310,8 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Vis byens indby STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vis befolkningen i byerne i deres etiket på kortet STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Linjetykkelse i grafer: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Bredde af linjerne i graferne. En tynd linie er mere læsbar, en tykkere linje er nemmere at se og det er lettere at skelne mellem farverne +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Vis navn på NewGRF i byg fartøj vinduet: {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Tilføjer en linje til byg fartøj vinduet som viser, hvilken NewGRF det valgte fartøj stammer fra. STR_CONFIG_SETTING_LANDSCAPE :Landskab: {STRING} STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landskaber definerer grundlæggende gameplay-scenarier med forskellige laster og krav by vækst. NewGRF og spil Scripts tillader finere kontrol selv @@ -1313,8 +1323,8 @@ STR_CONFIG_SETTING_TERRAIN_TYPE :Terræn type: { STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Hilliness af landskabet STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industri tæthed: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Angiv hvor mange industrier skal genereres og hvilket niveau der bevares i løbet af spillet -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max afstand fra kant til olieraffinaderier: {STRING} -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olieraffinaderier er kun opføres nær kortets grænse, det er ved kysten for kort med øer +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimal afstand fra kant til olieindustrier: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Grænse for hvor langt fra kortets kant olieraffinaderier kan blive bygget. På ø-kort sikrer dette at de er nær kysten. På kort større end 256 felter bliver denne værdi automatisk skaleret op. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snelinjehøjden: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Kontrol med på hvilket højde sneen begynder i sub-arktiske landskab. Sne påvirker også industrien generation og betingelser by vækst STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Tærrenets hårdhed (kun TerraGenesis) : {STRING} @@ -1478,6 +1488,9 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tillad computer STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillad computerstyrede spillere at deltage i multiplayer spil STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes før scriptet bliver stoppet: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximale nummer af udregninger et script kan eksekvere i en tur +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Maks hukommelsesforbrug per script: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Hvor meget hukommelse et enkelt script må anvende før det bliver tvungent afbrudt. Det kan være nødvendigt at forøge dette for spil på store kort. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Service intervaller er i procent: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Vælg om vedligeholdelse bliver udløst af forløbet tid, eller pålideligheden som falder en givet procenttal i forhold til maximum pålideligheden @@ -1536,10 +1549,16 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Fuld STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Farvede nyheder dukker op i: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Året hvor nyheds-annonceringer bliver udskrevet i farver. Før dette år, bruger det sort / hvid STR_CONFIG_SETTING_STARTING_YEAR :Start dato: {STRING} +STR_CONFIG_SETTING_ENDING_YEAR :Slutår for pointoptælling: {STRING} +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Årstal hvor spillet slutter pointoptælling. Ved slutningen af dette år bliver selskabets point optaget, og topresultater-skærmen bliver vist. Spillerne kan fortsætte med at spille efter dette.{}Hvis dette er før spillets start år, bliver topresultater-skærmen aldrig vist. +STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} +STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Aldrig STR_CONFIG_SETTING_SMOOTH_ECONOMY :Aktiver rolig økonomi (flere små ændringer): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Når slået til, ændre industriproduktion oftere, og i små trin. Denne indstilling har normalt ingen effekt, hvis industrityper er fastsat af NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Tillad at købe aktier i andre selskaber: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Hvis aktiveret, tillades køb og salg af selskabsaktier. Aktier vil kun være tilgængelige for selskaber der er nået en hvis alder +STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Mindste selskabsalder for aktiehandel: {STRING} +STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Indstil mindste alder på selskaber, før andre kan købe og sælge aktier i dem. STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Procentdel af deloverskud som skal betales i hovedsystemer: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Procentdel af indkomst givet til de mellemliggende dele i hovedsystemer, giver mere kontrol over indkomst STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Når der trækkes, placer signaler hvert: {STRING} @@ -2423,7 +2442,10 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Byg en t STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Byg en sporvejstunnel. Shift skifter mellem at bygge og vise prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Skift mellem bygning/fjernelse af veje STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Skift mellem bygning/fjernelse af sporveje +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Konverter/opgrader typen af vej. Shift skifter mellem at bygge og vise prisoverslag +STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Konverter/opgrader typen af sporvej. Shift skifter mellem at bygge og vise prisoverslag +STR_ROAD_NAME_ROAD :Vej STR_ROAD_NAME_TRAM :Sporvej # Road depot construction window @@ -2609,8 +2631,11 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tog type: {LTBLUE}{STRING} +STR_LANG_AREA_INFORMATION_ROAD_TYPE :{BLACK}Vejtype: {LTBLUE}{STRING} +STR_LANG_AREA_INFORMATION_TRAM_TYPE :{BLACK}Sporvejstype: {LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Togspors hastighedsgrænse: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Vej hastighedsbegrænsning: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}Sporvogn hastighedsgrænse: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Klipper @@ -2720,6 +2745,7 @@ STR_FRAMERATE_SPEED_FACTOR :{BLACK}Aktuel s STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Hvor hurtigt spillet aktuelt kører, i forhold til det forventede ved normal simulationshastighed. STR_FRAMERATE_CURRENT :{WHITE}Aktuel STR_FRAMERATE_AVERAGE :{WHITE}Gennemsnit +STR_FRAMERATE_MEMORYUSE :{WHITE}Hukommelse STR_FRAMERATE_DATA_POINTS :{BLACK}Data baseret på {COMMA} målinger STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms @@ -2727,6 +2753,9 @@ STR_FRAMERATE_MS_BAD :{RED}{DECIMAL} STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} billeder/s STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} billeder/s STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} billeder/s +STR_FRAMERATE_BYTES_GOOD :{LTBLUE}{BYTES} +STR_FRAMERATE_BYTES_WARN :{YELLOW}{BYTES} +STR_FRAMERATE_BYTES_BAD :{RED}{BYTES} STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s ############ Leave those lines in this order!! @@ -3023,7 +3052,7 @@ STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Det ænd STR_BROKEN_VEHICLE_LENGTH :{WHITE}Toget '{VEHICLE}' fra selskabet '{COMPANY}' har ugyldig længde. Det skyldes sandsynligvis at problem med en NewGRF. Risiko for at spillet mister synkronisering eller går ned. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' indeholder forkert information -STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Fragt-/ombygningsinformation for '{1:ENGINE}' afviger fra indkøbslisten efter konstruktion. Dette kan medføre, at autofornyelse ikke fungerer korrekt. +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Fragt-/tilpasningsinformation for '{1:ENGINE}' afviger fra indkøbslisten efter konstruktion. Dette kan medføre, at autofornyelse ikke fungerer korrekt. STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' forårsagede en uendelig løkke i produktions-callback'en. STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} returnerede ukendt/ugyldigt resultat {2:HEX} STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' returnerede ugyldig godstype i produktion-callback ved {2:HEX} @@ -3093,6 +3122,8 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Omdøb byen # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} lokal myndighed +STR_LOCAL_AUTHORITY_ZONE :{BLACK}Zone +STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Vis zone og grænse for den lokale myndighed STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Transportselskabsbedømmelse: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Handlinger til rådighed: @@ -3352,6 +3383,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastr STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Spor-stykker: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signaler STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Vej-stykker: +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Sporvejsdele: STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Vand-felter: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanaler STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationer: @@ -3362,8 +3394,17 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrier STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ingen - +STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transporteret){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} +STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} og {NUM} flere... STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrinavne - klik på navn for at centrere visningen over en industri. Ctrl+Klik åbner et nyt vindue ved industriens lokalitet. +STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Accepteret last: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Produceret last: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Alle lasttyper +STR_INDUSTRY_DIRECTORY_FILTER_NONE :Ingen # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} @@ -3429,6 +3470,7 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Ikke-grupperede STR_GROUP_DEFAULT_SHIPS :Ikke-grupperede skibe STR_GROUP_DEFAULT_AIRCRAFTS :Ikke-grupperede fly +STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - klik på en gruppe for at vise alle køretøjer i gruppen STR_GROUP_CREATE_TOOLTIP :{BLACK}Klik for at oprette en gruppe @@ -3457,29 +3499,34 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nye monorailkø STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nye magnetskinnekøretøjer STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nye køretøjer +STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Nye sporvogne ############ range for vehicle availability starts STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Jernbanekøretøjer +STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Nye vejkøretøjer STR_BUY_VEHICLE_SHIP_CAPTION :Nye skibe STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nyt fly ############ range for vehicle availability ends STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Pris: {GOLD}{CURRENCY_LONG}{BLACK} Vægt: {GOLD}{WEIGHT_SHORT} +STR_PURCHASE_INFO_COST_REFIT_WEIGHT :{BLACK}Pris: {GOLD}{CURRENCY_LONG}{BLACK} (Pris for tilpasning: {GOLD}{CURRENCY_LONG}{BLACK}) Vægt: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hastighed: {GOLD}{VELOCITY}{BLACK} Styrke: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Hastighed: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Hastighed på havet: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Hastighed på kanal/flod: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Driftsomkostninger: {GOLD}{CURRENCY_LONG}/år STR_PURCHASE_INFO_CAPACITY :{BLACK}Lasteevne: {GOLD}{CARGO_LONG} {STRING} -STR_PURCHASE_INFO_REFITTABLE :(kan ombygges) +STR_PURCHASE_INFO_REFITTABLE :(kan tilpasses) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Designet: {GOLD}{NUM}{BLACK} Levetid: {GOLD}{COMMA} år STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maks. pålidelighed: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Pris: {GOLD}{CURRENCY_LONG} +STR_PURCHASE_INFO_COST_REFIT :{BLACK}Pris: {GOLD}{CURRENCY_LONG}{BLACK} (Pris for tilpasning: {GOLD}{CURRENCY_LONG}{BLACK}) STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Vægt: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Pris: {GOLD}{CURRENCY_LONG}{BLACK} Hastighed: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_COST_REFIT_SPEED :{BLACK}Pris: {GOLD}{CURRENCY_LONG}{BLACK} (Pris for tilpasning: {GOLD}{CURRENCY_LONG}{BLACK}) Hastighed: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapacitet: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Motoriserede Vogne: {GOLD}+{POWER}{BLACK} Vægt: {GOLD}+{WEIGHT_SHORT} -STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Kan ombygges til: {GOLD}{STRING} +STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Kan tilpasses til: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Alle lasttyper STR_PURCHASE_INFO_NONE :Ingen STR_PURCHASE_INFO_ALL_BUT :Alle undtagen {CARGO_LIST} @@ -3497,12 +3544,20 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Køb kø STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Køb skib STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Køb et fly +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Køb og tilpas køretøj +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Køb og tilpas køretøj +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Køb og tilpas skib +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Køb og tilpas fly STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Køb det markerede lokomotiv/togvogn. Shift skifter mellem at købe og vise prisoverslag. STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Køb det markerede køretøj. Shift skifter mellem at købe og vise prisoverslag. STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Køb det markerede skib. Shift skifter mellem at købe og vise prisoverslag. STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Køb det markerede fly. Shift skifter mellem at købe og vise prisoverslag. +STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Køb og tilpas det markerede lokomotiv/togvogn. Shift+klik viser prisoverslag uden at købe +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Køb og tilpas det markerede vejkøretøj. Shift+klik viser prisoverslag uden at købe +STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Køb og tilpas det markerede skib. Shift+klik viser prisoverslag uden at købe. +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Køb og tilpas det markerede fly. Shift+klik viser prisoverslag uden at købe. STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Omdøb STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Omdøb @@ -3614,10 +3669,12 @@ STR_ENGINE_PREVIEW_CAPTION :{WHITE}Besked f STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Vi har lige designet et nyt {STRING} - er du interesseret i et års ekslusiv testkørsel, så vi kan se hvordan det klarer sig inden vi gør det frit tilgængeligt? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :jernbanelokomotiv +STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :elektrisk jernbanelokomotiv STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monoraillokomotiv STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnettog STR_ENGINE_PREVIEW_ROAD_VEHICLE :vejkøretøj +STR_ENGINE_PREVIEW_TRAM_VEHICLE :sporvogn STR_ENGINE_PREVIEW_AIRCRAFT :fly STR_ENGINE_PREVIEW_SHIP :skib @@ -3659,14 +3716,18 @@ STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift im STR_REPLACE_ENGINES :Lokomotiver STR_REPLACE_WAGONS :Vogne STR_REPLACE_ALL_RAILTYPE :Alle jernbanevogne +STR_REPLACE_ALL_ROADTYPE :Alle vejkøretøjer STR_REPLACE_HELP_RAILTYPE :{BLACK}Vælg den skinne type, du ønsker at udskifte lokomotiver til +STR_REPLACE_HELP_ROADTYPE :{BLACK}Vælg vejtypen du ønsker at udskifte køretøjer for STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Viser hvilket køretøj det valgte køretøj til venstre bliver udskiftet med, hvis det udskiftes STR_REPLACE_RAIL_VEHICLES :Jernbane STR_REPLACE_ELRAIL_VEHICLES :Eltog STR_REPLACE_MONORAIL_VEHICLES :Monorail STR_REPLACE_MAGLEV_VEHICLES :Magnetskinnetog +STR_REPLACE_ROAD_VEHICLES :Vejkøretøjer +STR_REPLACE_TRAM_VEHICLES :Sporvogne STR_REPLACE_REMOVE_WAGON :{BLACK}Fjern vogn: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Få autoudskift til at bevare længden af tog ved at fjerne vogne (startende fra fronten), hvis autoudskiftningen gør toget længere. @@ -3691,10 +3752,10 @@ STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Dette vi STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Tving toget til at fortsætte uden at vente på at signalet skifter til grønt -STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Ombyg toget til at køre med en anden lasttype -STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Ombyg vejkøretøj til at laste en anden type last -STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Ombyg skibet til at sejle med en anden slags last -STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Ombyg flyet til at flyve med en anden slags last +STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Tilpas toget til at køre med en anden lasttype +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Tilpas vejkøretøj til at køre med en anden lasttype +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Tilpas skibet til at sejle med en anden lasttype +STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Tilpas flyet til at flyve med en anden lasttype STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Vend retningen af toget STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Tving køretøjet til at vende @@ -3807,28 +3868,28 @@ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Vis tota STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapacitet: {LTBLUE} # Vehicle refit -STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Ombyg) +STR_REFIT_CAPTION :{WHITE}{VEHICLE} (tilpas) STR_REFIT_TITLE :{GOLD}Vælg den lasttype der skal transporteres: -STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Pris for ombyggelse: {RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Indtægt fra ombygning: {GREEN}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nye kapacitet: {GOLD}{CARGO_LONG},{GOLD}{CARGO_LONG}{}{BLACK}Pris for at ombygge: {RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Indtægt fra ombygning: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Vælg køretøjer der skal ombygges. klik og træk med musen for at vælge flere køretøjer. Klik på et tomt felt for at vælge hele køretøjet. Ctrl + klik vælger et køretøj og den efterfølgende kæde +STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Pris for tilpasning: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Indtægt fra tilpasning: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG},{GOLD}{CARGO_LONG}{}{BLACK}Pris for tilpasning: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Indtægt fra tilpasning: {GREEN}{CURRENCY_LONG} +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Vælg køretøjer der skal tilpasses. Klik og træk med musen for at vælge flere køretøjer. Klik på et tomt felt for at vælge hele køretøjet. Ctrl+klik vælger et køretøj og den efterfølgende kæde STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Vælg den lasttype toget skal kører med STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vælg lasttype som lastbilen skal transportere STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Vælg den slags last skibet skal sejle med STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vælg den type last flyet skal flyve med -STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Ombyg toget -STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Ombyg lastbil -STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Ombyg skibet -STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Ombyg fly +STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Tilpas tog +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Tilpas vejkøretøj +STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Tilpas skibet +STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Tilpas fly -STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Ombyg toget til at køre med den markerede lasttype -STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Ombyg vejkøretøjet til at laste den markerede type last -STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Ombyg skibet til den markerede slags last -STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Ombyg flyet til at flyve med den markerede slags last +STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Tilpas tog til at køre med den markerede lasttype +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Tilpas vejkøretøjet til at køre med den markerede lasttype +STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Tilpas skibet til den markerede lasttype +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Tilpas flyet til at flyve med den markerede lasttype # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Ordrer) @@ -3864,8 +3925,8 @@ STR_ORDER_DROP_TRANSFER :Overfør STR_ORDER_DROP_NO_UNLOADING :Ingen losning STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Ændr losseregel for den valgte ordre -STR_ORDER_REFIT :{BLACK}Ombyg -STR_ORDER_REFIT_TOOLTIP :{BLACK}Vælg hvilken lasttype, der skal ombygges til i denne ordre. CTRL-klik for at fjerne ombygningsinstruktion +STR_ORDER_REFIT :{BLACK}Tilpas +STR_ORDER_REFIT_TOOLTIP :{BLACK}Vælg hvilken lasttype, der skal tilpasses til i denne ordre. Ctrl+klik for at fjerne tilpasningsinstruktion STR_ORDER_REFIT_AUTO :{BLACK}Auto-tilpas STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Vælg typen af last der skal auto-tilpasses denne ordre. Ctrl+Click for at fjerne auto-tilpas-funktionen. Auto-tilpasning vil kun kunne gøres, hvis køretøjet tillader det STR_ORDER_DROP_REFIT_AUTO :Bestemt last @@ -3935,8 +3996,8 @@ STR_ORDER_SHIP_DEPOT :Skibsdok STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} -STR_ORDER_REFIT_ORDER :(Ombyg til {STRING}) -STR_ORDER_REFIT_STOP_ORDER :(Ombyg til {STRING} og stop) +STR_ORDER_REFIT_ORDER :(Tilpas til {STRING}) +STR_ORDER_REFIT_STOP_ORDER :(Tilpas til {STRING} og stop) STR_ORDER_STOP_ORDER :(Stop) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} @@ -4118,6 +4179,13 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Vælg ma STR_AI_LIST_CANCEL :{BLACK}Afbryd STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Skift ikke script'et +STR_SCREENSHOT_CAPTION :{WHITE}Tag skærmbillede +STR_SCREENSHOT_SCREENSHOT :{BLACK}Normalt skærmbillede +STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Fuldt zoomet-ind skærmbillede +STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Standard zoom skærmbillede +STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Fuldt kort skærmbillede +STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Højdekort skærmbillede +STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Minikort skærmbillede # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametre @@ -4387,10 +4455,11 @@ STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(ikke penge nok # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Umulig sporkombination STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Det er nødvendigt at fjerne signalet først -STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ingen brugbar jernbane +STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ingen egnet jernbane STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Det er nødvendigt at fjerne jernbaneskinnerne først STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Vejen er ensrettet eller blokeret STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Niveaukrydsning ikke tilladt for denne type skinner +STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Niveaukrydsning ikke tilladt for denne type vej STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kan ikke bygge signaler her... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan ikke bygge jernbane her... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan ikke fjerne jernbane herfra... @@ -4410,6 +4479,12 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan ikke STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kan ikke fjerne sporvej her... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... der er ingen vej STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... der er ikke noget spor +STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Kan ikke konvertere vejtype her... +STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Kan ikke konvertere sporvejstype her... +STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Ingen passende vej +STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Ingen egnet sporvej +STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... inkompatibel vej +STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... inkompatibel sporvej # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kan ikke bygge en kanal her... @@ -4462,6 +4537,7 @@ STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan ikke STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kan ikke slette denne gruppe... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kan ikke omdøbe gruppe... STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Kan ikke sætte overordnede gruppe ... +STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... løkker i gruppe-hierarkiet er ikke tilladt STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan ikke fjerne alle køretøjer fra denne gruppe... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan ikke tilføje køretøjet til denne gruppe... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan ikke tilføje delte køretøjer til gruppe... @@ -4472,10 +4548,10 @@ STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Køretø STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Der er et skib i vejen STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Fly i vejen -STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Kan ikke ombygge toget... -STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kan ikke ombygge vejkøretøj -STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Kan ikke ombygge skib... -STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Kan ikke ombygge fly... +STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Kan ikke tilpasse tog... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kan ikke tilpasse vejkøretøj +STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Kan ikke tilpasse skib... +STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Kan ikke tilpasse fly... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Kan ikke give toget navn... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Kan ikke give køretøjet et navn... diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 843a9d118c..6f7de6f3af 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -1309,6 +1309,8 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Inwoneraantal b STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Aantal inwoners van een stad weergeven bij naam op de kaart STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Dikte van de lijnen in grafieken: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Breedte van de lijnen in de grafiek. Een dunne lijn is preciezer leesbaar, een dikke lijn is makkelijker te zien en kleuren zijn makkelijker om te onderscheiden +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Naam van NewGRF weergeven in venster voor voertuigen bouwen: {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Voeg een regel toe aan het venster voor voertuigen bouwen die aangeeft uit welke NewGRF het geselecteerde voertuig komt. STR_CONFIG_SETTING_LANDSCAPE :Landschap: {STRING} STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landschappen definiëren standaard spelscenario's met verschillende vracht- en stadsgroei-eisen. NewGRF en spelscripts kunnen daarentegen fijnere controle bieden. @@ -1546,6 +1548,10 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Volledig STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Kleurenfoto's verschijnen in: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Jaar dat de krant aankondigt in kleur te gaan afdrukken. Voor dit jaar wordt zwart-wit gebruikt STR_CONFIG_SETTING_STARTING_YEAR :Startjaar: {STRING} +STR_CONFIG_SETTING_ENDING_YEAR :Eindjaar voor score: {STRING} +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Jaar dat het spel eindigt ten behoeve van de score. Aan het einde van dit jaar wordt de score van het bedrijf vastgelegd en verschijnt het venster met topscores. De spelers kunnen echter doorgaan met spelen.{}Als dit voor het startjaar ligt, verschijnt het venster met topscores niet. +STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} +STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nooit STR_CONFIG_SETTING_SMOOTH_ECONOMY :Vloeiende economie inschakelen (meer, kleinere veranderingen): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Wanneer dit is ingeschakeld, verandert de productie van industrieën vaker en in kleinere stappen. Deze instelling heeft meestal geen effect als de industriesoorten worden geleverd door een NewGRF. STR_CONFIG_SETTING_ALLOW_SHARES :Kopen van aandelen in andere bedrijven toestaan: {STRING} @@ -3394,6 +3400,10 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} en {NUM} meer... STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrienamen - klik op een naam om het scherm te centreren op de industrie. Ctrl+klik opent een nieuw venster op de locatie van de industrie. +STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Geaccepteerde vracht: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Geproduceerde vracht: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Alle soorten vracht +STR_INDUSTRY_DIRECTORY_FILTER_NONE :Geen # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} @@ -4168,6 +4178,13 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Gemarkee STR_AI_LIST_CANCEL :{BLACK}Annuleren STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Script niet wijzigen +STR_SCREENSHOT_CAPTION :{WHITE}Een schermafbeelding maken +STR_SCREENSHOT_SCREENSHOT :{BLACK}Normale schermafbeelding +STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Volledig ingezoomde schermafbeelding +STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Standaard gezoomde schermafbeelding +STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Schermafbeelding van de hele kaart +STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Schermafbeelding van de hoogtekaart +STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Schermafbeelding van de minikaart # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parameters diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 6287f11963..0786c232a0 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -259,7 +259,7 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Näytä STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Kun otat tämän käyttöön, myös piilotetut junat näytetään STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Kun otat tämän käyttöön, myös piilotetut ajoneuvot näytetään STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Kun otat tämän käyttöön, myös piilotetut laivat näytetään -STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Kun otat tämän käyttöön, myös piilotetut lentokoneet näytetään +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Kun otat tämän käyttöön, myös piilotetut ilma-alukset näytetään # Query window STR_BUTTON_DEFAULT :{BLACK}Oletus @@ -334,7 +334,7 @@ STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Rahoita STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Näytä luettelo yhtiön junista. Ctrl+Klik avaa ryhmä/kulkuneuvolistan STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Näytä luettelo yhtiön ajoneuvoista. Ctrl+Klik avaa ryhmä/kulkuneuvoikkunan STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Näytä luettelo yhtiön laivoista. Ctrl+Klik avaa ryhmä/kulkuneuvoikkunan -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Näytä luettelo yhtiön lentokoneista. Ctrl+Klik avaa ryhmä/kulkuneuvoikkunan +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Näytä luettelo yhtiön ilma-aluksista. Ctrl+Klik avaa ryhmä/kulkuneuvoikkunan STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Lähennä näkymää STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Loitonna näkymää STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Rakenna rautateitä @@ -616,7 +616,7 @@ STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA} STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Näytä tietoja tästä yhtiöstä ############ Those following lines need to be in this order!! -STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Liikennevälineitä: +STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Kulkuneuvot: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Asemia: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Vähimmäistuotto: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Vähimmäistulo: @@ -627,7 +627,7 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Raha: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Laina: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Yhteensä: ############ End of order list -STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Liikennevälineiden määrä. Tähän kuuluvat ajoneuvot, junat, laivat ja lentokoneet +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Kulkuveuvojen määrä. Tähän kuuluvat ajoneuvot, junat, laivat ja ilma-alukset STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Asemien osien määrä. Kaikki osat asemista (esim. rautatieasema, bussipysäkki, lentokenttä) lasketaan, vaikka ne olisivat yhdistettynä yhdeksi asemaksi STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Vähätuottoisimman kulkuneuvon tulo (kaikkien yli 2 vuotta vanhojen kulkuneuvojen) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Viimeisen 12 neljänneksen vähätuottoisimman kuun käteistuoton määrä @@ -703,7 +703,7 @@ STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHIT STR_SMALLMAP_CAPTION :{WHITE}Kartta – {STRING} STR_SMALLMAP_TYPE_CONTOURS :Korkeuserot -STR_SMALLMAP_TYPE_VEHICLES :Liikennevälineet +STR_SMALLMAP_TYPE_VEHICLES :Kulkuneuvot STR_SMALLMAP_TYPE_INDUSTRIES :Teollisuus STR_SMALLMAP_TYPE_ROUTEMAP :Rahtivirta STR_SMALLMAP_TYPE_ROUTES :Reitit @@ -724,11 +724,11 @@ STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Rautatiet STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Asemat/lentokentät/satamat STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Rakennukset/Teollisuus -STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Liikennevälineet +STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Kulkuneuvot STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Junat STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Ajoneuvot STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Laivat -STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Lentokoneet +STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Ilma-alukset STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Kuljetusreitit STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Metsä STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Rautatieasema @@ -789,11 +789,11 @@ STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLAC STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Asukkaat juhlivat . . .{}{STATION} vastaanottaa ensimmäisen laivan! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Asukkaat juhlivat . . .{}{STATION} vastaanottaa ensimmäisen lentokoneen! -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Junaonnettomuus!{}{COMMA} kuolee törmäyksen jälkeisessä tulipallossa. -STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Tasoristeysturma!{}Kuljettaja kuolee junan ja auton törmäyksen jälkeisessä tulipallossa -STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Tasoristeysturma!{}{COMMA} kuolee junan ja auton törmäyksen jälkeisessä tulipallossa -STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Lento-onnettomuus!{}{COMMA} kuolee tulipallossa asemalla {STATION}. -STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Lento-onnettomuus!{}Lentokoneelta loppui polttoaine, {COMMA} kuolee tulipallossa +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Junaonnettomuus!{}{COMMA} kuollut törmäyksen jälkeisessä tulipallossa +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Tasoristeysturma!{}Kuljettaja kuollut junan ja auton törmäyksen jälkeisessä tulipallossa +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Tasoristeysturma!{}{COMMA} kuoli junan ja auton törmäyksen jälkeisessä tulipallossa +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Lento-onnettomuus!{}{1:STATION}: {0:COMMA} kuollut tulipallossa +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Lento-onnettomuus!{}Polttoaineen loppuminen johti {COMMA} ihmisen kuolemaan tulipallossa STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}{STATION}: Ilmalaivaonnettomuus! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Ajoneuvo tuhoutui törmäyksessä UFO:n kanssa! @@ -1258,7 +1258,7 @@ STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Sallii rahan si STR_CONFIG_SETTING_FREIGHT_TRAINS :Rahdin painokerroin raskaiden junien simulointia varten: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Määritä rahdin kuljettamisen vaikutus junissa. Korkeammat arvot tekevät rahdin kuljettamisesta raskaampaa junille, erityisesti mäissä STR_CONFIG_SETTING_PLANE_SPEED :Lentokoneiden nopeuskerroin: {STRING} -STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Määritä lentokoneiden suhteellinen nopeus verrattuna toisiin kulkuneuvotyyppeihin +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Määritä lentokoneiden suhteellinen nopeus verrattuna toisiin kulkuneuvotyyppeihin, jotta vähennetään ilma-alusksilla tehtyjen kuljetusten tuottoa STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Lento-onnettomuuksien määrä: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Määrittää lento-onnettomuuksien todennäköisyyden.{}¹ Isot lentokoneet voivat kuitenkin aina tuhoutua pienille lentokentille laskeutuessaan. @@ -1309,8 +1309,8 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Näytä kunnan STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Näytä kuntien asukasluvut kartalla STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Viivojen paksuus kuvaajissa: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Viivan leveys kuvaajissa. Ohut viiva on tarkasti luettavissa kun taas paksumpi viiva on helpompi nähdä ja sen värit ovat helpommin havaittavissa -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Näytä NewGRF:n nimi liikennevälineikkunassa: {STRING} -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Lisää liikennevälinevalikoimaikkunaan rivin, joka näyttää, mistä NewGRF:stä valittu liikenneväline on peräisin. +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Näytä NewGRF:n nimi kulkuneuvoikkunassa: {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Lisää kulkuneuvovalikoimaikkunaan rivin, joka kertoo mistä NewGRF:stä valittu kulkuneuvo on peräisin. STR_CONFIG_SETTING_LANDSCAPE :Maasto: {STRING} STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Maasto vaikuttaa useisiin pelin peruselementteihin, kuten rahtiin ja kuntien kasvuedellytyksiin. NewGRF:t ja peliskriptit voivat kuitenkin vaikuttaa tarkemmin pelin kulkuun @@ -1463,8 +1463,8 @@ STR_CONFIG_SETTING_MAX_TRAINS :Suurin sallittu STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Yhtiön suurin sallittu junien määrä STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Suurin sallittu ajoneuvojen määrä yhtiötä kohden: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Yhtiön suurin sallittu ajoneuvojen määrä -STR_CONFIG_SETTING_MAX_AIRCRAFT :Suurin sallittu lentokoneiden määrä yhtiötä kohden: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Yhtiön suurin sallittu lentokoneiden määrä +STR_CONFIG_SETTING_MAX_AIRCRAFT :Suurin sallittu ilma-alusten määrä yhtiötä kohden: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Yhtiön suurin sallittu ilma-alusten määrä STR_CONFIG_SETTING_MAX_SHIPS :Suurin sallittu laivojen määrä yhtiötä kohden: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Yhtiön suurin sallittu laivojen määrä @@ -1472,8 +1472,8 @@ STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Tietokoneella e STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Mikäli käytössä, junien rakentaminen ei ole mahdollista tietokonepelaajille STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Tietokoneella ei ole ajoneuvoja: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Mikäli käytössä, ajoneuvojen rakentaminen ei ole mahdollista tietokonepelaajille -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Tietokoneella ei ole lentokoneita: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Mikäli käytössä, lentokoneiden rakentaminen ei ole mahdollista tietokonepelaajille +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Tietokoneella ei ole ilma-aluksia: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Mikäli käytössä, ilma-alusten rakentaminen ei ole mahdollista tietokonepelaajille STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Tietokoneella ei ole laivoja: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Mikäli käytössä, laivojen rakentaminen ei ole mahdollista tietokonepelaajille @@ -1849,7 +1849,7 @@ STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Näytä STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Näytä junien väriteemat STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Näytä tieajoneuvojen väriteemat STR_LIVERY_SHIP_TOOLTIP :{BLACK}Näytä laivojen väriteemat -STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Näytä lentokoneiden väriteemat +STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Näytä ilma-alusten väriteemat STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Valitse valitulle teemalle ensisijainen väri. Ctrl+Klik asettaa tämän värin jokaiselle teemalle STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Valitse valitulle teemalle toissijainen väri. Ctrl+Klik asettaa tämän värin jokaiselle teemalle STR_LIVERY_PANEL_TOOLTIP :{BLACK}Valitse muutettava väriteema, tai valitse useita Ctrl pohjassa. Paina valintalaatikkoa valitaksesi teeman @@ -3284,7 +3284,7 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Näytä STR_STATION_VIEW_RENAME_STATION_CAPTION :Nimeä asema/lastausalue STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Sulje lentokenttä -STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Estä lentokoneiden laskeutuminen tälle lentokentälle +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Estä ilma-aluksia laskeutumasta tälle lentokentälle # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} @@ -3303,12 +3303,12 @@ STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Rakentami STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Uudet kulkuneuvot STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Junien käyttökustannukset STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Ajoneuvojen käyttökustannukset -STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Lentokoneiden käyttökustannukset +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Ilma-alusten käyttökustannukset STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Laivojen käyttökustannukset STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Omaisuudenhallinta STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Junien tulot STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Ajoneuvojen tulot -STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Lentokoneiden tulot +STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Ilma-alusten tulot STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Laivojen tulot STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Lainan korko STR_FINANCES_SECTION_OTHER :{GOLD}Muuta @@ -3334,7 +3334,7 @@ STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Väriteem STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Kulkuneuvot: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} juna{P "" a} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} ajoneuvo{P "" a} -STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} lentokone{P "" tta} +STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} ilma-alus{P "" ta} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} laiva{P "" a} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Ei mitään STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Yhtiön arvo: {WHITE}{CURRENCY_LONG} @@ -3428,7 +3428,7 @@ STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Muuta tu STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} juna{P "" a} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} ajoneuvo{P "" a} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} laiva{P "" a} -STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} lentokone{P "" tta} +STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} ilma-alus{P "" ta} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Junat – napsauta junaa saadaksesi tietoja STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Ajoneuvot – napsauta ajoneuvoa saadaksesi tietoja @@ -3445,7 +3445,7 @@ STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Näytä STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Muokkaa listaa STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Ohjaa kaikkia listan kulkuneuvoja -STR_VEHICLE_LIST_REPLACE_VEHICLES :Korvaa liikennevälineitä +STR_VEHICLE_LIST_REPLACE_VEHICLES :Korvaa kulkuneuvoja STR_VEHICLE_LIST_SEND_FOR_SERVICING :Lähetä huoltoon STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Lähetä varikolle @@ -3462,12 +3462,12 @@ STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}{COMMA} STR_GROUP_ALL_TRAINS :Kaikki junat STR_GROUP_ALL_ROAD_VEHICLES :Kaikki ajoneuvot STR_GROUP_ALL_SHIPS :Kaikki laivat -STR_GROUP_ALL_AIRCRAFTS :Kaikki lentoalukset +STR_GROUP_ALL_AIRCRAFTS :Kaikki ilma-alukset STR_GROUP_DEFAULT_TRAINS :Muut junat STR_GROUP_DEFAULT_ROAD_VEHICLES :Muut ajoneuvot STR_GROUP_DEFAULT_SHIPS :Muut laivat -STR_GROUP_DEFAULT_AIRCRAFTS :Muut lentokoneet +STR_GROUP_DEFAULT_AIRCRAFTS :Muut ilma-alukset STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA}) @@ -3492,19 +3492,19 @@ STR_GROUP_OCCUPANCY :Nykyinen käytt STR_GROUP_OCCUPANCY_VALUE :{NUM} % # Build vehicle window -STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Uusi juna +STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Uudet junat STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Uusi sähköjuna STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Uusi yksiraidejuna STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Uusi Maglev-juna -STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Uusia ajoneuvoja -STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Uusia raitiovaunuja +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Uudet ajoneuvot +STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Uudet raitiovaunut ############ range for vehicle availability starts STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Uudet junat -STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Uusia ajoneuvoja -STR_BUY_VEHICLE_SHIP_CAPTION :Uusia laivoja -STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Uusi lentokone +STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Uudet ajoneuvot +STR_BUY_VEHICLE_SHIP_CAPTION :Uudet laivat +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Uusi ilma-alus ############ range for vehicle availability ends STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Hinta: {GOLD}{CURRENCY_LONG}{BLACK} Paino: {GOLD}{WEIGHT_SHORT} @@ -3531,32 +3531,32 @@ STR_PURCHASE_INFO_NONE :Ei mitään STR_PURCHASE_INFO_ALL_BUT :Kaikki paitsi {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Suurin vetovoima: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Toimintasäde: {GOLD}{COMMA} ruutua -STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Lentokonetyyppi: {GOLD}{STRING} +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Ilma-alustyyppi: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Junien valintaluettelo. Lisää tietoja junaa napsauttamalla. Ctrl+Klik näyttää tai piilottaa kulkuneuvon tyypin STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Ajoneuvojen valintaluettelo. Napsauta ajoneuvoa saadaksesi lisää tietoja. Ctrl+Klik näyttää tai piilottaa ajoneuvon tyypin STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Laivojen valintaluettelo. Napsauta laivaa saadaksesi lisää tietoja. Ctrl+Klik näyttää tai piilottaa laivan tyypin -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lentokoneiden valintaluettelo. Napsauta lentokonetta saadaksesi lisää tietoja. Ctrl+Klik näyttää tai piilottaa lentokoneen tyypin +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Ilma-alusten valintaluettelo. Napsauta ilma-alusta saadaksesi lisää tietoja. Ctrl+Klik näyttää tai piilottaa ilma-aluksen tyypin STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Osta yksikkö STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Osta ajoneuvo STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Osta laiva -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Osta lentokone +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Osta ilma-alus STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Osta ja sovita yksikkö STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Osta ja sovita ajoneuvo STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Osta ja sovita laiva -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Osta ja sovita lentokone +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Osta ja sovita ilma-alus STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valittu yksikkö. Shift+Klik näyttää kustannusarvion ostamatta STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valittu ajoneuvo. Shift+Klik näyttää kustannusarvion ostamatta STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Osta valittu laiva. Shift+Klik näyttää kustannusarvion ostamatta -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Osta korostettu lentokone. Shift+Klik näyttää kustannusarvion ostamatta +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Osta korostettu ilma-alus. Shift+Klik näyttää kustannusarvion ostamatta STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu yksikkö. Shift+Klik näyttää kustannusarvion ostamatta STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu ajoneuvo. Shift+Klik näyttää kustannusarvion ostamatta STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu laiva. Shift+Klik näyttää kustannusarvion ostamatta -STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu lentokone. Shift+Klik näyttää kustannusarvion ostamatta +STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Osta ja sovita valittu ilma-alus. Shift+Klik näyttää kustannusarvion ostamatta STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Nimeä STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Nimeä @@ -3581,12 +3581,12 @@ STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Näytä STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Näytä tai piilota junan tyyppi STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Näytä tai piilota ajoneuvon tyyppi STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Näytä tai piilota laivan tyyppi -STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Näytä tai piilota lentokoneen tyyppi +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Näytä tai piilota ilma-aluksen tyyppi -STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Nimeä juna(vaunu)n tyyppi uudelleen. +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Nimeä juna(vaunu)n tyyppi uudelleen STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Nimeä ajoneuvon tyyppi uudelleen -STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Nimeä laivatyyppi uudelleen. -STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Nimeä lentokonetyyppi uudelleen. +STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Nimeä laivatyyppi uudelleen +STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Nimeä ilma-alustyyppi uudelleen # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -3619,22 +3619,22 @@ STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Myy kaik STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Korvaa kaikki veturitallilla olevat junat automaattisesti STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Korvaa kaikki varikolla olevat ajoneuvot automaattisesti STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Korvaa kaikki telakalla olevat laivat automaattisesti -STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Korvaa kaikki hallissa olevat lento-alukset automaattisesti +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Korvaa kaikki hallissa olevat lentokoneet automaattisesti -STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Uusia liikennevälineitä -STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Uusia ajoneuvoja -STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Uusia laivoja -STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Uusia lentokoneita +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Uudet kulkuneuvot +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Uudet ajoneuvot +STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Uudet laivat +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Uudet lentokoneet STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Osta uusi yksikkö STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Osta uusi ajoneuvo STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Osta uusi laiva -STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Osta uusi lentokone +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Osta uusi ilma-alus STR_DEPOT_CLONE_TRAIN :{BLACK}Kloonaa juna STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Kloonaa ajoneuvo STR_DEPOT_CLONE_SHIP :{BLACK}Kloonaa laiva -STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kloonaa lentokone +STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kloonaa ilma-alus STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Tämä ostaa kopion junasta ja kaikista sen vaunuista. Napsauta tätä painiketta ja sen jälkeen junaa varikon sisä- tai ulkopuolella. Ctrl+Klik jakaa komennot. Shift+Klik näyttää kustannusarvion ostamatta kopiota STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Tämä ostaa kopion ajoneuvosta. Napsauta tätä painiketta ja sen jälkeen ajoneuvoa varikon sisä- tai ulkopuolella. Ctrl+Klik jakaa komennot. Shift+Klik näyttää kustannusarvion ostamatta kopiota @@ -3673,18 +3673,18 @@ STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :yksiraiteisen v STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev-veturin STR_ENGINE_PREVIEW_ROAD_VEHICLE :ajoneuvon -STR_ENGINE_PREVIEW_TRAM_VEHICLE :raitiovaunu +STR_ENGINE_PREVIEW_TRAM_VEHICLE :raitiovaunun -STR_ENGINE_PREVIEW_AIRCRAFT :lentokoneen +STR_ENGINE_PREVIEW_AIRCRAFT :ilma-aluksen STR_ENGINE_PREVIEW_SHIP :laivan STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Hinta: {CURRENCY_LONG} Paino: {WEIGHT_SHORT}{}Nopeus: {VELOCITY} Teho: {POWER}{}Käyttökustannukset: {CURRENCY_LONG}/vuosi{}Kapasiteetti: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Hinta: {CURRENCY_LONG} Paino: {WEIGHT_SHORT}{}Nopeus: {VELOCITY} Teho: {POWER} Maks. vetovoima: {6:FORCE}{}Käyttökustannukset: {4:CURRENCY_LONG}/v{}Kapasiteetti: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Kapasiteetti: {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v -STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Lentokonetyyppi: {STRING}{}Kapasiteetti: {CARGO_LONG}, {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v -STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Lentokonetyyppi: {STRING}{}Kapasiteetti: {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v -STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Lentokonetyyppi: {STRING} Toimintamatka: {COMMA} ruutua{}Kapasiteetti: {CARGO_LONG}, {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v -STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Lentokonetyyppi: {STRING} Toimintamatka: {COMMA} ruutua{}Kapasiteetti: {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Ilma-alustyyppi: {STRING}{}Kapasiteetti: {CARGO_LONG}, {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Ilma-alustyyppi: {STRING}{}Kapasiteetti: {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Ilma-alustyyppi: {STRING} Toimintamatka: {COMMA} ruutua{}Kapasiteetti: {CARGO_LONG}, {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Ilma-alustyyppi: {STRING} Toimintamatka: {COMMA} ruutua{}Kapasiteetti: {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Korvaa {STRING} – {STRING} @@ -3696,17 +3696,17 @@ STR_REPLACE_VEHICLE_AIRCRAFT :lentokoneita STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Käytössä olevat kulkuneuvot STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Sarake kulkuneuvoille, jotka omistat STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Saatavilla olevat kulkuneuvot -STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Sarake kulkuneuvoille, jotka voidaan uusia +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Sarake kulkuneuvoille, jotka voidaan uudistaa STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Valitse korvattava veturityyppi. STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Valitse vasemmalla näkyvän veturityypinn korvaava uusi veturityyppi. STR_REPLACE_VEHICLES_START :{BLACK}Aloita kulkuneuvojen korvaaminen -STR_REPLACE_VEHICLES_NOW :Korvaa kaikki liikennevälineet nyt -STR_REPLACE_VEHICLES_WHEN_OLD :Korvaa vain vanhat liikennevälineet +STR_REPLACE_VEHICLES_NOW :Korvaa kaikki kulkuneuvot heti +STR_REPLACE_VEHICLES_WHEN_OLD :Korvaa vain vanhat kulkuneuvot STR_REPLACE_HELP_START_BUTTON :{BLACK}Napsauta aloittaaksesi vasemmalta valitun veturityypin korvauksen oikealta valitulla veturityypillä. STR_REPLACE_NOT_REPLACING :{BLACK}Ei korvata -STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Ei liikennevälinettä valittuna +STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Ei kulkuneuvoa valittuna STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} kun vanha STR_REPLACE_VEHICLES_STOP :{BLACK}Lopeta kulkuneuvojen korvaaminen STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Napsauta pysäyttääksesi vasemmalta valitun veturityypin korvauksen. @@ -3737,12 +3737,12 @@ STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Keskitä näkymä junan sijaintiin. Ctrl+Klik seuraa junaa näkymässä STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Keskitä näkymä ajoneuvon sijaintiin. Ctrl+Klik seuraa ajoneuvoa päänäkymässä STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Keskitä näkymä laivan sijaintiin. Ctrl+Click seuraa laivaa näkymässä -STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Keskitä näkymä lentokoneen sijaintiin. Ctrl+Klik seuraa lentokonetta päänäkymässä +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Keskitä näkymä ilma-aluksen sijaintiin. Ctrl+Klik seuraa ilma-alusta päänäkymässä STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä juna veturitalliin. Ctrl+Klik suorittaa vain huollon STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä ajoneuvo varikolle. Ctrl+Klik suorittaa vain huollon STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä laiva telakalle. Ctrl+Klik suorittaa vain huollon -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä lentokone lentokonehalliin. Ctrl+Klik suorittaa vain huollon +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä ilma-alus lentokonehalliin. Ctrl+Klik suorittaa vain huollon STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Tämä ostaa kopion junasta vaunuineen. Ctrl+Klik jakaa komennot. Shift+Klik näyttää kustannusarvion ostamatta kopiota STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Tämä ostaa kopion ajoneuvosta. Ctrl+Klik jakaa komennot. Shift+Klik näyttää kustannusarvion ostamatta kopiota @@ -3754,7 +3754,7 @@ STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Anna jun STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Sovita juna kuljettamaan muuta rahtityyppiä STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Muuta ajoneuvo kuljettamaan muuta rahtityyppiä STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Sovita laiva eri rahtityypille -STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Sovita lentokone eri rahtityypille. +STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Sovita ilma-alus kuljettamaan eri rahtityyppiä STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Käännä junan suunta STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Pakota ajoneuvo kääntymään ympäri @@ -3762,12 +3762,12 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Pakota a STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Näytä junan käskyt. Ctrl+Klik näyttää junan aikataulun STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Näytä ajoneuvon käskyt. Ctrl+Klik näyttää ajoneuvon aikataulun STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Näytä laivan käskyt. Ctrl+Click näyttää laivan aikataulun -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Näytä lentokoneen käskyt. Ctrl+Klik näyttää lentokoneen aikataulun +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Näytä ilma-aluksen käskyt. Ctrl+Klik näyttää ilma-aluksen aikataulun STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Näytä junan tiedot STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Näytä ajoneuvon tiedot STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Näytä laivan tiedot -STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Näytä lentokoneen tiedot. +STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Näytä ilma-aluksen tiedot STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Valitun junan toiminnot – napsauta pysäyttääksesi/käynnistääksesi junan. Ctrl+Klik vierittääksesi kohteeseen STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Nykyisen ajoneuvon toiminnot – napsauta pysäyttääksesi/käynnistääksesi ajoneuvon. Ctrl+Klik vierittääksesi kohteeseen @@ -3804,7 +3804,7 @@ STR_VEHICLE_NAME_BUTTON :{BLACK}Nimi STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Nimeä juna STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Nimeä ajoneuvo STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Nimeä laiva -STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Nimeä lentokone +STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Nimeä ilma-alus STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Ikä: {LTBLUE}{STRING}{BLACK} Käyttökustannukset: {LTBLUE}{CURRENCY_LONG}/yr # The next two need to stay in this order @@ -3812,8 +3812,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} vuo{P s STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} vuo{P si tta} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Huippunopeus: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Maks. nopeus: {LTBLUE}{VELOCITY} {BLACK}Lentokonetyyppi: {LTBLUE}{STRING} -STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Maks. nopeus: {LTBLUE}{VELOCITY} {BLACK}Lentokonetyyppi: {LTBLUE}{STRING} {BLACK}Toimintamatka: {LTBLUE}{COMMA} ruutua +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Huippunopeus: {LTBLUE}{VELOCITY} {BLACK}Ilma-alustyyppi: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Huippunopeus: {LTBLUE}{VELOCITY} {BLACK}Ilma-alustyyppi: {LTBLUE}{STRING} {BLACK}Toimintamatka: {LTBLUE}{COMMA} ruutua STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Paino: {LTBLUE}{WEIGHT_SHORT} {BLACK}Teho: {LTBLUE}{POWER}{BLACK} Maks. nopeus: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Paino: {LTBLUE}{WEIGHT_SHORT} {BLACK}Teho: {LTBLUE}{POWER}{BLACK} Maks. nopeus: {LTBLUE}{VELOCITY} {BLACK}Maks. vetovoima: {LTBLUE}{FORCE} @@ -3841,7 +3841,7 @@ STR_VEHICLE_DETAILS_PERCENT :Prosentteja STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nimeä juna STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nimeä ajoneuvo STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nimeä laiva -STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Nimeä lentokone +STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Nimeä ilma-alus # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Rakennettu: {LTBLUE}{NUM}{BLACK} Arvo: {LTBLUE}{CURRENCY_LONG} @@ -3883,7 +3883,7 @@ STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Valitse STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Sovita juna STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Korjaa ajoneuvo. STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Sovita laiva -STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Sovita lentokone +STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Sovita ilma-alus STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Sovita juna kuljettamaan valittua rahtityyppiä STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Muuta ajoneuvo rahtaamaan korostettua rahtityyppiä. @@ -4439,7 +4439,7 @@ STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kulkuneu STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... koostuu useammista yksiköistä STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Raiteet eivät ole yhteensopivia -STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Liikennevälinettä ei voi poistaa... +STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Kulkuneuvoa ei voi siirtää... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Moottorivaunun takaosa seuraa aina etuosaansa STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Reittiä paikalliselle veturitallille ei löydy. STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Paikallista varikkoa ei löydy. @@ -4545,47 +4545,47 @@ STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Ei voi l STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Juna on tiellä. STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Ajoneuvo tiellä. STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Laiva on tiellä. -STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Lentokone on tiellä. +STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Ilma-alus on tiellä STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Junaa ei voi sovittaa... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Ajoneuvoa ei voida korjata. STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Laivaa ei voi sovittaa... -STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Lentokonetta ei voi sovittaa... +STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Ilma-alusta ei voi sovittaa... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Junaa ei voi nimetä... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Ajoneuvoa ei voi nimetä... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Laivaa ei voi nimetä... -STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Lentokonetta ei voi nimetä... +STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Ilma-aluta ei voi nimetä... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Junaa ei voi pysäyttää/lähettää... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Ajoneuvoa ei voi pysäyttää/laitta liikkeelle... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Laivaa ei voi pysäyttää/laittaa liikkeelle... -STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Lentokonetta ei voi pysäyttää/laittaa liikkeelle... +STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Ilma-alusta ei voi pysäyttää/laittaa liikkeelle... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Junan lähettäminen veturitalliin ei onnistu... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Ajoneuvon lähettäminen varikolle ei onnistu... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Laivaa ei voi lähettää telakalle... -STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Lentokonetta ei voi lähettää lentokonehalliin... +STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Ilma-alusta ei voi lähettää lentokonehalliin... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Yksikköä ei voi ostaa... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Ajoneuvoa ei voi ostaa... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Laivaa ei voi ostaa... -STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Lentokonetta ei voi ostaa... +STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Ilma-alusta ei voi ostaa... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Juna(vaunu)n tyyppiä ei voi uudelleennimetä... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Ajoneuvotyyppiä ei voi uudelleennimetä... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Laivatyyppin uudelleennimeäminen ei onnistu... -STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Lentokonetyyppiä ei voi uudelleennimetä... +STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Ilma-alustyyppiä ei voi uudelleennimetä... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Yksikköä ei voi myydä... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Ajoneuvoa ei voi myydä... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Laivaa ei voi myydä... -STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Lentokonetta ei voi myydä... +STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Ilma-alusta ei voi myydä... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Juna tai vaunu ei ole saatavilla STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Ajoneuvo ei ole saatavilla STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Laiva ei ole saatavilla -STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Lentokone ei ole saatavilla +STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Ilma-alus ei ole saatavilla STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Liian monta kulkuneuvoa pelissä. STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Huoltoväliä ei voi muuttaa. @@ -4604,7 +4604,7 @@ STR_ERROR_TRAIN_START_NO_POWER :Junalla ei ole STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Ajoneuvoa ei voida kääntää... -STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Lentokone on lennossa. +STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Ilma-alus on lennossa # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ei enää tilaa pysähdyksille. @@ -4623,7 +4623,7 @@ STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Käskyj STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Käskyjen jakamista ei voida lopettaa... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Käskyjä ei voida kopioida... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... liian kaukana edellisestä määränpäästä -STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... lentokoneen toimintasäde ei ole tarpeeksi suuri +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... ilma-aluksen toimintasäde ei riitä # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Ei voi asettaa aikataulua. @@ -4735,7 +4735,7 @@ STR_SV_UNNAMED :Nimetön STR_SV_TRAIN_NAME :Juna {COMMA} STR_SV_ROAD_VEHICLE_NAME :Ajoneuvo {COMMA} STR_SV_SHIP_NAME :Laiva {COMMA} -STR_SV_AIRCRAFT_NAME :Lentokone {COMMA} +STR_SV_AIRCRAFT_NAME :Ilma-alus {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :Pohjois-{STRING} diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 89b41e37d8..8a58ec6cf6 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -866,6 +866,7 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLAC STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nuov{G o o a} {STRING} disponibile! - {ENGINE} +STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Apri la finestra del gruppo focalizzata sul gruppo del veicolo STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} non accetta più {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} non accetta più {STRING} né {STRING} @@ -1332,6 +1333,8 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Mostra la popol STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Mosta la popolazione delle città nella loro etichetta sulla mappa STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Spessore delle linee nei grafici: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Larghezza delle linee nei grafici. Le linee sottili sono più leggibili, quelle più spesse sono più facili da vedere e i colori più facili da distinguere +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Mostra il nome dei NewGRF nella finestra di costruzione dei veicoli: {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Aggiungi una linea alla finestra di costruzione dei veicoli, in modo da mostrare da quale NewGRF proviene il veicolo selezionato. STR_CONFIG_SETTING_LANDSCAPE :Paesaggio: {STRING} STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :I paesaggi definiscono scenari di gioco di base che differiscono per i carichi disponibili e per i requisiti di crescita delle città. NewGRF e Script offrono tuttavia un controllo più fine su questi aspetti @@ -1569,10 +1572,16 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Completo STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Giornali a colori dal: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Anno a partire dal quale le notizie di giornale vengono stampate a colori. Prima di quest'anno, viene utilizzata la monocromia in bianco e nero STR_CONFIG_SETTING_STARTING_YEAR :Anno di inizio: {STRING} +STR_CONFIG_SETTING_ENDING_YEAR :Punteggi a fine anno: {STRING} +STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Anno in cui il gioco finisce per poter calcolare i punteggi. Alla fine di ques'tanno il punteggio della compagnia viene registrato e viene mostrata la schermata con i punteggi più alti, ma il giocatore può continuare a giocare anche dopo.{}Se quest'anno precede quello di inizio, la schermata dei punteggi non verrà mai mostrata. +STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} +STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Mai STR_CONFIG_SETTING_SMOOTH_ECONOMY :Abilita economia fluida (cambiamenti piccoli e frequenti): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Se abilitata, la produzione industriale cambia più spesso e a passi più piccoli. Questa impostazione non ha in genere effetto per i tipi di industria aggiunti da un NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Permetti l'acquisto di azioni di altre compagnie: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Se abilitata, consente l'acquisto e la vendita di azioni delle compagnie. Le azioni sono disponibili solo per le compagnie che hanno raggiunto una certa età minima +STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Età minima della compagnia per lo scambio delle sue azioni: {STRING} +STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Imposta l'età minima di una compagnia affinchè sia possibile acquistarne o venderne le azioni. STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Percentuale profitto da pagare per una tappa di trasferimento: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Percentuale di ricavi assegnata ai tratti secondari di una catena di trasferimenti. In questo viene dato un maggiore controllo sulla situazione dei ricavi STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Trascinando il cursore, piazza i segnali ogni: {STRING} @@ -3414,8 +3423,17 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrie STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nessuna - +STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% trasportato){BLACK} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} +STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} e {NUM} ancora... STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nomi delle industrie - fare clic su un nome per centrare la visuale sull'industria. CTRL+clic la mostra in una mini visuale. +STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Carichi accettati: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Carico prodotto: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Tutti i tipi di carico +STR_INDUSTRY_DIRECTORY_FILTER_NONE :Nessuno # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} @@ -4190,6 +4208,13 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Sceglie STR_AI_LIST_CANCEL :{BLACK}Annulla STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Non modifica lo script utilizzato +STR_SCREENSHOT_CAPTION :{WHITE}Cattura uno screenshot +STR_SCREENSHOT_SCREENSHOT :{BLACK}Screenshot normale +STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Livello di zoom massimo nello screenshot +STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Livello di zoom normale nello screenshot +STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Screenshot di tutta la mappa +STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Screenshot della heightmap +STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Screenshot della minimappa # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}Parametri {STRING} diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 77153bc751..69acebb10c 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -1340,7 +1340,7 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :도시 이름 STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :도시 이름 옆에 도시의 인구 수를 표시합니다. STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :그래프 선의 두께: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :그래프의 선 두께를 설정합니다. 얇으면 자세히 볼 수 있고, 두꺼우면 눈에 확 들어오며 색상을 분간하기가 편해집니다. -STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :차량 구입 창에서 NewGRF의 이름을 보여주기: {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :차량 구입 창에 NewGRF 이름 표시: {STRING} STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :차량 구입 창 맨 아래 줄에, 이 차량이 어떤 NewGRF에서 추가되는 지 해당 NewGRF의 이름을 표시해줍니다. STR_CONFIG_SETTING_SHOW_TRAIN_LENGTH_IN_DETAILS :상세정보 화면에서 열차 길이 보이기: {STRING} STR_CONFIG_SETTING_SHOW_TRAIN_LENGTH_IN_DETAILS_HELPTEXT :열차의 길이를 상세정보 화면에 표시할지 설정합니다. diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 2b8574c1e3..e0eb067b5e 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -412,7 +412,7 @@ STR_SORT_BY_CAPTION_DATE :{BLACK}Дата STR_SORT_BY_NAME :Название STR_SORT_BY_PRODUCTION :Производительность STR_SORT_BY_TYPE :Тип -STR_SORT_BY_TRANSPORTED :Вывоз +STR_SORT_BY_TRANSPORTED :% перевезённого STR_SORT_BY_NUMBER :Номер STR_SORT_BY_PROFIT_LAST_YEAR :Прибыль в прошлом году STR_SORT_BY_PROFIT_THIS_YEAR :Прибыль в текущем году @@ -3586,6 +3586,10 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} и ещё {NUM}... STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Список предприятий - щелчок по названию показывает предприятие в основном окне. Ctrl+щелчок показывает в дополнительном окне. +STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Принимаемый груз: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Производимый груз: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Любой +STR_INDUSTRY_DIRECTORY_FILTER_NONE :Отсутствует # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} @@ -4385,6 +4389,13 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Выбр STR_AI_LIST_CANCEL :{BLACK}Отмена STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Не менять скрипт +STR_SCREENSHOT_CAPTION :{WHITE}Снимок экрана +STR_SCREENSHOT_SCREENSHOT :{BLACK}Обычный снимок +STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Видимая область в максимальном приближении +STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Видимая область в обычном масштабе +STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Снимок всей карты +STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Снимок карты высот +STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Снимок миникарты # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}Параметры {STRING} @@ -4469,10 +4480,10 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Теку # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Огромный снимок экрана -STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Снимок экрана будет иметь размер {COMMA} х {COMMA} пикселей. Его создание займёт некоторое время. Продолжить? +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Снимок экрана будет иметь размер {COMMA}{NBSP}х{NBSP}{COMMA}{NBSP}пиксел{P ь я ей}. Его создание займёт некоторое время. Продолжить? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Снимок экрана сохранён под именем «{STRING}» -STR_ERROR_SCREENSHOT_FAILED :{WHITE}Не удалось сохранить снимок экрана +STR_ERROR_SCREENSHOT_FAILED :{WHITE}Не удалось сделать снимок экрана # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Сообщение diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 13f2e00de9..d9fa8f137c 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -1257,7 +1257,7 @@ STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Las empresas ap STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permitir enviar dinero a otras empresas: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permitir la transferencia de dinero entre empresas en modo multijugador STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicador de peso para simular trenes pesados: {STRING} -STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Establece el impacto de llevar cargamento en los trenes. Un valor mayor exige mayor potencia a los trenes para llevar una carga, sobretodo al subir colinas +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Establece el impacto de llevar cargamento en los trenes. Un valor mayor exige mayor potencia a los trenes para llevar una carga, sobre todo al subir colinas STR_CONFIG_SETTING_PLANE_SPEED :Factor de velocidad de aeronaves: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Establece la velocidad relativa de las aeronaves comparada con la de otros vehículos para reducir las utilidades de transportación aérea STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1/{COMMA} @@ -1310,6 +1310,8 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Mostrar poblaci STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Mostrar en el mapa la población de los pueblos junto a sus nombres STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grosor de las líneas en las gráficas: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grosor de las líneas en las gráficas. Una línea fina es más precisa, una línea más gruesa es más fácil de distinguir +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Mostrar el nombre del GRF en la ventana de construcción de vehículo: {STRING} +STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Indicar por medio de una línea adicional en la ventana de construcción de vehículo su NewGRF. STR_CONFIG_SETTING_LANDSCAPE :Terreno: {STRING} STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Los terrenos definen mapas con diferentes tipos de carga y requisitos de crecimiento para los pueblos. Es posible modificarlos empleando NewGRF y scripts de juego @@ -3399,6 +3401,10 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUST STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} y {NUM} más... STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nombre de industria: Clic en un nombre para centrar la vista principal en la industria. Ctrl+Clic abre una ventana de vista en dicha ubicación +STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Cargamento aceptado: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Cargemento producido: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Todos los tipos +STR_INDUSTRY_DIRECTORY_FILTER_NONE :Ninguno # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} @@ -4179,6 +4185,7 @@ STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Acercami STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Acercamiento por defecto STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Mapa completo STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Mapa de alturas +STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Captura de minimapa # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}Parámetros {STRING} diff --git a/src/music/fluidsynth.cpp b/src/music/fluidsynth.cpp index aa70767716..89cb7273f5 100644 --- a/src/music/fluidsynth.cpp +++ b/src/music/fluidsynth.cpp @@ -136,6 +136,7 @@ void MusicDriver_FluidSynth::StopSong() } delete_fluid_player(_midi.player); fluid_synth_system_reset(_midi.synth); + fluid_synth_all_sounds_off(_midi.synth, -1); _midi.player = nullptr; } @@ -153,7 +154,7 @@ void MusicDriver_FluidSynth::SetVolume(byte vol) * volume". Set gain using OpenTTD's volume, as a number between 0 * and 0.2. */ double gain = (1.0 * vol) / (128.0 * 5.0); - if (fluid_settings_setnum(_midi.settings, "synth.gain", gain) != 1) { + if (fluid_settings_setnum(_midi.settings, "synth.gain", gain) != FLUID_OK) { DEBUG(driver, 0, "Could not set volume"); } } diff --git a/src/music_gui.cpp b/src/music_gui.cpp index 7bae6dc1e4..d15025ea3d 100644 --- a/src/music_gui.cpp +++ b/src/music_gui.cpp @@ -732,11 +732,12 @@ struct MusicWindow : public Window { case WID_M_TRACK_NAME: { GfxFillRect(r.left, r.top + 1, r.right - 1, r.bottom, PC_BLACK); StringID str = STR_MUSIC_TITLE_NONE; + MusicSystem::PlaylistEntry entry(_music.GetCurrentSong()); if (BaseMusic::GetUsedSet()->num_available == 0) { str = STR_MUSIC_TITLE_NOMUSIC; } else if (_music.IsPlaying()) { str = STR_MUSIC_TITLE_NAME; - SetDParamStr(0, _music.GetCurrentSong().songname); + SetDParamStr(0, entry.songname); } DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, str, TC_FROMSTRING, SA_HOR_CENTER); break; diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 5927f8cda7..147b922479 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -1688,7 +1688,20 @@ static void NetworkCheckRestartMap() if (_settings_client.network.restart_game_year != 0 && _cur_year >= _settings_client.network.restart_game_year) { DEBUG(net, 0, "Auto-restarting map. Year %d reached", _cur_year); - StartNewGameWithoutGUI(GENERATE_NEW_SEED); + _settings_newgame.game_creation.generation_seed = GENERATE_NEW_SEED; + switch(_file_to_saveload.abstract_ftype) { + case FT_SAVEGAME: + case FT_SCENARIO: + _switch_mode = SM_LOAD_GAME; + break; + + case FT_HEIGHTMAP: + _switch_mode = SM_START_HEIGHTMAP; + break; + + default: + _switch_mode = SM_NEWGAME; + } } } diff --git a/src/os/macosx/crashlog_osx.cpp b/src/os/macosx/crashlog_osx.cpp index ea47d1cd1c..b0b1df6cf2 100644 --- a/src/os/macosx/crashlog_osx.cpp +++ b/src/os/macosx/crashlog_osx.cpp @@ -15,6 +15,7 @@ #include "../../thread.h" #include "../../screenshot.h" #include "../../debug.h" +#include "../../video/video_driver.hpp" #include "macos.h" #include @@ -458,7 +459,9 @@ void CDECL HandleCrash(int signum, siginfo_t *si, void *context) CrashLogOSX log(signum, si, context); log.MakeCrashLog(); - log.DisplayCrashDialog(); + if (VideoDriver::GetInstance() == nullptr || VideoDriver::GetInstance()->HasGUI()) { + log.DisplayCrashDialog(); + } CrashLog::AfterCrashLogCleanup(); abort(); diff --git a/src/saveload/engine_sl.cpp b/src/saveload/engine_sl.cpp index 4ba38d04bb..44ba6498ef 100644 --- a/src/saveload/engine_sl.cpp +++ b/src/saveload/engine_sl.cpp @@ -140,6 +140,11 @@ void CopyTempEngineData() if (se->name != nullptr) e->name = stredup(se->name); } + ResetTempEngineData(); +} + +void ResetTempEngineData() +{ /* Get rid of temporary data */ for (std::vector::iterator it = _temp_engine.begin(); it != _temp_engine.end(); ++it) { FreeEngine(*it); diff --git a/src/saveload/labelmaps_sl.cpp b/src/saveload/labelmaps_sl.cpp index 6af40464f2..292816faa7 100644 --- a/src/saveload/labelmaps_sl.cpp +++ b/src/saveload/labelmaps_sl.cpp @@ -12,6 +12,7 @@ #include "../tunnelbridge_map.h" #include "saveload.h" +#include "saveload_internal.h" #include "../safeguards.h" @@ -88,6 +89,11 @@ void AfterLoadLabelMaps() } } + ResetLabelMaps(); +} + +void ResetLabelMaps() +{ _railtype_list.clear(); } @@ -115,7 +121,7 @@ static void Save_RAIL() static void Load_RAIL() { - _railtype_list.clear(); + ResetLabelMaps(); LabelObject lo; diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index ee30ff8ed2..feeb7127d3 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -2846,6 +2846,16 @@ void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settin extern bool AfterLoadGame(); extern bool LoadOldSaveGame(const char *file); +/** + * Clear temporary data that is passed between various saveload phases. + */ +static void ResetSaveloadData() +{ + ResetTempEngineData(); + ResetLabelMaps(); + ResetOldWaypoints(); +} + /** * Clear/free saveload state. */ @@ -3217,6 +3227,8 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) _next_offs = 0; if (!load_check) { + ResetSaveloadData(); + /* Old maps were hardcoded to 256x256 and thus did not contain * any mapsize information. Pre-initialize to 256x256 to not to * confuse old games */ @@ -3322,6 +3334,8 @@ SaveOrLoadResult SaveOrLoad(const char *filename, SaveLoadOperation fop, Detaile try { /* Load a TTDLX or TTDPatch game */ if (fop == SLO_LOAD && dft == DFT_OLD_GAME_FILE) { + ResetSaveloadData(); + InitializeGame(256, 256, true, true); // set a mapsize of 256x256 for TTDPatch games or it might get confused /* TTD/TTO savegames have no NewGRFs, TTDP savegame have them diff --git a/src/saveload/saveload_internal.h b/src/saveload/saveload_internal.h index 75d8fe52e2..ea50abf1de 100644 --- a/src/saveload/saveload_internal.h +++ b/src/saveload/saveload_internal.h @@ -20,6 +20,7 @@ StringID RemapOldStringID(StringID s); char *CopyFromOldName(StringID id); void ResetOldNames(); +void ResetOldWaypoints(); void MoveBuoysToWaypoints(); void MoveWaypointsToBaseStations(); const SaveLoad *GetBaseStationDescription(); @@ -29,6 +30,7 @@ void FixupTrainLengths(); void AfterLoadTemplateVehicles(); void AfterLoadStations(); void AfterLoadRoadStops(); +void ResetLabelMaps(); void AfterLoadLabelMaps(); void AfterLoadStoryBook(); void AfterLoadLinkGraphs(); @@ -44,6 +46,7 @@ void ResetViewportAfterLoadGame(); void ConvertOldMultiheadToNew(); void ConnectMultiheadedTrains(); +void ResetTempEngineData(); Engine *GetTempDataEngine(EngineID index); void CopyTempEngineData(); diff --git a/src/saveload/waypoint_sl.cpp b/src/saveload/waypoint_sl.cpp index 0cba4b8d06..5336d247b4 100644 --- a/src/saveload/waypoint_sl.cpp +++ b/src/saveload/waypoint_sl.cpp @@ -155,6 +155,11 @@ void MoveWaypointsToBaseStations() UpdateWaypointOrder(&v->current_order); } + ResetOldWaypoints(); +} + +void ResetOldWaypoints() +{ _old_waypoints.clear(); _old_waypoints.shrink_to_fit(); } @@ -182,7 +187,7 @@ static const SaveLoad _old_waypoint_desc[] = { static void Load_WAYP() { /* Precaution for when loading failed and it didn't get cleared */ - _old_waypoints.clear(); + ResetOldWaypoints(); int index; diff --git a/src/screenshot_gui.cpp b/src/screenshot_gui.cpp index 72e118b51e..3230020245 100644 --- a/src/screenshot_gui.cpp +++ b/src/screenshot_gui.cpp @@ -14,6 +14,7 @@ #include "window_gui.h" #include "screenshot.h" #include "textbuf_gui.h" +#include "strings_func.h" #include "widgets/screenshot_widget.h" @@ -57,6 +58,8 @@ struct ScreenshotWindow : Window { if ((uint64)vp.width * (uint64)vp.height > 8192 * 8192) { /* Ask for confirmation */ _screenshot_type = st; + SetDParam(0, vp.width); + SetDParam(1, vp.height); ShowQuery(STR_WARNING_SCREENSHOT_SIZE_CAPTION, STR_WARNING_SCREENSHOT_SIZE_MESSAGE, nullptr, ScreenshotConfirmationCallback); } else { diff --git a/src/script/api/Doxyfile_AI b/src/script/api/Doxyfile_AI index 4e033d21f6..d882599152 100644 --- a/src/script/api/Doxyfile_AI +++ b/src/script/api/Doxyfile_AI @@ -9,8 +9,8 @@ # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = "OpenTTD NoAI API" -PROJECT_NUMBER = +PROJECT_NAME = "OpenTTD AI API" +PROJECT_NUMBER = $(VERSION) OUTPUT_DIRECTORY = ../../../docs/aidocs/ CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English diff --git a/src/script/api/Doxyfile_Game b/src/script/api/Doxyfile_Game index eb5691d8b5..99b2ab05eb 100644 --- a/src/script/api/Doxyfile_Game +++ b/src/script/api/Doxyfile_Game @@ -9,8 +9,8 @@ # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = "OpenTTD Game API" -PROJECT_NUMBER = +PROJECT_NAME = "OpenTTD GameScript API" +PROJECT_NUMBER = $(VERSION) OUTPUT_DIRECTORY = ../../../docs/gamedocs/ CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English diff --git a/src/script/api/game/game_engine.hpp.sq b/src/script/api/game/game_engine.hpp.sq index fdef599c39..2efa1414a9 100644 --- a/src/script/api/game/game_engine.hpp.sq +++ b/src/script/api/game/game_engine.hpp.sq @@ -46,6 +46,8 @@ void SQGSEngine_Register(Squirrel *engine) SQGSEngine.DefSQStaticMethod(engine, &ScriptEngine::IsArticulated, "IsArticulated", 2, ".i"); SQGSEngine.DefSQStaticMethod(engine, &ScriptEngine::GetPlaneType, "GetPlaneType", 2, ".i"); SQGSEngine.DefSQStaticMethod(engine, &ScriptEngine::GetMaximumOrderDistance, "GetMaximumOrderDistance", 2, ".i"); + SQGSEngine.DefSQStaticMethod(engine, &ScriptEngine::EnableForCompany, "EnableForCompany", 3, ".ii"); + SQGSEngine.DefSQStaticMethod(engine, &ScriptEngine::DisableForCompany, "DisableForCompany", 3, ".ii"); SQGSEngine.PostRegister(engine); } diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp index 74fdb6423a..235dcee986 100644 --- a/src/script/api/game_changelog.hpp +++ b/src/script/api/game_changelog.hpp @@ -25,6 +25,8 @@ * \li GSRoad::RoadVehHasPowerOnRoad * \li GSRoad::ConvertRoadType * \li GSRoad::GetMaxSpeed + * \li GSEngine::EnableForCompany + * \li GSEngine::DisableForCompany * * \b 1.9.0 * diff --git a/src/script/api/script_engine.cpp b/src/script/api/script_engine.cpp index 6b1e267ff3..1ec1b23a8e 100644 --- a/src/script/api/script_engine.cpp +++ b/src/script/api/script_engine.cpp @@ -276,3 +276,25 @@ return 0; } } + +/* static */ bool ScriptEngine::EnableForCompany(EngineID engine_id, ScriptCompany::CompanyID company) +{ + company = ScriptCompany::ResolveCompanyID(company); + + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + EnforcePrecondition(false, IsValidEngine(engine_id)); + EnforcePrecondition(false, company != ScriptCompany::COMPANY_INVALID); + + return ScriptObject::DoCommand(0, engine_id, (uint32)company | (1 << 31), CMD_ENGINE_CTRL); +} + +/* static */ bool ScriptEngine::DisableForCompany(EngineID engine_id, ScriptCompany::CompanyID company) +{ + company = ScriptCompany::ResolveCompanyID(company); + + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + EnforcePrecondition(false, IsValidEngine(engine_id)); + EnforcePrecondition(false, company != ScriptCompany::COMPANY_INVALID); + + return ScriptObject::DoCommand(0, engine_id, company, CMD_ENGINE_CTRL); +} diff --git a/src/script/api/script_engine.hpp b/src/script/api/script_engine.hpp index 4a570fb9ca..f6bdbedbf2 100644 --- a/src/script/api/script_engine.hpp +++ b/src/script/api/script_engine.hpp @@ -287,6 +287,29 @@ public: * @see ScriptOrder::GetOrderDistance */ static uint GetMaximumOrderDistance(EngineID engine_id); + + /** + * Allows a company to use an engine before its intro date or after retirement. + * @param engine_id The engine to enable. + * @param company_id The company to allow using the engine. + * @pre IsValidEngine(engine_id). + * @pre ScriptCompany.ResolveCompanyID(company_id) != ScriptCompany::COMPANY_INVALID. + * @return True if the action succeeded. + * @api -ai + */ + static bool EnableForCompany(EngineID engine_id, ScriptCompany::CompanyID company_id); + + /** + * Forbids a company to use an engine before its natural retirement. + * @param engine_id The engine to disable. + * @param company_id The company to forbid using the engine. + * @pre IsValidEngine(engine_id). + * @pre ScriptCompany.ResolveCompanyID(company_id) != ScriptCompany::COMPANY_INVALID. + * @return True if the action succeeded. + * @api -ai + */ + static bool DisableForCompany(EngineID engine_id, ScriptCompany::CompanyID company_id); + }; #endif /* SCRIPT_ENGINE_HPP */ diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 05c7c9d211..675d955a97 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -447,21 +447,19 @@ void UpdateAllStationVirtCoords() } } -void BaseStation::FillCachedName() +void BaseStation::FillCachedName() const { - char buf[256]; + char buf[MAX_LENGTH_STATION_NAME_CHARS * MAX_CHAR_LENGTH]; int64 args_array[] = { this->index }; StringParameters tmp_params(args_array); char *end = GetStringWithArgs(buf, Waypoint::IsExpected(this) ? STR_WAYPOINT_NAME : STR_STATION_NAME, &tmp_params, lastof(buf)); - char *alloced = MallocT(end - buf + 1); - memcpy(alloced, buf, end - buf + 1); - this->cached_name.reset(alloced); + this->cached_name.assign(buf, end); } void ClearAllStationCachedNames() { for (BaseStation *st : BaseStation::Iterate()) { - st->cached_name.reset(); + st->cached_name.clear(); } } @@ -4174,7 +4172,7 @@ CommandCost CmdRenameStation(TileIndex tile, DoCommandFlag flags, uint32 p1, uin } if (flags & DC_EXEC) { - st->cached_name.reset(); + st->cached_name.clear(); free(st->name); st->name = reset ? nullptr : stredup(text); @@ -4259,68 +4257,109 @@ const StationList *StationFinder::GetStations() return &this->stations; } +static bool CanMoveGoodsToStation(const Station *st, CargoID type) +{ + /* Is the station reserved exclusively for somebody else? */ + if (st->owner != OWNER_NONE && st->town->exclusive_counter > 0 && st->town->exclusivity != st->owner) return false; + + /* Lowest possible rating, better not to give cargo anymore. */ + if (st->goods[type].rating == 0) return false; + + /* Selectively servicing stations, and not this one. */ + if (_settings_game.order.selectgoods && !st->goods[type].HasVehicleEverTriedLoading()) return false; + + if (IsCargoInClass(type, CC_PASSENGERS)) { + /* Passengers are never served by just a truck stop. */ + if (st->facilities == FACIL_TRUCK_STOP) return false; + } else { + /* Non-passengers are never served by just a bus stop. */ + if (st->facilities == FACIL_BUS_STOP) return false; + } + return true; +} + uint MoveGoodsToStation(CargoID type, uint amount, SourceType source_type, SourceID source_id, const StationList *all_stations) { /* Return if nothing to do. Also the rounding below fails for 0. */ + if (all_stations->empty()) return 0; if (amount == 0) return 0; - Station *st1 = nullptr; // Station with best rating - Station *st2 = nullptr; // Second best station - uint best_rating1 = 0; // rating of st1 - uint best_rating2 = 0; // rating of st2 + Station *first_station = nullptr; + typedef std::pair StationInfo; + std::vector used_stations; for (Station *st : *all_stations) { - /* Is the station reserved exclusively for somebody else? */ - if (st->owner != OWNER_NONE && st->town->exclusive_counter > 0 && st->town->exclusivity != st->owner) continue; + if (!CanMoveGoodsToStation(st, type)) continue; - if (st->goods[type].rating == 0) continue; // Lowest possible rating, better not to give cargo anymore - - if (_settings_game.order.selectgoods && !st->goods[type].HasVehicleEverTriedLoading()) continue; // Selectively servicing stations, and not this one - - if (IsCargoInClass(type, CC_PASSENGERS)) { - if (st->facilities == FACIL_TRUCK_STOP) continue; // passengers are never served by just a truck stop - } else { - if (st->facilities == FACIL_BUS_STOP) continue; // non-passengers are never served by just a bus stop + /* Avoid allocating a vector if there is only one station to significantly + * improve performance in this common case. */ + if (first_station == nullptr) { + first_station = st; + continue; } - - /* This station can be used, add it to st1/st2 */ - if (st1 == nullptr || st->goods[type].rating >= best_rating1) { - st2 = st1; best_rating2 = best_rating1; st1 = st; best_rating1 = st->goods[type].rating; - } else if (st2 == nullptr || st->goods[type].rating >= best_rating2) { - st2 = st; best_rating2 = st->goods[type].rating; + if (used_stations.empty()) { + used_stations.reserve(2); + used_stations.emplace_back(std::make_pair(first_station, 0)); } + used_stations.emplace_back(std::make_pair(st, 0)); } /* no stations around at all? */ - if (st1 == nullptr) return 0; + if (first_station == nullptr) return 0; - /* From now we'll calculate with fractal cargo amounts. - * First determine how much cargo we really have. */ - amount *= best_rating1 + 1; - - if (st2 == nullptr) { + if (used_stations.empty()) { /* only one station around */ - return UpdateStationWaiting(st1, type, amount, source_type, source_id); + amount *= first_station->goods[type].rating + 1; + return UpdateStationWaiting(first_station, type, amount, source_type, source_id); } - /* several stations around, the best two (highest rating) are in st1 and st2 */ - assert(st1 != nullptr); - assert(st2 != nullptr); - assert(best_rating1 != 0 || best_rating2 != 0); + uint company_best[OWNER_NONE + 1] = {}; // best rating for each company, including OWNER_NONE + uint company_sum[OWNER_NONE + 1] = {}; // sum of ratings for each company + uint best_rating = 0; + uint best_sum = 0; // sum of best ratings for each company - /* Then determine the amount the worst station gets. We do it this way as the - * best should get a bonus, which in this case is the rounding difference from - * this calculation. In reality that will mean the bonus will be pretty low. - * Nevertheless, the best station should always get the most cargo regardless - * of rounding issues. */ - uint worst_cargo = amount * best_rating2 / (best_rating1 + best_rating2); - assert(worst_cargo <= (amount - worst_cargo)); + for (auto &p : used_stations) { + auto owner = p.first->owner; + auto rating = p.first->goods[type].rating; + if (rating > company_best[owner]) { + best_sum += rating - company_best[owner]; // it's usually faster than iterating companies later + company_best[owner] = rating; + if (rating > best_rating) best_rating = rating; + } + company_sum[owner] += rating; + } - /* And then send the cargo to the stations! */ - uint moved = UpdateStationWaiting(st1, type, amount - worst_cargo, source_type, source_id); - /* These two UpdateStationWaiting's can't be in the statement as then the order - * of execution would be undefined and that could cause desyncs with callbacks. */ - return moved + UpdateStationWaiting(st2, type, worst_cargo, source_type, source_id); + /* From now we'll calculate with fractional cargo amounts. + * First determine how much cargo we really have. */ + amount *= best_rating + 1; + + uint moving = 0; + for (auto &p : used_stations) { + uint owner = p.first->owner; + /* Multiply the amount by (company best / sum of best for each company) to get cargo allocated to a company + * and by (station rating / sum of ratings in a company) to get the result for a single station. */ + p.second = amount * company_best[owner] * p.first->goods[type].rating / best_sum / company_sum[owner]; + moving += p.second; + } + + /* If there is some cargo left due to rounding issues distribute it among the best rated stations. */ + if (amount > moving) { + std::sort(used_stations.begin(), used_stations.end(), [type] (const StationInfo &a, const StationInfo &b) { + return b.first->goods[type].rating < a.first->goods[type].rating; + }); + + assert(amount - moving <= used_stations.size()); + for (uint i = 0; i < amount - moving; i++) { + used_stations[i].second++; + } + } + + uint moved = 0; + for (auto &p : used_stations) { + moved += UpdateStationWaiting(p.first, type, p.second, source_type, source_id); + } + + return moved; } void UpdateStationDockingTiles(Station *st) diff --git a/src/town.h b/src/town.h index ed89b4b702..06a44ea0c7 100644 --- a/src/town.h +++ b/src/town.h @@ -19,7 +19,6 @@ #include "openttd.h" #include "table/strings.h" #include "company_func.h" -#include "core/alloc_type.hpp" #include #include @@ -65,7 +64,7 @@ struct Town : TownPool::PoolItem<&_town_pool> { uint16 townnametype; uint32 townnameparts; char *name; ///< Custom town name. If nullptr, the town was not renamed and uses the generated name. - std::unique_ptr cached_name; ///< NOSAVE: Cache of the resolved name of the town, if not using a custom town name + mutable std::string cached_name; ///< NOSAVE: Cache of the resolved name of the town, if not using a custom town name byte flags; ///< See #TownFlags. @@ -164,8 +163,8 @@ struct Town : TownPool::PoolItem<&_town_pool> { inline const char *GetCachedName() const { if (this->name != nullptr) return this->name; - if (!this->cached_name) const_cast(this)->FillCachedName(); - return this->cached_name.get(); + if (this->cached_name.empty()) this->FillCachedName(); + return this->cached_name.c_str(); } static inline Town *GetByTile(TileIndex tile) @@ -176,8 +175,8 @@ struct Town : TownPool::PoolItem<&_town_pool> { static Town *GetRandom(); static void PostDestructor(size_t index); - private: - void FillCachedName(); +private: + void FillCachedName() const; }; uint32 GetWorldPopulation(); diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index b36231113b..6e5219c04e 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -225,13 +225,11 @@ void Town::UpdateLabel() } } -void Town::FillCachedName() +void Town::FillCachedName() const { char buf[MAX_LENGTH_TOWN_NAME_CHARS * MAX_CHAR_LENGTH]; char *end = GetTownName(buf, this, lastof(buf)); - char *alloced = MallocT(end - buf + 1); - memcpy(alloced, buf, end - buf + 1); - this->cached_name.reset(alloced); + this->cached_name.assign(buf, end); } /** @@ -533,7 +531,7 @@ void UpdateAllTownVirtCoords() void ClearAllTownCachedNames() { for (Town *t : Town::Iterate()) { - t->cached_name.reset(); + t->cached_name.clear(); } } @@ -2985,7 +2983,7 @@ CommandCost CmdRenameTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 } if (flags & DC_EXEC) { - t->cached_name.reset(); + t->cached_name.clear(); free(t->name); t->name = reset ? nullptr : stredup(text); diff --git a/src/town_gui.cpp b/src/town_gui.cpp index f706326c4d..782accfa59 100644 --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -710,7 +710,6 @@ private: continue; } this->string_filter.ResetState(); - this->string_filter.AddLine(t->GetCachedName()); if (this->string_filter.GetState()) this->towns.push_back(t); } diff --git a/src/video/sdl2_v.cpp b/src/video/sdl2_v.cpp index 4acefab9c5..44df458465 100644 --- a/src/video/sdl2_v.cpp +++ b/src/video/sdl2_v.cpp @@ -964,7 +964,7 @@ const char *VideoDriver_SDL::Start(const char * const *parm) return SDL_GetError(); } - const char *dname = SDL_GetVideoDriver(0); + const char *dname = SDL_GetCurrentVideoDriver(); DEBUG(driver, 1, "SDL2: using driver '%s'", dname); MarkWholeScreenDirty();