From 1591215f4cd49c007dfe071d5dae149b5faaac5f Mon Sep 17 00:00:00 2001 From: Smashfanful <41149920+Smashfanful@users.noreply.github.com> Date: Thu, 19 Sep 2019 15:14:35 +0200 Subject: [PATCH 1/5] Update Buildings.json Last Wonder lines translations --- .../assets/jsons/Translations/Buildings.json | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/android/assets/jsons/Translations/Buildings.json b/android/assets/jsons/Translations/Buildings.json index d0c5316251..67126e0f3b 100644 --- a/android/assets/jsons/Translations/Buildings.json +++ b/android/assets/jsons/Translations/Buildings.json @@ -932,6 +932,10 @@ Polish:"Porcelanowa wieża" } + "'Things always seem fairer when we look back at them, and it is out of that inaccessible tower of the past that Longing leans and beckons.' - James Russell Lowell":{ + Italian:"'Le cose sembrano sempre più belle quando ci voltiamo indietro per guardarle, ed è dall'inaccessibile torre del passato che la nostalgia si protende e chiama.' - James Russel Lowell" + } + "Free great scientist appears":{ Spanish:"Aparece una Gran Científico gratis" Italian:"Appare un Grande Scienziato" @@ -1004,6 +1008,10 @@ Polish:"Kaplica Sykstyńska" } + "'I live and love in God's peculiar light.' - Michelangelo Buonarroti":{ + Italian:"'Vivo e amo sotto la peculiare luce di Dio.' - Michelangelo Buonarroti" + } + "Culture in all cities increased by 25%":{ Italian:"+25% cultura in ogni città" Russian:"Увеличивает прирост культуры на 25% во всех городах" @@ -1063,6 +1071,10 @@ Polish:"Zakazane miasto" } + "'Most of us can, as we choose, make of this world either a palace or a prison' - John Lubbock":{ + Italian:"'La maggior parte di noi può, a sua volontà, fare di questo mondo un palazzo o una prigione.' - John Lubbock" + } + "Unhappiness from population decreased by 10%":{ Italian:"-10% infelicità dalla popolazione" Russian:"Снижает недовольство от населения на 10%" @@ -1099,6 +1111,10 @@ Russian:"Пизанская башня" } + "'Don't clap too hard - it's a very old building.' - John Osbourne":{ + Italian:"'Non applaudite troppo forte - è un edificio molto vecchio.' - John Osborne" + } + "Free Great Person":{ Italian:"Ottieni un Grande Personaggio gratuito" Romanian:"Persoană mare gratuită" @@ -1131,6 +1147,10 @@ Russian:"Замок Химэдзи" } + "'Bushido is realized in the presence of death. This means choosing death whenever there is a choice between life and death. There is no other reasoning.' - Yamamoto Tsunetomo":{ + Italian:"'Il Bushido si realizza in presenza della morte. Significa, ogni volta che c'è una scelta tra la vita e la morte, scegliere la seconda. Non c'è alcun altro ragionamento' - Yamamoto Tsunetomo" + } + "+15% combat strength for units fighting in friendly territory":{ Italian:"+15% Forza per le unità che combattono in territorio amico" Simplified_Chinese:"单位在境内+15%战斗力" @@ -1151,6 +1171,10 @@ German:"Taj Mahal" Polish:"Tadź Mahal" } + + "'The Taj Mahal rises above the banks of the river like a solitary tear suspended on the cheek of time.' - Rabindranath Tagore":{ + Italian:"'Il Taj Mahal sorge sulle rive del fiume come una lacrima solitaria sospesa sulla guancia del tempo.' - Rabindranath Tagore" + } "Empire enters golden age":{ Italian:"L'impero entra nell'Età dell'Oro" @@ -1221,6 +1245,10 @@ Polish:"Luwr" } + "'Every genuine work of art has as much reason for being as the earth and the sun' - Ralph Waldo Emerson":{ + Italian:"'Ogni opera d'arte genuina ha tanta ragione d'esistere quanto la terra e il sole.' - Ralph Waldo Emerson" + } + "Free Great Artist Appears":{ Italian:"Appare un Grande Artista gratuito" Russian:"Появляется бесплатный Великий Художник" @@ -1339,6 +1367,10 @@ Russian:"Биг Бен" } + "'To achieve great things, two things are needed: a plan, and not quite enough time.' - Leonard Bernstein":{ + Italian:"'Per ottenere grandi risultati servono due cose: un piano e un sacco di tempo.' - Leonard Bernstein" + } + "-15% to purchasing items in cities":{ Italian:"-15% costi in Oro per l'acquisto di unità ed edifici nelle Città" Simplified_Chinese:"所有城市购买建造项目所需的金钱花费-15%" @@ -1359,6 +1391,10 @@ Polish:"Statua Chrystusa Zbawiciela" } + "'Come to me, all who labor and are heavy burdened, and I will give you rest.' - New Testament, Matthew 11:28":{ + Italian:"'Venite a me, voi tutti che siete affaticati e oppressi, e io vi ristorerò.' - Matteo 11:28" + } + "Culture cost of adopting new Policies reduced by 10%":{ Italian:"-10% costo in Cultura per ogni nuova politica" Russian:"Колличество культуры для принятия новых общественных институтов -10%" @@ -1382,6 +1418,10 @@ Polish:"Kreml" } + "'The Law is a fortress on a hill that armies cannot take or floods wash away.' –- The Prophet Muhammed":{ + Italian:"'La Legge è una fortezza su una collina che gli eserciti non possono catturare e le inondazioni non possono spazzare via. - Il profeta Maometto" + } + "Defensive buildings in all cities are 25% more effective":{ Italian:"+25% efficacia delle strutture difensive in tutte le città" Simplified_Chinese:"所有城市防御建筑建造速度+25%" @@ -1398,6 +1438,10 @@ Russian:"Замок Нойшванштайн" } + "'...the location is one of the most beautiful to be found, holy and unapproachable, a worthy temple for the divine friend who has brought salvation and true blessing to the world.' - King Ludwig II of Bavaria":{ + Italian:"'...la posizione è una delle più belle che si possano trovare, sacra e inaccessibile, degno tempio per l'amico divino che ha portato salvezza e vera benedizione a tutto il mondo.' - Re Ludovico II di Baviera" + } + "+1 happiness, +2 culture and +3 gold from every Castle":{ Italian:"+1 Felicità, +2 Cultura e +3 Oro per ogni Castello posseduto" Simplified_Chinese:"每一座城堡+3金钱、+2文化和+1快乐" @@ -1442,6 +1486,10 @@ Polish:"Wieża Eiffla" } + "'We live only to discover beauty, all else is a form of waiting' - Kahlil Gibran":{ + Italian:"'Chi può pensare che, siccome siamo ingegneri, la bellezza non ci preoccupi, o che non cerchiamo di costruire strutture belle oltre che solide e durature?' - Gustave Alexandre Eiffel" + } + "Provides 1 happiness per social policy":{ Italian:"+1 Felicità per ogni politica sociale" Russian:"Обеспечивает 1 счастье за каждый общественный институт" @@ -1464,6 +1512,10 @@ Russian:"Статуя Свободы" } + "'Give me your tired, your poor, your huddled masses yearning to breathe free, the wretched refuse of your teeming shore. Send these, the homeless, tempest-tossed to me, I lift my lamp beside the golden door!' - Emma Lazarus":{ + Italian:"'Datemi coloro che sono esausti, i poveri / Le folle accalcate che bramano di respirare libere, / I miseri rifiuti delle vostre coste brulicanti. / Mandatemi chi non ha casa, squassato dalle tempeste, / Sollevo la fiaccola accanto alla porta d'oro!' - Emma Lazarus" + } + "+1 Production from specialists":{ Italian:"+1 Produzione dagli Specialisti" German:"+1 Produktion von Spezialisten" @@ -1566,6 +1618,10 @@ Russian:"Сиднейский Оперный театр" } + "'Those who lose dreaming are lost.' - Australian Aboriginal saying":{ + Italian:"'Quelli che perdono i sogni sono perduti.' - Massima degli aborigeni australiani" + } + /* "CN Tower":{ Italian:"CN Tower" //same in Italian @@ -1604,6 +1660,10 @@ Russian:"Пентагон" } + "'In preparing for battle I have always found that plans are useless, but planning is indispensable.' - Dwight D. Eisenhower":{ + Italian:"'Preparandomi alla battaglia ho sempre constatato che i piani sono inutili, ma la pianificazione è indispensabile.' - Dwight D. Eisenhower" + } + "Gold cost of upgrading military units reduced by 33%":{ Spanish:"El coste de mejorar unidades con oro se reduce un 33%" Italian:"-33% costi in Oro per aggiornare un'unità militare" @@ -1699,6 +1759,10 @@ Russian:"Телескоп Хаббл" } + "'The wonder is, not that the field of stars is so vast, but that man has measured it.' - Anatole France":{ + Italian:"'La meraviglia non sta nella vastità del campo di stelle, ma nel fatto che l'uomo lo abbia misurato.' - Anatole France" + } + "2 free great scientists appear":{ Italian:"Appaiono 2 grandi scenziati gratuiti" German:"2 kostenlose Große Wissenschaftler erscheinen" From 1359c3eab324ab982ba32039b93a816b193bf01d Mon Sep 17 00:00:00 2001 From: Smashfanful <41149920+Smashfanful@users.noreply.github.com> Date: Thu, 19 Sep 2019 16:43:22 +0200 Subject: [PATCH 2/5] Update TileImprovements.json --- android/assets/jsons/TileImprovements.json | 27 +++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/android/assets/jsons/TileImprovements.json b/android/assets/jsons/TileImprovements.json index 76eca464b7..a11982ea42 100644 --- a/android/assets/jsons/TileImprovements.json +++ b/android/assets/jsons/TileImprovements.json @@ -145,7 +145,32 @@ improvingTechStats:{gold:1} }, + //Civilization unique improvements + /* + { + name:"Moai", + uniqueTo:"Polynesia", + culture:1, + turnsToBuild:4, + improvingTech:"Construction", + uniques:["+1 additional Culture for each adjacent Moai","+1 Gold after researching Flight"], + terrainsCanBeBuiltOn:["Hill"], + //It can be colored in orange + }, + { + name:"Terrace Farm", + uniqueTo:"Inca", + food:1, + turnsToBuild:4, + improvingTech:"Construction", + uniques:["+1 Food for each adjacent Mountain","+1 additional Food with Fertilizer and no fresh water"], + terrainsCanBeBuiltOn:["Plains","Grassland","Desert","Tundra"], + //It can be colored in lemon + //Cannot improve a resource + }, + */ + { name:"Ancient ruins" }, { name:"City ruins" }, { name:"Barbarian encampment" }, -] \ No newline at end of file +] From 03087095f64152bcc8d7bc4069f7626a6a09b3c8 Mon Sep 17 00:00:00 2001 From: Smashfanful <41149920+Smashfanful@users.noreply.github.com> Date: Thu, 19 Sep 2019 16:24:52 +0200 Subject: [PATCH 3/5] Update NewGame,SaveGame,LoadGame,Options.json Added missing Italian translation --- .../jsons/Translations/NewGame,SaveGame,LoadGame,Options.json | 1 + 1 file changed, 1 insertion(+) diff --git a/android/assets/jsons/Translations/NewGame,SaveGame,LoadGame,Options.json b/android/assets/jsons/Translations/NewGame,SaveGame,LoadGame,Options.json index 0099c8fbbe..6a316d4a38 100644 --- a/android/assets/jsons/Translations/NewGame,SaveGame,LoadGame,Options.json +++ b/android/assets/jsons/Translations/NewGame,SaveGame,LoadGame,Options.json @@ -648,6 +648,7 @@ } "Show minimap":{ + Italian:"Mostra minimappa", Simplified_Chinese:"显示小地图" } From 12e3ae17617496e69845af917455fd7b1ef2fcee Mon Sep 17 00:00:00 2001 From: Smashfanful <41149920+Smashfanful@users.noreply.github.com> Date: Thu, 19 Sep 2019 16:28:07 +0200 Subject: [PATCH 4/5] Update Diplomacy,Trade,Nations.json Corrections --- .../jsons/Translations/Diplomacy,Trade,Nations.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json b/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json index 3b134dde5c..ae98768d4c 100644 --- a/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json +++ b/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json @@ -1213,7 +1213,7 @@ } "+2 Science for all specialists and Great Person tile improvements":{ - Italian:"+2 Scienza per ogni specialista e ogni miglioramento da Gran Personaggio." + Italian:"+2 Scienza per ogni specialista e ogni miglioramento dai Grandi Personaggi." Simplified_Chinese:"所有专业人员和所有伟人设施+2科研" Russian:"+2 Наука для всех специалистов и улучшений клеток Великими людьми." } @@ -1229,8 +1229,8 @@ Italian:"Hiawatha"//Same as in Italian } - "Units move through Forest and Jungle in friendly territory as if it is a Road. These tiles can be used to establish Trade Routes upon searching The Wheel.":{ - Italian:"Le caselle di Foreste e Giungle in territorio amico agiscono come strade, e sono usate per stabilire Rotte Commerciali quando si scopre la Ruota." + "All units move through Forest and Jungle Tiles in friendly territory as if it is Road. These tiles can be used to establish City Connections upon researching the Wheel.":{ + Italian:"Le caselle di Foreste e Giungle in territorio amico agiscono come strade, e sono usate per stabilire Rotte Commerciali quando scopri la Ruota." Portuguese:"Mova-se por florestas e selvas em território amigo como se fossem estradas. Estas terras podem ser usadas para estabelecer rotas de comércio após pesquisar a roda." French:"Les Forêt et les Jungles en territoire alliés ont les mêmes attributs que les routes. A la découverte de la Roue, elles peuvent établir des routes commerciales." } @@ -1246,7 +1246,7 @@ Italian:"Dario I" } - "Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and a +10% Combat Strenght bonus.":{ + "Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and +10% Strenght.":{ Italian:"+50% durata delle Età dell'Oro, durante le quali le unità ricevono +1 Movimento e +10% Forza." Portuguese:"Idades douradas duram 50% mais, unidades recebem 1 movimento a mais e um bonus de +10% em força de combate." French:"Les Ages d'Or durent 50% plus longtemps. Durant les Ages d'Or, les unités gagnent +1 mouvement et +10% de force de Combat." From a3889a549e12aa6a58173607df69772641629e76 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Fri, 20 Sep 2019 10:26:15 +0300 Subject: [PATCH 5/5] Iroquis can now use Forest and Jungles to connect cities Persian +1 movement only activaes when in golden age --- android/assets/jsons/Nations/Nations.json | 2 +- .../Translations/Diplomacy,Trade,Nations.json | 4 +-- android/build.gradle | 4 +-- .../civilization/CivInfoTransientUpdater.kt | 27 ++++++++++--------- core/src/com/unciv/logic/map/MapUnit.kt | 3 ++- core/src/com/unciv/logic/map/TileInfo.kt | 7 +++++ .../unciv/logic/map/UnitMovementAlgorithms.kt | 9 +------ 7 files changed, 30 insertions(+), 26 deletions(-) diff --git a/android/assets/jsons/Nations/Nations.json b/android/assets/jsons/Nations/Nations.json index 47d998867e..b51cb4c8d2 100644 --- a/android/assets/jsons/Nations/Nations.json +++ b/android/assets/jsons/Nations/Nations.json @@ -573,7 +573,7 @@ outerColor:[54,72,72], innerColor:[246,205,137], uniqueName:"The Great Warpath" - unique:"All units move through Forest and Jungle tiles in friendly territory as if it is Road. These tiles can be used to establish City Connections upon researching the Wheel.", + unique: "All units move through Forest and Jungle Tiles in friendly territory as if they have roads. These tiles can be used to establish City Connections upon researching the Wheel.", cities:["Onoondaga","Osininka","Grand River","Akwesasme","Buffalo Creek","Brantford","Montreal","Genesse River", "Canandaigua Lake","Lake Simcoe","Salamanca","Gowanda","Cuba","Akron","Kanesatake","Ganienkeh","Cayuga Castle", "Chondote","Canajoharie","Nedrow","Oneida Lake","Kanonwalohale","Green Bay","Southwold","Mohawk Valley", diff --git a/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json b/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json index ae98768d4c..9bae7d7995 100644 --- a/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json +++ b/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json @@ -1229,7 +1229,7 @@ Italian:"Hiawatha"//Same as in Italian } - "All units move through Forest and Jungle Tiles in friendly territory as if it is Road. These tiles can be used to establish City Connections upon researching the Wheel.":{ + "All units move through Forest and Jungle Tiles in friendly territory as if they have roads. These tiles can be used to establish City Connections upon researching the Wheel.":{ Italian:"Le caselle di Foreste e Giungle in territorio amico agiscono come strade, e sono usate per stabilire Rotte Commerciali quando scopri la Ruota." Portuguese:"Mova-se por florestas e selvas em território amigo como se fossem estradas. Estas terras podem ser usadas para estabelecer rotas de comércio após pesquisar a roda." French:"Les Forêt et les Jungles en territoire alliés ont les mêmes attributs que les routes. A la découverte de la Roue, elles peuvent établir des routes commerciales." @@ -1246,7 +1246,7 @@ Italian:"Dario I" } - "Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and +10% Strenght.":{ + "Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and +10% Strength":{ Italian:"+50% durata delle Età dell'Oro, durante le quali le unità ricevono +1 Movimento e +10% Forza." Portuguese:"Idades douradas duram 50% mais, unidades recebem 1 movimento a mais e um bonus de +10% em força de combate." French:"Les Ages d'Or durent 50% plus longtemps. Durant les Ages d'Or, les unités gagnent +1 mouvement et +10% de force de Combat." diff --git a/android/build.gradle b/android/build.gradle index 83946f5cd0..16e93a0a11 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -21,8 +21,8 @@ android { applicationId "com.unciv.app" minSdkVersion 14 targetSdkVersion 29 - versionCode 299 - versionName "3.0.6" + versionCode 300 + versionName "3.0.7" } // Had to add this crap for Travis to build, it wanted to sign the app diff --git a/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt b/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt index 6750707bea..3642f1126f 100644 --- a/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt +++ b/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt @@ -3,11 +3,9 @@ package com.unciv.logic.civilization import com.badlogic.gdx.graphics.Color import com.unciv.logic.city.CityInfo import com.unciv.logic.map.BFS -import com.unciv.logic.map.RoadStatus import com.unciv.logic.map.TileInfo import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.tile.ResourceSupplyList -import com.unciv.models.gamebasics.tr import java.util.* import kotlin.collections.HashMap import kotlin.collections.set @@ -78,15 +76,20 @@ class CivInfoTransientUpdater(val civInfo: CivilizationInfo){ citiesReachedToMediums[civInfo.getCapital()] = arrayListOf("Start") val allCivCities = civInfo.gameInfo.civilizations.flatMap { it.cities } + val theWheelIsResearched = civInfo.tech.isResearched("The Wheel") + + val road = "Road" + val harbor = "Harbor" + while(citiesToCheck.isNotEmpty() && citiesReachedToMediums.size() for(cityToConnectFrom in citiesToCheck){ val reachedMediums = citiesReachedToMediums[cityToConnectFrom]!! // This is copypasta and can be cleaned up - if(!reachedMediums.contains("Road")){ + if(theWheelIsResearched && !reachedMediums.contains(road)){ - val roadBfs = BFS(cityToConnectFrom.getCenterTile()) { it.roadStatus != RoadStatus.None } + val roadBfs = BFS(cityToConnectFrom.getCenterTile()) { it.hasRoad(civInfo) } roadBfs.stepToEnd() val reachedCities = allCivCities.filter { roadBfs.tilesReached.containsKey(it.getCenterTile())} for(reachedCity in reachedCities){ @@ -95,14 +98,14 @@ class CivInfoTransientUpdater(val civInfo: CivilizationInfo){ citiesReachedToMediums[reachedCity] = arrayListOf() } val cityReachedByMediums = citiesReachedToMediums[reachedCity]!! - if(!cityReachedByMediums.contains("Road")) - cityReachedByMediums.add("Road") + if(!cityReachedByMediums.contains(road)) + cityReachedByMediums.add(road) } - citiesReachedToMediums[cityToConnectFrom]!!.add("Road") + citiesReachedToMediums[cityToConnectFrom]!!.add(road) } - if(!reachedMediums.contains("Harbor") - && cityToConnectFrom.cityConstructions.containsBuildingOrEquivalent("Harbor")){ + if(!reachedMediums.contains(harbor) + && cityToConnectFrom.cityConstructions.containsBuildingOrEquivalent(harbor)){ val seaBfs = BFS(cityToConnectFrom.getCenterTile()) { it.isWater || it.isCityCenter() } seaBfs.stepToEnd() val reachedCities = allCivCities.filter { seaBfs.tilesReached.containsKey(it.getCenterTile())} @@ -112,10 +115,10 @@ class CivInfoTransientUpdater(val civInfo: CivilizationInfo){ citiesReachedToMediums[reachedCity] = arrayListOf() } val cityReachedByMediums = citiesReachedToMediums[reachedCity]!! - if(!cityReachedByMediums.contains("Harbor")) - cityReachedByMediums.add("Harbor") + if(!cityReachedByMediums.contains(harbor)) + cityReachedByMediums.add(harbor) } - citiesReachedToMediums[cityToConnectFrom]!!.add("Harbor") + citiesReachedToMediums[cityToConnectFrom]!!.add(harbor) } } citiesToCheck = newCitiesToCheck diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index 3940dc65a4..f4cef02488 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -94,7 +94,8 @@ class MapUnit { if (type.isWaterUnit() && civInfo.nation.unique == "+2 movement for all naval units") movement += 2 - if(civInfo.nation.unique=="Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and +10% Strength") + if(civInfo.goldenAges.isGoldenAge() && + civInfo.nation.unique=="Golden Ages last 50% longer. During a Golden Age, units receive +1 Movement and +10% Strength") movement+=1 return movement diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index eac838d6c3..1874b408bb 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -324,5 +324,12 @@ open class TileInfo { } return false } + + fun hasRoad(civInfo: CivilizationInfo): Boolean { + if(roadStatus != RoadStatus.None) return true + if(civInfo.nation.forestsAndJunglesAreRoads && (terrainFeature==Constants.jungle || terrainFeature==Constants.forest)) + return true + return false + } //endregion } \ No newline at end of file diff --git a/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt b/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt index 258a427ae4..c05712129d 100644 --- a/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt +++ b/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt @@ -21,7 +21,7 @@ class UnitMovementAlgorithms(val unit:MapUnit) { if (from.roadStatus === RoadStatus.Railroad && to.roadStatus === RoadStatus.Railroad) return 1 / 10f + extraCost - if (hasRoad(from,civInfo) && hasRoad(to,civInfo)) + if (from.hasRoad(civInfo) && to.hasRoad(civInfo)) { if (unit.civInfo.tech.movementSpeedOnRoadsImproved) return 1 / 3f + extraCost else return 1 / 2f + extraCost @@ -40,13 +40,6 @@ class UnitMovementAlgorithms(val unit:MapUnit) { return to.getLastTerrain().movementCost.toFloat() + extraCost // no road } - fun hasRoad(tileInfo:TileInfo, civInfo: CivilizationInfo): Boolean { - if(tileInfo.roadStatus!==RoadStatus.None) return true - if(civInfo.nation.forestsAndJunglesAreRoads && tileInfo.terrainFeature!=null - && (tileInfo.terrainFeature==Constants.jungle || tileInfo.terrainFeature==Constants.forest)) return true - return false - } - class ParentTileAndTotalDistance(val parentTile:TileInfo, val totalDistance: Float) fun getDistanceToTilesWithinTurn(origin: Vector2, unitMovement: Float): PathsToTilesWithinTurn {