mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-16 18:59:15 +07:00
Tutorials now accessible from Civilopedia!
Mass tutorial renaming
This commit is contained in:
@ -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)
|
||||
}
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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() + ")")
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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")
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user