# HG changeset patch # User bjarni # Date 1171449998 0 # Node ID 23983700e3d702093972ecfe572fab2db339a1ed # Parent ca57ad0b45ea15e065eb1671b14795aef8211f8a (svn r8731) [cpp_gui] -Sync: r8730 from trunk diff -r ca57ad0b45ea -r 23983700e3d7 src/aircraft_cmd.cpp --- a/src/aircraft_cmd.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/aircraft_cmd.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -558,7 +558,7 @@ StationID next_airport_index = v->u.air.targetairport; const Station *st = GetStation(next_airport_index); /* If the station is not a valid airport or if it has no hangars */ - if (!IsValidStation(st) || st->airport_tile == 0 || GetAirport(st->airport_type)->nof_depots == 0) { + if (!st->IsValid() || st->airport_tile == 0 || GetAirport(st->airport_type)->nof_depots == 0) { StationID station; // the aircraft has to search for a hangar on its own @@ -695,7 +695,7 @@ st = GetStation(v->current_order.dest); // only goto depot if the target airport has terminals (eg. it is airport) - if (IsValidStation(st) && st->airport_tile != 0 && GetAirport(st->airport_type)->terminals != NULL) { + if (st->IsValid() && st->airport_tile != 0 && GetAirport(st->airport_type)->terminals != NULL) { // printf("targetairport = %d, st->index = %d\n", v->u.air.targetairport, st->index); // v->u.air.targetairport = st->index; v->current_order.type = OT_GOTO_DEPOT; diff -r ca57ad0b45ea -r 23983700e3d7 src/airport.h --- a/src/airport.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/airport.h Wed Feb 14 10:46:38 2007 +0000 @@ -77,7 +77,7 @@ /* Movement Blocks on Airports */ // blocks (eg_airport_flags) -enum { +static const uint64 TERM1_block = 1 << 0, TERM2_block = 1 << 1, TERM3_block = 1 << 2, @@ -119,8 +119,7 @@ OUT_WAY_block2 = 1 << 31, // end of new blocks - NOTHING_block = 1 << 30 -}; + NOTHING_block = 1 << 30; typedef struct AirportMovingData { int16 x; diff -r ca57ad0b45ea -r 23983700e3d7 src/airport_movement.h --- a/src/airport_movement.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/airport_movement.h Wed Feb 14 10:46:38 2007 +0000 @@ -9,7 +9,7 @@ typedef struct AirportFTAbuildup { byte position; // the position that an airplane is at byte heading; // the current orders (eg. TAKEOFF, HANGAR, ENDLANDING, etc.) - uint32 block; // the block this position is on on the airport (st->airport_flags) + uint64 block; // the block this position is on on the airport (st->airport_flags) byte next; // next position from this position } AirportFTAbuildup; diff -r ca57ad0b45ea -r 23983700e3d7 src/economy.cpp --- a/src/economy.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/economy.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -1519,7 +1519,7 @@ if (v->type == VEH_Train) { // Each platform tile is worth 2 rail vehicles. - int overhang = v->u.rail.cached_total_length - GetStationPlatforms(st, v->tile) * TILE_SIZE; + int overhang = v->u.rail.cached_total_length - st->GetPlatformLength(v->tile) * TILE_SIZE; if (overhang > 0) { unloading_time <<= 1; unloading_time += (overhang * unloading_time) / 8; diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/bulgarian.txt --- a/src/lang/bulgarian.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/bulgarian.txt Wed Feb 14 10:46:38 2007 +0000 @@ -1819,7 +1819,6 @@ STR_4800_IN_THE_WAY :{WHITE}{STRING} пречи STR_4801 :{WHITE}{INDUSTRY} STR_4802_COAL_MINE :Мина за въглища -STR_4803_POWER_STATION : STR_4804_SAWMILL :Дъскорезница STR_4805_FOREST :Гора STR_4806_OIL_REFINERY :Нефтена рафинерия diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/catalan.txt --- a/src/lang/catalan.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/catalan.txt Wed Feb 14 10:46:38 2007 +0000 @@ -1469,7 +1469,7 @@ STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Espectadors -STR_NETWORK_CLIENTLIST_NONE : +STR_NETWORK_CLIENTLIST_NONE :(cap) STR_NETWORK_CLIENTLIST_KICK :Breu STR_NETWORK_CLIENTLIST_GIVE_MONEY :Entrega diners STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Parla a tothom diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/czech.txt --- a/src/lang/czech.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/czech.txt Wed Feb 14 10:46:38 2007 +0000 @@ -2,7 +2,7 @@ ##ownname Česky ##isocode cs_CS ##plural 6 -##case nom gen acc dat voc loc ins big news subs +##case nom gen dat acc voc loc ins big ##gender m f n ##id 0x0000 @@ -24,146 +24,90 @@ STR_000F_PASSENGERS :cestující STR_000F_PASSENGERS.big :Cestující STR_000F_PASSENGERS.gen :cestujících -STR_000F_PASSENGERS.news :cestujících -STR_000F_PASSENGERS.subs :Cestující STR_0010_COAL :uhlí STR_0010_COAL.big :Uhlí -STR_0010_COAL.subs :Uhlí STR_0011_MAIL :pošta STR_0011_MAIL.big :Pošta STR_0011_MAIL.gen :pošty -STR_0011_MAIL.news :pošty -STR_0011_MAIL.subs :Pošta STR_0012_OIL :ropa STR_0012_OIL.big :Ropa STR_0012_OIL.gen :ropy -STR_0012_OIL.news :ropy -STR_0012_OIL.subs :Ropa STR_0013_LIVESTOCK :dobytek STR_0013_LIVESTOCK.big :Dobytek STR_0013_LIVESTOCK.gen :dobytka -STR_0013_LIVESTOCK.news :dobytka -STR_0013_LIVESTOCK.subs :Dobytek STR_0014_GOODS :zboží STR_0014_GOODS.big :Zboží -STR_0014_GOODS.subs :Zboží STR_0015_GRAIN :zrní STR_0015_GRAIN.big :Zrní -STR_0015_GRAIN.subs :Zrní STR_0016_WOOD :dřevo STR_0016_WOOD.big :Dřevo STR_0016_WOOD.gen :dřeva -STR_0016_WOOD.news :dreva -STR_0016_WOOD.subs :Drevo STR_0017_IRON_ORE :železná ruda STR_0017_IRON_ORE.big :Železná ruda STR_0017_IRON_ORE.gen :železné rudy -STR_0017_IRON_ORE.news :železné rudy -STR_0017_IRON_ORE.subs :Železná ruda STR_0018_STEEL :ocel STR_0018_STEEL.big :Ocel STR_0018_STEEL.gen :oceli -STR_0018_STEEL.news :oceli -STR_0018_STEEL.subs :Ocel STR_0019_VALUABLES :ceniny STR_0019_VALUABLES.big :Ceniny STR_0019_VALUABLES.gen :cenin -STR_0019_VALUABLES.news :cenin -STR_0019_VALUABLES.subs :Ceniny STR_001A_COPPER_ORE :měděná ruda STR_001A_COPPER_ORE.big :Měděná ruda STR_001A_COPPER_ORE.gen :měděné rudy -STR_001A_COPPER_ORE.news :medene rudy -STR_001A_COPPER_ORE.subs :Medena ruda STR_001B_MAIZE :kukuřice STR_001B_MAIZE.big :Kukuřice -STR_001B_MAIZE.subs :Kukurice STR_001C_FRUIT :ovoce STR_001C_FRUIT.big :Ovoce -STR_001C_FRUIT.subs :Ovoce STR_001D_DIAMONDS :diamanty STR_001D_DIAMONDS.big :Diamanty STR_001D_DIAMONDS.gen :diamantů -STR_001D_DIAMONDS.news :diamantu -STR_001D_DIAMONDS.subs :Diamanty STR_001E_FOOD :jídlo STR_001E_FOOD.big :Jídlo STR_001E_FOOD.gen :jídlo -STR_001E_FOOD.news :jídlo -STR_001E_FOOD.subs :Jídlo STR_001F_PAPER :papír STR_001F_PAPER.big :Papír STR_001F_PAPER.gen :papíru -STR_001F_PAPER.news :papíru -STR_001F_PAPER.subs :Papír STR_0020_GOLD :zlato STR_0020_GOLD.big :Zlato STR_0020_GOLD.gen :zlata -STR_0020_GOLD.news :zlata -STR_0020_GOLD.subs :Zlato STR_0021_WATER :voda STR_0021_WATER.big :Voda STR_0021_WATER.gen :vody -STR_0021_WATER.news :vody -STR_0021_WATER.subs :Voda STR_0022_WHEAT :pšenice STR_0022_WHEAT.big :Pšenice -STR_0022_WHEAT.subs :Pšenice STR_0023_RUBBER :kaučuk STR_0023_RUBBER.big :Kaučuk STR_0023_RUBBER.gen :kaučuku -STR_0023_RUBBER.news :kaucuku -STR_0023_RUBBER.subs :Kaucuk STR_0024_SUGAR :cukr STR_0024_SUGAR.big :Cukr STR_0024_SUGAR.gen :cukru -STR_0024_SUGAR.news :cukru -STR_0024_SUGAR.subs :Cukr STR_0025_TOYS :hračky STR_0025_TOYS.big :Hračky STR_0025_TOYS.gen :hraček -STR_0025_TOYS.news :hracek -STR_0025_TOYS.subs :Hracky STR_0026_CANDY :bonbony STR_0026_CANDY.big :Bonbony STR_0026_CANDY.gen :bonbonů -STR_0026_CANDY.news :bonbonu -STR_0026_CANDY.subs :Bonbony STR_0027_COLA :kola STR_0027_COLA.big :Kola STR_0027_COLA.gen :koly -STR_0027_COLA.news :coly -STR_0027_COLA.subs :Cola STR_0028_COTTON_CANDY :cukrová vata STR_0028_COTTON_CANDY.big :Cukrová vata STR_0028_COTTON_CANDY.gen :cukrové vaty -STR_0028_COTTON_CANDY.news :cukrové vaty -STR_0028_COTTON_CANDY.subs :Cukrová vata STR_0029_BUBBLES :bubliny STR_0029_BUBBLES.big :Bubliny STR_0029_BUBBLES.gen :bublin -STR_0029_BUBBLES.news :bublin -STR_0029_BUBBLES.subs :Bubliny STR_002A_TOFFEE :karamel STR_002A_TOFFEE.big :Karamel STR_002A_TOFFEE.gen :karamelu -STR_002A_TOFFEE.news :karamelu -STR_002A_TOFFEE.subs :Karamel STR_002B_BATTERIES :baterie STR_002B_BATTERIES.big :Baterie STR_002B_BATTERIES.gen :baterií -STR_002B_BATTERIES.news :baterií -STR_002B_BATTERIES.subs :Baterie STR_002C_PLASTIC :plast STR_002C_PLASTIC.big :Plast STR_002C_PLASTIC.gen :plastu -STR_002C_PLASTIC.news :plastu -STR_002C_PLASTIC.subs :Plast STR_002D_FIZZY_DRINKS :limonáda STR_002D_FIZZY_DRINKS.big :Limonáda STR_002D_FIZZY_DRINKS.gen :limonád -STR_002D_FIZZY_DRINKS.news :limonád -STR_002D_FIZZY_DRINKS.subs :Limonáda STR_002E : STR_002F_PASSENGER :cestujících STR_0030_COAL :uhlí @@ -2590,16 +2534,16 @@ STR_80FE_GURU_X2_HELICOPTER :Vrtulník Guru X2 STR_80FF_POWERNAUT_HELICOPTER :Vrtulník Powernaut STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE :{WHITE}Zpráva od výrobce dopravních prostředků -STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Právě jsme vyvinuli nov{G ý ou é} {STRING.dat}. Měl byste zájem o roční výhradní právo na používání tohoto prostředku, aby byl otestován před uvedením na trh? +STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Právě jsme vyvinuli nov{G ý ou é} {STRING.acc}. Měl byste zájem o roční výhradní právo na používání tohoto prostředku, aby byl otestován před uvedením na trh? STR_8102_RAILROAD_LOCOMOTIVE :{G=f}lokomotiva -STR_8102_RAILROAD_LOCOMOTIVE.dat :{G=f}lokomotivu +STR_8102_RAILROAD_LOCOMOTIVE.acc :{G=f}lokomotivu STR_8103_ROAD_VEHICLE :{G=n}silniční vozidlo STR_8104_AIRCRAFT :{G=n}letadlo STR_8105_SHIP :{G=f}loď STR_8106_MONORAIL_LOCOMOTIVE :{G=f}lokomotiva pro monorail -STR_8106_MONORAIL_LOCOMOTIVE.dat :{G=f}lokomotivu pro monorail +STR_8106_MONORAIL_LOCOMOTIVE.acc :{G=f}lokomotivu pro monorail STR_8107_MAGLEV_LOCOMOTIVE :{G=f}lokomotiva Maglev -STR_8107_MAGLEV_LOCOMOTIVE.dat :{G=f}lokomotivu Maglev +STR_8107_MAGLEV_LOCOMOTIVE.acc :{G=f}lokomotivu Maglev ##id 0x8800 STR_8800_TRAIN_DEPOT :{WHITE}Železniční depo {TOWN} diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/dutch.txt --- a/src/lang/dutch.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/dutch.txt Wed Feb 14 10:46:38 2007 +0000 @@ -382,9 +382,6 @@ STR_SORT_BY_MAX_SPEED :Maximale snelheid STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Waarde -STR_SORT_BY_FACILITY : -STR_SORT_BY_WAITING : -STR_SORT_BY_RATING_MAX : STR_ENGINE_SORT_ENGINE_ID :Motor ID (klassieke soort) STR_ENGINE_SORT_COST :Kosten STR_ENGINE_SORT_POWER :Kracht diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/finnish.txt --- a/src/lang/finnish.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/finnish.txt Wed Feb 14 10:46:38 2007 +0000 @@ -2187,7 +2187,6 @@ STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}Yhtiön {COMPANY} on ottanut haltuun {COMPANY}! STR_7080_PROTECTED :{WHITE}Tällä yhtiöllä ei ole vielä osakkeita... -STR_LIVERY_DEFAULT : STR_LIVERY_STEAM :Höyryveturi STR_LIVERY_DIESEL :Dieselveturi STR_LIVERY_ELECTRIC :Sähköveturi diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/french.txt --- a/src/lang/french.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/french.txt Wed Feb 14 10:46:38 2007 +0000 @@ -617,12 +617,12 @@ STR_021F :{BLUE}{COMMA} STR_0221_OPENTTD :{YELLOW}OpenTTD STR_0222_SCENARIO_EDITOR :{YELLOW}Éditeur de Scénario -STR_0223_LAND_GENERATION :{WHITE}Génération de terrain +STR_0223_LAND_GENERATION :{WHITE}Création du terrain STR_0224 :{BLACK}{UPARROW} STR_0225 :{BLACK}{DOWNARROW} STR_0228_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Augmenter la quantité de terre à modifier STR_0229_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Diminuer la quantité de terre à modifier -STR_022A_GENERATE_RANDOM_LAND :{BLACK}Générer une terre aléatoire +STR_022A_GENERATE_RANDOM_LAND :{BLACK}Créer un monde aléatoire STR_022B_RESET_LANDSCAPE :{BLACK}Réinitialiser le terrain STR_022C_RESET_LANDSCAPE :{WHITE}Réinitialiser le terrain STR_RESET_LANDSCAPE_TOOLTIP :{BLACK}Ôter toutes les propriétés des joueurs de la carte @@ -643,7 +643,7 @@ STR_NO_SPACE_FOR_TOWN :{WHITE}...Il n'y a plus d'emplacement sur la carte STR_023B_INCREASE_SIZE_OF_TOWN :{BLACK}Augmenter la taille de la ville STR_023C_EXPAND :{BLACK}Agrandir -STR_023D_RANDOM_TOWN :{BLACK}Générer une ville +STR_023D_RANDOM_TOWN :{BLACK}Créer une ville STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION :{BLACK}Construire une ville à un emplacement aléatoire STR_023F_INDUSTRY_GENERATION :{WHITE}Créer les industries STR_0240_COAL_MINE :{BLACK}Mine de Charbon @@ -720,7 +720,7 @@ STR_0287_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...Droit à un par ville seulement STR_0288_PLANT_TREES :{BLACK}Semer des arbres STR_0289_PLACE_SIGN :{BLACK}Placer un panneau -STR_028A_RANDOM_TREES :{BLACK}Générer des arbres +STR_028A_RANDOM_TREES :{BLACK}Ajouter des arbres aléatoires STR_028B_PLANT_TREES_RANDOMLY_OVER :{BLACK}Semer des arbres sur l'ensemble du terrain de façon aléatoire STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Placer des endroits rocheux sur le terrain STR_028D_PLACE_LIGHTHOUSE :{BLACK}Placer un Phare @@ -788,7 +788,7 @@ ############ range for menu starts STR_02D5_LAND_BLOCK_INFO :Outil d'Inspection STR_02D6 : -STR_CONSOLE_SETTING :Inverser Console +STR_CONSOLE_SETTING :Afficher la console STR_02D7_SCREENSHOT_CTRL_S :Copie d'écran (Ctrl-S) STR_02D8_GIANT_SCREENSHOT_CTRL_G :Copie géante d'écran (Ctrl-G) STR_02D9_ABOUT_OPENTTD :À Propos de 'OpenTTD' @@ -809,7 +809,7 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Coller depuis la vue STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Colle l'emplacement de cette vue vers la vue globale -STR_02E0_CURRENCY_UNITS :{BLACK}Unité monétaire +STR_02E0_CURRENCY_UNITS :{BLACK}Devise monétaire STR_02E1 :{BLACK}{SKIP}{STRING} STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Sélectionner l'unité monétaire STR_MEASURING_UNITS :{BLACK}Unité de mesure @@ -1005,7 +1005,7 @@ STR_TRAIN_AUTORENEW_FAILED :{WHITE}Le renouvellement automatique a échoué sur Train {COMMA} (limite d'argent) STR_ROADVEHICLE_AUTORENEW_FAILED :{WHITE}Le renouvellement automatique a échoué sur Véhicule {COMMA} (limite d'argent) STR_SHIP_AUTORENEW_FAILED :{WHITE}Le renouvellement automatique a échoué sur Navire {COMMA} (limite d'argent) -STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Le renouvellement automatique a échoué sur Aéronef {COMMA} (limite d'argent) +STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Le renouvellement automatique d'Aéronef {COMMA} a échoué (limite d'argent) STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}Train {COMMA} est trop long après remplacement STR_CONFIG_PATCHES :{BLACK}Options Avancées @@ -1026,7 +1026,7 @@ STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Utiliser l'algorithme amélioré de chargement : {ORANGE}{STRING} STR_CONFIG_PATCHES_GRADUAL_LOADING :{LTBLUE}Charger les véhicules graduellement: {ORANGE}{STRING} STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING} -STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Livrer cargaison seulement sur demande: {ORANGE}{STRING} +STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Livrer la cargaison seulement sur demande: {ORANGE}{STRING} STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Permettre la construction de longs ponts: {ORANGE}{STRING} STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Permettre l'ordre d'aller au dépôt: {ORANGE}{STRING} STR_CONFIG_PATCHES_BUILDXTRAIND :{LTBLUE}Permettre la construction de ressources primaires: {ORANGE}{STRING} @@ -1299,7 +1299,7 @@ STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients en ligne / clients max -STR_NETWORK_GAME_INFO :{SILVER}INFO DE LA PARTIE +STR_NETWORK_GAME_INFO :{SILVER}INFOS SUR LE SERVEUR STR_ORANGE :{ORANGE}{STRING} STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_LANGUAGE :{SILVER}Langue: {WHITE}{STRING} @@ -1351,7 +1351,7 @@ STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Max spectateurs: STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Limiter le serveur à un certain nombre de spectateurs STR_NETWORK_COMBO4 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING} -STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Langue parlée : +STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Langue utilisée : STR_NETWORK_LANGUAGE_TIP :{BLACK}Les autres joueurs sauront quelle langue est parlée sur ce serveur. STR_NETWORK_COMBO5 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING} STR_NETWORK_START_GAME :{BLACK}Démarrer la partie @@ -1360,13 +1360,13 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Continuer une partie multijoueur sauvée précédemment (attention à reprendre le même joueur) ############ Leave those lines in this order!! -STR_NETWORK_LANG_ANY :Peu importe +STR_NETWORK_LANG_ANY :Aucune STR_NETWORK_LANG_ENGLISH :Anglais STR_NETWORK_LANG_GERMAN :Allemand STR_NETWORK_LANG_FRENCH :Français ############ End of leave-in-this-order -STR_NETWORK_GAME_LOBBY :{WHITE}Chat d'avant jeu +STR_NETWORK_GAME_LOBBY :{WHITE}Préparation de la partie STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Se prépare à rejoindre : {ORANGE}{STRING} STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Liste des compagnies présentes dans le jeu. Vous pouvez soit en rejoindre une, soit en créer une. @@ -1376,10 +1376,10 @@ STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Permet d'observer une partie en tant que spectateur STR_NETWORK_JOIN_COMPANY :{BLACK}Rejoindre la compagnie STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Aider à gérer cette compagnie -STR_NETWORK_REFRESH :{BLACK}Rafraîchir -STR_NETWORK_REFRESH_TIP :{BLACK}Rafraîchir les infos à propos du serveur +STR_NETWORK_REFRESH :{BLACK}Actualiser +STR_NETWORK_REFRESH_TIP :{BLACK}Actualiser les infos sur le serveur -STR_NETWORK_COMPANY_INFO :{SILVER}INFO DE LA COMPAGNIE +STR_NETWORK_COMPANY_INFO :{SILVER}INFOS SUR LA COMPAGNIE STR_NETWORK_COMPANY_NAME :{SILVER}Nom de la compagnie : {WHITE}{STRING} STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inauguration : {WHITE}{NUM} @@ -1806,7 +1806,7 @@ STR_4002_SAVE :{BLACK}Sauvegarder STR_4003_DELETE :{BLACK}Supprimer STR_4004 :{COMPANY}, {DATE_LONG} -STR_4005_BYTES_FREE :{BLACK}{COMMA} Mo libres +STR_4005_BYTES_FREE :{BLACK}{COMMA} Mo libre{P "" s} STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Impossible d'accéder au disque STR_4007_GAME_SAVE_FAILED :{WHITE}La sauvegarde à échoué STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Impossible de supprimer le fichier @@ -1817,7 +1817,7 @@ STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Sauvegarde la partie avec le nom choisi STR_400E_SELECT_NEW_GAME_TYPE :{WHITE}Choix du type de partie STR_400F_SELECT_SCENARIO_GREEN_PRE :{BLACK}Choisir un scénario (vert), une partie préparée (bleu), ou une partie aléatoire -STR_4010_GENERATE_RANDOM_NEW_GAME :Générer une partie aléatoirement +STR_4010_GENERATE_RANDOM_NEW_GAME :Créer une partie aléatoirement STR_4011_LOAD_HEIGHTMAP :{WHITE}Charger une carte d'altitude ##id 0x4800 @@ -1996,15 +1996,15 @@ ############ range for difficulty levels ends ############ range for difficulty settings starts -STR_6805_MAXIMUM_NO_COMPETITORS :{LTBLUE}Nombre maximum de compétiteurs: {ORANGE}{COMMA} -STR_6806_COMPETITOR_START_TIME :{LTBLUE}Arrivée des compétiteurs: {ORANGE}{STRING} +STR_6805_MAXIMUM_NO_COMPETITORS :{LTBLUE}Nombre maximal de concurents: {ORANGE}{COMMA} +STR_6806_COMPETITOR_START_TIME :{LTBLUE}Arrivée des concurents: {ORANGE}{STRING} STR_6807_NO_OF_TOWNS :{LTBLUE}Nombre de villes: {ORANGE}{STRING} STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Nombre d'industries: {ORANGE}{STRING} STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Prêt initial maximum: {ORANGE}{CURRENCY} STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Taux d'interêt initial: {ORANGE}{COMMA}% STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Coûts d'entretien: {ORANGE}{STRING} -STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Vitesse de développement des compétiteurs: {ORANGE}{STRING} -STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Intelligence des compétiteurs: {ORANGE}{STRING} +STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Vitesse de développement des concurents: {ORANGE}{STRING} +STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Intelligence des concurents: {ORANGE}{STRING} STR_680E_VEHICLE_BREAKDOWNS :{LTBLUE}Pannes des véhicules: {ORANGE}{STRING} STR_680F_SUBSIDY_MULTIPLIER :{LTBLUE}Multiplicateur de subvention: {ORANGE}{STRING} STR_6810_COST_OF_CONSTRUCTION :{LTBLUE}Coût des constructions: {ORANGE}{STRING} @@ -2013,7 +2013,7 @@ STR_6813_ECONOMY :{LTBLUE}Economie: {ORANGE}{STRING} STR_6814_TRAIN_REVERSING :{LTBLUE}Demi-tour des trains: {ORANGE}{STRING} STR_6815_DISASTERS :{LTBLUE}Désastres: {ORANGE}{STRING} -STR_16816_CITY_APPROVAL :{LTBLUE}Attitude de l'hotel de ville face au repaysagement : {ORANGE}{STRING} +STR_16816_CITY_APPROVAL :{LTBLUE}Attitude de la municipalité face au repaysagement : {ORANGE}{STRING} ############ range for difficulty settings ends STR_26816_NONE :Aucune @@ -2620,7 +2620,7 @@ STR_8865_NAME_TRAIN :{WHITE}Renommer le train STR_8866_CAN_T_NAME_TRAIN :{WHITE}Impossible de renommer le train... STR_8867_NAME_TRAIN :{BLACK}Renommer le train -STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Tragédie ferroviaire!{}{COMMA} mort{P "" s} brûlé{P "" s} vif{P "" s} dans la collision +STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Accident ferroviaire!{}{COMMA} mort{P "" s} brûlé{P "" s} vif{P "" s} dans la collision STR_8869_CAN_T_REVERSE_DIRECTION :{WHITE}Impossible de faire faire demi-tour... STR_886A_RENAME_TRAIN_VEHICLE_TYPE :{WHITE}Renommer le type de train STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Impossible de renommer le type de train... @@ -2682,8 +2682,8 @@ STR_902E_NAME_ROAD_VEHICLE :{BLACK}Renommer le véhicule STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Le premier bus arrive à {STATION}! STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Le premier camion arrive à {STATION}! -STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Tragédie routière!{}Un automobiliste meurt brûlé vif lors d'une collision avec un train -STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Tragédie routière!{}{COMMA} morts, brûlés vifs lors d'une collision avec un train +STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Accident routier!{}Un automobiliste meurt brûlé vif lors d'une collision avec un train +STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Accident routier!{}{COMMA} mort{P "" s} lors d'une collision avec un train STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Impossible de faire faire demi-tour au véhicule... STR_ONLY_TURN_SINGLE_UNIT :{WHITE}Impossible de faire faire demi-tour aux unités multiples STR_9034_RENAME :{BLACK}Renommer @@ -2790,7 +2790,7 @@ STR_A00D_AGE_RUNNING_COST_YR :{BLACK}Âge: {LTBLUE}{STRING}{BLACK} Coût d'entretien: {LTBLUE}{CURRENCY}/an STR_A00E_MAX_SPEED :{BLACK}Vitesse max.: {LTBLUE}{VELOCITY} STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profits cette année: {LTBLUE}{CURRENCY} (l'an dernier: {CURRENCY}) -STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilité: {LTBLUE}{COMMA}% {BLACK}Cafouillages depuis le dernier service: {LTBLUE}{COMMA} +STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilité: {LTBLUE}{COMMA}% {BLACK}Pannes depuis le dernier service: {LTBLUE}{COMMA} STR_A011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Construit: {LTBLUE}{NUM}{BLACK} Valeur: {LTBLUE}{CURRENCY} STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Impossible d'envoyer l'aéronef au hangar... STR_HEADING_FOR_HANGAR :{ORANGE}En route pour le hangar de {STATION} @@ -2828,8 +2828,8 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Impossible de nommer l'aéronef... STR_A032_NAME_AIRCRAFT :{BLACK}Nommer l'aéronef STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Arrivée du premier aéronef à {STATION}! -STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Tragédie aérienne!{}{COMMA} morts brûlés vifs à {STATION} -STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Tragédie aérienne !{}L'aéronef n'avait plus de carburant, {COMMA} passagers meurent dans l'incendie! +STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Accident d'avion!{}{COMMA} mort{P "" s} dans un crash à {STATION} +STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Accident d'avion!{}L'aéronef n'avait plus de carburant, {COMMA} passager{P "" s} meurent dans le crash! STR_A036 :{TINYFONT}{BLACK}{STATION} STR_A037_RENAME :{BLACK}Renommer STR_A038_RENAME_AIRCRAFT_TYPE :{BLACK}Renommer type d'aéronef @@ -2853,7 +2853,7 @@ STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Usine détruite dans des circonstances suspectes près de {TOWN}! STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}Un 'OVNI' attérit près de {TOWN}! STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Affaissement d'une veine de charbon entraîne la desctruction de la mine de {TOWN}! -STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Inondations!{}Au moins {COMMA} présumés manquants ou morts après des inondations meurtrières! +STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Inondations!{}Au moins {COMMA} présumé{P "" s} manquant{P "" s} ou mort{P "" s} après des inondations meurtrières! STR_BRIBE_FAILED :{WHITE}Votre tentative de corruption à été STR_BRIBE_FAILED_2 :{WHITE}révélée à la presse par un journaliste régional. @@ -2912,10 +2912,10 @@ STR_NEWGRF_PARAMETER_QUERY :{BLACK}Entrer les paramètres NewGRF STR_NEWGRF_NO_INFO :{BLACK}Pas d'informations disponibles -STR_NEWGRF_ADD_CAPTION :{WHITE}Fichier NewGRF disponibles +STR_NEWGRF_ADD_CAPTION :{WHITE}Fichiers NewGRF disponibles STR_NEWGRF_ADD_FILE :{BLACK}Ajouter à la sélection STR_NEWGRF_ADD_FILE_TIP :{BLACK}Ajouter le fichier NewGRF sélectionné à votre configuration -STR_NEWGRF_RESCAN_FILES :{BLACK}Re-scanner les fichiers +STR_NEWGRF_RESCAN_FILES :{BLACK}Actualiser la liste STR_NEWGRF_RESCAN_FILES_TIP :{BLACK}Mettre à jour la liste des fichiers NewGRF disponibles STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ajout impossible: GRF ID en double @@ -3048,22 +3048,22 @@ ########### String for New Landscape Generator -STR_GENERATE :{WHITE}Générer +STR_GENERATE :{WHITE}Créer STR_RANDOM :{BLACK}Nouvelle Amorce -STR_RANDOM_HELP :{BLACK}Modifer l'amorce utilisée pour la Génération du Terrain +STR_RANDOM_HELP :{BLACK}Modifier l'amorce utilisée pour la Création du Terrain STR_WORLD_GENERATION_CAPTION :{WHITE}Création du monde STR_RANDOM_SEED :{BLACK}Amorce : STR_RANDOM_SEED_HELP :{BLACK}Cliquer pour saisir une amorce STR_LAND_GENERATOR :{BLACK}Générateur : -STR_TREE_PLACER :{BLACK}Placement arbres : +STR_TREE_PLACER :{BLACK}Ajout des arbres : STR_HEIGHTMAP_ROTATION :{BLACK}Rotation de la carte d'altitude : STR_TERRAIN_TYPE :{BLACK}Type de terrain : STR_QUANTITY_OF_SEA_LAKES :{BLACK}Niveau de la mer : STR_SMOOTHNESS :{BLACK}Lissage : STR_SNOW_LINE_HEIGHT :{BLACK}Alt. d'enneigement : STR_DATE :{BLACK}Date: -STR_NUMBER_OF_TOWNS :{BLACK}No. de villes : -STR_NUMBER_OF_INDUSTRIES :{BLACK}No. d'industries : +STR_NUMBER_OF_TOWNS :{BLACK}Nb. de villes : +STR_NUMBER_OF_INDUSTRIES :{BLACK}Nb. d'industries : STR_GENERATE_DATE :{BLACK}{DATE_LONG} STR_SNOW_LINE_UP :{BLACK}Augmenter l'altitude d'enneigement STR_SNOW_LINE_DOWN :{BLACK}Baisser l'altitude d'enneigement @@ -3081,15 +3081,15 @@ STR_PROGRESS :{WHITE}{NUM}% terminé STR_GENERATION_PROGRESS :{BLACK}{NUM} / {NUM} STR_WORLD_GENERATION :{BLACK}Création du monde -STR_TREE_GENERATION :{BLACK}Génération des arbres -STR_UNMOVABLE_GENERATION :{BLACK}Génération des non-déplacables -STR_CLEARING_TILES :{BLACK}Génération des zones rugueuses et pierreuses +STR_TREE_GENERATION :{BLACK}Création des arbres +STR_UNMOVABLE_GENERATION :{BLACK}Création des non-déplacables +STR_CLEARING_TILES :{BLACK}Création des zones rugueuses et rocheuses STR_SETTINGUP_GAME :{BLACK}Configuration du jeu STR_PREPARING_TILELOOP :{BLACK}Rafraîchissement du terrain STR_PREPARING_GAME :{BLACK}Préparation du jeu STR_DIFFICULTY_TO_CUSTOM :{WHITE}Cette action a modifié le niveau de difficulté en personnalisé STR_SE_FLAT_WORLD :{WHITE}Terrain plat -STR_SE_FLAT_WORLD_TIP :{BLACK}Générer un terrain plat +STR_SE_FLAT_WORLD_TIP :{BLACK}Créer un monde plat STR_SE_RANDOM_LAND :{WHITE}Terrain aléatoire STR_SE_NEW_WORLD :{BLACK}Nouveau scénario STR_SE_CAPTION :{WHITE}Type de scénario diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/icelandic.txt --- a/src/lang/icelandic.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/icelandic.txt Wed Feb 14 10:46:38 2007 +0000 @@ -317,8 +317,8 @@ STR_UNITS_VELOCITY_METRIC :{COMMA} km/klst STR_UNITS_VELOCITY_SI :{COMMA} m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hestöfl -STR_UNITS_POWER_METRIC :{COMMA}hestöfl +STR_UNITS_POWER_IMPERIAL :{COMMA}hö. +STR_UNITS_POWER_METRIC :{COMMA}hö. STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}tonn @@ -386,6 +386,9 @@ STR_SELECT_ALL_FACILITIES :{BLACK}Velja allar gerðir STR_SELECT_ALL_TYPES :{BLACK}Velja allar tegundir farms (einnig þær sem ekki bíða) STR_REPLACE_VEHICLES :Skipta út vögnum +STR_SEND_SHIP_TO_DEPOT :Senda í slipp +STR_SEND_AIRCRAFT_TO_HANGAR :Senda í skýli +STR_SEND_FOR_SERVICING :Senda í skoðun ############ range for months starts STR_0162_JAN :Jan @@ -602,6 +605,8 @@ STR_022A_GENERATE_RANDOM_LAND :{BLACK}Mynda til land af handahófi STR_022B_RESET_LANDSCAPE :{BLACK}Eyða landi STR_022C_RESET_LANDSCAPE :{WHITE}Eyða landi +STR_RESET_LANDSCAPE_TOOLTIP :{BLACK}Fjarlægja allar eignir leikmanna af landinu +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ertu viss um að þú viljir fjarlægja allar eignir leikmanna? STR_022E_LANDSCAPE_GENERATION :{BLACK}Landslagsgerð STR_022F_TOWN_GENERATION :{BLACK}Bæjargerð STR_0230_INDUSTRY_GENERATION :{BLACK}Iðnaðargerð @@ -706,6 +711,7 @@ STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Eyða þessum bæ algjörlega STR_0292_SAVE_SCENARIO :Vista kort STR_0293_LOAD_SCENARIO :Opna kort +STR_LOAD_HEIGHTMAP :Hlaða hæðarkorti STR_0294_QUIT_EDITOR :Hætta í kortagerð STR_0295 : STR_0296_QUIT :Hætta @@ -713,6 +719,8 @@ STR_0298_LOAD_SCENARIO :{WHITE}Opna kort STR_0299_SAVE_SCENARIO :{WHITE}Vista kort STR_029A_PLAY_SCENARIO :{BLACK}Spila kort +STR_PLAY_HEIGHTMAP :{BLACK}Spila á hæðarkorti +STR_PLAY_HEIGHTMAP_HINT :{BLACK}Hefja nýjan leik byggðan á hæðarkorti STR_QUIT_SCENARIO_QUERY :{YELLOW}Ertu viss um að þú viljir hætta í þessu korti ? STR_029C_QUIT_EDITOR :{WHITE}Hætta í kortagerð STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...aðeins hægt að byggja í bæjum með fleiri en 1200 íbúum @@ -745,7 +753,7 @@ STR_02C3_GAME_OPTIONS :Stillingar STR_02C5_DIFFICULTY_SETTINGS :Erfiðleikastig STR_02C7_CONFIG_PATCHES :Viðbætur -STR_NEWGRF_SETTINGS :Nýgrf stillingar +STR_NEWGRF_SETTINGS :NewGRF stillingar STR_GAMEOPTMENU_0A : STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Bæjarnöfn sýnd STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Stöðvarnöfn sýnd @@ -866,6 +874,7 @@ STR_TOWNNAME_DANISH :Dönsk STR_TOWNNAME_TURKISH :Tyrknesk STR_TOWNNAME_ITALIAN :Ítölsk +STR_TOWNNAME_CATALAN :Katalónsk ############ end of townname region STR_CURR_GBP :Pund (£) @@ -890,7 +899,11 @@ STR_CURR_PLN :Pólsk zloty (PLN) STR_CURR_ROL :Rúmensk leu (ROL) STR_CURR_RUR :Rússnesk rúbla (RUR) +STR_CURR_SIT :Slóvensk tolar (SIT) STR_CURR_SEK :Sænsk króna (SEK) +STR_CURR_YTL :Tyrknesk líra (YTL) +STR_CURR_SKK :Slóvakísk kórúna (SKK) +STR_CURR_BRR :Brasilísk ríla (BRL) STR_CURR_CUSTOM :Sérvalið... @@ -991,6 +1004,7 @@ STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Sameina lestarstöðvar sem byggðar eru samsíða: {ORANGE}{STRING} STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Yfirgefa stöð þegar einn farmur er fullfermdur, ef valið er 'fullferma': {ORANGE}{STRING} STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Nota endurbættan algóriþma við hleðslu: {ORANGE}{STRING} +STR_CONFIG_PATCHES_GRADUAL_LOADING :{LTBLUE}Ferma farartæki smám saman: {ORANGE}{STRING} STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Verðbólga: {ORANGE}{STRING} STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Aðeins afhlaða farmi á stöðvum þar sem er eftirspurn: {ORANGE}{STRING} STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Leyfa byggingu mjög langra brúa: {ORANGE}{STRING} @@ -1007,9 +1021,11 @@ STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Leyfilegt að múta bæjaryfirvöldum: {ORANGE}{STRING} STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Órétthyrndar lestarstöðvar leyfðar: {ORANGE}{STRING} STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Nýtt heildar-leiðarkerfi (NPF, yfirtekur NTP): {ORANGE}{STRING} +STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Margfalda þyngd farms til að líkja eftir þyngri lestum: {ORANGE}{STRING} STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Alltaf leyfa litla flugvelli: {ORANGE}{STRING} +STR_CONFIG_PATCHES_WARN_LOST_TRAIN :{LTBLUE}Láta vita ef lest týnist: {ORANGE}{STRING} STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Endurskoða skipanir farartækis: {ORANGE}{STRING} STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :nei STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :já, en útiloka kyrrstæð farartæki @@ -1026,15 +1042,32 @@ STR_CONFIG_PATCHES_LAND_GENERATOR :{LTBLUE}Landslagsmótun: {ORANGE}{STRING} STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL :Upphafleg STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE :{LTBLUE}Hámarfjarlægð olíuborpalla frá brún korts {ORANGE}{STRING} STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Hæð snjólínu: {ORANGE}{STRING} +STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN :{LTBLUE}Hrjúfleiki landslags (TerraGenesis stilling) : {ORANGE}{STRING} +STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Mjög slétt +STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH :Slétt +STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH :Hrjúft +STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Mjög hrjúft +STR_CONFIG_PATCHES_TREE_PLACER :{LTBLUE}Staðsetning trjáa: {ORANGE}{STRING} +STR_CONFIG_PATCHES_TREE_PLACER_NONE :Hvergi +STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL :Venjuleg +STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED :Endurbætt STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION :{LTBLUE}Snúningur hæðakorts: {ORANGE}{STRING} STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Rangsælis STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE :Réttsælis +STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Hæð jafnslétts lands yfir sjávarmáli: {ORANGE}{STRING} STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Dreyfing stöðva mest: {ORANGE}{STRING} {RED}Ath.: Há stilling hægir á leiknum STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Skoða þyrlur sjálfvirkt á þyrlupalli: {ORANGE}{STRING} STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Opna landmótunarglugga samhliða lestar-, vegar-, hafnar- og flugvallarframkvæmdarglugga: {ORANGE}{STRING} STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Færa sjónarhorn í öfuga átt miðað við mús: {ORANGE}{STRING} +STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Sýna mælstiku við byggingu: {ORANGE}{STRING} +STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Sýna auka litastillingar: {ORANGE}{STRING} +STR_CONFIG_PATCHES_LIVERIES_NONE :Aldrei +STR_CONFIG_PATCHES_LIVERIES_OWN :Eigin fyrirtækis +STR_CONFIG_PATCHES_LIVERIES_ALL :Allra fyrirtækja +STR_CONFIG_PATCHES_PREFER_TEAMCHAT :{LTBLUE}Not liðsspjall með : {ORANGE}{STRING} STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Lestir á leikmann mest: {ORANGE}{STRING} STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Bifreiðir á leikmann mest: {ORANGE}{STRING} @@ -1059,6 +1092,7 @@ STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Bið milli skoðana á skipum: {ORANGE}óvirkt STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Hætta skoðunum þegar bilanir eru afvirktar: {ORANGE}{STRING} STR_CONFIG_PATCHES_WAGONSPEEDLIMITS :{LTBLUE}Leyfa hraðatakmarkanir vagna: {ORANGE}{STRING} +STR_CONFIG_PATCHES_DISABLE_ELRAILS :{LTBLUE}Ekki nota rafknúnar lestir: {ORANGE}{STRING} STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}Fréttir birtast í lit: {ORANGE}{STRING} STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Upphafsár: {ORANGE}{STRING} @@ -1066,6 +1100,7 @@ STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Virkja jafnan efnahag (fleiri og minni breytingar) STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Leyfa hlutabréfakaup í öðrum fyrirtækjum STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Þegar dregið er, setja skilti á: {ORANGE}{STRING} hvern reit +STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Nota skilti í stað ljósa fyrir: {ORANGE}{STRING} STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Staðsetning tækjasláar: {ORANGE}{STRING} STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vinstri STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Miðjað @@ -1258,6 +1293,7 @@ STR_NETWORK_SERVER_OFFLINE :{SILVER}ÞJÓNN AFTENGDUR STR_NETWORK_SERVER_FULL :{SILVER}ÞJÓNN FULLUR STR_NETWORK_VERSION_MISMATCH :{SILVER}ÚTGÁFA STEMMIR EKKI +STR_NETWORK_GRF_MISMATCH :{SILVER}NEWGRF MISRÆMI STR_NETWORK_JOIN_GAME :{BLACK}Tengjast leik @@ -1362,6 +1398,7 @@ STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Enginn netbúnaður fannst eða vistþýtt án ENABLE_NETWORK STR_NETWORK_ERR_NOSERVER :{WHITE} Fann enga netleiki STR_NETWORK_ERR_NOCONNECTION :{WHITE} Þjóninn svaraði ekki fyrirspurninni +STR_NETWORK_ERR_NEWGRF_MISMATCH :{WHITE} Gat ekki tengst vegna NewGRF misræmis STR_NETWORK_ERR_DESYNC :{WHITE} Samstilling netleiks mistókst. STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Tenging við netleik glataðist. STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Gat ekki hlaðið vistuðum leik af þjóni. @@ -1383,6 +1420,7 @@ STR_NETWORK_ERR_CLIENT_SAVEGAME :gat ekki opnað kort STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :tenging rofnaði STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :samskiptavilla +STR_NETWORK_ERR_CLIENT_NEWGRF_MISMATCH :NewGRF misræmi STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :Ekki leyfilegt STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :tók á móti undarlegum pakka STR_NETWORK_ERR_CLIENT_WRONG_REVISION :röng útgáfa @@ -1410,6 +1448,7 @@ STR_NETWORK_SERVER :Þjónn STR_NETWORK_CLIENT :Notandi +STR_NETWORK_SPECTATORS :Áhorfendur STR_NETWORK_CLIENTLIST_NONE :(ekkert) STR_NETWORK_CLIENTLIST_KICK :Sparka @@ -1430,6 +1469,10 @@ ##### PNG-MAP-Loader +STR_PNGMAP_ERROR :{WHITE}Get ekki hlaðið landslagi úr PNG skrá... +STR_PNGMAP_ERR_FILE_NOT_FOUND :{WHITE}...skrá ekki til staðar. +STR_PNGMAP_ERR_IMAGE_TYPE :{WHITE}...gat ekki meðhöndlað myndsniðið. 8 eða 24 bita PNG myndir nauðsynlegar. +STR_PNGMAP_ERR_MISC :{WHITE}...eitthvað fór úrskeiðis (mögulega gölluð skrá). STR_BMPMAP_ERROR :{WHITE}Get ekki hlaðið landslagi úr BMP skrá... STR_BMPMAP_ERR_IMAGE_TYPE :{WHITE}... gat ekki breytt myndsniði. @@ -1728,13 +1771,13 @@ STR_STAT_CLASS_WAYP :Millistöð ##id 0x3800 -STR_3800_SHIP_DEPOT_ORIENTATION :{WHITE}Staða skipaslipps +STR_3800_SHIP_DEPOT_ORIENTATION :{WHITE}Staða slipps STR_3801_MUST_BE_BUILT_ON_WATER :{WHITE}...verður að byggjast á vatni -STR_3802_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Get ekki byggt skipaslipp hér... -STR_3803_SELECT_SHIP_DEPOT_ORIENTATION :{BLACK}Velja stöðu skipaslipps +STR_3802_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Get ekki reist slipp hér... +STR_3803_SELECT_SHIP_DEPOT_ORIENTATION :{BLACK}Velja stöðu slipps STR_3804_WATER :Vatn STR_3805_COAST_OR_RIVERBANK :Strönd -STR_3806_SHIP_DEPOT :Skipaslippur +STR_3806_SHIP_DEPOT :Slippur STR_3807_CAN_T_BUILD_ON_WATER :{WHITE}...Get ekki byggt á vatni ##id 0x4000 @@ -2127,7 +2170,32 @@ STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{COMPANY} hefur verið yfirtekið af {COMPANY}! STR_7080_PROTECTED :{WHITE}Þetta fyrirtæki er ekki nógu gamalt til að versla með hluti ... +STR_LIVERY_DEFAULT :Aðal litaskema +STR_LIVERY_STEAM :Gufuvagnar +STR_LIVERY_DIESEL :Díselvagnar +STR_LIVERY_ELECTRIC :Rafmagnsvagnar +STR_LIVERY_MONORAIL :Einteingungsvagnar +STR_LIVERY_MAGLEV :Segulsvifvagnar +STR_LIVERY_PASSENGER_WAGON_STEAM :Farþegavagn (Gufu) +STR_LIVERY_PASSENGER_WAGON_DIESEL :Farþegavagn (Dísel) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Farþegavagn (Rafmagns) +STR_LIVERY_FREIGHT_WAGON :Flutningsvagnar +STR_LIVERY_BUS :Strætó +STR_LIVERY_TRUCK :Flutningabílar +STR_LIVERY_PASSENGER_SHIP :Farþegaferjur +STR_LIVERY_FREIGHT_SHIP :Flutningsskip +STR_LIVERY_HELICOPTER :Þyrlur +STR_LIVERY_SMALL_PLANE :Flugvélar +STR_LIVERY_LARGE_PLANE :Þotur +STR_LIVERY_GENERAL_TIP :{BLACK}Grunnlitur fyrirtækis +STR_LIVERY_TRAIN_TIP :{BLACK}Litaskema lesta +STR_LIVERY_ROADVEH_TIP :{BLACK}Litaskema bifreiða +STR_LIVERY_SHIP_TIP :{BLACK}Litaskema skipa +STR_LIVERY_AIRCRAFT_TIP :{BLACK}Litaskema flugvéla +STR_LIVERY_PRIMARY_TIP :{BLACK}Veldu lit fyrir valda hluti á listanum +STR_LIVERY_SECONDARY_TIP :{BLACK}Veldu seinni lit fyrir valda hluti á listanum +STR_LIVERY_PANEL_TIP :{BLACK}Veldu hluti til að breyta lit á, CTRL-smelltu til að velja marga saman. Smelltu í reitinn til að virkja valinn lit. ##id 0x8000 STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Gufu) @@ -2433,10 +2501,12 @@ STR_8819_TRAIN_TOO_LONG :{WHITE}Lestin er of löng STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Aðeins er hægt að eiga við lestir þegar þær bíða í skýli STR_881B_TRAINS :{WHITE}{COMPANY} - {COMMA} Lestir + STR_881C_NEW_RAIL_VEHICLES :{WHITE}Nýir lestarvagnar STR_NEW_ELRAIL_VEHICLES :{WHITE}Nýjir rafdrifnir lestarvagnar STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Nýir einteingungsvagnar STR_881E_NEW_MAGLEV_VEHICLES :{WHITE}Nýir segullestarvagnar + STR_881F_BUILD_VEHICLE :{BLACK}Smíða vagn STR_CLONE_ROAD_VEHICLE :{BLACK}Afrita bifreið STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}Þetta býr til aðra eins bifreið. Control smelltu til að deila áætlun @@ -2507,10 +2577,10 @@ STR_SERVICE_HINT :{BLACK}Sleppa þessarri skipun nema þörf sé á viðgerð STR_8859_NEW_NOW_AVAILABLE :{BLACK}{BIGFONT}Ný {STRING} er nú fáanleg! STR_885A :{BLACK}{BIGFONT}{STRING} -STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Verð: {CURRENCY} Þyngd: {WEIGHT_S}{}Hraði: {VELOCITY} Hestöfl: {POWER}{}Rekstrarkostnaður: {CURRENCY} á ári{}Burðargeta: {CARGO} +STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Verð: {CURRENCY} Þyngd: {WEIGHT_S}{}Hraði: {VELOCITY} Afl: {POWER}{}Rekstrarkostnaður: {CURRENCY} á ári{}Burðargeta: {CARGO} STR_885C_BROKEN_DOWN :{RED}Bilaður STR_885D_AGE_RUNNING_COST_YR :{BLACK}Aldur: {LTBLUE}{STRING}{BLACK} Rekstrarkostnaður: {LTBLUE}{CURRENCY} á ári -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Þyngd: {LTBLUE}{WEIGHT_S} {BLACK}Hestöfl: {LTBLUE}{POWER}{BLACK} Hámarkshraði: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Þyngd: {LTBLUE}{WEIGHT_S} {BLACK}Afl: {LTBLUE}{POWER}{BLACK} Hámarkshraði: {LTBLUE}{VELOCITY} STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Hagnaður á þessu ári: {LTBLUE}{CURRENCY} (síðasta ár: {CURRENCY}) STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Áreiðanleiki: {LTBLUE}{COMMA}% {BLACK}Bilanir frá síðustu viðgerð: {LTBLUE}{COMMA} STR_8861_STOPPED :{RED}Stöðvaður @@ -2535,9 +2605,9 @@ STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Bíll fyrir STR_9001_ROAD_VEHICLES :{WHITE}{COMPANY} - {COMMA} Bílar STR_9002 :{WHITE}{VEHICLE} -STR_9003_ROAD_VEHICLE_DEPOT :{WHITE}{TOWN} Bílastöð +STR_9003_ROAD_VEHICLE_DEPOT :{WHITE}{TOWN} bifreiðastöð STR_9004_NEW_VEHICLES :{BLACK}Kaupa bifreiðar -STR_9006_NEW_ROAD_VEHICLES :{WHITE}Nýjir bílar +STR_9006_NEW_ROAD_VEHICLES :{WHITE}Bifreiðaúrval STR_9007_BUILD_VEHICLE :{BLACK}Kaupa bifreið STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Get ekki byggt bíl... STR_900C_DETAILS :{WHITE}{VEHICLE} (Upplýsingar) @@ -2553,10 +2623,12 @@ STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Bifreið {COMMA} bíður nú í skýli STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Er á leið til bifreiðaskýlis {TOWN} STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Er á leið til bifreiðaskýlis {TOWN}, {VELOCITY} +STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Viðhald í {TOWN} bifreiðaskýli +STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Viðhald í {TOWN} bifreiðaskýli, {VELOCITY} STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}Get ekki sent bifreið í skýli... STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Finnur ekkert nálægt skýli STR_901A_ROAD_VEHICLES_CLICK_ON :{BLACK}Bifreið - smelltu á bifreið fyrir nánari upplýsingar -STR_901B_BUILD_NEW_ROAD_VEHICLES :{BLACK}Smíða nýja bifreið (þarfnast bifreiðaskýlis) +STR_901B_BUILD_NEW_ROAD_VEHICLES :{BLACK}Bæta við bílaflota fyrirtækisins (þarfnast bifreiðaskýlis) STR_901C_CURRENT_VEHICLE_ACTION :{BLACK}Núverandi aðgerð bifreiðar - smelltu hér til að stöðva/ræsa bifreið STR_901D_SHOW_VEHICLE_S_ORDERS :{BLACK}Sýna skipanir bifreiðar STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE :{BLACK}Miðja aðalsjónarhornið á bifreið @@ -2564,7 +2636,7 @@ STR_9020_FORCE_VEHICLE_TO_TURN_AROUND :{BLACK}Þvinga bifreið til að snúa við STR_9021_SHOW_ROAD_VEHICLE_DETAILS :{BLACK}Sýna upplýsingar um bifreið STR_9022_VEHICLES_CLICK_ON_VEHICLE :{BLACK}Bifreið - smelltu á bifreið fyrir nánari upplýsingar -STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Smíða nýja bifreið +STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Bæta við bílaflota fyrirtækisins STR_9024_DRAG_ROAD_VEHICLE_TO_HERE :{BLACK}Dragðu bifreið hingað til að selja hana STR_9025_CENTER_MAIN_VIEW_ON_ROAD :{BLACK}Miðja aðalsjónarhorn á bifreiðaskýli STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}Bifreiðalisti - ýttu á bifreið fyrir nánari upplýsingar @@ -2593,6 +2665,7 @@ STR_REFIT_ROAD_VEHICLE :{BLACK}Breyta bifreið STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED :{BLACK}Breyta bifreið svo hún flytji valinn farm STR_REFIT_ROAD_VEHICLE_CAN_T :{WHITE}Get ekki breytt bifreið... +STR_ROAD_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Veldu tegund farms sem bifreið mun flytja ##id 0x9800 STR_9800_DOCK_CONSTRUCTION :Hafnarframkvæmdir @@ -2619,25 +2692,27 @@ STR_9816_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Smíðað: {LTBLUE}{NUM}{BLACK} Verðmæti: {LTBLUE}{CURRENCY} STR_9817_CAPACITY :{BLACK}Burðargeta: {LTBLUE}{CARGO} STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Get ekki stöðvað/ræst skip... -STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Get ekki sent skip í skýli... +STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Get ekki sent skip í slipp... STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Finnur ekkert nálægt skýli -STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Stefnir að {TOWN} skipaskýlinu -STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Stefnir að {TOWN} skipaskýlinu, {VELOCITY} -STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Skip {COMMA} bíður í skýli +STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Stefnir að {TOWN} slippi +STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Stefnir að {TOWN} slippi, {VELOCITY} +STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Viðhald í {TOWN} slippi +STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Viðhald í {TOWN} slippi, {VELOCITY} +STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Skip {COMMA} bíður í slippi STR_981D_BUILD_SHIP_DOCK :{BLACK}Byggja höfn -STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}Reisa skipaskýli (til að smíða og skoða skip) +STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}Reisa slipp (til að smíða og viðhalda skipum) STR_981F_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}Skip - smelltu á skip fyrir nánari upplýsingar STR_9820_BUILD_NEW_SHIP :{BLACK}Smíða nýtt skip STR_9821_DRAG_SHIP_TO_HERE_TO_SELL :{BLACK}Dragðu skip hingað til að selja það -STR_9822_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}Miðja aðalsjónarhorn á skipaskýli +STR_9822_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}Miðja aðalsjónarhorn á slipp STR_9823_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}Skip - smelltu fyrir nánari upplýsingar -STR_9824_BUILD_NEW_SHIPS_REQUIRES :{BLACK}Smíða nýtt skip (þarfnast skipaskýlis) +STR_9824_BUILD_NEW_SHIPS_REQUIRES :{BLACK}Smíða nýtt skip (þarfnast slipps) STR_9825_SHIP_SELECTION_LIST_CLICK :{BLACK}Skipalisti - smelltu á skip fyrir nánari upplýsingar STR_9826_BUILD_THE_HIGHLIGHTED_SHIP :{BLACK}Smíða valið skip STR_9827_CURRENT_SHIP_ACTION_CLICK :{BLACK}Núverandi aðgerð skips - smelltu hér til að stöðva/ræsa skipið STR_9828_SHOW_SHIP_S_ORDERS :{BLACK}Sýna skipanir skips STR_9829_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}Miðja aðalsjónarhorn á staðsetningu skips -STR_982A_SEND_SHIP_TO_DEPOT :{BLACK}Senda skipið í skipaskýli +STR_982A_SEND_SHIP_TO_DEPOT :{BLACK}Senda skipið í slipp STR_982B_SHOW_SHIP_DETAILS :{BLACK}Sýna nánari upplýsingar um skip STR_982C_NEW_SHIP_NOW_AVAILABLE :{BLACK}{BIGFONT}Nýtt skip fáanlegt! STR_982D :{BLACK}{BIGFONT}{STRING} @@ -2688,6 +2763,8 @@ STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Get ekki sent flugvél í flugskýli... STR_HEADING_FOR_HANGAR :{ORANGE}Stefnir á {STATION} flugskýli STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Stefnir á {STATION} flugskýli, {VELOCITY} +STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Viðhald í {STATION} flugskýli +STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Viðhald í {STATION} flugskýli, {VELOCITY} STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Flugvél {COMMA} bíður í flugskýli STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Flugvél er fyrir STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Get ekki stöðvað/ræst flugvél... @@ -2779,13 +2856,30 @@ STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Peningar sem þetta fyrirtæki hefur tekið að láni STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Heildarpunktar af mögulegum punktum -STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Nýgrf stillingar +STR_NEWGRF_SETTINGS_BUTTON :{BLACK}NewGRF Stillingar +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF stillingar STR_NEWGRF_APPLY_CHANGES :{BLACK}Virkja breytingar STR_NEWGRF_SET_PARAMETERS :{BLACK}Stilla breytur -STR_NEWGRF_TIP :{BLACK}Listi yfir öll nýgrf sett sem þú hefur sett inn. Smelltu til að breyta stillingunum -STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Það eru engar nýgrf skrár innsettar! Vinsamlegast skoðaðu leiðbeiningarnar fyrir upplýsingar um hvernig setja á inn nýja grafík +STR_NEWGRF_TIP :{BLACK}Listi yfir öll NewGRF sett sem þú hefur sett inn. Smelltu til að breyta stillingunum +STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Það eru engar NewGRF skrár innsettar! Vinsamlegast skoðaðu leiðbeiningarnar fyrir upplýsingar um hvernig setja á inn nýja grafík STR_NEWGRF_FILENAME :{BLACK}Skráarnafn: {SILVER}{STRING} STR_NEWGRF_GRF_ID :{BLACK}GRF einkenni: {SILVER}{STRING} +STR_NEWGRF_MD5SUM :{BLACK}MD5 summa: {SILVER}{STRING} +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Þú ert í þann mund að eiga við leik í gangi, við það gæti OpenTTD hrunið.{}Ertu viss um að þú viljir halda áfram? + +STR_NEWGRF_ADD :{BLACK}Bæta við +STR_NEWGRF_ADD_TIP :{BLACK}Bæta NewGRF skrá við listann +STR_NEWGRF_REMOVE :{BLACK}Fjarlægja +STR_NEWGRF_REMOVE_TIP :{BLACK}Fjarlægja valda NewGRF skrá af listanum +STR_NEWGRF_MOVEUP :{BLACK}Færa ofar +STR_NEWGRF_MOVEUP_TIP :{BLACK}Færa valda NewGRF skrá ofar á listann +STR_NEWGRF_MOVEDOWN :{BLACK}Færa neðar +STR_NEWGRF_MOVEDOWN_TIP :{BLACK}Færa valda NewGRF skrá neðar á listann +STR_NEWGRF_FILE_TIP :{BLACK}Listi yfir NewGRF skrár sem eru til staðar. Smelltu á skrá til að eiga við eiginleika hennar. +STR_NEWGRF_PARAMETER :{BLACK}Eiginleikar: {SILVER}{STRING} + + + STR_CURRENCY_WINDOW :{WHITE}Sérvalinn gjaldeyrir STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Gengi: {ORANGE}{CURRENCY} = £ {COMMA} @@ -2814,11 +2908,9 @@ STR_SCHEDULED_SHIPS_TIP :{BLACK}Sýna öll skip sem hafa þessa stöð á áætlun - +### depot strings -### depot strings - @@ -2849,6 +2941,7 @@ STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_SIGN_LIST_CAPTION :{WHITE}Merkjalisti - {COMMA} merki + ############ Lists rail types STR_RAIL_VEHICLES :Járnbrautavagnar @@ -2861,7 +2954,7 @@ STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA} STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Verð: {GOLD}{CURRENCY}{BLACK} Þyngd: {GOLD}{WEIGHT_S} -STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hámarkshraði: {GOLD}{VELOCITY}{BLACK} Hestöfl: {GOLD}{POWER} +STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hámarkshraði: {GOLD}{VELOCITY}{BLACK} Afl: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Hraði: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Rekstrarkostnaður: {GOLD}{CURRENCY} á ári STR_PURCHASE_INFO_CAPACITY :{BLACK}Burðargeta: {GOLD}{CARGO} {STRING} @@ -2893,4 +2986,8 @@ STR_LARGE_AIRPORTS :{BLACK}Stórir flugvellir STR_HUB_AIRPORTS :{BLACK}Háannaflugvellir STR_HELIPORTS :{BLACK}Þyrluflugvellir + +############ Tooltip measurment + + ######## diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/italian.txt --- a/src/lang/italian.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/italian.txt Wed Feb 14 10:46:38 2007 +0000 @@ -398,7 +398,7 @@ STR_AVAILABLE_TRAINS :{BLACK}Treni Disponibili STR_AVAILABLE_ROAD_VEHICLES :{BLACK}Veicoli Disponibili STR_AVAILABLE_SHIPS :{BLACK}Navi Disponibili -STR_AVAILABLE_AIRCRAFT :{BLACK}Aeromobili Disponibili +STR_AVAILABLE_AIRCRAFT :{BLACK}Aerei Disponibili STR_AVAILABLE_ENGINES_TIP :{BLACK}Mostra una lista di motrici disponibili per quel tipo di veicolo STR_MANAGE_LIST :{BLACK}Gestisci lista STR_MANAGE_LIST_TIP :{BLACK}Manda istruzioni a tutti i veicoli in questa lista @@ -1628,7 +1628,7 @@ STR_2025_SUBSIDIES :{WHITE}Sussidi STR_2026_SUBSIDIES_ON_OFFER_FOR :{BLACK}Sussidi offerti per il servizio: STR_2027_FROM_TO :{ORANGE}{STRING} da {STRING} a {STRING} -STR_2028_BY :{YELLOW} (dal {DATE_SHORT}) +STR_2028_BY :{YELLOW} (entro {DATE_SHORT}) STR_202A_NONE :{ORANGE}Nessuno STR_202B_SERVICES_ALREADY_SUBSIDISED :{BLACK}Servizi già sussidiati: STR_202C_FROM_TO :{ORANGE}{STRING} da {STATION} a {STATION}{YELLOW} ({COMPANY} @@ -2425,7 +2425,7 @@ STR_80CB_WIZZOWOW_BUBBLE_TRUCK :Camion Bolle Wizzowow STR_80CC_MPS_OIL_TANKER :Petroliera MPS STR_80CD_CS_INC_OIL_TANKER :Petroliera CS-Inc. -STR_80CE_MPS_PASSENGER_FERRY :Traghetto FFP +STR_80CE_MPS_PASSENGER_FERRY :Traghetto MPS STR_80CF_FFP_PASSENGER_FERRY :Traghetto FFP STR_80D0_BAKEWELL_300_HOVERCRAFT :Hovercraft Bakewell 300 STR_80D1_CHUGGER_CHUG_PASSENGER :Traghetto Chugger-Chug diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/lithuanian.txt --- a/src/lang/lithuanian.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/lithuanian.txt Wed Feb 14 10:46:38 2007 +0000 @@ -329,6 +329,7 @@ STR_0141_LOAD_GAME :{BLACK}Atverti žaidimą STR_SINGLE_PLAYER :{BLACK}Vienas zaidejas STR_MULTIPLAYER :{BLACK}Žaidimas tinkle +STR_SCENARIO_EDITOR :{BLACK}Scenarijaus redaktorius STR_64 :64 STR_128 :128 @@ -428,6 +429,10 @@ STR_NO_WAITING_CARGO :{BLACK}Jokiu kroviniu nera pakrovimui STR_SELECT_ALL_FACILITIES :{BLACK}Pazymeti visus pastatus STR_SELECT_ALL_TYPES :{BLACK}Pazymeti visus krovinio tipus (iskaitant nelaukiancius kroviniu) +STR_AVAILABLE_TRAINS :{BLACK}Galimi traukiniai +STR_AVAILABLE_ROAD_VEHICLES :{BLACK}Galimi automobiliai +STR_AVAILABLE_SHIPS :{BLACK}Galimi laivai +STR_AVAILABLE_AIRCRAFT :{BLACK}Galimi lėktuvai STR_AVAILABLE_ENGINES_TIP :{BLACK}Peržiūrėti galimų variklių sąrašą tinkamų šiai transporto priemonei. STR_MANAGE_LIST :{BLACK}Tvarkyti sąrašą STR_MANAGE_LIST_TIP :{BLACK}Siųsti nurodymus visoms šio sąrašo tr. priemonėms @@ -653,6 +658,8 @@ STR_022A_GENERATE_RANDOM_LAND :{BLACK}Kurti atsitiktinę sausumą STR_022B_RESET_LANDSCAPE :{BLACK}Anuliuoti kraštovaizdį STR_022C_RESET_LANDSCAPE :{WHITE}Anuliuoti kraštovaizdį +STR_RESET_LANDSCAPE_TOOLTIP :{BLACK}Pašalinti visas žaidėjo turimas transporto priemones nuo žemėlapio +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ar tikrai norite pašalinti visas žaidėjo turimas transporto priemones? STR_022E_LANDSCAPE_GENERATION :{BLACK}Kraštovaizdžio kūrimas STR_022F_TOWN_GENERATION :{BLACK}Miesto įkūrimas STR_0230_INDUSTRY_GENERATION :{BLACK}Pramonės kūrimas @@ -757,6 +764,7 @@ STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Šalinti šį miestą STR_0292_SAVE_SCENARIO :Išsaugoti scenarijų STR_0293_LOAD_SCENARIO :Atverti scenarijų +STR_LOAD_HEIGHTMAP :Atverti aukščių žemėlapį STR_0294_QUIT_EDITOR :Uždaryti redaktoriu STR_0295 : STR_0296_QUIT :Išeiti @@ -1145,6 +1153,7 @@ STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Tolygi ekonomika (daug, bet nezymiu pokyciu) STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Leisti pirkti kitų kompanijų akcijas STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Tempiant, kopijuoti šviesoforus kas: {ORANGE}{STRING} langel{P į lius lių} +STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Automatiškai pastatyti semaforus prieš: {ORANGE}{STRING} STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Pagrindines irankiu juostos pozicija: {ORANGE}{STRING} STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Kaireje STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centruoti @@ -1442,6 +1451,7 @@ STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Nerastas tinklo irenginys arba sukompiliuota be ENABLE_NETWORK STR_NETWORK_ERR_NOSERVER :{WHITE} Nerado nei vieno zidimo tinkle STR_NETWORK_ERR_NOCONNECTION :{WHITE} Serveris neatsake i uzklausa +STR_NETWORK_ERR_NEWGRF_MISMATCH :{WHITE} Nepavyko prisijungti dėl Papild. grafikos neatitikimo STR_NETWORK_ERR_DESYNC :{WHITE} Zaidimo tinkle sinchronizacija nepavyko STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Nutruko rysys STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Negali atverti issaugoto zaidimo @@ -1463,6 +1473,7 @@ STR_NETWORK_ERR_CLIENT_SAVEGAME :negali uzkrauti zemelapio STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :prarastas rysys STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protokolo klaida +STR_NETWORK_ERR_CLIENT_NEWGRF_MISMATCH :Papild. grafikos neatitikimas STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :Ne autorizuota STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :gautas neteisingas paketas STR_NETWORK_ERR_CLIENT_WRONG_REVISION :bloga versija @@ -1679,7 +1690,7 @@ STR_2042_DO_IT :{BLACK}Pirmyn! STR_2043_LIST_OF_THINGS_TO_DO_AT :{BLACK}Sąrašas veiksmų, kuriuos galima atlikti šiame mieste - spragtelėjus pavadinimą, pateikiama daugiau informacijos STR_2044_CARRY_OUT_THE_HIGHLIGHTED :{BLACK}Atlikti aukščiau pasirinktą veiksmą -STR_2045_ACTIONS_AVAILABLE :{BLACK}Galimos akcijos: +STR_2045_ACTIONS_AVAILABLE :{BLACK}Galimi veiksmai: STR_2046_SMALL_ADVERTISING_CAMPAIGN :Maža reklamos kompanija STR_2047_MEDIUM_ADVERTISING_CAMPAIGN :Vidutinė reklamos kompanija STR_2048_LARGE_ADVERTISING_CAMPAIGN :Didelė reklamos kompanija diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/portuguese.txt --- a/src/lang/portuguese.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/portuguese.txt Wed Feb 14 10:46:38 2007 +0000 @@ -116,36 +116,36 @@ STR_QUANTITY_FIZZY_DRINKS :{COMMA} bebida{P "" s} gasosa{P "" s} STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINYFONT}PS -STR_ABBREV_COAL :{TINYFONT}CL -STR_ABBREV_MAIL :{TINYFONT}ML -STR_ABBREV_OIL :{TINYFONT}OL -STR_ABBREV_LIVESTOCK :{TINYFONT}LV -STR_ABBREV_GOODS :{TINYFONT}GD -STR_ABBREV_GRAIN :{TINYFONT}GR -STR_ABBREV_WOOD :{TINYFONT}WD -STR_ABBREV_IRON_ORE :{TINYFONT}OR -STR_ABBREV_STEEL :{TINYFONT}ST +STR_ABBREV_COAL :{TINYFONT}CV +STR_ABBREV_MAIL :{TINYFONT}CR +STR_ABBREV_OIL :{TINYFONT}PT +STR_ABBREV_LIVESTOCK :{TINYFONT}GD +STR_ABBREV_GOODS :{TINYFONT}BN +STR_ABBREV_GRAIN :{TINYFONT}CR +STR_ABBREV_WOOD :{TINYFONT}MD +STR_ABBREV_IRON_ORE :{TINYFONT}FR +STR_ABBREV_STEEL :{TINYFONT}AÇ STR_ABBREV_VALUABLES :{TINYFONT}VL STR_ABBREV_COPPER_ORE :{TINYFONT}CO -STR_ABBREV_MAIZE :{TINYFONT}MZ +STR_ABBREV_MAIZE :{TINYFONT}ML STR_ABBREV_FRUIT :{TINYFONT}FT STR_ABBREV_DIAMONDS :{TINYFONT}DM -STR_ABBREV_FOOD :{TINYFONT}FD -STR_ABBREV_PAPER :{TINYFONT}PR -STR_ABBREV_GOLD :{TINYFONT}GD -STR_ABBREV_WATER :{TINYFONT}WR -STR_ABBREV_WHEAT :{TINYFONT}WH -STR_ABBREV_RUBBER :{TINYFONT}RB -STR_ABBREV_SUGAR :{TINYFONT}SG +STR_ABBREV_FOOD :{TINYFONT}CM +STR_ABBREV_PAPER :{TINYFONT}PP +STR_ABBREV_GOLD :{TINYFONT}OU +STR_ABBREV_WATER :{TINYFONT}AG +STR_ABBREV_WHEAT :{TINYFONT}TR +STR_ABBREV_RUBBER :{TINYFONT}BR +STR_ABBREV_SUGAR :{TINYFONT}AÇ STR_ABBREV_TOYS :{TINYFONT}TY -STR_ABBREV_SWEETS :{TINYFONT}SW +STR_ABBREV_SWEETS :{TINYFONT}DC STR_ABBREV_COLA :{TINYFONT}CL -STR_ABBREV_CANDYFLOSS :{TINYFONT}CF -STR_ABBREV_BUBBLES :{TINYFONT}BU -STR_ABBREV_TOFFEE :{TINYFONT}TF +STR_ABBREV_CANDYFLOSS :{TINYFONT}AD +STR_ABBREV_BUBBLES :{TINYFONT}BO +STR_ABBREV_TOFFEE :{TINYFONT}CM STR_ABBREV_BATTERIES :{TINYFONT}BA STR_ABBREV_PLASTIC :{TINYFONT}PL -STR_ABBREV_FIZZY_DRINKS :{TINYFONT}FZ +STR_ABBREV_FIZZY_DRINKS :{TINYFONT}BG STR_ABBREV_NONE :{TINYFONT}NÃO STR_ABBREV_ALL :{TINYFONT}TUDO STR_00AE :{WHITE}{DATE_SHORT} diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/slovak.txt --- a/src/lang/slovak.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/slovak.txt Wed Feb 14 10:46:38 2007 +0000 @@ -8,24 +8,24 @@ ##id 0x0000 STR_NULL : STR_0001_OFF_EDGE_OF_MAP :{WHITE}Za okrajom mapy -STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Prilis blizko okraja mapy -STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Mala hotovost - potrebna {CURRENCY} +STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Príliš blízko okraja mapy +STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Malá hotovost - potrebných {CURRENCY} STR_0004 :{WHITE}{CURRENCY64} STR_0005 :{RED}{CURRENCY64} STR_EMPTY : -STR_0007_FLAT_LAND_REQUIRED :{WHITE}Potrebny rovny teren +STR_0007_FLAT_LAND_REQUIRED :{WHITE}Potrebný rovný terén STR_0008_WAITING :{BLACK}Caka: {WHITE}{STRING} STR_0009 :{WHITE}{CARGO} STR_000A_EN_ROUTE_FROM :{WHITE}{CARGO}{YELLOW} (na ceste z STR_000B :{YELLOW}{STATION}) -STR_000C_ACCEPTS :{BLACK}Prijima: {WHITE} -STR_000D_ACCEPTS :{BLACK}Prijima: {GOLD} +STR_000C_ACCEPTS :{BLACK}Prijíma: {WHITE} +STR_000D_ACCEPTS :{BLACK}Prijíma: {GOLD} STR_000E : -STR_000F_PASSENGERS :Cestujucich +STR_000F_PASSENGERS :Cestujúcich STR_000F_PASSENGERS.g :cestujucich STR_0010_COAL :Uhlie STR_0010_COAL.g :uhlia -STR_0011_MAIL :Postu +STR_0011_MAIL :Poštu STR_0011_MAIL.g :posty STR_0012_OIL :Ropu STR_0012_OIL.g :ropy @@ -37,13 +37,13 @@ STR_0015_GRAIN.g :obilia STR_0016_WOOD :Drevo STR_0016_WOOD.g :dreva -STR_0017_IRON_ORE :Zeleznu rudu +STR_0017_IRON_ORE :Železnú rudu STR_0017_IRON_ORE.g :zeleznej rudy STR_0018_STEEL :Ocel STR_0018_STEEL.g :ocele STR_0019_VALUABLES :Cennosti STR_0019_VALUABLES.g :cennosti -STR_001A_COPPER_ORE :Medenna ruda +STR_001A_COPPER_ORE :Medenná ruda STR_001A_COPPER_ORE.g :medennej rudy STR_001B_MAIZE :Kukuricu STR_001B_MAIZE.g :kukurice @@ -84,7 +84,7 @@ STR_002D_FIZZY_DRINKS :Sumienku STR_002D_FIZZY_DRINKS.g :sumienky STR_002E : -STR_002F_PASSENGER :Cestujuci +STR_002F_PASSENGER :Cestujúci STR_002F_PASSENGER.g :cestujucich STR_0030_COAL :Uhlie STR_0030_COAL.g :uhlia @@ -100,13 +100,13 @@ STR_0035_GRAIN.g :obilia STR_0036_WOOD :Drevo STR_0036_WOOD.g :dreva -STR_0037_IRON_ORE :Zelezna ruda +STR_0037_IRON_ORE :Železná ruda STR_0037_IRON_ORE.g :zeleznej rudy STR_0038_STEEL :Ocel STR_0038_STEEL.g :ocele STR_0039_VALUABLES :Cennosti STR_0039_VALUABLES.g :cennosti -STR_003A_COPPER_ORE :Medenna ruda +STR_003A_COPPER_ORE :Medenná ruda STR_003A_COPPER_ORE.g :medennej rudy STR_003B_MAIZE :Kukurica STR_003B_MAIZE.g :kukurice @@ -165,7 +165,7 @@ STR_QUANTITY_FOOD :{WEIGHT} jedla STR_QUANTITY_PAPER :{WEIGHT} papiera STR_QUANTITY_GOLD :{COMMA} deb{P na ny ien} zlata -STR_QUANTITY_WATER :{VOLUME} voda +STR_QUANTITY_WATER :{VOLUME} vody STR_QUANTITY_WHEAT :{WEIGHT} psenice STR_QUANTITY_RUBBER :{VOLUME} kaucuk STR_QUANTITY_SUGAR :{WEIGHT} cukru @@ -216,12 +216,12 @@ STR_00AF :{WHITE}{DATE_LONG} STR_00B0_MAP :{WHITE}Mapa - {STRING} STR_00B1_GAME_OPTIONS :{WHITE}Nastavenia hry -STR_00B2_MESSAGE :{YELLOW}Sprava -STR_00B3_MESSAGE_FROM :{YELLOW}Sprava od {STRING} +STR_00B2_MESSAGE :{YELLOW}Správa +STR_00B3_MESSAGE_FROM :{YELLOW}Správa od {STRING} STR_POPUP_CAUTION_CAPTION :{WHITE}Upozornenie! -STR_00B4_CAN_T_DO_THIS :{WHITE}Nie je mozne vykonat ... -STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Oblast nie je mozne vycistit ... -STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Povodny copyright: {COPYRIGHT} 1995 Chris Sawyer, vsetky prava vyhradene +STR_00B4_CAN_T_DO_THIS :{WHITE}Nie je možné vykonat ... +STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Oblast nie je možné vycistit ... +STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Povodný copyright: {COPYRIGHT} 1995 Chris Sawyer, vsetky prava vyhradene STR_00B7_VERSION :{BLACK}OpenTTD verzia {REV} STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2007 team OpenTTD STR_TRANSLATED_BY :{BLACK} Preklad - Lukas Lengyel & gpsoft @@ -229,78 +229,78 @@ STR_00C5 :{BLACK}{CROSS} STR_00C6 :{SILVER}{CROSS} STR_00C7_QUIT :{WHITE}Koniec -STR_00C8_YES :{BLACK}Ano +STR_00C8_YES :{BLACK}Áno STR_00C9_NO :{BLACK}Nie -STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Si si isty ze chces ukoncit hru a vratit sa do {STRING}? +STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Si si istý že chces ukoncit hru a vrátit sa do {STRING}? STR_00CB_1 :{BLACK}1 STR_00CC_2 :{BLACK}2 STR_00CD_3 :{BLACK}3 STR_00CE_4 :{BLACK}4 STR_00CF_5 :{BLACK}5 STR_00D0_NOTHING :Nic -STR_00D1_DARK_BLUE :Tmavomodra -STR_00D2_PALE_GREEN :Svetlozelena -STR_00D3_PINK :Ruzova -STR_00D4_YELLOW :Zlta -STR_00D5_RED :Cervena -STR_00D6_LIGHT_BLUE :Svetlomodra -STR_00D7_GREEN :Zelena -STR_00D8_DARK_GREEN :Tmavozelena -STR_00D9_BLUE :Modra -STR_00DA_CREAM :Kremova -STR_00DB_MAUVE :Ruzova -STR_00DC_PURPLE :Fialova -STR_00DD_ORANGE :Oranzova -STR_00DE_BROWN :Hneda -STR_00DF_GREY :Seda +STR_00D1_DARK_BLUE :Tmavomodrá +STR_00D2_PALE_GREEN :Svetlozelená +STR_00D3_PINK :Ružová +STR_00D4_YELLOW :Žltá +STR_00D5_RED :Cervená +STR_00D6_LIGHT_BLUE :Svetlomodrá +STR_00D7_GREEN :Zelená +STR_00D8_DARK_GREEN :Tmavozelená +STR_00D9_BLUE :Modrá +STR_00DA_CREAM :Krémová +STR_00DB_MAUVE :Ružová +STR_00DC_PURPLE :Fialová +STR_00DD_ORANGE :Oranžová +STR_00DE_BROWN :Hnedá +STR_00DF_GREY :Sedá STR_00E0_WHITE :Biela -STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}V hre je prilis vela dopravnych prostriedkov +STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}V hre je prílis vela dopravných prostriedkov STR_00E2 :{BLACK}{COMMA} STR_00E3 :{RED}{COMMA} -STR_00E4_LOCATION :{BLACK}Pozicia +STR_00E4_LOCATION :{BLACK}Pozícia STR_00E5_CONTOURS :Vrstevnice -STR_00E6_VEHICLES :Dopravne Prostriedky +STR_00E6_VEHICLES :Dopravné prostriedky STR_00E7_INDUSTRIES :Priemysel STR_00E8_ROUTES :Trasy -STR_00E9_VEGETATION :Vegetacia -STR_00EA_OWNERS :Vlastnici +STR_00E9_VEGETATION :Vegetácia +STR_00EA_OWNERS :Vlastníci STR_00EB_ROADS :{BLACK}{TINYFONT}Cesty -STR_00EC_RAILROADS :{BLACK}{TINYFONT}Zeleznicne drahy -STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}Stanice/Letiska/Pristavy -STR_00EE_BUILDINGS_INDUSTRIES :{BLACK}{TINYFONT}Budovy/Tovarne -STR_00EF_VEHICLES :{BLACK}{TINYFONT}Dopravne Prostriedky +STR_00EC_RAILROADS :{BLACK}{TINYFONT}Železnicné trate +STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}Stanice/Letiská/Prístavy +STR_00EE_BUILDINGS_INDUSTRIES :{BLACK}{TINYFONT}Budovy/Priemysel +STR_00EF_VEHICLES :{BLACK}{TINYFONT}Dopravné prostriedky STR_00F0_100M :{BLACK}{TINYFONT}100m STR_00F1_200M :{BLACK}{TINYFONT}200m STR_00F2_300M :{BLACK}{TINYFONT}300m STR_00F3_400M :{BLACK}{TINYFONT}400m STR_00F4_500M :{BLACK}{TINYFONT}500m STR_00F5_TRAINS :{BLACK}{TINYFONT}Vlaky -STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Auta +STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Cestné vozidlá STR_00F7_SHIPS :{BLACK}{TINYFONT}Lode -STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Lietadla -STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Dopravne Trasy -STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Uholna bana -STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Elektraren +STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Lietadlá +STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Dopravné trasy +STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Uholná bana +STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Elektráren STR_00FC_FOREST :{BLACK}{TINYFONT}Les -STR_00FD_SAWMILL :{BLACK}{TINYFONT}Pila -STR_00FE_OIL_REFINERY :{BLACK}{TINYFONT}Ropna rafineria +STR_00FD_SAWMILL :{BLACK}{TINYFONT}Píla +STR_00FE_OIL_REFINERY :{BLACK}{TINYFONT}Ropná rafinéria STR_00FF_FARM :{BLACK}{TINYFONT}Farma -STR_0100_FACTORY :{BLACK}{TINYFONT}Tovaren +STR_0100_FACTORY :{BLACK}{TINYFONT}Továren STR_0101_PRINTING_WORKS :{BLACK}{TINYFONT}Tlaciaren -STR_0102_OIL_WELLS :{BLACK}{TINYFONT}Ropny vrt -STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Zelezorudna bana +STR_0102_OIL_WELLS :{BLACK}{TINYFONT}Ropné vrty +STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Železorudná bana STR_0104_STEEL_MILL :{BLACK}{TINYFONT}Oceliaren STR_0105_BANK :{BLACK}{TINYFONT}Banka -STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Vyroba papiera -STR_0107_GOLD_MINE :{BLACK}{TINYFONT}Zlata bana -STR_0108_FOOD_PROCESSING_PLANT :{BLACK}{TINYFONT}Vyroba potravin -STR_0109_DIAMOND_MINE :{BLACK}{TINYFONT}Diamantova bana -STR_010A_COPPER_ORE_MINE :{BLACK}{TINYFONT}Medenna bana -STR_010B_FRUIT_PLANTATION :{BLACK}{TINYFONT}Ovocny sad -STR_010C_RUBBER_PLANTATION :{BLACK}{TINYFONT}Kaucukova plantaz -STR_010D_WATER_SUPPLY :{BLACK}{TINYFONT}Vodny zdroj +STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Výroba papiera +STR_0107_GOLD_MINE :{BLACK}{TINYFONT}Zlatá bana +STR_0108_FOOD_PROCESSING_PLANT :{BLACK}{TINYFONT}Výroba potravín +STR_0109_DIAMOND_MINE :{BLACK}{TINYFONT}Diamantová bana +STR_010A_COPPER_ORE_MINE :{BLACK}{TINYFONT}Medenná bana +STR_010B_FRUIT_PLANTATION :{BLACK}{TINYFONT}Ovocný sad +STR_010C_RUBBER_PLANTATION :{BLACK}{TINYFONT}Kaucuková plantáž +STR_010D_WATER_SUPPLY :{BLACK}{TINYFONT}Vodný zdroj STR_010E_WATER_TOWER :{BLACK}{TINYFONT}Vodojem -STR_010F_LUMBER_MILL :{BLACK}{TINYFONT}Pila +STR_010F_LUMBER_MILL :{BLACK}{TINYFONT}Píla STR_0110_COTTON_CANDY_FOREST :{BLACK}{TINYFONT}Les cukrovej vaty STR_0111_CANDY_FACTORY :{BLACK}{TINYFONT}Cukrovar STR_0112_BATTERY_FARM :{BLACK}{TINYFONT}Vyroba baterii @@ -312,30 +312,30 @@ STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}Bublifuk STR_0119_TOFFEE_QUARRY :{BLACK}{TINYFONT}Karamelovy lom STR_011A_SUGAR_MINE :{BLACK}{TINYFONT}Cukrova bana -STR_011B_RAILROAD_STATION :{BLACK}{TINYFONT}Zeleznicna stanica +STR_011B_RAILROAD_STATION :{BLACK}{TINYFONT}Železnicná stanica STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Nakladacia rampa -STR_011D_BUS_STATION :{BLACK}{TINYFONT}Autobusova zastavka +STR_011D_BUS_STATION :{BLACK}{TINYFONT}Autobusová stanica STR_011E_AIRPORT_HELIPORT :{BLACK}{TINYFONT}Letisko -STR_011F_DOCK :{BLACK}{TINYFONT}Pristav -STR_0120_ROUGH_LAND :{BLACK}{TINYFONT}Hruby teren -STR_0121_GRASS_LAND :{BLACK}{TINYFONT}Travnaty teren -STR_0122_BARE_LAND :{BLACK}{TINYFONT}Holy teren +STR_011F_DOCK :{BLACK}{TINYFONT}Prístav +STR_0120_ROUGH_LAND :{BLACK}{TINYFONT}Nerovný terén +STR_0121_GRASS_LAND :{BLACK}{TINYFONT}Trávnatý terén +STR_0122_BARE_LAND :{BLACK}{TINYFONT}Holý terén STR_0123_FIELDS :{BLACK}{TINYFONT}Polia STR_0124_TREES :{BLACK}{TINYFONT}Lesy STR_0125_ROCKS :{BLACK}{TINYFONT}Skaly STR_0126_WATER :{BLACK}{TINYFONT}Voda -STR_0127_NO_OWNER :{BLACK}{TINYFONT}Bez vlastnika -STR_0128_TOWNS :{BLACK}{TINYFONT}Mesta +STR_0127_NO_OWNER :{BLACK}{TINYFONT}Bez vlastníka +STR_0128_TOWNS :{BLACK}{TINYFONT}Mestá STR_0129_INDUSTRIES :{BLACK}{TINYFONT}Priemysel -STR_012A_DESERT :{BLACK}{TINYFONT}Pust +STR_012A_DESERT :{BLACK}{TINYFONT}Púšt STR_012B_SNOW :{BLACK}{TINYFONT}Sneh -STR_012C_MESSAGE :{WHITE}Sprava +STR_012C_MESSAGE :{WHITE}Správa STR_012D :{WHITE}{STRING} -STR_012E_CANCEL :{BLACK}Zrusit +STR_012E_CANCEL :{BLACK}Zrušit STR_012F_OK :{BLACK}OK STR_0130_RENAME :{BLACK}Premenovat -STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Pouzitych prilis vela mien -STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Vybrane meno je uz pouzite +STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Použitých príliš vela mien +STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Vybrané meno je už použité STR_0133_WINDOWS :Windows STR_0134_UNIX :Unix @@ -345,14 +345,14 @@ STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 -STR_013B_OWNED_BY :{WHITE}...vlastnik {STRING} -STR_013C_CARGO :{BLACK}Naklad -STR_013D_INFORMATION :{BLACK}Informacie +STR_013B_OWNED_BY :{WHITE}... vlastníkom je {STRING} +STR_013C_CARGO :{BLACK}Náklad +STR_013D_INFORMATION :{BLACK}Informácie STR_013E_CAPACITIES :{BLACK}Kapacita -STR_013E_TOTAL_CARGO :{BLACK}Celkovy naklad +STR_013E_TOTAL_CARGO :{BLACK}Celkový náklad STR_013F_CAPACITY :{BLACK}Kapacita: {LTBLUE}{CARGO} STR_CAPACITY_MULT :{BLACK}Kapacita: {LTBLUE}{CARGO} (x{NUM}) -STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Celkovy naklad (kapacita) tohoto vlaku: +STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Celkový náklad (kapacita) tohto vlaku: STR_013F_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO}) STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM}) STR_0140_NEW_GAME :{BLACK}Nová hra @@ -374,7 +374,7 @@ STR_0150_SOMEONE :niekto{SKIP}{SKIP} STR_0151_MAP_OF_WORLD :Mapa sveta STR_0152_TOWN_DIRECTORY :Zoznam miest -STR_0153_SUBSIDIES :Dotacie +STR_0153_SUBSIDIES :Dotácie STR_UNITS_IMPERIAL :Imperialne STR_UNITS_METRIC :Metricke @@ -409,18 +409,18 @@ STR_UNITS_FORCE_SI :{COMMA} kN ############ range for menu starts -STR_0154_OPERATING_PROFIT_GRAPH :Graf prevadzkoveho zisku -STR_0155_INCOME_GRAPH :Graf trzieb -STR_0156_DELIVERED_CARGO_GRAPH :Graf prepraveneho nakladu -STR_0157_PERFORMANCE_HISTORY_GRAPH :Graf hodnotenia vykonu +STR_0154_OPERATING_PROFIT_GRAPH :Graf prevádzkového zisku +STR_0155_INCOME_GRAPH :Graf tržieb +STR_0156_DELIVERED_CARGO_GRAPH :Graf prepraveného nákladu +STR_0157_PERFORMANCE_HISTORY_GRAPH :Graf hodnotenia výkonu STR_0158_COMPANY_VALUE_GRAPH :Graf hodnoty spolocnosti STR_0159_CARGO_PAYMENT_RATES :Ceny prepravy -STR_015A_COMPANY_LEAGUE_TABLE :Hodnotenie spolocnosti +STR_015A_COMPANY_LEAGUE_TABLE :Hodnotenie spolocností STR_PERFORMANCE_DETAIL_MENU :Detailny rating vykonu ############ range for menu ends STR_015B_OPENTTD :{WHITE}OpenTTD -STR_015C_SAVE_GAME :Ulozit hru +STR_015C_SAVE_GAME :Uložit hru STR_015D_LOAD_GAME :Nahrat hru STR_015E_QUIT_GAME :Ukoncit hru STR_015F_QUIT :Ukoncit OpenTTD @@ -492,49 +492,49 @@ STR_016F :{TINYFONT}{STRING}{} {STRING}{}{NUM} STR_0170 :{TINYFONT}{STRING}- STR_0171_PAUSE_GAME :{BLACK}Pauza -STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}Ulozit hru, opustit hru, ukoncit program -STR_0173_DISPLAY_LIST_OF_COMPANY :{BLACK}Zoznam stanic spolocnosti +STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}Uložit hru, opustit hru, ukoncit program +STR_0173_DISPLAY_LIST_OF_COMPANY :{BLACK}Zoznam staníc spolocnosti STR_0174_DISPLAY_MAP :{BLACK}Zobrazit mapu STR_0175_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Zobrazit mapu, zoznam miest STR_0176_DISPLAY_TOWN_DIRECTORY :{BLACK}Zobrazit zoznam miest -STR_0177_DISPLAY_COMPANY_FINANCES :{BLACK}Financne informacie o spolocnosti -STR_0178_DISPLAY_COMPANY_GENERAL :{BLACK}Informacie o spolocnosti +STR_0177_DISPLAY_COMPANY_FINANCES :{BLACK}Financné informécie o spolocnosti +STR_0178_DISPLAY_COMPANY_GENERAL :{BLACK}Informácie o spolocnosti STR_0179_DISPLAY_GRAPHS :{BLACK}Grafy -STR_017A_DISPLAY_COMPANY_LEAGUE :{BLACK}Hodnotenie spolocnosti +STR_017A_DISPLAY_COMPANY_LEAGUE :{BLACK}Hodnotenie spolocností STR_017B_DISPLAY_LIST_OF_COMPANY :{BLACK}Zoznam vlakov STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}Zoznam automobilov -STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Zoznam lodi +STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Zoznam lodí STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Zoznam lietadiel -STR_017F_ZOOM_THE_VIEW_IN :{BLACK}Priblizit +STR_017F_ZOOM_THE_VIEW_IN :{BLACK}Priblížit STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Oddialit -STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Vystavba zeleznice -STR_0182_BUILD_ROADS :{BLACK}Vystavba ciest -STR_0183_BUILD_SHIP_DOCKS :{BLACK}Vystavba pristavov -STR_0184_BUILD_AIRPORTS :{BLACK}Vystavba letisk -STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}Vysadba stromov, rezervacia pozemku -STR_0186_LAND_BLOCK_INFORMATION :{BLACK}Informacie o pozemku +STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Výstavba železnice +STR_0182_BUILD_ROADS :{BLACK}Výstavba ciest +STR_0183_BUILD_SHIP_DOCKS :{BLACK}Výstavba prístavov +STR_0184_BUILD_AIRPORTS :{BLACK}Výstavba letísk +STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}Výsadba stromov, kúpa pozemku, ... +STR_0186_LAND_BLOCK_INFORMATION :{BLACK}Informácie o pozemku STR_0187_OPTIONS :{BLACK}Nastavenia STR_0188 :{BLACK}{SMALLUPARROW} STR_0189 :{BLACK}{SMALLDOWNARROW} -STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nieje mozne zmenit servisny interval... +STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nie je možné zmenit servisný interval ... STR_018B_CLOSE_WINDOW :{BLACK}Zavriet okno STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Nadpis okna - potiahni pre posun okna STR_STICKY_BUTTON :{BLACK}Oznacit toto okno, aby sa nedalo zatvorit klavesou 'Zavri vsetky okna' STR_RESIZE_BUTTON :{BLACK}Uchop a tahaj pre zmenu velkosti okna STR_SAVELOAD_HOME_BUTTON :{BLACK}Kliknutim sem sa presuniete do sucasneho vychodzieho adresara pre ukladanie -STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Zburanie budov, cistenie terenu -STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Znizit roh terenu -STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Zvysit roh terenu -STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}Navigacna lista +STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolácia budov, úprava terénu, ... +STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Znížit roh terénu +STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Zvýšit roh terénu +STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}Navigacná lišta STR_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Navigacna lista - posuva vypis dolava/doprava STR_0191_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Zobrazit vrstevnice na mape -STR_0192_SHOW_VEHICLES_ON_MAP :{BLACK}Zobrazit dopravne prostriedky na mape +STR_0192_SHOW_VEHICLES_ON_MAP :{BLACK}Zobrazit dopravné prostriedky na mape STR_0193_SHOW_INDUSTRIES_ON_MAP :{BLACK}Zobrazit priemysel na mape -STR_0194_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Zobrazit dopravne trasy na mape -STR_0195_SHOW_VEGETATION_ON_MAP :{BLACK}Zobrazit vegetaciu na mape -STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Zobrazit vlastnikov pozemkov na mape -STR_0197_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Zapnut / Vypnut nazvy miest na mape -STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}Zisk tento rok: {CURRENCY} (posledny rok: {CURRENCY}) +STR_0194_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Zobrazit dopravné trasy na mape +STR_0195_SHOW_VEGETATION_ON_MAP :{BLACK}Zobrazit vegetáciu na mape +STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Zobrazit vlastníkov pozemkov na mape +STR_0197_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Zapnút / Vypnút názvy miest na mape +STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}Zisk tento rok: {CURRENCY} (posledný rok: {CURRENCY}) ############ range for service numbers starts STR_AGE :{COMMA} rok{P "" y ov} ({COMMA}) @@ -545,21 +545,21 @@ STR_019D_AIRCRAFT :{G=s}Lietadlo STR_019E_SHIP :{G=z}Lod STR_019F_TRAIN :{G=m}Vlak -STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA} je star{G y a e} -STR_01A1_IS_GETTING_VERY_OLD :{WHITE}{STRING} {COMMA} je velmi star{G y a e} -STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA} je velmi star{G y a e} a potrebuje vymenit -STR_01A3_LAND_AREA_INFORMATION :{WHITE}Informacie o pozemku -STR_01A4_COST_TO_CLEAR_N_A :{BLACK}Naklady na odstranenie: {LTBLUE}N/A -STR_01A5_COST_TO_CLEAR :{BLACK}Naklady na odstranenie: {LTBLUE}{CURRENCY} -STR_01A6_N_A :Nezname -STR_01A7_OWNER :{BLACK}Vlastnik: {LTBLUE}{STRING} -STR_01A8_LOCAL_AUTHORITY :{BLACK}Miestna sprava: {LTBLUE}{STRING} -STR_01A9_NONE :Nezname +STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA} je star{G ý á é} +STR_01A1_IS_GETTING_VERY_OLD :{WHITE}{STRING} {COMMA} je velmi star{G ý á é} +STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA} je velmi star{G ý á é} a potrebuje vymenit +STR_01A3_LAND_AREA_INFORMATION :{WHITE}Informácie o pozemku +STR_01A4_COST_TO_CLEAR_N_A :{BLACK}Náklady na odstránenie: {LTBLUE}N/A +STR_01A5_COST_TO_CLEAR :{BLACK}Náklady na odstránenie: {LTBLUE}{CURRENCY} +STR_01A6_N_A :Neznáme +STR_01A7_OWNER :{BLACK}Vlastník: {LTBLUE}{STRING} +STR_01A8_LOCAL_AUTHORITY :{BLACK}Miestna správa: {LTBLUE}{STRING} +STR_01A9_NONE :Neznáme STR_01AA_NAME :{BLACK}Meno STR_01AB :{BLACK}{TINYFONT}{STRING} ############ range for days starts -STR_01AC_1ST :1 +STR_01AC_1ST :1/ STR_01AD_2ND :2 STR_01AE_3RD :3 STR_01AF_4TH :4 @@ -1740,7 +1740,7 @@ STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING :{BIGFONT}{BLACK}V meste {TOWN} zavladol dopravny chaos!{}{}Rekonstrukcia ciest financovana {COMPANY} prinesie 6 mesiacov utrpenia pre motoristov! STR_2056 :{TINYFONT}{WHITE}{TOWN} STR_2057 :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_2058_UNDER_CONSTRUCTION :{STRING} (v rekonstrukcii) +STR_2058_UNDER_CONSTRUCTION :{STRING} (vo výstavbe) STR_2059_IGLOO :Iglu STR_205A_TEPEES :Vigvam STR_205B_TEAPOT_HOUSE :Kaviaren @@ -1959,7 +1959,7 @@ STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Tunel musi byt najskor zburany STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Most musi byt najskor zburany STR_5008_CANNOT_START_AND_END_ON :{WHITE}Nemozno zacat a skoncit na tom istom mieste -STR_5009_LEVEL_LAND_OR_WATER_REQUIRED :{WHITE}Pod mostom je potrebna voda alebo udolie +STR_5009_LEVEL_LAND_OR_WATER_REQUIRED :{WHITE}Pod mostom je potrebná voda alebo údolie STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Zaciatok a koniec musi byt v rovine STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}To miesto je nepouzitelne ako vstup do tunela STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY} @@ -2833,7 +2833,7 @@ STR_9841_CAN_T_REFIT_SHIP :{WHITE}Nemozno prestavat lod... STR_9842_REFITTABLE :(mozna prestavba) STR_GO_TO_SHIP_DEPOT :Chod do {TOWN} Lodenice -SERVICE_AT_SHIP_DEPOT :Opravit v {TOWN} Lodenici +SERVICE_AT_SHIP_DEPOT :Opravit v {TOWN} lodenici ##id 0xA000 STR_A000_AIRPORTS :{WHITE}Letiska @@ -2907,7 +2907,7 @@ STR_A041_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nová kapacita: {GOLD}{STRING}{}{BLACK}Náklady na prestavbu: {GOLD}{CURRENCY} STR_A042_CAN_T_REFIT_AIRCRAFT :{WHITE}Nie je mozne prestavat na novy typ nakladu ... STR_GO_TO_AIRPORT_HANGAR :Chod do {STATION} Hangaru -SERVICE_AT_AIRPORT_HANGAR :Opravit v {STATION} Hangare +SERVICE_AT_AIRPORT_HANGAR :Opravit v {STATION} hangári ##id 0xB000 STR_B000_ZEPPELIN_DISASTER_AT :{BLACK}{BIGFONT}Zeppelin zniceny pri nehode na {STATION}! diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/spanish.txt --- a/src/lang/spanish.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/spanish.txt Wed Feb 14 10:46:38 2007 +0000 @@ -1699,7 +1699,6 @@ STR_2806 :{WHITE}{STRING} STR_2808_TOO_MANY_SIGNS :{WHITE}...demasiadas señales STR_2809_CAN_T_PLACE_SIGN_HERE :{WHITE}No se puede colocar una señal aquí... -STR_280A_SIGN : STR_280B_EDIT_SIGN_TEXT :{WHITE}Editar texto de la señal STR_280C_CAN_T_CHANGE_SIGN_NAME :{WHITE}No se puede cambiar el nombre de la señal... STR_280D_SELECT_TREE_TYPE_TO_PLANT :{BLACK}Seleccione el tipo de árboles a plantar diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/swedish.txt --- a/src/lang/swedish.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/swedish.txt Wed Feb 14 10:46:38 2007 +0000 @@ -295,6 +295,7 @@ STR_0141_LOAD_GAME :{BLACK}Ladda spel STR_SINGLE_PLAYER :{BLACK}En spelare STR_MULTIPLAYER :{BLACK}Flera spelare +STR_SCENARIO_EDITOR :{BLACK}Scenario editor STR_64 :64 STR_128 :128 @@ -623,6 +624,8 @@ STR_022A_GENERATE_RANDOM_LAND :{BLACK}Generera slumpmässig mark STR_022B_RESET_LANDSCAPE :{BLACK}Återställ landskapet STR_022C_RESET_LANDSCAPE :{WHITE}Återställ landskapet +STR_RESET_LANDSCAPE_TOOLTIP :{BLACK}Ta bort alla spelarägda tillgångar från kartan +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Är du säker på att du vill ta bort alla spelarägda tillgångar? STR_022E_LANDSCAPE_GENERATION :{BLACK}Skapa landskap STR_022F_TOWN_GENERATION :{BLACK}Bygg städer STR_0230_INDUSTRY_GENERATION :{BLACK}Bygg industrier @@ -727,6 +730,7 @@ STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Ta bort staden helt och hållet STR_0292_SAVE_SCENARIO :Spara scenario STR_0293_LOAD_SCENARIO :Öppna scenario +STR_LOAD_HEIGHTMAP :Ladda höjdkarta STR_0294_QUIT_EDITOR :Avsluta editor STR_0295 : STR_0296_QUIT :Avsluta @@ -1413,6 +1417,7 @@ STR_NETWORK_ERR_NOTAVAILABLE :{WHITE}Inget nätverkskort funnet eller så är spelet kompilerat utan ENABLE_NETWORK STR_NETWORK_ERR_NOSERVER :{WHITE}Kunde inte hitta några nätverksspel STR_NETWORK_ERR_NOCONNECTION :{WHITE}Servern svarade inte på förfrågan +STR_NETWORK_ERR_NEWGRF_MISMATCH :{WHITE} Kunde inte ansluta på grund av att NewGRF är omaka STR_NETWORK_ERR_DESYNC :{WHITE}Nätverk, Spelsynkronisering misslyckades STR_NETWORK_ERR_LOSTCONNECTION :{WHITE}Nätverk, koppling förlorad STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE}Kunde inte ladda det sparade spelet från servern @@ -1434,6 +1439,7 @@ STR_NETWORK_ERR_CLIENT_SAVEGAME :kunde inte ladda kartan STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :anslutning förlorad STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protokollfel +STR_NETWORK_ERR_CLIENT_NEWGRF_MISMATCH :NewGRF är omaka STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :inte godkänd STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :mottog konstigt paket STR_NETWORK_ERR_CLIENT_WRONG_REVISION :fel revision @@ -2624,7 +2630,6 @@ STR_TRAIN_STOPPING_VEL :{RED}Stannar, {VELOCITY} STR_INCOMPATIBLE_RAIL_TYPES :Fel järnvägstyp STR_TRAIN_NO_POWER :{RED}Ingen Kraft -STR_TRAIN_START_NO_CATENARY : ##id 0x9000 STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Vägfordon i vägen diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/traditional_chinese.txt --- a/src/lang/traditional_chinese.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/traditional_chinese.txt Wed Feb 14 10:46:38 2007 +0000 @@ -78,7 +78,7 @@ STR_0047_COLA :可樂 STR_0048_COTTON_CANDY :棉花糖 STR_0049_BUBBLE :泡泡 -STR_004A_TOFFEE :乳脂糖 +STR_004A_TOFFEE :太妃糖 STR_004B_BATTERY :電池 STR_004C_PLASTIC :塑膠 STR_004D_FIZZY_DRINK :汽水 @@ -110,7 +110,7 @@ STR_QUANTITY_COLA :{VOLUME}可樂 STR_QUANTITY_CANDYFLOSS :{WEIGHT}棉花糖 STR_QUANTITY_BUBBLES :{COMMA}泡泡 -STR_QUANTITY_TOFFEE :{WEIGHT}乳脂糖 +STR_QUANTITY_TOFFEE :{WEIGHT}太妃糖 STR_QUANTITY_BATTERIES :{COMMA}顆電池 STR_QUANTITY_PLASTIC :{VOLUME}塑膠 STR_QUANTITY_FIZZY_DRINKS :{COMMA}杯汽水 @@ -142,7 +142,7 @@ STR_ABBREV_COLA :{TINYFONT}可 STR_ABBREV_CANDYFLOSS :{TINYFONT}棉 STR_ABBREV_BUBBLES :{TINYFONT}泡 -STR_ABBREV_TOFFEE :{TINYFONT}乳 +STR_ABBREV_TOFFEE :{TINYFONT}太 STR_ABBREV_BATTERIES :{TINYFONT}電 STR_ABBREV_PLASTIC :{TINYFONT}膠 STR_ABBREV_FIZZY_DRINKS :{TINYFONT}汽 @@ -155,7 +155,7 @@ STR_00B2_MESSAGE :{YELLOW}訊息 STR_00B3_MESSAGE_FROM :{YELLOW}來自{STRING}的訊息 STR_POPUP_CAUTION_CAPTION :{WHITE}注意! -STR_00B4_CAN_T_DO_THIS :{WHITE}不能執行以下命令.... +STR_00B4_CAN_T_DO_THIS :{WHITE}不能執行以下動作.... STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}不能清除這個地段.... STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}原著作權為{COPYRIGHT} 1995 Chris Sawyer, 版權所有 STR_00B7_VERSION :{BLACK}OpenTTD 版本 {REV} @@ -167,7 +167,7 @@ STR_00C7_QUIT :{WHITE}離開 STR_00C8_YES :{BLACK}是 STR_00C9_NO :{BLACK}否 -STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}你是否確認放棄進行中的遊戲並回到{STRING}? +STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}你要放棄遊戲並回到 {STRING} 嗎? STR_00CB_1 :{BLACK}1 STR_00CC_2 :{BLACK}2 STR_00CD_3 :{BLACK}3 @@ -194,7 +194,7 @@ STR_00E2 :{BLACK}{COMMA} STR_00E3 :{RED}{COMMA} STR_00E4_LOCATION :{BLACK}位置 -STR_00E5_CONTOURS :輪廓 +STR_00E5_CONTOURS :地形 STR_00E6_VEHICLES :交通工具 STR_00E7_INDUSTRIES :工業 STR_00E8_ROUTES :路線 @@ -273,7 +273,7 @@ STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}已定義過多名稱 STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}所選名稱已被使用 -STR_0133_WINDOWS :視窗 +STR_0133_WINDOWS :Windows STR_0134_UNIX :Unix STR_0135_OSX :OS X STR_OSNAME_BEOS :BeOS @@ -370,8 +370,8 @@ STR_SORT_BY_PRODUCTION :{BLACK}產量 STR_SORT_BY_TYPE :{BLACK}種類 STR_SORT_BY_TRANSPORTED :{BLACK}輸出量 -STR_SORT_BY_NAME :{BLACK}名字 -STR_SORT_BY_DROPDOWN_NAME :名字 +STR_SORT_BY_NAME :{BLACK}名稱 +STR_SORT_BY_DROPDOWN_NAME :名稱 STR_SORT_BY_DATE :{BLACK}日期 STR_SORT_BY_NUMBER :編號 STR_SORT_BY_PROFIT_LAST_YEAR :上年盈利 @@ -421,7 +421,7 @@ STR_016A_SEP :九月 STR_016B_OCT :十月 STR_016C_NOV :十一月 -STR_016D_DEC :十一月 +STR_016D_DEC :十二月 ############ range for months ends STR_016E :{TINYFONT}{STRING}{} {STRING} @@ -461,9 +461,9 @@ STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}於一格土地上拆卸建築物等 STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}下降土地上的一角 STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}上昇土地上的一角 -STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}捲動棒 - 上下捲動清單 +STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}捲軸 - 上下捲動清單 STR_HSCROLL_BAR_SCROLLS_LIST :{BLACK}捲動棒 - 左右捲動清單 -STR_0191_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}於地圖上顯示土地輪廓 +STR_0191_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}於地圖上顯示地形 STR_0192_SHOW_VEHICLES_ON_MAP :{BLACK}於地圖上顯示交通公具 STR_0193_SHOW_INDUSTRIES_ON_MAP :{BLACK}於地圖上顯示各種工業 STR_0194_SHOW_TRANSPORT_ROUTES_ON :{BLACK}於地圖上顯示運輸路線 @@ -481,9 +481,9 @@ STR_019D_AIRCRAFT :飛機 STR_019E_SHIP :船舶 STR_019F_TRAIN :列車 -STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA}已變得殘舊 -STR_01A1_IS_GETTING_VERY_OLD :{WHITE}{STRING} {COMMA}已變得非常殘舊 -STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA}已變得非常殘舊以及必須即時作出替換 +STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA}使用年限將近 +STR_01A1_IS_GETTING_VERY_OLD :{WHITE}{STRING} {COMMA}使用年限已過 +STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA}使用年限已過必須替換 STR_01A3_LAND_AREA_INFORMATION :{WHITE}土地資訊 STR_01A4_COST_TO_CLEAR_N_A :{BLACK}清拆成本: {LTBLUE}不適用 STR_01A5_COST_TO_CLEAR :{BLACK}清拆成本: {LTBLUE}{CURRENCY} @@ -634,7 +634,7 @@ STR_0234_NEW_TOWN :{BLACK}新的市鎮 STR_0235_CONSTRUCT_NEW_TOWN :{BLACK}建造新的市鎮 STR_0236_CAN_T_BUILD_TOWN_HERE :{WHITE}不能建造市鎮... -STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}...太接近地圖邊帶 +STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}...太接近地圖邊緣 STR_0238_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}...太接近另一個市鎮 STR_0239_SITE_UNSUITABLE :{WHITE}...地點不適合 STR_023A_TOO_MANY_TOWNS :{WHITE}...已有太多市鎮 @@ -771,7 +771,7 @@ ############ range for menu starts STR_02C3_GAME_OPTIONS :遊戲選項 STR_02C5_DIFFICULTY_SETTINGS :難易設定 -STR_02C7_CONFIG_PATCHES :設定補綴 +STR_02C7_CONFIG_PATCHES :設置修正 STR_NEWGRF_SETTINGS :NewGRF 設定 STR_GAMEOPTMENU_0A : STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}顯示市鎮名稱 @@ -878,7 +878,7 @@ STR_TOWNNAME_GERMAN :德國 STR_TOWNNAME_ADDITIONAL_ENGLISH :英國 (增訂版) STR_TOWNNAME_LATIN_AMERICAN :拉丁美洲 -STR_TOWNNAME_SILLY :荒唐名字 +STR_TOWNNAME_SILLY :荒唐名稱 STR_TOWNNAME_SWEDISH :瑞典 STR_TOWNNAME_DUTCH :荷蘭 STR_TOWNNAME_FINNISH :芬蘭 @@ -1178,9 +1178,9 @@ STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT} STR_WAYPOINT_RAW :{WAYPOINT} -STR_EDIT_WAYPOINT_NAME :{WHITE}更改路標名字 +STR_EDIT_WAYPOINT_NAME :{WHITE}更改路標名稱 -STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}不能更改路標名字 +STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}不能更改路標名稱 STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}將路軌變為路標 STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}不能建立鐵路路標 STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}不能移除鐵路路標 @@ -1461,7 +1461,7 @@ STR_NETWORK_CHAT_TO_CLIENT :[私人] 給 {STRING}: {GRAY}{STRING} STR_NETWORK_CHAT_ALL_CAPTION :[全員] : STR_NETWORK_CHAT_ALL :[全員] {STRING}: {GRAY}{STRING} -STR_NETWORK_NAME_CHANGE :將自己的名字改為 +STR_NETWORK_NAME_CHANGE :將自己的名稱改為 STR_NETWORK_SERVER_SHUTDOWN :{WHITE} 伺服器關閉連線 STR_NETWORK_SERVER_REBOOT :{WHITE} 伺服器正在重新啟動...{}請稍候... @@ -1636,10 +1636,10 @@ STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}補助過期:{}{}將 {STRING} 從 {STRING} 運到 {STRING} 從此不再提供補助。 STR_202F_SUBSIDY_WITHDRAWN_SERVICE :{BLACK}{BIGFONT}補助結束:{}{}將 {STRING} 從 {STATION} 運到 {STATION} 不再提供補助。 STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}提供補助:{}{}首先將 {STRING} 從 {STRING} 運到 {STRING} 的公司將得到區域當局補助一年! -STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}{COMPANY} 獲得補補助!{}{}將 {STRING} 從 {STATION} 運到 {STATION} 的服務可在往後一年得到額外 50% 的運費補助! -STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}{COMPANY} 獲得補補助!{}{}將 {STRING} 從 {STATION} 運到 {STATION} 的服務可在往後一年收到雙倍運費! -STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}{COMPANY} 獲得補補助!{}{}將 {STRING} 從 {STATION} 運到 {STATION} 的服務可在往後一年收到三倍運費! -STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}{COMPANY} 獲得補補助!{}{}將 {STRING} 從 {STATION} 運到 {STATION} 的服務可在往後一年收到四倍運費! +STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}{COMPANY} 獲得補助!{}{}將 {STRING} 從 {STATION} 運到 {STATION} 的服務可在往後一年得到額外 50% 的運費補助! +STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}{COMPANY} 獲得補助!{}{}將 {STRING} 從 {STATION} 運到 {STATION} 的服務可在往後一年收到雙倍運費! +STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}{COMPANY} 獲得補助!{}{}將 {STRING} 從 {STATION} 運到 {STATION} 的服務可在往後一年收到三倍運費! +STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}{COMPANY} 獲得補助!{}{}將 {STRING} 從 {STATION} 運到 {STATION} 的服務可在往後一年收到四倍運費! STR_2035_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} 地方政府拒絕在城內建造另一座機場 STR_2036_COTTAGES :農舍 STR_2037_HOUSES :住宅 @@ -1754,8 +1754,8 @@ STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES} STR_304A_NONE :{YELLOW}- 無 - STR_304B_SITE_UNSUITABLE :{WHITE}...地點不適合 -STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}太靠近另一個船塢 -STR_304D_MUST_DEMOLISH_DOCK_FIRST :{WHITE}必須先摧毀船塢 +STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}太靠近另一個碼頭 +STR_304D_MUST_DEMOLISH_DOCK_FIRST :{WHITE}必須先摧毀碼頭 STR_304E_SELECT_RAILROAD_STATION :{BLACK}選擇鐵道車站方向 STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}選擇鐵道車站的月台數量 STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}選擇鐵道車站的長度 @@ -1778,7 +1778,7 @@ STR_3064_HIGHLIGHT_COVERAGE_AREA :{BLACK}顯示建築地點的運輸涵蓋範圍 STR_3065_DON_T_HIGHLIGHT_COVERAGE :{BLACK}不顯示建築地點的運輸涵蓋範圍 STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}顯示運輸涵蓋範圍 -STR_3068_DOCK :{WHITE}船塢 +STR_3068_DOCK :{WHITE}碼頭 STR_3069_BUOY :浮標 STR_306A_BUOY_IN_THE_WAY :{WHITE}...被浮標擋住 STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...車站範圍太大 @@ -1848,7 +1848,7 @@ STR_4819_FACTORY :工廠 STR_481A_FARM :農場 STR_481B_LUMBER_MILL :伐木場 -STR_481C_COTTON_CANDY_FOREST :太妃糖森林 +STR_481C_COTTON_CANDY_FOREST :綿花糖森林 STR_481D_CANDY_FACTORY :甜點工廠 STR_481E_BATTERY_FARM :電池農場 STR_481F_COLA_WELLS :可樂井 @@ -1884,8 +1884,8 @@ STR_4839_PRODUCTION_DOWN_BY_50 :{BLACK}{BIGFONT}{INDUSTRY} 產量減半 STR_483A_INSECT_INFESTATION_CAUSES :{BLACK}{BIGFONT}{INDUSTRY} 遇到蟲害!{}產量減半 STR_483B_CAN_ONLY_BE_POSITIONED :{WHITE}...只能位於地圖邊緣 -STR_INDUSTRY_PROD_GOUP :{BLACK}{BIGFONT}{STRING} 在 {INDUSTRY} 的產量上升 {COMMA}%! -STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}{STRING} 在 {INDUSTRY} 的產量減少 {COMMA}%! +STR_INDUSTRY_PROD_GOUP :{BLACK}{BIGFONT}{1:INDUSTRY}的{0:STRING}產量上升 {2:COMMA}%! +STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}{1:INDUSTRY}的{0:STRING}產量減少 {2:COMMA}%! ##id 0x5000 STR_5000_TRAIN_IN_TUNNEL :{WHITE}隧道內有列車 @@ -1963,7 +1963,7 @@ STR_SV_STNAME_AIRPORT :{STRING} 機場 STR_SV_STNAME_OILFIELD :{STRING} 油田 STR_SV_STNAME_MINES :{STRING} 礦場 -STR_SV_STNAME_DOCKS :{STRING} 船塢 +STR_SV_STNAME_DOCKS :{STRING} 碼頭 STR_SV_STNAME_BUOY_1 :{STRING} 一號浮標 STR_SV_STNAME_BUOY_2 :{STRING} 二號浮標 STR_SV_STNAME_BUOY_3 :{STRING} 三號浮標 @@ -2476,7 +2476,7 @@ STR_80FE_GURU_X2_HELICOPTER :Lockheed X2 直升機 STR_80FF_POWERNAUT_HELICOPTER :Powernaut 直升機 STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE :{WHITE}運具製造商的訊息 -STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}我們剛設計了一種新 {STRING} - 您有興趣獨家使用它一年,讓我們在正式發佈之前觀察它的表現嗎? +STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}我們剛設計了一種新{STRING} - 您有興趣獨家使用它一年,讓我們在正式發佈之前觀察它的表現嗎? STR_8102_RAILROAD_LOCOMOTIVE :鐵道機車頭 STR_8103_ROAD_VEHICLE :汽車 STR_8104_AIRCRAFT :飛機 @@ -2699,9 +2699,9 @@ STR_ROAD_SELECT_TYPE_OF_CARGO_FOR :{BLACK}選擇汽車要運送的酬載種類 ##id 0x9800 -STR_9800_DOCK_CONSTRUCTION :建造船塢 -STR_9801_DOCK_CONSTRUCTION :{WHITE}建造船塢 -STR_9802_CAN_T_BUILD_DOCK_HERE :{WHITE}無法在此建造船塢... +STR_9800_DOCK_CONSTRUCTION :建造碼頭 +STR_9801_DOCK_CONSTRUCTION :{WHITE}建造碼頭 +STR_9802_CAN_T_BUILD_DOCK_HERE :{WHITE}無法在此建造碼頭... STR_9803_SHIP_DEPOT :{WHITE}{TOWN} 船塢 STR_9804_NEW_SHIPS :{BLACK}購買船舶 STR_9805_SHIPS :{WHITE}{COMPANY} - 船舶 {COMMA} 艘 @@ -2730,7 +2730,7 @@ STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}正在 {TOWN} 船塢維護中 STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}正在 {TOWN} 船塢維護中, {VELOCITY} STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}船舶 {COMMA} 已在船塢待命 -STR_981D_BUILD_SHIP_DOCK :{BLACK}建造船塢 +STR_981D_BUILD_SHIP_DOCK :{BLACK}建造碼頭 STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}建造船塢 (用以購買/維護船舶) STR_981F_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}船舶 - 點選船舶可看到詳細資訊 STR_9820_BUILD_NEW_SHIP :{BLACK}購買新船舶 @@ -2769,7 +2769,7 @@ STR_9841_CAN_T_REFIT_SHIP :{WHITE}無法改裝船舶... STR_9842_REFITTABLE :(可改裝) STR_GO_TO_SHIP_DEPOT :前往 {TOWN} 船塢 -SERVICE_AT_SHIP_DEPOT :在{TOWN}船廠進行維修 +SERVICE_AT_SHIP_DEPOT :在{TOWN}船塢進行維修 ##id 0xA000 STR_A000_AIRPORTS :{WHITE}機場 diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/ukrainian.txt --- a/src/lang/ukrainian.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/ukrainian.txt Wed Feb 14 10:46:38 2007 +0000 @@ -141,6 +141,7 @@ STR_003C_FRUIT.r :фруктів STR_003C_FRUIT.z :фрукти STR_003D_DIAMOND :діаманти +STR_003D_DIAMOND.r :діамантів STR_003D_DIAMOND.z :діаманти STR_003E_FOOD :продукти STR_003E_FOOD.r :продуктів @@ -862,7 +863,7 @@ STR_02B6 :{STRING} - {STRING} STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS :{BLACK}Показує останнє повідомлення або новини -STR_OFF :Викл +STR_OFF :Відкл. STR_SUMMARY :Коротко STR_FULL :Повністю STR_02BA :{SILVER}- - {COMPANY} - - @@ -945,7 +946,7 @@ STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Грати з 2-8 гравцями STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Показати налашування гри STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Показати налашування складності -STR_0303_START_A_NEW_GAME_USING :{BLACK}Почати нову використовуючи сценарій +STR_0303_START_A_NEW_GAME_USING :{BLACK}Почати нову гру, використовуючи сценарій STR_0304_QUIT :{BLACK}Вихід STR_0305_QUIT_OPENTTD :{BLACK}покинути 'OpenTTD' STR_0307_OPENTTD :{WHITE}OpenTTD {REV} @@ -1864,16 +1865,16 @@ STR_304B_SITE_UNSUITABLE :{WHITE}...ділянка не підходить для цього STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Дуже близько до іншого порту STR_304D_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Спочатку зруйнуйте порт -STR_304E_SELECT_RAILROAD_STATION :{BLACK}Виберіть направлення залізничної станції +STR_304E_SELECT_RAILROAD_STATION :{BLACK}Виберіть орієнтацію залізничної станції STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Виберіть кількість колій залізничної станції STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Виберіть довжину залізничної станції -STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Виберіть направлення зупинки -STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Виберіть направлення вантажної станції +STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Виберіть орієнтацію зупинки +STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Виберіть орієнтацію вантажної станції STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Показати станцію в центрі екрану STR_3054_SHOW_STATION_RATINGS :{BLACK}Показати рейтинг станції STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Перейменувати станцію STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO :{BLACK}Показати список приймання вантажів -STR_3057_STATION_NAMES_CLICK_ON :{BLACK}Назва станції - натисніть на назву щоб показати в центрі екрану +STR_3057_STATION_NAMES_CLICK_ON :{BLACK}Назва станції - натисніть на назву, щоб показати в центрі екрану STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT :{BLACK}Виберіть розмір/тип аеропорту STR_305C_0 :{STATION} {STATIONFEATURES} STR_STATION_SIGN_TINY :{TINYFONT}{STATION} @@ -1889,8 +1890,8 @@ STR_3068_DOCK :{WHITE}Порт STR_3069_BUOY :Бакен STR_306A_BUOY_IN_THE_WAY :{WHITE}...бакен на шляху -STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...станції дуже розкидані -STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...неоднорідні станції відмінено +STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...станція занадто велика +STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...неоднорідні станції відключені STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Утримуйте CTRL для вибору більш ніж одного пункту STR_UNDEFINED :(невизначено) @@ -1901,7 +1902,7 @@ STR_3800_SHIP_DEPOT_ORIENTATION :{WHITE}Орієнтація депо STR_3801_MUST_BE_BUILT_ON_WATER :{WHITE}...має бути збудовано на воді STR_3802_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Неможливо будувати корабельне депо тут... -STR_3803_SELECT_SHIP_DEPOT_ORIENTATION :{BLACK}Виберіть направлення корабельного депо +STR_3803_SELECT_SHIP_DEPOT_ORIENTATION :{BLACK}Виберіть орієнтацію корабельного депо STR_3804_WATER :Вода STR_3805_COAST_OR_RIVERBANK :Берег STR_3806_SHIP_DEPOT :Корабельне депо diff -r ca57ad0b45ea -r 23983700e3d7 src/lang/unfinished/afrikaans.txt --- a/src/lang/unfinished/afrikaans.txt Wed Feb 14 00:57:15 2007 +0000 +++ b/src/lang/unfinished/afrikaans.txt Wed Feb 14 10:46:38 2007 +0000 @@ -300,8 +300,12 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Is jy seker jy wil die spel verlaat? STR_0161_QUIT_GAME :{WHITE}Verlaat Spel +STR_ENGINE_SORT_ENGINE_ID :EngineID (klassieke sorteer) +STR_ENGINE_SORT_CARGO_CAPACITY :Vrag Kapasiteit STR_NO_WAITING_CARGO :{BLACK}Geen vrag van enige tipe is op wag STR_AVAILABLE_ENGINES_TIP :{BLACK}Wys 'n lys van beskikbaare enjin tipes vir die voertiug tipe. +STR_MANAGE_LIST :{BLACK}Bestuur lys +STR_MANAGE_LIST_TIP :{BLACK}Stuur instruksies na alle voertuie in die lys ############ range for months starts STR_0162_JAN :Jan @@ -501,20 +505,16 @@ STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{COMPANY} behaal '{STRING}' stand! STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{PLAYERNAME} van {COMPANY} behaal '{STRING}' stand! STR_021F :{BLUE}{COMMA} -STR_0220_CREATE_SCENARIO :{BLACK}Skep Draaiboek STR_0221_OPENTTD :{YELLOW}OpenTTD STR_0222_SCENARIO_EDITOR :{YELLOW}Draaiboek Redakteur STR_0223_LAND_GENERATION :{WHITE}Land Ontwikkeling STR_0224 :{BLACK}{UPARROW} STR_0225 :{BLACK}{DOWNARROW} -STR_0226_RANDOM_LAND :{BLACK}Lukraak Land -STR_0227_RESET_LAND :{BLACK}Herstel Land STR_0228_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Vergroot land area om te verlaag/verhoog STR_0229_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Verminder land area om te verlaag/verhoog STR_022A_GENERATE_RANDOM_LAND :{BLACK}Ontwikkel lukraak land STR_022B_RESET_LANDSCAPE :{BLACK}Herstel landerye STR_022C_RESET_LANDSCAPE :{WHITE}Herstel landerye -STR_022D_ARE_YOU_SURE_YOU_WANT_TO :{WHITE}Is jy seker jy wil die landerye herstel? STR_022E_LANDSCAPE_GENERATION :{BLACK}Landerye ontwikkeling STR_022F_TOWN_GENERATION :{BLACK}Stad ontwikkeling STR_0230_INDUSTRY_GENERATION :{BLACK}Nyweheid ontwikkeling @@ -619,6 +619,7 @@ STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Uitwis hele stad STR_0292_SAVE_SCENARIO :Bewaar draaiboek STR_0293_LOAD_SCENARIO :Laai draaiboek +STR_LOAD_HEIGHTMAP :Laai Hoogtekaart STR_0294_QUIT_EDITOR :Verlaat redakteur STR_0295 : STR_0296_QUIT :Verlaat @@ -683,6 +684,7 @@ STR_02DF_TOWN_DIRECTORY :Stad indeks STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Gesigswerf {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Afskryf na gesigswerf +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Afskryf die lokasie van die wereldwerf na die gesigswerf STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Deeg van gesigswerf STR_02E0_CURRENCY_UNITS :{BLACK}Koers eenheide @@ -752,8 +754,8 @@ STR_CURR_GBP :Pounds () STR_CURR_USD :Dollars ($) -STR_CURR_EUR :Euro () -STR_CURR_YEN :Yen () +STR_CURR_EUR :Euro (€) +STR_CURR_YEN :Yen (¥) STR_CURR_ATS :Austrian Shilling (ATS) STR_CURR_BEF :Belgian Franc (BEF) STR_CURR_CHF :Swiss Franc (CHF) @@ -772,7 +774,11 @@ STR_CURR_PLN :Polish Zloty (PLN) STR_CURR_ROL :Romanian Leu (ROL) STR_CURR_RUR :Russian Rubles (RUR) +STR_CURR_SIT :Slovenian Tolar (SIT) STR_CURR_SEK :Swedish Krona (SEK) +STR_CURR_YTL :Turkish Lira (YTL) +STR_CURR_SKK :Slovak Koruna (SKK) +STR_CURR_BRR :Brazilian Real (BRL) STR_CURR_CUSTOM :Gewoonte... @@ -861,6 +867,7 @@ STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Klein lughawe is altyd toegelaat: {ORANGE}{STRING} +STR_CONFIG_PATCHES_WARN_LOST_TRAIN :{LTBLUE}Waarsku as trein verloor is: {ORANGE}{STRING} STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Bespreek voertuig se opdrae: {ORANGE}{STRING} STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :nee STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :ja, maar uitsluit gestopde voertuie @@ -877,8 +884,19 @@ STR_CONFIG_PATCHES_LAND_GENERATOR :{LTBLUE}Land ontwikkelaar: {ORANGE}{STRING} STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL :Oorspronklik STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE :{LTBLUE}Max afstand van kant vir Olie Raffineerderye {ORANGE}{STRING} STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Sneeu lyn hoogte: {ORANGE}{STRING} +STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN :{LTBLUE}Ruheid van terrein (slegs TerraGenesis) : {ORANGE}{STRING} +STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Baie Glad +STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH :Glad +STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH :Ru +STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Baie Ru +STR_CONFIG_PATCHES_TREE_PLACER :{LTBLUE}Boom plaas algoritme: {ORANGE}{STRING} +STR_CONFIG_PATCHES_TREE_PLACER_NONE :Geen +STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL :Oorspronklik +STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED :Verbeterde STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION :{LTBLUE}Hoogtekaart rotasie: {ORANGE}{STRING} +STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Die hoogtevlak 'n platte landerye kaart kry: {ORANGE}{STRING} STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max stasie omvang: {ORANGE}{STRING} {RED}Waarskuwing: Ho�stelling vertraag spel STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Versien helikopters by helihawes outomaties: {ORANGE}{STRING} @@ -888,6 +906,7 @@ STR_CONFIG_PATCHES_LIVERIES_NONE :Geen STR_CONFIG_PATCHES_LIVERIES_OWN :Eie maatskappy STR_CONFIG_PATCHES_LIVERIES_ALL :Alle maatskappye +STR_CONFIG_PATCHES_PREFER_TEAMCHAT :{LTBLUE}Verkies span gesels met : {ORANGE}{STRING} STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Max treine per speler: {ORANGE}{STRING} STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Max pad voertuie per speler: {ORANGE}{STRING} @@ -920,6 +939,7 @@ STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Stel vloeiende ekonomie in staak (meer, kleiner veranderings) STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Toelaat deele aankoop van ander maatskappye STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Wanneer sleeping, plaas seine elke: {ORANGE}{STRING} teel(e) +STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Outomaties bou semaphores voor: {ORANGE}{STRING} STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posisie van hoof werktuigbaan: {ORANGE}{STRING} STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Links STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Senter @@ -1223,10 +1243,13 @@ STR_NETWORK_CLIENT_JOINED :het die spel verbind STR_NETWORK_GIVE_MONEY :het vir u maatskappy geld gegee ({CURRENCY}) STR_NETWORK_GAVE_MONEY_AWAY :u het vir {STRING} geld ({CURRENCY}) gegee +STR_NETWORK_CHAT_COMPANY_CAPTION :[Span] : STR_NETWORK_CHAT_COMPANY :[Span] {STRING}: STR_NETWORK_CHAT_TO_COMPANY :[Span] Na {STRING}: +STR_NETWORK_CHAT_CLIENT_CAPTION :[Privaat] : STR_NETWORK_CHAT_CLIENT :[Privaat] {STRING}: STR_NETWORK_CHAT_TO_CLIENT :[Privaat] Na {STRING}: +STR_NETWORK_CHAT_ALL_CAPTION :[All] : STR_NETWORK_CHAT_ALL :[All] {STRING}: STR_NETWORK_NAME_CHANGE :het hy/sy naam verander na STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Die bediender het die sessie toegemaak @@ -1884,7 +1907,34 @@ STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{COMPANY} is deur {COMPANY}! oorgevat! STR_7080_PROTECTED :{WHITE}Die maatskappy is nie oud genoeg om aandeele te handel nie... +STR_LIVERY_DEFAULT :Standaard Lewery +STR_LIVERY_STEAM :Stoom Enjin +STR_LIVERY_DIESEL :Diesel Enjin +STR_LIVERY_ELECTRIC :Elektriese Enjin +STR_LIVERY_MONORAIL :Eenspoor Enjin +STR_LIVERY_MAGLEV :Maglev Enjin +STR_LIVERY_DMU :DMU +STR_LIVERY_EMU :EMU +STR_LIVERY_PASSENGER_WAGON_STEAM :Passasier Rytuig (Stoom) +STR_LIVERY_PASSENGER_WAGON_DIESEL :Passasier Rytuig (Diesel) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passasier Rytuig (Elektries) +STR_LIVERY_FREIGHT_WAGON :Vraag Wa +STR_LIVERY_BUS :Bus +STR_LIVERY_TRUCK :Vraagmotor +STR_LIVERY_PASSENGER_SHIP :Passasier Veer +STR_LIVERY_FREIGHT_SHIP :Vraag Skip +STR_LIVERY_HELICOPTER :Helikopter +STR_LIVERY_SMALL_PLANE :Klein Vliegtuig +STR_LIVERY_LARGE_PLANE :Groot Vliegtuig +STR_LIVERY_GENERAL_TIP :{BLACK}Wys generaal kleur skemas +STR_LIVERY_TRAIN_TIP :{BLACK}Wys trein kleur skemas +STR_LIVERY_ROADVEH_TIP :{BLACK}Wys pad voertuig kleur skemas +STR_LIVERY_SHIP_TIP :{BLACK}Wys skip kleur skemas +STR_LIVERY_AIRCRAFT_TIP :{BLACK}Wys vliegtuig kleurskemas +STR_LIVERY_PRIMARY_TIP :{BLACK}Kies die premere kleur vir die verkieste skema +STR_LIVERY_SECONDARY_TIP :{BLACK}Kies die sekondere kleur vir die verkieste skema +STR_LIVERY_PANEL_TIP :{BLACK}Kies 'n kleur skema te verander, of veelvoud skemas met CTRL+kliek. Kliek op die boks te skakel gebruik van skema ##id 0x8000 STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Stoom) @@ -2176,11 +2226,14 @@ STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Op pad na {TOWN} Trein Depot STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Op pad na {TOWN} Trein Depot, {VELOCITY} +STR_HEADING_FOR_TRAIN_DEPOT_SERVICE :{LTBLUE}Diens by {TOWN} Trein Depot +STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL :{LTBLUE}Diens by {TOWN} Trein Depot, {VELOCITY} STR_INVALID_ORDER :{RED} (Swak Opdrag) STR_8812_EMPTY :{LTBLUE}Leeg STR_8813_FROM :{LTBLUE}{CARGO} vanaf {STATION} +STR_FROM_MULT :{LTBLUE}{CARGO} van {STATION} (x{NUM}) STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Trein {COMMA} wag in depot STR_8815_NEW_VEHICLES :{BLACK}Nuwe Voertuie STR_8816 :{BLACK}- @@ -2301,6 +2354,8 @@ STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Pad voertuig {COMMA} wag in depot STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Op pad na {TOWN} Pad Depot STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Op pad na {TOWN} Pad Depot, {VELOCITY} +STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Diens by {TOWN} Pad Depot +STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Diens by {TOWN} Pad Depot, {VELOCITY} STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}Kan nie voertuig na depot stuur nie... STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kan nie plaaslike depot vind nie STR_901A_ROAD_VEHICLES_CLICK_ON :{BLACK}Pad voertuie - kliek op voertuig vir inligting @@ -2366,6 +2421,8 @@ STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kan nie plaaslike depot vind nie STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Op pad na {TOWN} Skip Depot STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Op pad na {TOWN} Skip Depot, {VELOCITY} +STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Diens by {TOWN} Skip Depot +STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Diens by {TOWN} Skip Depot, {VELOCITY} STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Skip {COMMA} wag in depot STR_981D_BUILD_SHIP_DOCK :{BLACK}Bou skip werf STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}Bou skip depot (vir opbou en diens van skepe) @@ -2431,6 +2488,8 @@ STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Kan nie vlietuig na hangar stuur nie... STR_HEADING_FOR_HANGAR :{ORANGE}Op pad na {STATION} Hangar STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Op pad na {STATION} Hangar, {VELOCITY} +STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Diens by {STATION} Hangar +STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Diens by {STATION} Hangar, {VELOCITY} STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Vliegtuig {COMMA} wag in die vliegtuig hangar STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Vliegtuig in die pad STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kan nie vliegtuig stop/aanvang nie... @@ -2544,9 +2603,22 @@ ### depot strings +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Is jy seker jy wil al die voertuie in die depot nou verkoop? +STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Verkoop allep treine in die depot +STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}Verkoop alle pad voertuie in die depot +STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP :{BLACK}Verkoop alle skepe in die depot +STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP :{BLACK}Verkoop alle vliegtuie in die hangar +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP :{BLACK}Kry 'n lys van alle treine met die huidige depot in sy opdrae +STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP :{BLACK}Kry 'n lys van alle pad voertuie met die huidige depot in sy opdrae +STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP :{BLACK}Kry 'n lys van alle skepe met die huidige depot in sy opdrae +STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP :{BLACK}Kry 'n lys van alle vliegtuie wat enige hangar by die lughawe in sy opdrae het +STR_DEPOT_AUTOREPLACE_TRAIN_TIP :{BLACK}Outovervang alle treine in die depot +STR_DEPOT_AUTOREPLACE_ROADVEH_TIP :{BLACK}Outovervang alle pad voertuie in die depot +STR_DEPOT_AUTOREPLACE_SHIP_TIP :{BLACK}Outovervang alle skepe in die depot +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}Outovervang alle vlietuie in die hangar STR_NOT_REPLACING :{BLACK}Word nie vervang nie @@ -2555,8 +2627,18 @@ STR_ENGINES :Enjine +STR_MASS_STOP_DEPOT_TRAIN_TIP :{BLACK}Kliek om alle treine in die depot te stop +STR_MASS_STOP_DEPOT_ROADVEH_TIP :{BLACK}Kliek om alle pad voertuie in die depot te stop +STR_MASS_STOP_DEPOT_SHIP_TIP :{BLACK}Kliek om alle skepe in die depot te stop +STR_MASS_STOP_HANGAR_TIP :{BLACK}Kliek om alle vlietuie in die hangar te stop +STR_MASS_START_DEPOT_TRAIN_TIP :{BLACK}Kliek om alle treine in die depot te laat ry +STR_MASS_START_DEPOT_ROADVEH_TIP :{BLACK}Kliek om alle pad voertuie in die depot te laayt ry +STR_MASS_START_DEPOT_SHIP_TIP :{BLACK}Kliek om alle skepe in die depot te laat ry +STR_MASS_START_HANGAR_TIP :{BLACK}Kliek om alle vliegtuie in die hangar te laat ry +STR_MASS_STOP_LIST_TIP :{BLACK}Kliek om alle voertuie in die lys te stop +STR_MASS_START_LIST_TIP :{BLACK}Kliek om aller voertuie in die lys te laat ry @@ -2564,7 +2646,7 @@ STR_ELRAIL_VEHICLES :Elektrifiseerde Spoor Voertuie STR_MONORAIL_VEHICLES :Eenspoor Voertuie -STR_MAGLEV_VEHICLES :Maglev voertuie +STR_MAGLEV_VEHICLES :Maglev Voertuie ############ End of list of rail types @@ -2572,11 +2654,32 @@ ########### String for New Landscape Generator +STR_GENERATE :{WHITE}Ontwikkel +STR_LAND_GENERATOR :{BLACK}Land ontwikkelaar: +STR_HEIGHTMAP_ROTATION :{BLACK}Hoogtekaart rotasie: +STR_DATE :{BLACK}Date: +STR_GENERATE_DATE :{BLACK}{DATE_LONG} +STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Skaal waaskuwing +STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Te veel afskaaling van oorpsrong kaart is nie goedgekeur nie. Gaan aan met ontwikkeling? +STR_HEIGHTMAP_NAME :{BLACK}Hoogtekaart name: +STR_HEIGHTMAP_SIZE :{BLACK}Groote: {ORANGE}{NUM} x {NUM} +STR_GENERATION_WORLD :{WHITE}Wereld Ontwikkeling... +STR_GENERATION_ABORT :{BLACK}Verlaat +STR_GENERATION_ABORT_CAPTION :{WHITE}Verlaat Wereld Ontwikkeling +STR_GENERATION_ABORT_MESSAGE :{YELLOW}Wil jy rerig die ontwikkeling verlaat? +STR_GENERATION_PROGRESS :{BLACK}{NUM} / {NUM} STR_CLEARING_TILES :{BLACK}Ru en rotserig area ontwikkeling +STR_DIFFICULTY_TO_CUSTOM :{WHITE}Die aksie het die moeilikheids vlak na gewoonte verander +STR_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Beweeg die hoogte van platte land een af +STR_FLAT_WORLD_HEIGHT_UP :{BLACK}Beweeg die hoogte van platte land bo een +STR_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Verander die hoogte van platte land +STR_FLAT_WORLD_HEIGHT :{BLACK}Hoogte van platte land: +STR_FLAT_WORLD_HEIGHT_NUM :{NUM} ########### String for new airports STR_CITY_AIRPORT :{BLACK}Stad +STR_METRO_AIRPORT :{BLACK}Metropolitaans lughawe STR_INTERNATIONAL_AIRPORT :{BLACK}Internasionaale lughawe STR_COMMUTER_AIRPORT :{BLACK}Pendelaar STR_INTERCONTINENTAL_AIRPORT :{BLACK}Tussenkontinentaal @@ -2585,9 +2688,14 @@ STR_HELISTATION :{BLACK}Helistasie STR_LARGE_AIRPORTS :{BLACK}Groot Lughawe +STR_HUB_AIRPORTS :{BLACK}Naaf lughawe STR_HELIPORTS :{BLACK}Helikopter lughawe ############ Tooltip measurment +STR_MEASURE_LENGTH :{BLACK}Lengte: {NUM} +STR_MEASURE_AREA :{BLACK}Area: {NUM} x {NUM} +STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Lengte: {NUM}{}Hoogte verskil: {NUM} m +STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {NUM} x {NUM}{}Hoogte verskil: {NUM} m ######## diff -r ca57ad0b45ea -r 23983700e3d7 src/macros.h --- a/src/macros.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/macros.h Wed Feb 14 10:46:38 2007 +0000 @@ -50,10 +50,6 @@ return (int32)(((int64)(a) * (int64)(b)) >> (shift)); } -static inline int64 BIGMULSS64(int64 a, int64 b, int shift) { - return ((a) * (b)) >> (shift); -} - static inline uint32 BIGMULUS(uint32 a, uint32 b, int shift) { return (uint32)(((uint64)(a) * (uint64)(b)) >> (shift)); } diff -r ca57ad0b45ea -r 23983700e3d7 src/music/dmusic.cpp --- a/src/music/dmusic.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/music/dmusic.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -4,7 +4,6 @@ #ifdef WIN32_ENABLE_DIRECTMUSIC_SUPPORT -#include "../openttd.h" #include "../debug.h" #include "../win32.h" #include "dmusic.h" @@ -218,7 +217,7 @@ } -extern "C" const HalMusicDriver _dmusic_midi_driver = { +const HalMusicDriver _dmusic_midi_driver = { DMusicMidiStart, DMusicMidiStop, DMusicMidiPlaySong, @@ -227,4 +226,4 @@ DMusicMidiSetVolume, }; -#endif +#endif /* WIN32_ENABLE_DIRECTMUSIC_SUPPORT */ diff -r ca57ad0b45ea -r 23983700e3d7 src/music/dmusic.h --- a/src/music/dmusic.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/music/dmusic.h Wed Feb 14 10:46:38 2007 +0000 @@ -7,4 +7,4 @@ extern const HalMusicDriver _dmusic_midi_driver; -#endif +#endif /* MUSIC_DMUSIC_H */ diff -r ca57ad0b45ea -r 23983700e3d7 src/music/null_m.h --- a/src/music/null_m.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/music/null_m.h Wed Feb 14 10:46:38 2007 +0000 @@ -7,4 +7,4 @@ extern const HalMusicDriver _null_music_driver; -#endif +#endif /* MUSIC_NULL_H */ diff -r ca57ad0b45ea -r 23983700e3d7 src/music/win32_m.h --- a/src/music/win32_m.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/music/win32_m.h Wed Feb 14 10:46:38 2007 +0000 @@ -7,4 +7,4 @@ extern const HalMusicDriver _win32_music_driver; -#endif +#endif /* MUSIC_WIN32_H */ diff -r ca57ad0b45ea -r 23983700e3d7 src/oldloader.cpp --- a/src/oldloader.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/oldloader.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -623,7 +623,7 @@ if (!LoadChunk(ls, st, station_chunk)) return false; - if (IsValidStation(st)) { + if (st->IsValid()) { if (st->train_tile) { /* Calculate the trainst_w and trainst_h */ uint w = GB(_old_platforms, 3, 3); diff -r ca57ad0b45ea -r 23983700e3d7 src/openttd.cpp --- a/src/openttd.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/openttd.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -1458,7 +1458,7 @@ if (v->type == VEH_Train) { v->u.rail.track = TRACK_BIT_WORMHOLE; } else { - v->u.road.state = 0xFF; + v->u.road.state = RVSB_WORMHOLE; } } } @@ -1776,6 +1776,15 @@ } } + /* Buoys do now store the owner of the previous water tile, which can never + * be OWNER_NONE. So replace OWNER_NONE with OWNER_WATER. */ + if (CheckSavegameVersion(46)) { + Station *st; + FOR_ALL_STATIONS(st) { + if (st->IsBuoy() && IsTileOwner(st->xy, OWNER_NONE)) SetTileOwner(st->xy, OWNER_WATER); + } + } + return true; } diff -r ca57ad0b45ea -r 23983700e3d7 src/openttd.h --- a/src/openttd.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/openttd.h Wed Feb 14 10:46:38 2007 +0000 @@ -361,10 +361,7 @@ typedef void AnimateTileProc(TileIndex tile); typedef void TileLoopProc(TileIndex tile); typedef void ChangeTileOwnerProc(TileIndex tile, PlayerID old_player, PlayerID new_player); -/* Return value has bit 0x2 set, when the vehicle enters a station. Then, - * result << 8 contains the id of the station entered. If the return value has - * bit 0x8 set, the vehicle could not and did not enter the tile. Are there - * other bits that can be set? */ +/** @see VehicleEnterTileStatus to see what the return values mean */ typedef uint32 VehicleEnterTileProc(Vehicle *v, TileIndex tile, int x, int y); typedef Slope GetSlopeTilehProc(TileIndex, Slope tileh); diff -r ca57ad0b45ea -r 23983700e3d7 src/order_gui.cpp --- a/src/order_gui.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/order_gui.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -94,7 +94,7 @@ /* delete */ w->SetWidgetDisabledState(ORDER_WIDGET_DELETE, - (uint)v->num_orders + (shared_orders ? 1 : 0) <= (uint)WP(w, order_d).sel); + (uint)v->num_orders + ((shared_orders || v->num_orders != 0) ? 1 : 0) <= (uint)WP(w, order_d).sel); /* non-stop only for trains */ w->SetWidgetDisabledState(ORDER_WIDGET_NON_STOP, v->type != VEH_Train || order == NULL); diff -r ca57ad0b45ea -r 23983700e3d7 src/rail.h --- a/src/rail.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/rail.h Wed Feb 14 10:46:38 2007 +0000 @@ -79,7 +79,7 @@ TRACK_BIT_ALL = TRACK_BIT_CROSS | TRACK_BIT_HORZ | TRACK_BIT_VERT, TRACK_BIT_MASK = 0x3FU, TRACK_BIT_WORMHOLE = 0x40U, - TRACK_BIT_SPECIAL = 0x80U, + TRACK_BIT_DEPOT = 0x80U, INVALID_TRACK_BIT = 0xFF } TrackBits; @@ -106,7 +106,11 @@ /** These are a combination of tracks and directions. Values are 0-5 in one - * direction (corresponding to the Track enum) and 8-13 in the other direction. */ + * direction (corresponding to the Track enum) and 8-13 in the other direction. + * 6, 7, 14 and 15 are used to encode the reversing of road vehicles. Those + * reversing track dirs are not considered to be 'valid' except in a small + * corner in the road vehicle controller. + */ typedef enum Trackdirs { TRACKDIR_BEGIN = 0, TRACKDIR_X_NE = 0, @@ -115,14 +119,16 @@ TRACKDIR_LOWER_E = 3, TRACKDIR_LEFT_S = 4, TRACKDIR_RIGHT_S = 5, - /* Note the two missing values here. This enables trackdir -> track - * conversion by doing (trackdir & 7) */ + TRACKDIR_RVREV_NE = 6, + TRACKDIR_RVREV_SE = 7, TRACKDIR_X_SW = 8, TRACKDIR_Y_NW = 9, TRACKDIR_UPPER_W = 10, TRACKDIR_LOWER_W = 11, TRACKDIR_LEFT_N = 12, TRACKDIR_RIGHT_N = 13, + TRACKDIR_RVREV_SW = 14, + TRACKDIR_RVREV_NW = 15, TRACKDIR_END, INVALID_TRACKDIR = 0xFF, } Trackdir; diff -r ca57ad0b45ea -r 23983700e3d7 src/rail_cmd.cpp --- a/src/rail_cmd.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/rail_cmd.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -1946,7 +1946,7 @@ int length; // this routine applies only to trains in depot tiles - if (v->type != VEH_Train || !IsTileDepotType(tile, TRANSPORT_RAIL)) return 0; + if (v->type != VEH_Train || !IsTileDepotType(tile, TRANSPORT_RAIL)) return VETSB_CONTINUE; /* depot direction */ dir = GetRailDepotDirection(tile); @@ -1965,18 +1965,18 @@ if (_fractcoords_behind[dir] == fract_coord) { /* make sure a train is not entering the tile from behind */ - return 8; + return VETSB_CANNOT_ENTER; } else if (_fractcoords_enter[dir] == fract_coord) { if (DiagDirToDir(ReverseDiagDir(dir)) == v->direction) { /* enter the depot */ - v->u.rail.track = TRACK_BIT_SPECIAL, + v->u.rail.track = TRACK_BIT_DEPOT, v->vehstatus |= VS_HIDDEN; /* hide it */ v->direction = ReverseDir(v->direction); if (v->next == NULL) VehicleEnterDepot(v); v->tile = tile; InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); - return 4; + return VETSB_ENTERED_WORMHOLE; } } else if (fract_coord_leave == fract_coord) { if (DiagDirToDir(dir) == v->direction) { @@ -1988,7 +1988,7 @@ } } - return 0; + return VETSB_CONTINUE; } diff -r ca57ad0b45ea -r 23983700e3d7 src/road.h --- a/src/road.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/road.h Wed Feb 14 10:46:38 2007 +0000 @@ -28,4 +28,16 @@ return (RoadBits)(1U << (3 ^ d)); } +/** Checks whether the trackdir means that we are reversing */ +static inline bool IsReversingRoadTrackdir(Trackdir dir) +{ + return (dir & 0x07) >= 6; +} + +/** Checks whether the given trackdir is a straight road */ +static inline bool IsStraightRoadTrackdir(Trackdir dir) +{ + return (dir & 0x06) == 0; +} + #endif /* ROAD_H */ diff -r ca57ad0b45ea -r 23983700e3d7 src/road_cmd.cpp --- a/src/road_cmd.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/road_cmd.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -1016,13 +1016,13 @@ v->u.road.frame == 11 && _roadveh_enter_depot_unk0[GetRoadDepotDirection(tile)] == v->u.road.state) { VehicleEnterDepot(v); - return 4; + return VETSB_ENTERED_WORMHOLE; } break; default: break; } - return 0; + return VETSB_CONTINUE; } diff -r ca57ad0b45ea -r 23983700e3d7 src/roadveh_cmd.cpp --- a/src/roadveh_cmd.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/roadveh_cmd.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -53,17 +53,30 @@ 0, 0, 0, 8, 8, 8, 8 }; - -static const uint16 _road_veh_fp_ax_and[4] = { - 0x1009, 0x16, 0x520, 0x2A00 +/** 'Convert' the DiagDirection where a road vehicle enters to the trackdirs it can drive onto */ +static const TrackdirBits _road_enter_dir_to_reachable_trackdirs[DIAGDIR_END] = { + TRACKDIR_BIT_LEFT_N | TRACKDIR_BIT_LOWER_E | TRACKDIR_BIT_X_NE, // Enter from north east + TRACKDIR_BIT_LEFT_S | TRACKDIR_BIT_UPPER_E | TRACKDIR_BIT_Y_SE, // Enter from south east + TRACKDIR_BIT_UPPER_W | TRACKDIR_BIT_X_SW | TRACKDIR_BIT_RIGHT_S, // Enter from south west + TRACKDIR_BIT_RIGHT_N | TRACKDIR_BIT_LOWER_W | TRACKDIR_BIT_Y_NW // Enter from north west }; -static const byte _road_reverse_table[4] = { - 6, 7, 14, 15 +static const Trackdir _road_reverse_table[DIAGDIR_END] = { + TRACKDIR_RVREV_NE, TRACKDIR_RVREV_SE, TRACKDIR_RVREV_SW, TRACKDIR_RVREV_NW }; -static const uint16 _road_pf_table_3[4] = { - 0x910, 0x1600, 0x2005, 0x2A +/** 'Convert' the DiagDirection where a road vehicle should exit to + * the trackdirs it can use to drive to the exit direction*/ +static const TrackdirBits _road_exit_dir_to_incoming_trackdirs[DIAGDIR_END] = { + TRACKDIR_BIT_LOWER_W | TRACKDIR_BIT_X_SW | TRACKDIR_BIT_LEFT_S, + TRACKDIR_BIT_LEFT_N | TRACKDIR_BIT_UPPER_W | TRACKDIR_BIT_Y_NW, + TRACKDIR_BIT_RIGHT_N | TRACKDIR_BIT_UPPER_E | TRACKDIR_BIT_X_NE, + TRACKDIR_BIT_RIGHT_S | TRACKDIR_BIT_LOWER_E | TRACKDIR_BIT_Y_SE +}; + +/** Converts the exit direction of a depot to trackdir the vehicle is going to drive to */ +static const Trackdir _roadveh_depot_exit_trackdir[DIAGDIR_END] = { + TRACKDIR_X_NE, TRACKDIR_Y_SE, TRACKDIR_X_SW, TRACKDIR_Y_NW }; int GetRoadVehImage(const Vehicle* v, Direction direction) @@ -153,7 +166,7 @@ v->z_pos = GetSlopeZ(x,y); v->z_height = 6; - v->u.road.state = 254; + v->u.road.state = RVSB_IN_DEPOT; v->vehstatus = VS_HIDDEN|VS_STOPPED|VS_DEFPAL; v->spritenum = rvi->image_index; @@ -444,7 +457,7 @@ v->u.road.crashed_ctr != 0 || v->breakdown_ctr != 0 || v->u.road.overtaking != 0 || - v->u.road.state == 255 || + v->u.road.state == RVSB_WORMHOLE || IsRoadVehInDepot(v) || v->cur_speed < 5) { return CMD_ERROR; @@ -490,11 +503,11 @@ { RoadStop *rs = GetRoadStopByTile(v->tile, GetRoadStopType(v->tile)); - // mark station as not busy - CLRBIT(rs->status, 7); + /* Mark the station entrance as not busy */ + rs->SetEntranceBusy(false); - // free parking bay - SETBIT(rs->status, HASBIT(v->u.road.state, 1) ? 1 : 0); + /* Free the parking bay */ + rs->FreeBay(HASBIT(v->u.road.state, RVS_USING_SECOND_BAY)); } static void RoadVehDelete(Vehicle *v) @@ -599,7 +612,7 @@ { TileIndex tile; - if (v->u.road.state == 255) return; + if (v->u.road.state == RVSB_WORMHOLE) return; tile = v->tile; @@ -867,7 +880,7 @@ // Clamp spd = min(spd, v->max_speed); - if (v->u.road.state == 255) spd = min(spd, SetSpeedLimitOnBridge(v)); + if (v->u.road.state == RVSB_WORMHOLE) spd = min(spd, SetSpeedLimitOnBridge(v)); //updates statusbar only if speed have changed to save CPU time if (spd != v->cur_speed) { @@ -958,7 +971,8 @@ if (v->direction != u->direction || !(v->direction & 1)) return; - if (v->u.road.state >= 32 || (v->u.road.state & 7) > 1) return; + /* Check if vehicle is in a road stop, depot, tunnel or bridge or not on a straight road */ + if (v->u.road.state >= RVS_IN_ROAD_STOP || !IsStraightRoadTrackdir((Trackdir)(v->u.road.state & RVSB_TRACKDIR_MASK))) return; tt = GetTileTrackStatus(v->tile, TRANSPORT_ROAD) & 0x3F; if ((tt & 3) == 0) return; @@ -1041,48 +1055,48 @@ return ret; } -// Returns direction to choose -// or -1 if the direction is currently blocked -static int RoadFindPathToDest(Vehicle* v, TileIndex tile, DiagDirection enterdir) +/** + * Returns direction to for a road vehicle to take or + * INVALID_TRACKDIR if the direction is currently blocked + * @param v the vehicle to do the pathfinding for + * @param tile the where to start the pathfinding + * @param enterdir the direction the vehicle enters the tile from + * @return the trackdir to take + */ +static Trackdir RoadFindPathToDest(Vehicle* v, TileIndex tile, DiagDirection enterdir) { -#define return_track(x) {best_track = x; goto found_best_track; } +#define return_track(x) { best_track = (Trackdir)x; goto found_best_track; } - uint16 signal; - uint bitmask; TileIndex desttile; FindRoadToChooseData frd; - int best_track; - uint best_dist, best_maxlen; - uint i; + Trackdir best_track; - { - uint32 r = GetTileTrackStatus(tile, TRANSPORT_ROAD); - signal = GB(r, 16, 16); - bitmask = GB(r, 0, 16); - } + uint32 r = GetTileTrackStatus(tile, TRANSPORT_ROAD); + TrackdirBits signal = (TrackdirBits)GB(r, 16, 16); + TrackdirBits trackdirs = (TrackdirBits)GB(r, 0, 16); if (IsTileType(tile, MP_STREET)) { if (GetRoadTileType(tile) == ROAD_TILE_DEPOT && (!IsTileOwner(tile, v->owner) || GetRoadDepotDirection(tile) == enterdir)) { /* Road depot owned by another player or with the wrong orientation */ - bitmask = 0; + trackdirs = TRACKDIR_BIT_NONE; } } else if (IsTileType(tile, MP_STATION) && IsRoadStopTile(tile)) { if (!IsTileOwner(tile, v->owner) || GetRoadStopDir(tile) == enterdir) { /* different station owner or wrong orientation */ - bitmask = 0; + trackdirs = TRACKDIR_BIT_NONE; } else { /* Our station */ RoadStop::Type rstype = (v->cargo_type == CT_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK; if (GetRoadStopType(tile) != rstype) { - // wrong station type - bitmask = 0; + /* Wrong station type */ + trackdirs = TRACKDIR_BIT_NONE; } else { - // proper station type, check if there is free loading bay + /* Proper station type, check if there is free loading bay */ if (!_patches.roadveh_queue && - GB(GetRoadStopByTile(tile, rstype)->status, 0, 2) == 0) { - // station is full and RV queuing is off - bitmask = 0; + !GetRoadStopByTile(tile, rstype)->HasFreeBay()) { + /* Station is full and RV queuing is off */ + trackdirs = TRACKDIR_BIT_NONE; } } } @@ -1092,9 +1106,9 @@ * stuff, probably even more arguments to GTTS. */ - /* remove unreachable tracks */ - bitmask &= _road_veh_fp_ax_and[enterdir]; - if (bitmask == 0) { + /* Remove tracks unreachable from the enter dir */ + trackdirs &= _road_enter_dir_to_reachable_trackdirs[enterdir]; + if (trackdirs == TRACKDIR_BIT_NONE) { /* No reachable tracks, so we'll reverse */ return_track(_road_reverse_table[enterdir]); } @@ -1109,19 +1123,19 @@ desttile = v->dest_tile; if (desttile == 0) { - // Pick a random track - return_track(PickRandomBit(bitmask)); + /* We've got no destination, pick a random track */ + return_track(PickRandomBit(trackdirs)); } - // Only one track to choose between? - if (!(KillFirstBit2x64(bitmask))) { - return_track(FindFirstBit2x64(bitmask)); + /* Only one track to choose between? */ + if (!(KillFirstBit2x64(trackdirs))) { + return_track(FindFirstBit2x64(trackdirs)); } if (_patches.yapf.road_use_yapf) { Trackdir trackdir = YapfChooseRoadTrack(v, tile, enterdir); if (trackdir != INVALID_TRACKDIR) return_track(trackdir); - return_track(PickRandomBit(bitmask)); + return_track(PickRandomBit(trackdirs)); } else if (_patches.new_pathfinding_all) { NPFFindStationOrTileData fstd; NPFFoundTargetData ftd; @@ -1132,11 +1146,11 @@ //debug("Finding path. Enterdir: %d, Trackdir: %d", enterdir, trackdir); ftd = PerfNPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, &fstd, TRANSPORT_ROAD, v->owner, INVALID_RAILTYPE); - if (ftd.best_trackdir == 0xff) { + if (ftd.best_trackdir == INVALID_TRACKDIR) { /* We are already at our target. Just do something */ //TODO: maybe display error? //TODO: go straight ahead if possible? - return_track(FindFirstBit2x64(bitmask)); + return_track(FindFirstBit2x64(trackdirs)); } else { /* If ftd.best_bird_dist is 0, we found our target and ftd.best_trackdir contains the direction we need to take to get there, if ftd.best_bird_dist is not 0, @@ -1160,40 +1174,40 @@ * pretend we are heading for the tile in front, we'll * see from there */ desttile += TileOffsByDiagDir(dir); - if (desttile == tile && bitmask & _road_pf_table_3[dir]) { + if (desttile == tile && trackdirs & _road_exit_dir_to_incoming_trackdirs[dir]) { /* If we are already in front of the * station/depot and we can get in from here, * we enter */ - return_track(FindFirstBit2x64(bitmask & _road_pf_table_3[dir])); + return_track(FindFirstBit2x64(trackdirs & _road_exit_dir_to_incoming_trackdirs[dir])); } } } - // do pathfind + /* Do some pathfinding */ frd.dest = desttile; - best_track = -1; - best_dist = (uint)-1; - best_maxlen = (uint)-1; - i = 0; - do { - if (bitmask & 1) { - if (best_track == -1) best_track = i; // in case we don't find the path, just pick a track + best_track = INVALID_TRACKDIR; + uint best_dist = (uint)-1; + uint best_maxlen = (uint)-1; + uint bitmask = (uint)trackdirs; + for (int i = 0; bitmask != 0; bitmask >>= 1, i++) { + if (HASBIT(bitmask, 0)) { + if (best_track == INVALID_TRACKDIR) best_track = (Trackdir)i; // in case we don't find the path, just pick a track frd.maxtracklen = (uint)-1; frd.mindist = (uint)-1; FollowTrack(tile, 0x2000 | TRANSPORT_ROAD, _road_pf_directions[i], EnumRoadTrackFindDist, NULL, &frd); - if (frd.mindist < best_dist || (frd.mindist==best_dist && frd.maxtracklen < best_maxlen)) { + if (frd.mindist < best_dist || (frd.mindist == best_dist && frd.maxtracklen < best_maxlen)) { best_dist = frd.mindist; best_maxlen = frd.maxtracklen; - best_track = i; + best_track = (Trackdir)i; } } - } while (++i,(bitmask>>=1) != 0); + } } found_best_track:; - if (HASBIT(signal, best_track)) return -1; + if (HASBIT(signal, best_track)) return INVALID_TRACKDIR; return best_track; } @@ -1208,7 +1222,7 @@ // use NPF NPFFindStationOrTileData fstd; Trackdir trackdir = GetVehicleTrackdir(v); - assert(trackdir != 0xFF); + assert(trackdir != INVALID_TRACKDIR); fstd.dest_coords = tile; fstd.station_index = INVALID_STATION; // indicates that the destination is a tile, not a station @@ -1221,6 +1235,18 @@ return dist; } +enum { + RDE_NEXT_TILE = 0x80, + RDE_TURNED = 0x40, + + /* Start frames for when a vehicle enters a tile/changes its state. + * The start frame is different for vehicles that turned around or + * are leaving the depot as the do not start at the edge of the tile */ + RVC_DEFAULT_START_FRAME = 0, + RVC_TURN_AROUND_START_FRAME = 1, + RVC_DEPOT_START_FRAME = 6 +}; + typedef struct RoadDriveEntry { byte x,y; } RoadDriveEntry; @@ -1234,8 +1260,6 @@ 15, 15, 11, 11 }; -static const byte _roadveh_data_2[4] = { 0, 1, 8, 9 }; - static void RoadVehController(Vehicle *v) { Direction new_dir; @@ -1273,20 +1297,21 @@ if (v->current_order.type == OT_LOADING) return; if (IsRoadVehInDepot(v)) { + /* Vehicle is about to leave a depot */ DiagDirection dir; const RoadDriveEntry* rdp; - byte rd2; + Trackdir tdir; v->cur_speed = 0; dir = GetRoadDepotDirection(v->tile); v->direction = DiagDirToDir(dir); - rd2 = _roadveh_data_2[dir]; - rdp = _road_drive_data[(_opt.road_side << 4) + rd2]; + tdir = _roadveh_depot_exit_trackdir[dir]; + rdp = _road_drive_data[(_opt.road_side << RVS_DRIVE_SIDE) + tdir]; - x = TileX(v->tile) * TILE_SIZE + (rdp[6].x & 0xF); - y = TileY(v->tile) * TILE_SIZE + (rdp[6].y & 0xF); + x = TileX(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].x & 0xF); + y = TileY(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].y & 0xF); if (RoadVehFindCloseTo(v, x, y, v->direction) != NULL) return; @@ -1297,8 +1322,8 @@ BeginVehicleMove(v); v->vehstatus &= ~VS_HIDDEN; - v->u.road.state = rd2; - v->u.road.frame = 6; + v->u.road.state = tdir; + v->u.road.frame = RVC_DEPOT_START_FRAME; v->cur_image = GetRoadVehImage(v, v->direction); UpdateRoadVehDeltaXY(v); @@ -1308,24 +1333,24 @@ return; } + /* Check if vehicle needs to proceed, return if it doesn't */ if (!RoadVehAccelerate(v)) return; if (v->u.road.overtaking != 0) { if (++v->u.road.overtaking_ctr >= 35) /* If overtaking just aborts at a random moment, we can have a out-of-bound problem, * if the vehicle started a corner. To protect that, only allow an abort of - * overtake if we are on straight road, which are the 8 states below */ - if (v->u.road.state == 0 || v->u.road.state == 1 || - v->u.road.state == 8 || v->u.road.state == 9 || - v->u.road.state == 16 || v->u.road.state == 17 || - v->u.road.state == 24 || v->u.road.state == 25) { + * overtake if we are on straight roads */ + if (v->u.road.state < RVSB_IN_ROAD_STOP && IsStraightRoadTrackdir((Trackdir)v->u.road.state)) { v->u.road.overtaking = 0; } } + /* Save old vehicle position to use at end of move to set viewport area dirty */ BeginVehicleMove(v); - if (v->u.road.state == 255) { + if (v->u.road.state == RVSB_WORMHOLE) { + /* Vehicle is entering a depot or is on a bridge or in a tunnel */ GetNewVehiclePosResult gp; GetNewVehiclePos(v, &gp); @@ -1336,8 +1361,8 @@ return; } - if ((IsTunnelTile(gp.new_tile) || IsBridgeTile(gp.new_tile)) && VehicleEnterTile(v, gp.new_tile, gp.x, gp.y) & 4) { - //new_dir = RoadGetNewDirection(v, gp.x, gp.y) + if ((IsTunnelTile(gp.new_tile) || IsBridgeTile(gp.new_tile)) && HASBIT(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) { + /* Vehicle has just entered a bridge or tunnel */ v->cur_image = GetRoadVehImage(v, v->direction); UpdateRoadVehDeltaXY(v); SetRoadVehPosition(v,gp.x,gp.y); @@ -1351,63 +1376,67 @@ return; } - rd = _road_drive_data[(v->u.road.state + (_opt.road_side << 4)) ^ v->u.road.overtaking][v->u.road.frame + 1]; + /* Get move position data for next frame */ + rd = _road_drive_data[(v->u.road.state + (_opt.road_side << RVS_DRIVE_SIDE)) ^ v->u.road.overtaking][v->u.road.frame + 1]; -// switch to another tile - if (rd.x & 0x80) { + if (rd.x & RDE_NEXT_TILE) { TileIndex tile = v->tile + TileOffsByDiagDir(rd.x & 3); - int dir = RoadFindPathToDest(v, tile, (DiagDirection)(rd.x & 3)); + Trackdir dir = RoadFindPathToDest(v, tile, (DiagDirection)(rd.x & 3)); uint32 r; Direction newdir; const RoadDriveEntry *rdp; - if (dir == -1) { + if (dir == INVALID_TRACKDIR) { v->cur_speed = 0; return; } again: - if ((dir & 7) >= 6) { + if (IsReversingRoadTrackdir(dir)) { /* Turning around */ tile = v->tile; } - rdp = _road_drive_data[(dir + (_opt.road_side << 4)) ^ v->u.road.overtaking]; + /* Get position data for first frame on the new tile */ + rdp = _road_drive_data[(dir + (_opt.road_side << RVS_DRIVE_SIDE)) ^ v->u.road.overtaking]; - x = TileX(tile) * TILE_SIZE + rdp[0].x; - y = TileY(tile) * TILE_SIZE + rdp[0].y; + x = TileX(tile) * TILE_SIZE + rdp[RVC_DEFAULT_START_FRAME].x; + y = TileY(tile) * TILE_SIZE + rdp[RVC_DEFAULT_START_FRAME].y; newdir = RoadVehGetSlidingDirection(v, x, y); if (RoadVehFindCloseTo(v, x, y, newdir) != NULL) return; r = VehicleEnterTile(v, tile, x, y); - if (r & 8) { + if (HASBIT(r, VETS_CANNOT_ENTER)) { if (!IsTileType(tile, MP_TUNNELBRIDGE)) { v->cur_speed = 0; return; } - dir = _road_reverse_table[rd.x&3]; + /* Try an about turn to re-enter the previous tile */ + dir = _road_reverse_table[rd.x & 3]; goto again; } - if (IS_BYTE_INSIDE(v->u.road.state, 0x20, 0x30) && IsTileType(v->tile, MP_STATION)) { - if ((dir & 7) >= 6) { + if (IS_BYTE_INSIDE(v->u.road.state, RVSB_IN_ROAD_STOP, RVSB_IN_ROAD_STOP_END) && IsTileType(v->tile, MP_STATION)) { + if (IsReversingRoadTrackdir(dir)) { + /* New direction is trying to turn vehicle around. + * We can't turn at the exit of a road stop so wait.*/ v->cur_speed = 0; return; } if (IsRoadStop(v->tile)) { RoadStop *rs = GetRoadStopByTile(v->tile, GetRoadStopType(v->tile)); - // reached a loading bay, mark it as used and clear the usage bit - SETBIT(rs->status, v->u.road.state & 2 ? 1 : 0); // occupied bay - CLRBIT(rs->status, 7); // usage bit + /* Vehicle is leaving a road stop tile, mark bay as free */ + rs->FreeBay(HASBIT(v->u.road.state, RVS_USING_SECOND_BAY)); + rs->SetEntranceBusy(false); } } - if (!(r & 4)) { + if (!HASBIT(r, VETS_ENTERED_WORMHOLE)) { v->tile = tile; v->u.road.state = (byte)dir; - v->u.road.frame = 0; + v->u.road.frame = RVC_DEFAULT_START_FRAME; } if (newdir != v->direction) { v->direction = newdir; @@ -1420,35 +1449,34 @@ return; } - if (rd.x & 0x40) { - int dir = RoadFindPathToDest(v, v->tile, (DiagDirection)(rd.x & 3)); + if (rd.x & RDE_TURNED) { + /* Vehicle has finished turning around, it will now head back onto the same tile */ + Trackdir dir = RoadFindPathToDest(v, v->tile, (DiagDirection)(rd.x & 3)); uint32 r; - int tmp; Direction newdir; const RoadDriveEntry *rdp; - if (dir == -1) { + if (dir == INVALID_TRACKDIR) { v->cur_speed = 0; return; } - tmp = (_opt.road_side << 4) + dir; - rdp = _road_drive_data[tmp]; + rdp = _road_drive_data[(_opt.road_side << RVS_DRIVE_SIDE) + dir]; - x = TileX(v->tile) * TILE_SIZE + rdp[1].x; - y = TileY(v->tile) * TILE_SIZE + rdp[1].y; + x = TileX(v->tile) * TILE_SIZE + rdp[RVC_TURN_AROUND_START_FRAME].x; + y = TileY(v->tile) * TILE_SIZE + rdp[RVC_TURN_AROUND_START_FRAME].y; newdir = RoadVehGetSlidingDirection(v, x, y); if (RoadVehFindCloseTo(v, x, y, newdir) != NULL) return; r = VehicleEnterTile(v, v->tile, x, y); - if (r & 8) { + if (HASBIT(r, VETS_CANNOT_ENTER)) { v->cur_speed = 0; return; } - v->u.road.state = tmp & ~16; - v->u.road.frame = 1; + v->u.road.state = dir; + v->u.road.frame = RVC_TURN_AROUND_START_FRAME; if (newdir != v->direction) { v->direction = newdir; @@ -1461,15 +1489,19 @@ return; } + /* Calculate new position for the vehicle */ x = (v->x_pos & ~15) + (rd.x & 15); y = (v->y_pos & ~15) + (rd.y & 15); new_dir = RoadVehGetSlidingDirection(v, x, y); - if (!IS_BYTE_INSIDE(v->u.road.state, 0x20, 0x30)) { + if (!IS_BYTE_INSIDE(v->u.road.state, RVSB_IN_ROAD_STOP, RVSB_IN_ROAD_STOP_END)) { + /* Vehicle is not in a road stop. + * Check for another vehicle to overtake */ Vehicle* u = RoadVehFindCloseTo(v, x, y, new_dir); if (u != NULL) { + /* There is a vehicle in front overtake it if possible */ if (v->u.road.overtaking == 0) RoadVehCheckOvertake(v, u); return; } @@ -1480,23 +1512,31 @@ v->direction = new_dir; v->cur_speed -= (v->cur_speed >> 2); if (old_dir != v->u.road.state) { + /* The vehicle is in a road stop */ v->cur_image = GetRoadVehImage(v, new_dir); UpdateRoadVehDeltaXY(v); SetRoadVehPosition(v, v->x_pos, v->y_pos); + /* Note, return here means that the frame counter is not incremented + * for vehicles changing direction in a road stop. This causes frames to + * be repeated. (XXX) Is this intended? */ return; } } - if (v->u.road.state >= 0x20 && - _road_veh_data_1[v->u.road.state - 0x20 + (_opt.road_side<<4)] == v->u.road.frame) { + if (v->u.road.state >= RVSB_IN_ROAD_STOP && + _road_veh_data_1[v->u.road.state - RVSB_IN_ROAD_STOP + (_opt.road_side << RVS_DRIVE_SIDE)] == v->u.road.frame) { RoadStop *rs = GetRoadStopByTile(v->tile, GetRoadStopType(v->tile)); Station* st = GetStationByTile(v->tile); + /* Vehicle is at the stop position (at a bay) in a road stop. + * Note, if vehicle is loading/unloading it has already been handled, + * so if we get here the vehicle has just arrived or is just ready to leave. */ if (v->current_order.type != OT_LEAVESTATION && v->current_order.type != OT_GOTO_DEPOT) { + /* Vehicle has arrived at a bay in a road stop */ Order old_order; - CLRBIT(rs->status, 7); + rs->SetEntranceBusy(false); v->last_station_visited = GetStationIndex(v->tile); @@ -1521,8 +1561,10 @@ return; } + /* Vehicle is ready to leave a bay in a road stop */ if (v->current_order.type != OT_GOTO_DEPOT) { - if (HASBIT(rs->status, 7)) { + if (rs->IsEntranceBusy()) { + /* Road stop entrance is busy, so wait as there is nowhere else to go */ v->cur_speed = 0; return; } @@ -1530,13 +1572,14 @@ v->current_order.flags = 0; ClearSlot(v); } - SETBIT(rs->status, 7); + + rs->SetEntranceBusy(true); if (rs == v->u.road.slot) { - //we have arrived at the correct station + /* We are leaving the correct station */ ClearSlot(v); } else if (v->u.road.slot != NULL) { - //we have arrived at the wrong station + /* We are leaving the wrong station */ //XXX The question is .. what to do? Actually we shouldn't be here //but I guess we need to clear the slot DEBUG(ms, 0, "Vehicle %d (index %d) arrived at wrong stop", v->unitnumber, v->index); @@ -1562,13 +1605,17 @@ InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR); } + /* Check tile position conditions - i.e. stop position in depot, + * entry onto bridge or into tunnel */ r = VehicleEnterTile(v, v->tile, x, y); - if (r & 8) { + if (HASBIT(r, VETS_CANNOT_ENTER)) { v->cur_speed = 0; return; } - if ((r & 4) == 0) v->u.road.frame++; + /* Move to next frame unless vehicle arrived at a stop position + * in a depot or entered a tunnel/bridge */ + if (!HASBIT(r, VETS_ENTERED_WORMHOLE)) v->u.road.frame++; v->cur_image = GetRoadVehImage(v, v->direction); UpdateRoadVehDeltaXY(v); diff -r ca57ad0b45ea -r 23983700e3d7 src/saveload.cpp --- a/src/saveload.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/saveload.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -30,7 +30,7 @@ #include "variables.h" #include -extern const uint16 SAVEGAME_VERSION = 45; +extern const uint16 SAVEGAME_VERSION = 46; uint16 _sl_version; /// the major savegame version identifier byte _sl_minor_version; /// the minor savegame version, DO NOT USE! diff -r ca57ad0b45ea -r 23983700e3d7 src/settings.cpp --- a/src/settings.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/settings.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -960,7 +960,7 @@ SDTG_CONDVAR(name, type, flags, guiflags, var, def, min, max, interval, str, proc, 0, SL_MAX_VERSION) #define SDTG_CONDBOOL(name, flags, guiflags, var, def, str, proc, from, to)\ - SDTG_GENERAL(name, SDT_BOOLX, SL_VAR, SLE_UINT8, flags, guiflags, var, 0, def, 0, 1, 0, NULL, str, proc, from, to) + SDTG_GENERAL(name, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, var, 0, def, 0, 1, 0, NULL, str, proc, from, to) #define SDTG_BOOL(name, flags, guiflags, var, def, str, proc)\ SDTG_CONDBOOL(name, flags, guiflags, var, def, str, proc, 0, SL_MAX_VERSION) diff -r ca57ad0b45ea -r 23983700e3d7 src/ship_cmd.cpp --- a/src/ship_cmd.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/ship_cmd.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -693,14 +693,14 @@ BeginVehicleMove(v); if (GetNewVehiclePos(v, &gp)) { - // staying in tile + /* Staying in tile */ if (IsShipInDepot(v)) { gp.x = v->x_pos; gp.y = v->y_pos; } else { - /* isnot inside depot */ + /* Not inside depot */ r = VehicleEnterTile(v, gp.new_tile, gp.x, gp.y); - if (r & 0x8) goto reverse_direction; + if (HASBIT(r, VETS_CANNOT_ENTER)) goto reverse_direction; /* A leave station order only needs one tick to get processed, so we can * always skip ahead. */ @@ -722,7 +722,7 @@ /* Non-buoy orders really need to reach the tile */ if (v->dest_tile == gp.new_tile) { if (v->current_order.type == OT_GOTO_DEPOT) { - if ((gp.x&0xF)==8 && (gp.y&0xF)==8) { + if ((gp.x & 0xF) == 8 && (gp.y & 0xF) == 8) { VehicleEnterDepot(v); return; } @@ -757,32 +757,31 @@ } } else { DiagDirection diagdir; - // new tile - if (TileX(gp.new_tile) >= MapMaxX() || TileY(gp.new_tile) >= MapMaxY()) + /* New tile */ + if (TileX(gp.new_tile) >= MapMaxX() || TileY(gp.new_tile) >= MapMaxY()) { goto reverse_direction; + } dir = ShipGetNewDirectionFromTiles(gp.new_tile, gp.old_tile); assert(dir == DIR_NE || dir == DIR_SE || dir == DIR_SW || dir == DIR_NW); diagdir = DirToDiagDir(dir); tracks = GetAvailShipTracks(gp.new_tile, diagdir); - if (tracks == 0) - goto reverse_direction; + if (tracks == TRACK_BIT_NONE) goto reverse_direction; - // Choose a direction, and continue if we find one + /* Choose a direction, and continue if we find one */ track = ChooseShipTrack(v, gp.new_tile, diagdir, tracks); - if (track == INVALID_TRACK) - goto reverse_direction; + if (track == INVALID_TRACK) goto reverse_direction; b = _ship_subcoord[diagdir][track]; - gp.x = (gp.x&~0xF) | b[0]; - gp.y = (gp.y&~0xF) | b[1]; + gp.x = (gp.x & ~0xF) | b[0]; + gp.y = (gp.y & ~0xF) | b[1]; /* Call the landscape function and tell it that the vehicle entered the tile */ r = VehicleEnterTile(v, gp.new_tile, gp.x, gp.y); - if (r&0x8) goto reverse_direction; + if (HASBIT(r, VETS_CANNOT_ENTER)) goto reverse_direction; - if (!(r&0x4)) { + if (!HASBIT(r, VETS_ENTERED_WORMHOLE)) { v->tile = gp.new_tile; v->u.ship.state = TrackToTrackBits(track); } @@ -905,7 +904,7 @@ _new_vehicle_id = v->index; v->string_id = STR_SV_SHIP_NAME; - v->u.ship.state = TRACK_BIT_SPECIAL; + v->u.ship.state = TRACK_BIT_DEPOT; v->service_interval = _patches.servint_ships; v->date_of_last_service = _date; diff -r ca57ad0b45ea -r 23983700e3d7 src/sound/null_s.cpp --- a/src/sound/null_s.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/sound/null_s.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -1,7 +1,6 @@ /* $Id$ */ #include "../stdafx.h" -#include "../openttd.h" #include "null_s.h" static const char *NullSoundStart(const char * const *parm) { return NULL; } diff -r ca57ad0b45ea -r 23983700e3d7 src/sound/null_s.h --- a/src/sound/null_s.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/sound/null_s.h Wed Feb 14 10:46:38 2007 +0000 @@ -7,4 +7,4 @@ extern const HalSoundDriver _null_sound_driver; -#endif +#endif /* SOUND_NULL_H */ diff -r ca57ad0b45ea -r 23983700e3d7 src/sound/sdl_s.cpp --- a/src/sound/sdl_s.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/sound/sdl_s.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -44,4 +44,4 @@ SdlSoundStop, }; -#endif +#endif /* WITH_SDL */ diff -r ca57ad0b45ea -r 23983700e3d7 src/sound/sdl_s.h --- a/src/sound/sdl_s.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/sound/sdl_s.h Wed Feb 14 10:46:38 2007 +0000 @@ -7,4 +7,4 @@ extern const HalSoundDriver _sdl_sound_driver; -#endif +#endif /* SOUND_SDL_H */ diff -r ca57ad0b45ea -r 23983700e3d7 src/sound/win32_s.cpp --- a/src/sound/win32_s.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/sound/win32_s.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -42,29 +42,27 @@ { switch (uMsg) { case WOM_DONE: - if (_waveout) FillHeaders(); + if (_waveout != NULL) FillHeaders(); break; - - default: - break; + default: break; } } static const char *Win32SoundStart(const char* const* parm) { WAVEFORMATEX wfex; - int hz; - - _bufsize = GetDriverParamInt(parm, "bufsize", 1024); - hz = GetDriverParamInt(parm, "hz", 11025); wfex.wFormatTag = WAVE_FORMAT_PCM; wfex.nChannels = 2; - wfex.nSamplesPerSec = hz; - wfex.nAvgBytesPerSec = hz * 2 * 2; - wfex.nBlockAlign = 4; wfex.wBitsPerSample = 16; + wfex.nSamplesPerSec = GetDriverParamInt(parm, "hz", 11025); + wfex.nBlockAlign = (wfex.nChannels * wfex.wBitsPerSample) / 8; + wfex.nAvgBytesPerSec = wfex.nSamplesPerSec * wfex.nBlockAlign; + + _bufsize = GetDriverParamInt(parm, "bufsize", 1024); + if (waveOutOpen(&_waveout, WAVE_MAPPER, &wfex, (DWORD_PTR)&waveOutProc, 0, CALLBACK_FUNCTION) != MMSYSERR_NOERROR) return "waveOutOpen failed"; + PrepareHeader(&_wave_hdr[0]); PrepareHeader(&_wave_hdr[1]); FillHeaders(); diff -r ca57ad0b45ea -r 23983700e3d7 src/station.cpp --- a/src/station.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/station.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -162,7 +162,7 @@ /* We don't use FOR_ALL here, because FOR_ALL skips invalid items. * TODO - This is just a temporary stage, this will be removed. */ for (st = GetStation(0); st != NULL; st = (st->index + 1U < GetStationPoolSize()) ? GetStation(st->index + 1U) : NULL) { - if (!IsValidStation(st)) { + if (!st->IsValid()) { StationID index = st->index; memset(st, 0, sizeof(Station)); @@ -179,12 +179,70 @@ } +/** Obtain the length of a platform + * @pre tile must be a railway station tile + * @param tile A tile that contains the platform in question + * @returns The length of the platform + */ +uint Station::GetPlatformLength(TileIndex tile) const +{ + TileIndex t; + TileIndexDiff delta; + uint len = 0; + assert(TileBelongsToRailStation(tile)); + + delta = (GetRailStationAxis(tile) == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1)); + + t = tile; + do { + t -= delta; + len++; + } while (IsCompatibleTrainStationTile(t, tile)); + + t = tile; + do { + t += delta; + len++; + } while (IsCompatibleTrainStationTile(t, tile)); + + return len - 1; +} + +/** Determines the REMAINING length of a platform, starting at (and including) + * the given tile. + * @param tile the tile from which to start searching. Must be a railway station tile + * @param dir The direction in which to search. + * @return The platform length + */ +uint Station::GetPlatformLength(TileIndex tile, DiagDirection dir) const +{ + TileIndex start_tile = tile; + uint length = 0; + assert(IsRailwayStationTile(tile)); + assert(dir < DIAGDIR_END); + + do { + length ++; + tile += TileOffsByDiagDir(dir); + } while (IsCompatibleTrainStationTile(tile, start_tile)); + + return length; +} + /** Determines whether a station is a buoy only. * @todo Ditch this encoding of buoys */ bool Station::IsBuoy() const { - return (this->had_vehicle_of_type & HVOT_BUOY) != 0; + return (had_vehicle_of_type & HVOT_BUOY) != 0; +} + +/** Determines whether a station exists + * @todo replace 0 by INVALID_TILE + */ +bool Station::IsValid() const +{ + return xy != 0; } @@ -437,3 +495,49 @@ { return xy != INVALID_TILE; } + +/** Checks whether there is a free bay in this road stop */ +bool RoadStop::HasFreeBay() const +{ + return GB(status, 0, MAX_BAY_COUNT) != 0; +} + +/** + * Allocates a bay + * @return the allocated bay number + * @pre this->HasFreeBay() + */ +uint RoadStop::AllocateBay() +{ + assert(HasFreeBay()); + + /* Find the first free bay. If the bit is set, the bay is free. */ + uint bay_nr = 0; + while (!HASBIT(status, bay_nr)) bay_nr++; + + CLRBIT(status, bay_nr); + return bay_nr; +} + +/** + * Frees the given bay + * @param nr the number of the bay to free + */ +void RoadStop::FreeBay(uint nr) +{ + assert(nr < MAX_BAY_COUNT); + SETBIT(status, nr); +} + + +/** Checks whether the entrance of the road stop is occupied by a vehicle */ +bool RoadStop::IsEntranceBusy() const +{ + return HASBIT(status, 7); +} + +/** Makes an entrance occupied or free */ +void RoadStop::SetEntranceBusy(bool busy) +{ + SB(status, 7, 1, busy); +} diff -r ca57ad0b45ea -r 23983700e3d7 src/station.h --- a/src/station.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/station.h Wed Feb 14 10:46:38 2007 +0000 @@ -44,10 +44,11 @@ static const int cDebugCtorLevel = 3; ///< Debug level on which Contructor / Destructor messages are printed static const uint LIMIT = 16; ///< The maximum amount of roadstops that are allowed at a single station + static const uint MAX_BAY_COUNT = 2; ///< The maximum number of loading bays TileIndex xy; ///< Position on the map RoadStopID index; ///< Global (i.e. pool-wide) index - byte status; ///< Current status of the Stop. Like which spot is taken. TODO - enumify this + byte status; ///< Current status of the Stop. Like which spot is taken. Access using *Bay and *Busy functions. byte num_vehicles; ///< Number of vehicles currently slotted to this stop struct RoadStop *next; ///< Next stop of the given type at this station @@ -62,6 +63,13 @@ void operator delete(void *rs, int index); bool IsValid() const; + + /* For accessing status */ + bool HasFreeBay() const; + uint AllocateBay(); + void FreeBay(uint nr); + bool IsEntranceBusy() const; + void SetEntranceBusy(bool busy); protected: static RoadStop *AllocateRaw(void); }; @@ -131,8 +139,7 @@ Date build_date; - //uint16 airport_flags; - uint32 airport_flags; + uint64 airport_flags; /// stores which blocks on the airport are taken. was 16 bit earlier on, then 32 StationID index; byte last_vehicle_type; @@ -160,7 +167,10 @@ void MarkDirty() const; void MarkTilesDirty() const; bool TileBelongsToRailStation(TileIndex tile) const; + uint GetPlatformLength(TileIndex tile, DiagDirection dir) const; + uint GetPlatformLength(TileIndex tile) const; bool IsBuoy() const; + bool IsValid() const; protected: static Station *AllocateRaw(void); @@ -230,20 +240,12 @@ return GetStationPoolSize(); } -/** - * Check if a station really exists. - */ -static inline bool IsValidStation(const Station *st) +static inline bool IsValidStationID(StationID index) { - return st->xy != 0; + return index < GetStationPoolSize() && GetStation(index)->IsValid(); } -static inline bool IsValidStationID(StationID index) -{ - return index < GetStationPoolSize() && IsValidStation(GetStation(index)); -} - -#define FOR_ALL_STATIONS_FROM(st, start) for (st = GetStation(start); st != NULL; st = (st->index + 1U < GetStationPoolSize()) ? GetStation(st->index + 1U) : NULL) if (IsValidStation(st)) +#define FOR_ALL_STATIONS_FROM(st, start) for (st = GetStation(start); st != NULL; st = (st->index + 1U < GetStationPoolSize()) ? GetStation(st->index + 1U) : NULL) if (st->IsValid()) #define FOR_ALL_STATIONS(st) FOR_ALL_STATIONS_FROM(st, 0) @@ -260,8 +262,6 @@ void AfterLoadStations(void); void GetProductionAroundTiles(AcceptedCargo produced, TileIndex tile, int w, int h, int rad); void GetAcceptanceAroundTiles(AcceptedCargo accepts, TileIndex tile, int w, int h, int rad); -uint GetStationPlatforms(const Station *st, TileIndex tile); -uint GetPlatformLength(TileIndex tile, DiagDirection dir); const DrawTileSprites *GetStationTileLayout(byte gfx); diff -r ca57ad0b45ea -r 23983700e3d7 src/station_cmd.cpp --- a/src/station_cmd.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/station_cmd.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -54,7 +54,7 @@ for (i = start_item; i <= end_item; i++) { Station *st = GetStation(i); - if (IsValidStation(st)) st->~Station(); + if (st->IsValid()) st->~Station(); } } @@ -167,7 +167,7 @@ /* We don't use FOR_ALL here, because FOR_ALL skips invalid items. * TODO - This is just a temporary stage, this will be removed. */ for (st = GetStation(0); st != NULL; st = (st->index + 1U < GetStationPoolSize()) ? GetStation(st->index + 1U) : NULL) { - if (!IsValidStation(st)) { + if (!st->IsValid()) { StationID index = st->index; memset(st, 0, sizeof(Station)); @@ -1140,57 +1140,6 @@ return _price.remove_rail_station; } -// determine the number of platforms for the station -uint GetStationPlatforms(const Station *st, TileIndex tile) -{ - TileIndex t; - TileIndexDiff delta; - Axis axis; - uint len; - assert(st->TileBelongsToRailStation(tile)); - - len = 0; - axis = GetRailStationAxis(tile); - delta = (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1)); - - // find starting tile.. - t = tile; - do { - t -= delta; - len++; - } while (st->TileBelongsToRailStation(t) && GetRailStationAxis(t) == axis); - - // find ending tile - t = tile; - do { - t += delta; - len++; - } while (st->TileBelongsToRailStation(t) && GetRailStationAxis(t) == axis); - - return len - 1; -} - -/** Determines the REMAINING length of a platform, starting at (and including) - * the given tile. - * @param tile the tile from which to start searching. Must be a railway station tile - * @param dir The direction in which to search. - * @return The platform length - */ -uint GetPlatformLength(TileIndex tile, DiagDirection dir) -{ - TileIndex start_tile = tile; - uint length = 0; - assert(IsRailwayStationTile(tile)); - assert(dir < DIAGDIR_END); - - do { - length ++; - tile += TileOffsByDiagDir(dir); - } while (IsCompatibleTrainStationTile(tile, start_tile)); - - return length; -} - static int32 RemoveRailroadStation(Station *st, TileIndex tile, uint32 flags) { @@ -2260,7 +2209,7 @@ if (DiagDirToAxis(dir) != AXIS_X) intswap(x, y); if (y == TILE_SIZE / 2) { if (dir != DIAGDIR_SE && dir != DIAGDIR_SW) x = TILE_SIZE - 1 - x; - if (x == 12) return 2 | (station_id << 8); /* enter station */ + if (x == 12) return VETSB_ENTERED_STATION | (station_id << VETS_STATION_ID_OFFSET); /* enter station */ if (x < 12) { uint16 spd; @@ -2273,35 +2222,27 @@ } } } else if (v->type == VEH_Road) { - if (v->u.road.state < 16 && !HASBIT(v->u.road.state, 2) && v->u.road.frame == 0) { + if (v->u.road.state < RVSB_IN_ROAD_STOP && v->u.road.frame == 0) { if (IsRoadStop(tile)) { /* Attempt to allocate a parking bay in a road stop */ RoadStop *rs = GetRoadStopByTile(tile, GetRoadStopType(tile)); - /* rs->status bits 0 and 1 describe current the two parking spots. - * 0 means occupied, 1 means free. */ - - // Check if station is busy or if there are no free bays. - if (HASBIT(rs->status, 7) || GB(rs->status, 0, 2) == 0) - return 8; - - v->u.road.state += 32; - - // if the first bay is free, allocate that, else the second bay must be free. - if (HASBIT(rs->status, 0)) { - CLRBIT(rs->status, 0); - } else { - CLRBIT(rs->status, 1); - v->u.road.state += 2; - } - - // mark the station as busy - SETBIT(rs->status, 7); + /* Check if station is busy or if there are no free bays. */ + if (rs->IsEntranceBusy() || !rs->HasFreeBay()) return VETSB_CANNOT_ENTER; + + SETBIT(v->u.road.state, RVS_IN_ROAD_STOP); + + /* Allocate a bay and update the road state */ + uint bay_nr = rs->AllocateBay(); + SB(v->u.road.state, RVS_USING_SECOND_BAY, 1, bay_nr); + + /* Mark the station entrace as busy */ + rs->SetEntranceBusy(true); } } } - return 0; + return VETSB_CONTINUE; } /* this function is called for one station each tick */ @@ -2863,8 +2804,9 @@ SLE_CONDNULL(2, 0, 5), // Truck/bus stop status SLE_CONDNULL(1, 0, 4), // Blocked months - SLE_CONDVAR(Station, airport_flags, SLE_VAR_U32 | SLE_FILE_U16, 0, 2), - SLE_CONDVAR(Station, airport_flags, SLE_UINT32, 3, SL_MAX_VERSION), + SLE_CONDVAR(Station, airport_flags, SLE_VAR_U64 | SLE_FILE_U16, 0, 2), + SLE_CONDVAR(Station, airport_flags, SLE_VAR_U64 | SLE_FILE_U32, 3, 45), + SLE_CONDVAR(Station, airport_flags, SLE_UINT64, 46, SL_MAX_VERSION), SLE_CONDNULL(2, 0, 25), /* Ex last-vehicle */ SLE_CONDVAR(Station, last_vehicle_type, SLE_UINT8, 26, SL_MAX_VERSION), diff -r ca57ad0b45ea -r 23983700e3d7 src/strings.cpp --- a/src/strings.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/strings.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -802,7 +802,7 @@ case SCC_STATION_NAME: { // {STATION} const Station* st = GetStation(GetInt32(&argv)); - if (!IsValidStation(st)) { // station doesn't exist anymore + if (!st->IsValid()) { // station doesn't exist anymore buff = GetStringWithArgs(buff, STR_UNKNOWN_DESTINATION, NULL, last); } else { int32 temp[2]; diff -r ca57ad0b45ea -r 23983700e3d7 src/table/roadveh.h --- a/src/table/roadveh.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/table/roadveh.h Wed Feb 14 10:46:38 2007 +0000 @@ -17,7 +17,7 @@ { 2, 5}, { 1, 5}, { 0, 5}, - {0x80, 0} + {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_1[] = { {5, 0}, @@ -36,7 +36,7 @@ {5, 13}, {5, 14}, {5, 15}, - {0x81, 0} + {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_2[] = { {5, 0}, @@ -47,7 +47,7 @@ {2, 5}, {1, 5}, {0, 5}, - {0x80, 0} + {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_3[] = { {15, 5}, @@ -66,7 +66,7 @@ { 5, 13}, { 5, 14}, { 5, 15}, - {0x81, 0} + {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_4[] = { { 5, 0}, @@ -85,7 +85,7 @@ {13, 9}, {14, 9}, {15, 9}, - {0x82, 0} + {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_5[] = { {0, 9}, @@ -97,21 +97,21 @@ {5, 13}, {5, 14}, {5, 15}, - {0x81, 0} + {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_6[] = { {0, 6}, {0, 7}, {0, 8}, {0, 9}, - {0x42, 0} + {RDE_TURNED | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_7[] = { {6, 15}, {7, 15}, {8, 15}, {9, 15}, - {0x43, 0} + {RDE_TURNED | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_8[] = { { 0, 9}, @@ -130,7 +130,7 @@ {13, 9}, {14, 9}, {15, 9}, - {0x82, 0} + {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_9[] = { {9, 15}, @@ -149,7 +149,7 @@ {9, 2}, {9, 1}, {9, 0}, - {0x83, 0} + {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_10[] = { {0, 9}, @@ -167,7 +167,7 @@ {9, 2}, {9, 1}, {9, 0}, - {0x83, 0} + {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_11[] = { { 9, 15}, @@ -179,7 +179,7 @@ {13, 9}, {14, 9}, {15, 9}, - {0x82, 0} + {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_12[] = { {15, 5}, @@ -190,7 +190,7 @@ {10, 2}, { 9, 1}, { 9, 0}, - {0x83, 0} + {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_13[] = { {9, 15}, @@ -208,21 +208,21 @@ {2, 5}, {1, 5}, {0, 5}, - {0x80, 0} + {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_14[] = { {15, 8}, {15, 7}, {15, 6}, {15, 5}, - {0x40, 0} + {RDE_TURNED | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_15[] = { {8, 0}, {7, 0}, {6, 0}, {5, 0}, - {0x41, 0} + {RDE_TURNED | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_16[] = { {15, 9}, @@ -241,7 +241,7 @@ { 2, 9}, { 1, 9}, { 0, 9}, - {0x80, 0} + {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_17[] = { {9, 0}, @@ -260,7 +260,7 @@ {9, 13}, {9, 14}, {9, 15}, - {0x81, 0} + {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_18[] = { {9, 0}, @@ -278,7 +278,7 @@ {2, 9}, {1, 9}, {0, 9}, - {0x80, 0} + {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_19[] = { {15, 9}, @@ -290,7 +290,7 @@ { 9, 13}, { 9, 14}, { 9, 15}, - {0x81, 0} + {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_20[] = { { 9, 0}, @@ -301,7 +301,7 @@ {13, 5}, {14, 5}, {15, 5}, - {0x82, 0} + {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_21[] = { {0, 5}, @@ -319,21 +319,21 @@ {9, 13}, {9, 14}, {9, 15}, - {0x81, 0} + {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_22[] = { {0, 8}, {0, 7}, {0, 6}, {0, 5}, - {0x42, 0} + {RDE_TURNED | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_23[] = { {8, 15}, {7, 15}, {6, 15}, {5, 15}, - {0x43, 0} + {RDE_TURNED | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_24[] = { { 0, 5}, @@ -352,7 +352,7 @@ {13, 5}, {14, 5}, {15, 5}, - {0x82, 0} + {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_25[] = { {5, 15}, @@ -371,7 +371,7 @@ {5, 2}, {5, 1}, {5, 0}, - {0x83, 0} + {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_26[] = { {0, 5}, @@ -382,7 +382,7 @@ {5, 2}, {5, 1}, {5, 0}, - {0x83, 0} + {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_27[] = { { 5, 15}, @@ -401,7 +401,7 @@ {13, 5}, {14, 5}, {15, 5}, - {0x82, 0} + {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_28[] = { {15, 9}, @@ -420,7 +420,7 @@ { 5, 2}, { 5, 1}, { 5, 0}, - {0x83, 0} + {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_29[] = { {5, 15}, @@ -432,21 +432,21 @@ {2, 9}, {1, 9}, {0, 9}, - {0x80, 0} + {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_30[] = { {15, 6}, {15, 7}, {15, 8}, {15, 9}, - {0x40, 0} + {RDE_TURNED | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_31[] = { {6, 0}, {7, 0}, {8, 0}, {9, 0}, - {0x41, 0} + {RDE_TURNED | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_32[] = { {15, 5}, @@ -486,7 +486,7 @@ {13, 10}, {14, 9}, {15, 9}, - {0x82, 0} + {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_33[] = { { 5, 0}, @@ -526,7 +526,7 @@ {10, 2}, { 9, 1}, { 9, 0}, - {0x83, 0} + {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_34[] = { {15, 5}, @@ -558,7 +558,7 @@ {13, 10}, {14, 9}, {15, 9}, - {0x82, 0} + {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_35[] = { { 5, 0}, @@ -590,7 +590,7 @@ {10, 2}, { 9, 1}, { 9, 0}, - {0x83, 0} + {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_40[] = { { 0, 9}, @@ -628,7 +628,7 @@ { 2, 4}, { 1, 5}, { 0, 5}, - {0x80, 0} + {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_41[] = { {9, 15}, @@ -666,7 +666,7 @@ {4, 13}, {5, 14}, {5, 15}, - {0x81, 0} + {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_42[] = { {0, 9}, @@ -696,7 +696,7 @@ {2, 4}, {1, 5}, {0, 5}, - {0x80, 0} + {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_43[] = { {9, 15}, @@ -726,7 +726,7 @@ {4, 13}, {5, 14}, {5, 15}, - {0x81, 0} + {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_48[] = { {15, 9}, @@ -766,7 +766,7 @@ {13, 6}, {14, 5}, {15, 5}, - {0x82, 0} + {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_49[] = { { 9, 0}, @@ -806,7 +806,7 @@ { 6, 2}, { 5, 1}, { 5, 0}, - {0x83, 0} + {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_50[] = { {15, 9}, @@ -838,7 +838,7 @@ {13, 6}, {14, 5}, {15, 5}, - {0x82, 0} + {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_51[] = { { 9, 0}, @@ -870,7 +870,7 @@ { 6, 2}, { 5, 1}, { 5, 0}, - {0x83, 0} + {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_56[] = { { 0, 5}, @@ -908,7 +908,7 @@ { 2, 8}, { 1, 9}, { 0, 9}, - {0x80, 0} + {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_57[] = { {5, 15}, @@ -946,7 +946,7 @@ {8, 13}, {9, 14}, {9, 15}, - {0x81, 0} + {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_58[] = { {0, 5}, @@ -976,7 +976,7 @@ {2, 8}, {1, 9}, {0, 9}, - {0x80, 0} + {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_59[] = { {5, 15}, @@ -1006,7 +1006,7 @@ {8, 13}, {9, 14}, {9, 15}, - {0x81, 0} + {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry * const _road_drive_data[] = { diff -r ca57ad0b45ea -r 23983700e3d7 src/train_cmd.cpp --- a/src/train_cmd.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/train_cmd.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -39,7 +39,7 @@ static const byte _vehicle_initial_x_fract[4] = {10, 8, 4, 8}; static const byte _vehicle_initial_y_fract[4] = { 8, 4, 8, 10}; -static const byte _state_dir_table[4] = { 0x20, 8, 0x10, 4 }; +static const TrackBits _state_dir_table[4] = { TRACK_BIT_RIGHT, TRACK_BIT_LOWER, TRACK_BIT_LEFT, TRACK_BIT_UPPER }; /** Return the cargo weight multiplier to use for a rail vehicle @@ -356,7 +356,7 @@ if (IsTileType(v->tile, MP_STATION) && IsFrontEngine(v)) { if (TrainShouldStop(v, v->tile)) { - int station_length = GetPlatformLength(v->tile, DirToDiagDir(v->direction)); + int station_length = GetStationByTile(v->tile)->GetPlatformLength(v->tile, DirToDiagDir(v->direction)); int delta_v; max_speed = 120; @@ -377,7 +377,7 @@ num++; drag_coeff += 3; - if (u->u.rail.track == 0x80) max_speed = min(max_speed, 61); + if (u->u.rail.track == TRACK_BIT_DEPOT) max_speed = min(max_speed, 61); if (HASBIT(u->u.rail.flags, VRF_GOINGUP)) { incl += u->u.rail.cached_veh_weight * 60; //3% slope, quite a bit actually @@ -639,7 +639,7 @@ v->z_pos = GetSlopeZ(x,y); v->owner = _current_player; v->z_height = 6; - v->u.rail.track = TRACK_BIT_SPECIAL; + v->u.rail.track = TRACK_BIT_DEPOT; v->vehstatus = VS_HIDDEN | VS_DEFPAL; v->subtype = 0; @@ -690,7 +690,7 @@ FOR_ALL_VEHICLES(v) { if (v->type == VEH_Train && IsFreeWagon(v) && v->tile == u->tile && - v->u.rail.track == 0x80) { + v->u.rail.track == TRACK_BIT_DEPOT) { if (CmdFailed(DoCommand(0, v->index | (u->index << 16), 1, DC_EXEC, CMD_MOVE_RAIL_VEHICLE))) break; @@ -712,7 +712,7 @@ u->y_pos = v->y_pos; u->z_pos = v->z_pos; u->z_height = 6; - u->u.rail.track = TRACK_BIT_SPECIAL; + u->u.rail.track = TRACK_BIT_DEPOT; u->vehstatus = v->vehstatus & ~VS_STOPPED; u->subtype = 0; SetMultiheaded(u); @@ -798,7 +798,7 @@ v->y_pos = y; v->z_pos = GetSlopeZ(x,y); v->z_height = 6; - v->u.rail.track = TRACK_BIT_SPECIAL; + v->u.rail.track = TRACK_BIT_DEPOT; v->vehstatus = VS_HIDDEN | VS_STOPPED | VS_DEFPAL; v->spritenum = rvi->image_index; v->cargo_type = rvi->cargo_type; @@ -885,7 +885,7 @@ * * Also skip counting rear ends of multiheaded engines */ if (!IsArticulatedPart(v) && !(!IsTrainEngine(v) && IsMultiheaded(v))) count++; - if (v->u.rail.track != 0x80 || v->tile != tile || + if (v->u.rail.track != TRACK_BIT_DEPOT || v->tile != tile || (IsFrontEngine(v) && needs_to_be_stopped && !(v->vehstatus & VS_STOPPED))) { return -1; } @@ -1306,7 +1306,7 @@ if (v->vehstatus & VS_STOPPED && v->u.rail.cached_power == 0) return_cmd_error(STR_TRAIN_START_NO_CATENARY); if (flags & DC_EXEC) { - if (v->vehstatus & VS_STOPPED && v->u.rail.track == 0x80) { + if (v->vehstatus & VS_STOPPED && v->u.rail.track == TRACK_BIT_DEPOT) { DeleteVehicleNews(p1, STR_8814_TRAIN_IS_WAITING_IN_DEPOT); } @@ -1585,8 +1585,8 @@ Swap(a->direction, b->direction); /* toggle direction */ - if (!(a->u.rail.track & 0x80)) a->direction = ReverseDir(a->direction); - if (!(b->u.rail.track & 0x80)) b->direction = ReverseDir(b->direction); + if (a->u.rail.track != TRACK_BIT_DEPOT) a->direction = ReverseDir(a->direction); + if (b->u.rail.track != TRACK_BIT_DEPOT) b->direction = ReverseDir(b->direction); Swap(a->x_pos, b->x_pos); Swap(a->y_pos, b->y_pos); @@ -1600,13 +1600,13 @@ UpdateVarsAfterSwap(b); /* call the proper EnterTile function unless we are in a wormhole */ - if (!(a->u.rail.track & 0x40)) VehicleEnterTile(a, a->tile, a->x_pos, a->y_pos); - if (!(b->u.rail.track & 0x40)) VehicleEnterTile(b, b->tile, b->x_pos, b->y_pos); + if (a->u.rail.track != TRACK_BIT_WORMHOLE) VehicleEnterTile(a, a->tile, a->x_pos, a->y_pos); + if (b->u.rail.track != TRACK_BIT_WORMHOLE) VehicleEnterTile(b, b->tile, b->x_pos, b->y_pos); } else { - if (!(a->u.rail.track & 0x80)) a->direction = ReverseDir(a->direction); + if (a->u.rail.track != TRACK_BIT_DEPOT) a->direction = ReverseDir(a->direction); UpdateVarsAfterSwap(a); - if (!(a->u.rail.track & 0x40)) VehicleEnterTile(a, a->tile, a->x_pos, a->y_pos); + if (a->u.rail.track != TRACK_BIT_WORMHOLE) VehicleEnterTile(a, a->tile, a->x_pos, a->y_pos); } /* Update train's power incase tiles were different rail type */ @@ -2174,7 +2174,7 @@ // bail out if not all wagons are in the same depot or not in a depot at all for (u = v; u != NULL; u = u->next) { - if (u->u.rail.track != 0x80 || u->tile != v->tile) return false; + if (u->u.rail.track != TRACK_BIT_DEPOT || u->tile != v->tile) return false; } // if the train got no power, then keep it in the depot @@ -2420,7 +2420,7 @@ uint reverse, reverse_best; if (_opt.diff.line_reverse_mode != 0 || - v->u.rail.track & 0xC0 || + v->u.rail.track == TRACK_BIT_DEPOT || v->u.rail.track == TRACK_BIT_WORMHOLE || !(v->direction & 1)) return false; @@ -2887,7 +2887,7 @@ if (v != tcc->v && v != tcc->v_skip && v->type == VEH_Train && - v->u.rail.track != 0x80 && + v->u.rail.track != TRACK_BIT_DEPOT && myabs(v->z_pos - tcc->v->z_pos) <= 6 && myabs(v->x_pos - tcc->v->x_pos) < 6 && myabs(v->y_pos - tcc->v->y_pos) < 6) { @@ -2936,9 +2936,9 @@ uint num; /* can't collide in depot */ - if (v->u.rail.track == 0x80) return; - - assert(v->u.rail.track == 0x40 || TileVirtXY(v->x_pos, v->y_pos) == v->tile); + if (v->u.rail.track == TRACK_BIT_DEPOT) return; + + assert(v->u.rail.track == TRACK_BIT_WORMHOLE || TileVirtXY(v->x_pos, v->y_pos) == v->tile); tcc.v = v; tcc.v_skip = v->next; @@ -2951,7 +2951,7 @@ /* it can't collide with its own wagons */ if (v == coll || - (v->u.rail.track & 0x40 && (v->direction & 2) != (realcoll->direction & 2))) + (v->u.rail.track == TRACK_BIT_WORMHOLE && (v->direction & 2) != (realcoll->direction & 2))) return; //two drivers + passangers killed in train v @@ -2995,7 +2995,7 @@ { Vehicle *prev; GetNewVehiclePosResult gp; - uint32 r, tracks,ts; + uint32 r, tracks, ts; Trackdir i; DiagDirection enterdir; Direction dir; @@ -3008,26 +3008,25 @@ for (prev = GetPrevVehicleInChain(v); v != NULL; prev = v, v = v->next) { BeginVehicleMove(v); - if (v->u.rail.track != 0x40) { + if (v->u.rail.track != TRACK_BIT_WORMHOLE) { /* Not inside tunnel */ if (GetNewVehiclePos(v, &gp)) { /* Staying in the old tile */ - if (v->u.rail.track == 0x80) { - /* inside depot */ + if (v->u.rail.track == TRACK_BIT_DEPOT) { + /* Inside depot */ gp.x = v->x_pos; gp.y = v->y_pos; } else { - /* is not inside depot */ + /* Not inside depot */ if (IsFrontEngine(v) && !TrainCheckIfLineEnds(v)) return; r = VehicleEnterTile(v, gp.new_tile, gp.x, gp.y); - if (r & 0x8) { - //debug("%x & 0x8", r); + if (HASBIT(r, VETS_CANNOT_ENTER)) { goto invalid_rail; } - if (r & 0x2) { - TrainEnterStation(v, r >> 8); + if (HASBIT(r, VETS_ENTERED_STATION)) { + TrainEnterStation(v, r >> VETS_STATION_ID_OFFSET); return; } @@ -3044,7 +3043,7 @@ /* Determine what direction we're entering the new tile from */ dir = GetNewVehicleDirectionByTile(gp.new_tile, gp.old_tile); enterdir = DirToDiagDir(dir); - assert(enterdir==0 || enterdir==1 || enterdir==2 || enterdir==3); + assert(IsValidDiagDirection(enterdir)); /* Get the status of the tracks in the new tile and mask * away the bits that aren't reachable. */ @@ -3061,17 +3060,11 @@ bits &= ~TrackCrossesTracks(FindFirstTrack(v->u.rail.track)); } - if (bits == TRACK_BIT_NONE) { - //debug("%x == 0", bits); - goto invalid_rail; - } + if (bits == TRACK_BIT_NONE) goto invalid_rail; /* Check if the new tile contrains tracks that are compatible * with the current train, if not, bail out. */ - if (!CheckCompatibleRail(v, gp.new_tile)) { - //debug("!CheckCompatibleRail(%p, %x)", v, gp.new_tile); - goto invalid_rail; - } + if (!CheckCompatibleRail(v, gp.new_tile)) goto invalid_rail; if (prev == NULL) { /* Currently the locomotive is active. Determine which one of the @@ -3080,16 +3073,24 @@ assert(chosen_track & tracks); /* Check if it's a red signal and that force proceed is not clicked. */ - if ( (tracks>>16)&chosen_track && v->u.rail.force_proceed == 0) goto red_light; + if ((tracks >> 16) & chosen_track && v->u.rail.force_proceed == 0) goto red_light; } else { - static byte _matching_tracks[8] = {0x30, 1, 0xC, 2, 0x30, 1, 0xC, 2}; + static const TrackBits _matching_tracks[8] = { + TRACK_BIT_LEFT | TRACK_BIT_RIGHT, TRACK_BIT_X, + TRACK_BIT_UPPER | TRACK_BIT_LOWER, TRACK_BIT_Y, + TRACK_BIT_LEFT | TRACK_BIT_RIGHT, TRACK_BIT_X, + TRACK_BIT_UPPER | TRACK_BIT_LOWER, TRACK_BIT_Y + }; /* The wagon is active, simply follow the prev vehicle. */ chosen_track = (TrackBits)(byte)(_matching_tracks[GetDirectionToVehicle(prev, gp.x, gp.y)] & bits); } - /* make sure chosen track is a valid track */ - assert(chosen_track==1 || chosen_track==2 || chosen_track==4 || chosen_track==8 || chosen_track==16 || chosen_track==32); + /* Make sure chosen track is a valid track */ + assert( + chosen_track == TRACK_BIT_X || chosen_track == TRACK_BIT_Y || + chosen_track == TRACK_BIT_UPPER || chosen_track == TRACK_BIT_LOWER || + chosen_track == TRACK_BIT_LEFT || chosen_track == TRACK_BIT_RIGHT); /* Update XY to reflect the entrance to the new tile, and select the direction to use */ { @@ -3101,8 +3102,7 @@ /* Call the landscape function and tell it that the vehicle entered the tile */ r = VehicleEnterTile(v, gp.new_tile, gp.x, gp.y); - if (r & 0x8) { - //debug("%x & 0x8", r); + if (HASBIT(r, VETS_CANNOT_ENTER)) { goto invalid_rail; } @@ -3113,7 +3113,7 @@ if (IsFrontEngine(v)) v->load_unload_time_rem = 0; - if (!(r&0x4)) { + if (!HASBIT(r, VETS_ENTERED_WORMHOLE)) { v->tile = gp.new_tile; if (GetTileRailType(gp.new_tile, FindFirstTrack(chosen_track)) != GetTileRailType(gp.old_tile, FindFirstTrack(v->u.rail.track))) { @@ -3128,20 +3128,19 @@ /* Signals can only change when the first * (above) or the last vehicle moves. */ - if (v->next == NULL) - TrainMovedChangeSignals(gp.old_tile, ReverseDiagDir(enterdir)); + if (v->next == NULL) TrainMovedChangeSignals(gp.old_tile, ReverseDiagDir(enterdir)); if (prev == NULL) AffectSpeedByDirChange(v, chosen_dir); v->direction = chosen_dir; } } else { - /* in tunnel on on a bridge */ + /* In tunnel or on a bridge */ GetNewVehiclePos(v, &gp); SetSpeedLimitOnBridge(v); - if (!(IsTunnelTile(gp.new_tile) || IsBridgeTile(gp.new_tile)) || !(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y) & 0x4)) { + if (!(IsTunnelTile(gp.new_tile) || IsBridgeTile(gp.new_tile)) || !HASBIT(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) { v->x_pos = gp.x; v->y_pos = gp.y; VehiclePositionChanged(v); @@ -3235,14 +3234,14 @@ EndVehicleMove(v); DeleteVehicle(v); - if (!(v->u.rail.track & 0xC0)) + if (v->u.rail.track != TRACK_BIT_DEPOT && v->u.rail.track != TRACK_BIT_WORMHOLE) SetSignalsOnBothDir(v->tile, FIND_FIRST_BIT(v->u.rail.track)); /* Check if the wagon was on a road/rail-crossing and disable it if no * others are on it */ DisableTrainCrossing(v->tile); - if ( (v->u.rail.track == 0x40 && v->vehstatus & VS_HIDDEN) ) { // inside a tunnel + if ((v->u.rail.track == TRACK_BIT_WORMHOLE && v->vehstatus & VS_HIDDEN)) { // inside a tunnel TileIndex endtile = CheckTunnelBusy(v->tile, NULL); if (endtile == INVALID_TILE) return; // tunnel is busy (error returned) @@ -3282,7 +3281,7 @@ /* Refrain from updating the z position of the vehicle when on a bridge, because AfterSetTrainPos will put the vehicle under the bridge in that case */ - if (!(v->u.rail.track & 0x40)) AfterSetTrainPos(v, false); + if (v->u.rail.track != TRACK_BIT_WORMHOLE) AfterSetTrainPos(v, false); } } while ((v = v->next) != NULL); } @@ -3293,7 +3292,7 @@ uint32 r; Vehicle *u; - if (state == 4 && !(v->u.rail.track & VS_HIDDEN)) { + if (state == 4 && !(v->vehstatus & VS_HIDDEN)) { CreateEffectVehicleRel(v, 4, 4, 8, EV_EXPLOSION_LARGE); } @@ -3376,8 +3375,8 @@ v->vehstatus &= ~VS_TRAIN_SLOWING; } - if (v->u.rail.track & 0x40) return true; // exit if inside a tunnel - if (v->u.rail.track & 0x80) return true; // exit if inside a depot + if (v->u.rail.track == TRACK_BIT_WORMHOLE) return true; // exit if inside a tunnel + if (v->u.rail.track == TRACK_BIT_DEPOT) return true; // exit if inside a depot tile = v->tile; diff -r ca57ad0b45ea -r 23983700e3d7 src/train_gui.cpp --- a/src/train_gui.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/train_gui.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -27,7 +27,7 @@ FOR_ALL_VEHICLES(v) { if (v->type == VEH_Train && IsFrontEngine(v) && v->tile == tile && - v->u.rail.track == 0x80) { + v->u.rail.track == TRACK_BIT_DEPOT) { if (found != NULL) return; // must be exactly one. found = v; } diff -r ca57ad0b45ea -r 23983700e3d7 src/tunnelbridge_cmd.cpp --- a/src/tunnelbridge_cmd.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/tunnelbridge_cmd.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -1250,7 +1250,10 @@ static const byte _tunnel_fractcoord_3[4] = {0x82, 0x88, 0x86, 0x48}; static const byte _exit_tunnel_track[4] = {1, 2, 1, 2}; -static const byte _road_exit_tunnel_state[4] = {8, 9, 0, 1}; +/** Get the trackdir of the exit of a tunnel */ +static const Trackdir _road_exit_tunnel_state[DIAGDIR_END] = { + TRACKDIR_X_SW, TRACKDIR_Y_NW, TRACKDIR_X_NE, TRACKDIR_Y_SE +}; static const byte _road_exit_tunnel_frame[4] = {2, 7, 9, 4}; static const byte _tunnel_fractcoord_4[4] = {0x52, 0x85, 0x98, 0x29}; @@ -1262,7 +1265,7 @@ { int z = GetSlopeZ(x, y) - v->z_pos; - if (myabs(z) > 2) return 8; + if (myabs(z) > 2) return VETSB_CANNOT_ENTER; if (IsTunnel(tile)) { byte fc; @@ -1275,18 +1278,18 @@ dir = GetTunnelDirection(tile); vdir = DirToDiagDir(v->direction); - if (v->u.rail.track != 0x40 && dir == vdir) { + if (v->u.rail.track != TRACK_BIT_WORMHOLE && dir == vdir) { if (IsFrontEngine(v) && fc == _tunnel_fractcoord_1[dir]) { if (!PlayVehicleSound(v, VSE_TUNNEL) && v->spritenum < 4) { SndPlayVehicleFx(SND_05_TRAIN_THROUGH_TUNNEL, v); } - return 0; + return VETSB_CONTINUE; } if (fc == _tunnel_fractcoord_2[dir]) { v->tile = tile; v->u.rail.track = TRACK_BIT_WORMHOLE; v->vehstatus |= VS_HIDDEN; - return 4; + return VETSB_ENTERED_WORMHOLE; } } @@ -1296,7 +1299,7 @@ v->u.rail.track = (TrackBits)_exit_tunnel_track[dir]; assert(v->u.rail.track); v->vehstatus &= ~VS_HIDDEN; - return 4; + return VETSB_ENTERED_WORMHOLE; } } else if (v->type == VEH_Road) { fc = (x & 0xF) + (y << 4); @@ -1304,15 +1307,15 @@ vdir = DirToDiagDir(v->direction); // Enter tunnel? - if (v->u.road.state != 0xFF && dir == vdir) { + if (v->u.road.state != RVSB_WORMHOLE && dir == vdir) { if (fc == _tunnel_fractcoord_4[dir] || fc == _tunnel_fractcoord_5[dir]) { v->tile = tile; - v->u.road.state = 0xFF; + v->u.road.state = RVSB_WORMHOLE; v->vehstatus |= VS_HIDDEN; - return 4; + return VETSB_ENTERED_WORMHOLE; } else { - return 0; + return VETSB_CONTINUE; } } @@ -1326,7 +1329,7 @@ v->u.road.state = _road_exit_tunnel_state[dir]; v->u.road.frame = _road_exit_tunnel_frame[dir]; v->vehstatus &= ~VS_HIDDEN; - return 4; + return VETSB_ENTERED_WORMHOLE; } } } else if (IsBridge(tile)) { // XXX is this necessary? @@ -1344,37 +1347,37 @@ if (DirToDiagDir(v->direction) == dir) { switch (dir) { default: NOT_REACHED(); - case DIAGDIR_NE: if ((x & 0xF) != 0) return 0; break; - case DIAGDIR_SE: if ((y & 0xF) != TILE_SIZE - 1) return 0; break; - case DIAGDIR_SW: if ((x & 0xF) != TILE_SIZE - 1) return 0; break; - case DIAGDIR_NW: if ((y & 0xF) != 0) return 0; break; + case DIAGDIR_NE: if ((x & 0xF) != 0) return VETSB_CONTINUE; break; + case DIAGDIR_SE: if ((y & 0xF) != TILE_SIZE - 1) return VETSB_CONTINUE; break; + case DIAGDIR_SW: if ((x & 0xF) != TILE_SIZE - 1) return VETSB_CONTINUE; break; + case DIAGDIR_NW: if ((y & 0xF) != 0) return VETSB_CONTINUE; break; } if (v->type == VEH_Train) { v->u.rail.track = TRACK_BIT_WORMHOLE; CLRBIT(v->u.rail.flags, VRF_GOINGUP); CLRBIT(v->u.rail.flags, VRF_GOINGDOWN); } else { - v->u.road.state = 0xFF; + v->u.road.state = RVSB_WORMHOLE; } - return 4; + return VETSB_ENTERED_WORMHOLE; } else if (DirToDiagDir(v->direction) == ReverseDiagDir(dir)) { v->tile = tile; if (v->type == VEH_Train) { - if (v->u.rail.track == 0x40) { + if (v->u.rail.track == TRACK_BIT_WORMHOLE) { v->u.rail.track = (DiagDirToAxis(dir) == AXIS_X ? TRACK_BIT_X : TRACK_BIT_Y); - return 4; + return VETSB_ENTERED_WORMHOLE; } } else { - if (v->u.road.state == 0xFF) { + if (v->u.road.state == RVSB_WORMHOLE) { v->u.road.state = _road_exit_tunnel_state[dir]; v->u.road.frame = 0; - return 4; + return VETSB_ENTERED_WORMHOLE; } } - return 0; + return VETSB_CONTINUE; } } - return 0; + return VETSB_CONTINUE; } extern const TileTypeProcs _tile_type_tunnelbridge_procs = { diff -r ca57ad0b45ea -r 23983700e3d7 src/vehicle.cpp --- a/src/vehicle.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/vehicle.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -2316,7 +2316,7 @@ switch (type) { case VEH_Train: FOR_ALL_VEHICLES(v) { - if (v->tile == tile && v->type == VEH_Train && v->u.rail.track == 0x80) { + if (v->tile == tile && v->type == VEH_Train && v->u.rail.track == TRACK_BIT_DEPOT) { if (IsFrontEngine(v)) { if (engine_list == NULL) continue; if (*engine_count == *engine_list_length) ExtendVehicleListSize((const Vehicle***)engine_list, engine_list_length, 25); @@ -2524,12 +2524,12 @@ case VEH_Road: InvalidateWindowClasses(WC_ROADVEH_LIST); - v->u.road.state = 254; + v->u.road.state = RVSB_IN_DEPOT; break; case VEH_Ship: InvalidateWindowClasses(WC_SHIPS_LIST); - v->u.ship.state = TRACK_BIT_SPECIAL; + v->u.ship.state = TRACK_BIT_DEPOT; RecalcShipStuff(v); break; @@ -2737,10 +2737,10 @@ switch (v->type) { case VEH_Train: - if (v->u.rail.track == 0x80) /* We'll assume the train is facing outwards */ + if (v->u.rail.track == TRACK_BIT_DEPOT) /* We'll assume the train is facing outwards */ return DiagdirToDiagTrackdir(GetRailDepotDirection(v->tile)); /* Train in depot */ - if (v->u.rail.track == 0x40) /* train in tunnel, so just use his direction and assume a diagonal track */ + if (v->u.rail.track == TRACK_BIT_WORMHOLE) /* train in tunnel, so just use his direction and assume a diagonal track */ return DiagdirToDiagTrackdir(DirToDiagDir(v->direction)); return TrackDirectionToTrackdir(FindFirstTrack(v->u.rail.track), v->direction); @@ -2760,7 +2760,7 @@ return DiagdirToDiagTrackdir(GetRoadStopDir(v->tile)); /* Road vehicle in a station */ /* If vehicle's state is a valid track direction (vehicle is not turning around) return it */ - if ((v->u.road.state & 7) < 6) return (Trackdir)v->u.road.state; + if (!IsReversingRoadTrackdir((Trackdir)v->u.road.state)) return (Trackdir)v->u.road.state; /* Vehicle is turning around, get the direction from vehicle's direction */ return DiagdirToDiagTrackdir(DirToDiagDir(v->direction)); @@ -2769,10 +2769,11 @@ default: return INVALID_TRACKDIR; } } -/* Return value has bit 0x2 set, when the vehicle enters a station. Then, - * result << 8 contains the id of the station entered. If the return value has - * bit 0x8 set, the vehicle could not and did not enter the tile. Are there - * other bits that can be set? */ + +/** + * Returns some meta-data over the to be entered tile. + * @see VehicleEnterTileStatus to see what the bits in the return value mean. + */ uint32 VehicleEnterTile(Vehicle *v, TileIndex tile, int x, int y) { return _tile_type_procs[GetTileType(tile)]->vehicle_enter_tile_proc(v, tile, x, y); diff -r ca57ad0b45ea -r 23983700e3d7 src/vehicle.h --- a/src/vehicle.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/vehicle.h Wed Feb 14 10:46:38 2007 +0000 @@ -7,6 +7,57 @@ #include "order.h" #include "rail.h" +/** The returned bits of VehicleEnterTile. */ +enum VehicleEnterTileStatus { + VETS_ENTERED_STATION = 1, ///< The vehicle entered a station + VETS_ENTERED_WORMHOLE = 2, ///< The vehicle either entered a bridge, tunnel or depot tile (this includes the last tile of the bridge/tunnel) + VETS_CANNOT_ENTER = 3, ///< The vehicle cannot enter the tile + + /** + * Shift the VehicleEnterTileStatus this many bits + * to the right to get the station ID when + * VETS_ENTERED_STATION is set + */ + VETS_STATION_ID_OFFSET = 8, + + /** Bit sets of the above specified bits */ + VETSB_CONTINUE = 0, ///< The vehicle can continue normally + VETSB_ENTERED_STATION = 1 << VETS_ENTERED_STATION, ///< The vehicle entered a station + VETSB_ENTERED_WORMHOLE = 1 << VETS_ENTERED_WORMHOLE, ///< The vehicle either entered a bridge, tunnel or depot tile (this includes the last tile of the bridge/tunnel) + VETSB_CANNOT_ENTER = 1 << VETS_CANNOT_ENTER, ///< The vehicle cannot enter the tile +}; + +/** Road vehicle states */ +enum RoadVehicleStates { + /* + * Lower 4 bits are used for vehicle track direction. (Trackdirs) + * When in a road stop (bit 5 set) these bits give the + * track direction of the entry to the road stop. + * As the entry direction will always be a diagonal + * direction (X_NE, Y_SE, X_SW or Y_NW) only bits 0 and 3 + * are needed to hold this direction. Bit 1 is then used to show + * that the vehicle is using the second road stop bay. + */ + + /* Numeric values */ + RVSB_IN_DEPOT = 0xFE, ///< The vehicle is in a depot + RVSB_WORMHOLE = 0xFF, ///< The vehicle is in a tunnel and/or bridge + + /* Bit numbers */ + RVS_USING_SECOND_BAY = 1, ///< Only used while in a road stop + RVS_DRIVE_SIDE = 4, ///< Only used when retrieving move data and for turning vehicles + RVS_IN_ROAD_STOP = 5, ///< The vehicle is in a road stop + + /* Bit sets of the above specified bits */ + RVSB_USING_SECOND_BAY = 1 << RVS_USING_SECOND_BAY, ///< Only used while in a road stop + RVSB_DRIVE_SIDE = 1 << RVS_DRIVE_SIDE, ///< Only used when retrieving move data and for turning vehicles + RVSB_IN_ROAD_STOP = 1 << RVS_IN_ROAD_STOP, ///< The vehicle is in a road stop + RVSB_IN_ROAD_STOP_END = RVSB_IN_ROAD_STOP + TRACKDIR_END, + + RVSB_TRACKDIR_MASK = 0x0F, ///< The mask used to extract track dirs + RVSB_ROAD_STOP_TRACKDIR_MASK = 0x09 ///< Only bits 0 and 3 are used to encode the trackdir for road stops +}; + enum { VEH_Train, VEH_Road, @@ -116,7 +167,7 @@ } VehicleAir; typedef struct VehicleRoad { - byte state; + byte state; /// @see RoadVehicleStates byte frame; uint16 blocked_ctr; byte overtaking; diff -r ca57ad0b45ea -r 23983700e3d7 src/video/dedicated_v.h --- a/src/video/dedicated_v.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/video/dedicated_v.h Wed Feb 14 10:46:38 2007 +0000 @@ -7,4 +7,4 @@ extern const HalVideoDriver _dedicated_video_driver; -#endif +#endif /* VIDEO_DEDICATED_H */ diff -r ca57ad0b45ea -r 23983700e3d7 src/video/null_v.h --- a/src/video/null_v.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/video/null_v.h Wed Feb 14 10:46:38 2007 +0000 @@ -7,4 +7,4 @@ extern const HalVideoDriver _null_video_driver; -#endif +#endif /* VIDEO_NULL_H */ diff -r ca57ad0b45ea -r 23983700e3d7 src/video/sdl_v.cpp --- a/src/video/sdl_v.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/video/sdl_v.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -510,4 +510,4 @@ SdlVideoFullScreen, }; -#endif +#endif /* WITH_SDL */ diff -r ca57ad0b45ea -r 23983700e3d7 src/video/sdl_v.h --- a/src/video/sdl_v.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/video/sdl_v.h Wed Feb 14 10:46:38 2007 +0000 @@ -7,4 +7,4 @@ extern const HalVideoDriver _sdl_video_driver; -#endif +#endif /* VIDEO_SDL_H */ diff -r ca57ad0b45ea -r 23983700e3d7 src/video/win32_v.h --- a/src/video/win32_v.h Wed Feb 14 00:57:15 2007 +0000 +++ b/src/video/win32_v.h Wed Feb 14 10:46:38 2007 +0000 @@ -7,4 +7,4 @@ extern const HalVideoDriver _win32_video_driver; -#endif +#endif /* VIDEO_WIN32_H */ diff -r ca57ad0b45ea -r 23983700e3d7 src/water_cmd.cpp --- a/src/water_cmd.cpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/water_cmd.cpp Wed Feb 14 10:46:38 2007 +0000 @@ -742,7 +742,7 @@ static uint32 VehicleEnter_Water(Vehicle *v, TileIndex tile, int x, int y) { - return 0; + return VETSB_CONTINUE; } diff -r ca57ad0b45ea -r 23983700e3d7 src/yapf/follow_track.hpp --- a/src/yapf/follow_track.hpp Wed Feb 14 00:57:15 2007 +0000 +++ b/src/yapf/follow_track.hpp Wed Feb 14 10:46:38 2007 +0000 @@ -197,7 +197,7 @@ if (IsRailTT() && m_is_station) { // entered railway station // get platform length - uint length = GetPlatformLength(m_new_tile, TrackdirToExitdir(m_old_td)); + uint length = GetStationByTile(m_new_tile)->GetPlatformLength(m_new_tile, TrackdirToExitdir(m_old_td)); // how big step we must do to get to the last platform tile; m_tiles_skipped = length - 1; // move to the platform end