diff --git a/core/src/com/unciv/logic/civilization/transients/CivInfoStatsForNextTurn.kt b/core/src/com/unciv/logic/civilization/transients/CivInfoStatsForNextTurn.kt index b9260f0cbe..1c67edef1f 100644 --- a/core/src/com/unciv/logic/civilization/transients/CivInfoStatsForNextTurn.kt +++ b/core/src/com/unciv/logic/civilization/transients/CivInfoStatsForNextTurn.kt @@ -108,10 +108,6 @@ class CivInfoStatsForNextTurn(val civInfo: Civilization) { transportationUpkeep.add(Stat.valueOf(unique.params[1]), unique.params[0].toFloat()) } } - // backwards compatible - if (road.hasUnique(UniqueType.OldImprovementMaintenance, StateForConditionals(civInfo, tile = tile))) { - transportationUpkeep.add(Stat.Gold, tile.getUnpillagedRoad().upkeep.toFloat()) - } } } // tabulate neutral roads diff --git a/core/src/com/unciv/logic/map/mapunit/UnitMovementAlgorithms.kt b/core/src/com/unciv/logic/map/mapunit/UnitMovementAlgorithms.kt index 7ee47422f1..14d8d0b62c 100644 --- a/core/src/com/unciv/logic/map/mapunit/UnitMovementAlgorithms.kt +++ b/core/src/com/unciv/logic/map/mapunit/UnitMovementAlgorithms.kt @@ -103,13 +103,13 @@ class UnitMovementAlgorithms(val unit: MapUnit) { } private fun getTilesExertingZoneOfControl(tile: Tile, civInfo: Civilization) = sequence { - for (tile in tile.neighbors) { - if (tile.isCityCenter() && civInfo.isAtWarWith(tile.getOwner()!!)) { - yield(tile) + for (neighbor in tile.neighbors) { + if (neighbor.isCityCenter() && civInfo.isAtWarWith(neighbor.getOwner()!!)) { + yield(neighbor) } - else if (tile.militaryUnit != null && civInfo.isAtWarWith(tile.militaryUnit!!.civ)) { - if (tile.militaryUnit!!.type.isWaterUnit() || (unit.type.isLandUnit() && !tile.militaryUnit!!.isEmbarked())) - yield(tile) + else if (neighbor.militaryUnit != null && civInfo.isAtWarWith(neighbor.militaryUnit!!.civ)) { + if (neighbor.militaryUnit!!.type.isWaterUnit() || (unit.type.isLandUnit() && !neighbor.militaryUnit!!.isEmbarked())) + yield(neighbor) } } } diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 94249b926e..4b20809f5d 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -561,8 +561,6 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: DefensiveBonus("Gives a defensive bonus of [relativeAmount]%", UniqueTarget.Improvement), ImprovementMaintenance("Costs [amount] [stat] per turn when in your territory", UniqueTarget.Improvement), // Roads ImprovementAllMaintenance("Costs [amount] [stat] per turn", UniqueTarget.Improvement), // Roads - @Deprecated("as of 4.3.9", ReplaceWith("Costs [amount] [stats] per turn when in your territory")) - OldImprovementMaintenance("Costs [amount] gold per turn when in your territory", UniqueTarget.Improvement), // unused DamagesAdjacentEnemyUnits("Adjacent enemy units ending their turn take [amount] damage", UniqueTarget.Improvement), GreatImprovement("Great Improvement", UniqueTarget.Improvement), @@ -735,6 +733,8 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: // region DEPRECATED AND REMOVED + @Deprecated("as of 4.3.9", ReplaceWith("Costs [amount] [stats] per turn when in your territory"), DeprecationLevel.ERROR) + OldImprovementMaintenance("Costs [amount] gold per turn when in your territory", UniqueTarget.Improvement), @Deprecated("as of 4.3.4", ReplaceWith("[+1 Happiness] per [2] social policies adopted"), DeprecationLevel.ERROR) HappinessPer2Policies("Provides 1 happiness per 2 additional social policies adopted", UniqueTarget.Global), @Deprecated("as of 4.3.6", ReplaceWith("[+1 Happiness] for every known Natural Wonder"), DeprecationLevel.ERROR) diff --git a/core/src/com/unciv/ui/components/KeyCharAndCode.kt b/core/src/com/unciv/ui/components/KeyCharAndCode.kt index c20763f0f0..d3f0875ad5 100644 --- a/core/src/com/unciv/ui/components/KeyCharAndCode.kt +++ b/core/src/com/unciv/ui/components/KeyCharAndCode.kt @@ -62,16 +62,8 @@ data class KeyCharAndCode(val char: Char, val code: Int) { /** Guaranteed to be ignored by [KeyShortcutDispatcher] and never to be generated for an actual event, used as fallback to ensure no action is taken */ val UNKNOWN = KeyCharAndCode(Input.Keys.UNKNOWN) - // Kludges because we got crashes: java.lang.NoSuchMethodError: 'int kotlin.CharCodeKt.access$getCode$p(char)' - //TODO fixed by removing UncivServer from the desktop module - clean up comments and all uses fun Char.toCode() = code -// try { code } catch (ex: Throwable) { null } -// ?: try { @Suppress("DEPRECATION") toInt() } catch (ex: Throwable) { null } -// ?: 0 fun Int.makeChar() = Char(this) -// try { Char(this) } catch (ex: Throwable) { null } -// ?: try { toChar() } catch (ex: Throwable) { null } -// ?: Char.MIN_VALUE /** mini-factory for control codes - case insensitive */ fun ctrl(letter: Char) = KeyCharAndCode((letter.toCode() and 31).makeChar(),0) diff --git a/core/src/com/unciv/ui/popups/options/MultiplayerTab.kt b/core/src/com/unciv/ui/popups/options/MultiplayerTab.kt index 141eff44b6..c01743dedf 100644 --- a/core/src/com/unciv/ui/popups/options/MultiplayerTab.kt +++ b/core/src/com/unciv/ui/popups/options/MultiplayerTab.kt @@ -190,7 +190,11 @@ private fun addTurnCheckerOptions( ): RefreshSelect? { val settings = optionsPopup.settings - optionsPopup.addCheckbox(tab, "Enable out-of-game turn notifications", settings.multiplayer::turnCheckerEnabled) + optionsPopup.addCheckbox( + tab, + "Enable out-of-game turn notifications", + settings.multiplayer::turnCheckerEnabled + ) if (!settings.multiplayer.turnCheckerEnabled) return null diff --git a/core/src/com/unciv/ui/popups/options/OptionsPopup.kt b/core/src/com/unciv/ui/popups/options/OptionsPopup.kt index c649d9287a..c54a3aebd2 100644 --- a/core/src/com/unciv/ui/popups/options/OptionsPopup.kt +++ b/core/src/com/unciv/ui/popups/options/OptionsPopup.kt @@ -9,7 +9,6 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener import com.badlogic.gdx.utils.Array import com.unciv.GUI -import com.unciv.ui.screens.mainmenuscreen.MainMenuScreen import com.unciv.UncivGame import com.unciv.logic.event.EventBus import com.unciv.models.UncivSound @@ -20,15 +19,16 @@ import com.unciv.models.metadata.SettingsPropertyChanged import com.unciv.models.metadata.SettingsPropertyUncivSoundChanged import com.unciv.models.ruleset.RulesetCache import com.unciv.models.translations.tr -import com.unciv.ui.images.ImageGetter -import com.unciv.ui.popups.Popup -import com.unciv.ui.screens.basescreen.BaseScreen import com.unciv.ui.components.TabbedPager import com.unciv.ui.components.extensions.center import com.unciv.ui.components.extensions.onChange import com.unciv.ui.components.extensions.toCheckBox import com.unciv.ui.components.extensions.toGdxArray import com.unciv.ui.components.extensions.toLabel +import com.unciv.ui.images.ImageGetter +import com.unciv.ui.popups.Popup +import com.unciv.ui.screens.basescreen.BaseScreen +import com.unciv.ui.screens.mainmenuscreen.MainMenuScreen import com.unciv.ui.screens.worldscreen.WorldScreen import com.unciv.utils.concurrency.Concurrency import com.unciv.utils.concurrency.withGLContext @@ -169,12 +169,13 @@ class OptionsPopup( else table.add(checkbox).left() } - fun addCheckbox(table: Table, - text: String, - settingsProperty: KMutableProperty0, - updateWorld: Boolean = false, - newRow: Boolean = true, - action: (Boolean) -> Unit = {}) { + fun addCheckbox( + table: Table, + text: String, + settingsProperty: KMutableProperty0, + updateWorld: Boolean = false, + action: (Boolean) -> Unit = {} + ) { addCheckbox(table, text, settingsProperty.get(), updateWorld) { action(it) settingsProperty.set(it) diff --git a/core/src/com/unciv/ui/screens/pickerscreens/ModManagementScreen.kt b/core/src/com/unciv/ui/screens/pickerscreens/ModManagementScreen.kt index d945bc0d5f..90a0106b09 100644 --- a/core/src/com/unciv/ui/screens/pickerscreens/ModManagementScreen.kt +++ b/core/src/com/unciv/ui/screens/pickerscreens/ModManagementScreen.kt @@ -11,7 +11,6 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table import com.badlogic.gdx.scenes.scene2d.ui.TextButton import com.badlogic.gdx.utils.Align import com.badlogic.gdx.utils.SerializationException -import com.unciv.ui.screens.mainmenuscreen.MainMenuScreen import com.unciv.UncivGame import com.unciv.json.fromJsonFile import com.unciv.json.json @@ -20,16 +19,9 @@ import com.unciv.models.ruleset.Ruleset import com.unciv.models.ruleset.RulesetCache import com.unciv.models.tilesets.TileSetCache import com.unciv.models.translations.tr -import com.unciv.ui.images.ImageGetter -import com.unciv.ui.screens.pickerscreens.ModManagementOptions.SortType -import com.unciv.ui.popups.ConfirmPopup -import com.unciv.ui.popups.Popup -import com.unciv.ui.popups.ToastPopup import com.unciv.ui.components.AutoScrollPane -import com.unciv.ui.screens.basescreen.BaseScreen import com.unciv.ui.components.ExpanderTab import com.unciv.ui.components.KeyCharAndCode -import com.unciv.ui.screens.basescreen.RecreateOnResize import com.unciv.ui.components.UncivTextField import com.unciv.ui.components.WrappableLabel import com.unciv.ui.components.extensions.UncivDateFormat.formatDate @@ -44,6 +36,14 @@ import com.unciv.ui.components.extensions.onClick import com.unciv.ui.components.extensions.toCheckBox import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.extensions.toTextButton +import com.unciv.ui.images.ImageGetter +import com.unciv.ui.popups.ConfirmPopup +import com.unciv.ui.popups.Popup +import com.unciv.ui.popups.ToastPopup +import com.unciv.ui.screens.basescreen.BaseScreen +import com.unciv.ui.screens.basescreen.RecreateOnResize +import com.unciv.ui.screens.mainmenuscreen.MainMenuScreen +import com.unciv.ui.screens.pickerscreens.ModManagementOptions.SortType import com.unciv.utils.Log import com.unciv.utils.concurrency.Concurrency import com.unciv.utils.concurrency.launchOnGLThread @@ -346,16 +346,26 @@ class ModManagementScreen( * @param repo: the repository instance as received from the GitHub api */ private fun addModInfoToActionTable(repo: Github.Repo) { - addModInfoToActionTable(repo.name, repo.html_url, repo.pushed_at, repo.owner.login, repo.size) + addModInfoToActionTable(repo.html_url, repo.pushed_at, repo.owner.login, repo.size) } /** Recreate the information part of the right-hand column * @param modName: The mod name (name from the RuleSet) * @param modOptions: The ModOptions as enriched by us with GitHub metadata when originally downloaded */ private fun addModInfoToActionTable(modName: String, modOptions: ModOptions) { - addModInfoToActionTable(modName, modOptions.modUrl, modOptions.lastUpdated, modOptions.author, modOptions.modSize) + addModInfoToActionTable( + modOptions.modUrl, + modOptions.lastUpdated, + modOptions.author, + modOptions.modSize + ) } - private fun addModInfoToActionTable(modName: String, repoUrl: String, updatedAt: String, author: String, modSize: Int) { + private fun addModInfoToActionTable( + repoUrl: String, + updatedAt: String, + author: String, + modSize: Int + ) { // remember selected mod - for now needed only to display a background-fetched image while the user is watching // Display metadata