Tutorials now accessible from Civilopedia!

Mass tutorial renaming
This commit is contained in:
Yair Morgenstern
2019-10-06 23:18:51 +03:00
parent 69dd7ec7b6
commit b3a2bc3307
11 changed files with 331 additions and 313 deletions

View File

@ -11,6 +11,7 @@ import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.ICivilopedia
import com.unciv.models.gamebasics.tr
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.Tutorials
import com.unciv.ui.utils.onClick
import com.unciv.ui.utils.toLabel
import java.util.*
@ -74,6 +75,14 @@ class CivilopediaScreen : CameraStageBaseScreen() {
categoryToInfos["Units"] = GameBasics.Units.values
categoryToInfos["Technologies"] = GameBasics.Technologies.values
class Tutorial(var name:String, override var description:String):ICivilopedia{
override fun toString() = name
}
categoryToInfos["Tutorials"] = Tutorials().getTutorialsOfLanguage("English").keys
.filter { !it.startsWith("_") }
.map { Tutorial(it.replace("_"," "),
Tutorials().getTutorials(it, UnCivGame.Current.settings.language).joinToString("\n\n")) }
nameList.onClick {
if(nameList.selected!=null) description.setText(civPediaEntries.get(nameList.selectedIndex).description)
}

View File

@ -69,7 +69,7 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() {
stage.addActor(buildingsTableContainer)
update()
displayTutorials("CityEntered")
displayTutorials("Cities")
}
internal fun update() {
@ -92,7 +92,7 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() {
constructionsTable.setPosition(5f, stage.height-5-topCityStatsTable.height, Align.topLeft)
if (city.getCenterTile().getTilesAtDistance(4).isNotEmpty()){
displayTutorials("CityRange")
displayTutorials("City_Range")
}
}

View File

@ -19,7 +19,7 @@ class PolicyPickerScreen(val worldScreen: WorldScreen, civInfo: CivilizationInfo
init {
val policies = viewingCiv.policies
displayTutorials("PolicyPickerScreen")
displayTutorials("Culture_and_Policies")
rightSideButton.setText("{Adopt policy}\r\n(".tr() + policies.storedCulture + "/" + policies.getCultureNeededForNextPolicy() + ")")

View File

@ -95,7 +95,7 @@ class TechPickerScreen(internal val civInfo: CivilizationInfo, switchfromWorldSc
dispose()
}
displayTutorials("TechPickerScreen")
displayTutorials("Technology")
// per default show current/recent technology,
// and possibly select it to show description,

View File

@ -99,7 +99,7 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() {
stage.addActor(unitActionsTable)
displayTutorials("NewGame")
displayTutorials("New_Game")
displayTutorials("TileLayout")
createNextTurnButton() // needs civ table to be positioned
@ -197,33 +197,36 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() {
private fun displayTutorialsOnUpdate() {
if (UnCivGame.Current.settings.hasCrashedRecently) {
displayTutorials("GameCrashed")
UnCivGame.Current.settings.tutorialsShown.remove("GameCrashed")
displayTutorials("_GameCrashed")
UnCivGame.Current.settings.tutorialsShown.remove("_GameCrashed")
UnCivGame.Current.settings.hasCrashedRecently = false
UnCivGame.Current.settings.save()
}
if (bottomBar.unitTable.selectedUnit != null) displayTutorials("UnitSelected")
if (viewingCiv.cities.isNotEmpty()) displayTutorials("CityFounded")
if (UnCivGame.Current.settings.tutorialsShown.contains("CityEntered")) displayTutorials("AfterCityEntered")
if (viewingCiv.cities.isNotEmpty()){
displayTutorials("_City_Founded")
displayTutorials("First_Steps")
}
if (UnCivGame.Current.settings.tutorialsShown.contains("Cities")) displayTutorials("AfterCityEntered")
if (!UnCivGame.Current.settings.tutorialsShown.contains("EnemyCityNeedsConqueringWithMeleeUnit")) {
if (!UnCivGame.Current.settings.tutorialsShown.contains("_EnemyCityNeedsConqueringWithMeleeUnit")) {
for (enemyCity in viewingCiv.diplomacy.values.filter { it.diplomaticStatus == DiplomaticStatus.War }
.map { it.otherCiv() }.flatMap { it.cities }) {
if (enemyCity.health == 1 && enemyCity.getCenterTile().getTilesInDistance(2)
.any { it.getUnits().any { unit -> unit.civInfo == viewingCiv} })
displayTutorials("EnemyCityNeedsConqueringWithMeleeUnit")
displayTutorials("_EnemyCityNeedsConqueringWithMeleeUnit")
}
}
if(viewingCiv.cities.any { it.hasJustBeenConquered })
displayTutorials("ConqueredEnemyCity")
displayTutorials("After_Conquering")
if (gameInfo.getCurrentPlayerCivilization().getCivUnits().any { it.health < 100 })
displayTutorials("InjuredUnits")
displayTutorials("Injured_Units")
if (gameInfo.getCurrentPlayerCivilization().getCivUnits().any { it.name == Constants.worker })
displayTutorials("WorkerTrained")
displayTutorials("Workers")
}
private fun updateDiplomacyButton(civInfo: CivilizationInfo) {
@ -231,7 +234,7 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() {
if(civInfo.getKnownCivs()
.filterNot { it.isDefeated() || it==viewingCiv || it.isBarbarian() }
.any()) {
displayTutorials("OtherCivEncountered")
displayTutorials("_OtherCivEncountered")
val btn = TextButton("Diplomacy".tr(), skin)
btn.onClick { UnCivGame.Current.screen = DiplomacyScreen(viewingCiv) }
btn.label.setFontSize(30)
@ -425,13 +428,13 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() {
private fun showTutorialsOnNextTurn(){
val shownTutorials = UnCivGame.Current.settings.tutorialsShown
displayTutorials("NextTurn")
if("BarbarianEncountered" !in shownTutorials
if("_BarbarianEncountered" !in shownTutorials
&& viewingCiv.viewableTiles.any { it.getUnits().any { unit -> unit.civInfo.isBarbarian() } })
displayTutorials("BarbarianEncountered")
if(viewingCiv.cities.size > 2) displayTutorials("SecondCity")
if(viewingCiv.getHappiness() < 5) displayTutorials("HappinessGettingLow")
displayTutorials("_BarbarianEncountered")
if(viewingCiv.cities.size > 2) displayTutorials("Roads_and_Railroads")
if(viewingCiv.getHappiness() < 5) displayTutorials("Happiness")
if(viewingCiv.getHappiness() < 0) displayTutorials("Unhappiness")
if(viewingCiv.goldenAges.isGoldenAge()) displayTutorials("GoldenAge")
if(viewingCiv.goldenAges.isGoldenAge()) displayTutorials("Golden_Age")
if(gameInfo.turns >= 50 && UnCivGame.Current.settings.checkForDueUnits) displayTutorials("Idle_Units")
if(gameInfo.turns >= 100) displayTutorials("ContactMe")
val resources = viewingCiv.getCivResources()
@ -442,11 +445,11 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() {
.flatMap { it.cities }.any { viewingCiv.exploredTiles.contains(it.location) })
displayTutorials("EnemyCity")
if(viewingCiv.containsBuildingUnique("Enables construction of Spaceship parts"))
displayTutorials("ApolloProgram")
displayTutorials("Apollo_Program")
if(viewingCiv.getCivUnits().any { it.type == UnitType.Siege })
displayTutorials("SiegeUnitTrained")
displayTutorials("Siege_Units")
if(viewingCiv.tech.getTechUniques().contains("Enables embarkation for land units"))
displayTutorials("CanEmbark")
displayTutorials("Embarking")
}
}