Before

…lines 1–82 unchanged (82 lines)
83 @Transient // CityStats has no serializable fields
84 var cityStats = CityStats(this)
85
86 var resourceStockpiles = Counter<String>()
87
88 /** All tiles that this city controls */
89 var tiles = HashSet<Vector2>()
90
91 /** Tiles that have population assigned to them */
92 var workedTiles = HashSet<Vector2>()
93
94 /** Tiles that the population in them won't be reassigned */
95 var lockedTiles = HashSet<Vector2>()
96 var manualSpecialists = false
97 var isBeingRazed = false
98 var attackedThisTurn = false
99 var hasSoldBuildingThisTurn = false
100 var isPuppet = false
101 var shouldReassignPopulation = false // flag so that on startTurn() we reassign population
…lines 102–186 unchanged (85 lines)
187 @Readonly fun canBombard() = !attackedThisTurn && !isInResistance()
188 @Readonly fun getCenterTile(): Tile = centerTile
189 @Readonly fun getCenterTileOrNull(): Tile? = if (::centerTile.isInitialized) centerTile else null
190 @Readonly fun getTiles(): Sequence<Tile> = tiles.asSequence().map { tileMap[it] }
191 @Readonly fun getWorkableTiles() = tilesInRange.asSequence().filter { it.getOwner() == civ }
192 @Readonly fun getWorkedTiles(): Sequence<Tile> = workedTiles.asSequence().map { tileMap[it] }
193 @Readonly fun isWorked(tile: Tile) = workedTiles.contains(tile.position.toVector2())
194
195 @Readonly fun isCapital(): Boolean = cityConstructions.builtBuildingUniqueMap.hasUnique(UniqueType.IndicatesCapital, state)
196 @Readonly fun isCoastal(): Boolean = centerTile.isCoastalTile()
197 @Readonly fun isNaval(): Boolean = centerTile.isWater || isCoastal()
198
199 @Readonly fun getBombardRange(): Int = civ.gameInfo.ruleset.modOptions.constants.baseCityBombardRange
…lines 200–581 unchanged (382 lines)

After

…lines 1–82 unchanged (82 lines)
83 @Transient // CityStats has no serializable fields
84 var cityStats = CityStats(this)
85
86 var resourceStockpiles = Counter<String>()
87
88 /** All tiles that this city controls */
89 var tiles = HashSet<HexCoord>()
90
91 /** Tiles that have population assigned to them */
92 var workedTiles = HashSet<HexCoord>()
93
94 /** Tiles that the population in them won't be reassigned */
95 var lockedTiles = HashSet<HexCoord>()
96 var manualSpecialists = false
97 var isBeingRazed = false
98 var attackedThisTurn = false
99 var hasSoldBuildingThisTurn = false
100 var isPuppet = false
101 var shouldReassignPopulation = false // flag so that on startTurn() we reassign population
…lines 102–186 unchanged (85 lines)
187 @Readonly fun canBombard() = !attackedThisTurn && !isInResistance()
188 @Readonly fun getCenterTile(): Tile = centerTile
189 @Readonly fun getCenterTileOrNull(): Tile? = if (::centerTile.isInitialized) centerTile else null
190 @Readonly fun getTiles(): Sequence<Tile> = tiles.asSequence().map { tileMap[it] }
191 @Readonly fun getWorkableTiles() = tilesInRange.asSequence().filter { it.getOwner() == civ }
192 @Readonly fun getWorkedTiles(): Sequence<Tile> = workedTiles.asSequence().map { tileMap[it] }
193 @Readonly fun isWorked(tile: Tile) = workedTiles.contains(tile.position)
194
195 @Readonly fun isCapital(): Boolean = cityConstructions.builtBuildingUniqueMap.hasUnique(UniqueType.IndicatesCapital, state)
196 @Readonly fun isCoastal(): Boolean = centerTile.isCoastalTile()
197 @Readonly fun isNaval(): Boolean = centerTile.isWater || isCoastal()
198
199 @Readonly fun getBombardRange(): Int = civ.gameInfo.ruleset.modOptions.constants.baseCityBombardRange
…lines 200–581 unchanged (382 lines)

Before

source_file
package_header
package "package"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "badlogic"
. "."
identifier "gdx"
. "."
identifier "math"
. "."
identifier "Vector2"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "Constants"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "GUI"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "IsPartOfGameInfoSerialization"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "MultiFilter"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "CityConquestFunctions"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "CityEspionageManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "CityExpansionManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "CityPopulationManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "CityReligionManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "SpyFleeReason"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "civilization"
. "."
identifier "Civilization"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "civilization"
. "."
identifier "transients"
. "."
identifier "CapitalConnectionsFinder"
. "."
identifier "CapitalConnectionMedium"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "HexCoord"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "TileMap"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "mapunit"
. "."
identifier "MapUnit"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "mapunit"
. "."
identifier "UnitPromotions"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "tile"
. "."
identifier "RoadStatus"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "tile"
. "."
identifier "Tile"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "toVector2"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "Counter"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "Building"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "tile"
. "."
identifier "TileResource"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "unique"
. "."
identifier "GameContext"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "unique"
. "."
identifier "Unique"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "unique"
. "."
identifier "UniqueType"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "unit"
. "."
identifier "BaseUnit"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "stats"
. "."
identifier "GameResource"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "stats"
. "."
identifier "INamed"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "stats"
. "."
identifier "Stat"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "stats"
. "."
identifier "SubStat"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "utils"
. "."
identifier "withoutItem"
import
import "import"
qualified_identifier
identifier "yairm210"
. "."
identifier "purity"
. "."
identifier "annotations"
. "."
identifier "Readonly"
import
import "import"
qualified_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "EnumSet"
import
import "import"
qualified_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "UUID"
import
import "import"
qualified_identifier
identifier "kotlin"
. "."
identifier "math"
. "."
identifier "roundToInt"
class_declaration
modifiers
class_modifier
enum "enum"
class "class"
identifier "CityFlags"
enum_class_body
{ "{"
enum_entry
identifier "WeLoveTheKing"
, ","
enum_entry
identifier "ResourceDemand"
, ","
enum_entry
identifier "Resistance"
} "}"
class_declaration
class "class"
identifier "City"
: ":"
delegation_specifiers
delegation_specifier
user_type
identifier "IsPartOfGameInfoSerialization"
, ","
delegation_specifier
user_type
identifier "INamed"
class_body
{ "{"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
member_modifier
lateinit "lateinit"
var "var"
variable_declaration
identifier "civ"
: ":"
user_type
identifier "Civilization"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
visibility_modifier
private "private"
member_modifier
lateinit "lateinit"
var "var"
variable_declaration
identifier "centerTile"
: ":"
user_type
identifier "Tile"
line_comment "// cached for better performance"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
member_modifier
lateinit "lateinit"
var "var"
variable_declaration
identifier "tileMap"
: ":"
user_type
identifier "TileMap"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
member_modifier
lateinit "lateinit"
var "var"
variable_declaration
identifier "tilesInRange"
: ":"
user_type
identifier "HashSet"
type_arguments
< "<"
type_projection
user_type
identifier "Tile"
> ">"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
var "var"
variable_declaration
identifier "state"
= "="
navigation_expression
identifier "GameContext"
. "."
identifier "EmptyState"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
line_comment "// This is so that military units can enter the city, even b"...
var "var"
variable_declaration
identifier "hasJustBeenConquered"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "location"
= "="
call_expression
identifier "HexCoord"
value_arguments
( "("
) ")"
property_declaration (+23 nodes collapsed)
property_declaration
modifiers
member_modifier
override "override"
var "var"
variable_declaration
identifier "name"
: ":"
user_type
identifier "String"
= "="
string_literal
" "\""
" "\""
block_comment "/** Serialization field for [foundingCivObject]. Is equivale"...
property_declaration
modifiers
visibility_modifier
private "private"
var "var"
variable_declaration
identifier "foundingCiv"
= "="
string_literal
" "\""
" "\""
line_comment "// This is so that cities in resistance that are recaptured "...
property_declaration
var "var"
variable_declaration
identifier "previousOwner"
= "="
string_literal
" "\""
" "\""
property_declaration
var "var"
variable_declaration
identifier "turnAcquired"
= "="
number_literal "0"
property_declaration
var "var"
variable_declaration
identifier "health"
= "="
number_literal "200"
property_declaration
var "var"
variable_declaration
identifier "population"
= "="
call_expression
identifier "CityPopulationManager"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "cityConstructions"
= "="
call_expression
identifier "CityConstructions"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "expansion"
= "="
call_expression
identifier "CityExpansionManager"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "religion"
= "="
call_expression
identifier "CityReligionManager"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "espionage"
= "="
call_expression
identifier "CityEspionageManager"
value_arguments
( "("
) ")"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
line_comment "// CityStats has no serializable fields"
var "var"
variable_declaration
identifier "cityStats"
= "="
call_expression
identifier "CityStats"
value_arguments
( "("
value_argument
this_expression
this "this"
) ")"
property_declaration
var "var"
variable_declaration
identifier "resourceStockpiles"
= "="
call_expression
identifier "Counter"
type_arguments
< "<"
type_projection
user_type
identifier "String"
> ">"
value_arguments
( "("
) ")"
block_comment "/** All tiles that this city controls */"
property_declaration
var "var"
variable_declaration
identifier "tiles"
= "="
call_expression
identifier "HashSet"
type_arguments
< "<"
type_projection
user_type
identifier "Vector2"
> ">"
value_arguments
( "("
) ")"
block_comment "/** Tiles that have population assigned to them */"
property_declaration
var "var"
variable_declaration
identifier "workedTiles"
= "="
call_expression
identifier "HashSet"
type_arguments
< "<"
type_projection
user_type
identifier "Vector2"
> ">"
value_arguments
( "("
) ")"
block_comment "/** Tiles that the population in them won't be reassigned */"
property_declaration
var "var"
variable_declaration
identifier "lockedTiles"
= "="
call_expression
identifier "HashSet"
type_arguments
< "<"
type_projection
user_type
identifier "Vector2"
> ">"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "manualSpecialists"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "isBeingRazed"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "attackedThisTurn"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "hasSoldBuildingThisTurn"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "isPuppet"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "shouldReassignPopulation"
= "="
identifier "false"
line_comment "// flag so that on startTurn() we reassign population"
property_declaration
var "var"
variable_declaration
identifier "unitShouldUseSavedPromotion"
= "="
call_expression
identifier "HashMap"
type_arguments
< "<"
type_projection
user_type
identifier "String"
, ","
type_projection
user_type
identifier "Boolean"
> ">"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "unitToPromotions"
= "="
call_expression
identifier "HashMap"
type_arguments
< "<"
type_projection
user_type
identifier "String"
, ","
type_projection
user_type
identifier "UnitPromotions"
> ">"
value_arguments
( "("
) ")"
block_comment "/** Neighboring explored cities, in radius of 12 tiles */"
property_declaration (+105 nodes collapsed)
property_declaration
modifiers
visibility_modifier
private "private"
var "var"
variable_declaration
identifier "cityAIFocus"
: ":"
user_type
identifier "String"
= "="
navigation_expression
navigation_expression
identifier "CityFocus"
. "."
identifier "NoFocus"
. "."
identifier "name"
function_declaration (+38 nodes collapsed)
function_declaration (+22 nodes collapsed)
block_comment "/**\n * Civ object for the original founder of this city\n"...
property_declaration (+93 nodes collapsed)
property_declaration
var "var"
variable_declaration
identifier "avoidGrowth"
: ":"
user_type
identifier "Boolean"
= "="
identifier "false"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
var "var"
variable_declaration
identifier "currentGPPBonus"
: ":"
user_type
identifier "Int"
= "="
number_literal "0"
line_comment "// temporary variable saved for rankSpecialist()"
block_comment "/** The very first found city is the _original_ capital,\n "...
property_declaration
var "var"
variable_declaration
identifier "isOriginalCapital"
= "="
identifier "false"
block_comment "/** For We Love the King Day */"
property_declaration
var "var"
variable_declaration
identifier "demandedResource"
= "="
string_literal
" "\""
" "\""
property_declaration (+23 nodes collapsed)
block_comment "/** Persisted connected-to-capital (by any medium) to allow "...
property_declaration
var "var"
variable_declaration
identifier "connectedToCapitalStatus"
= "="
identifier "false"
function_declaration
modifiers
annotation
@ "@"
user_type
identifier "Readonly"
fun "fun"
identifier "hasDiplomaticMarriage"
function_value_parameters
( "("
) ")"
: ":"
user_type
identifier "Boolean"
function_body
= "="
binary_expression
identifier "foundingCivObject"
== "=="
identifier "null"
line_comment "//region pure functions"
function_declaration (+256 nodes collapsed)
function_declaration (+25 nodes collapsed)
function_declaration
modifiers
annotation
@ "@"
user_type
identifier "Readonly"
fun "fun"
identifier "getCenterTile"
function_value_parameters
( "("
) ")"
: ":"
user_type
identifier "Tile"
function_body
= "="
identifier "centerTile"
function_declaration (+31 nodes collapsed)
function_declaration (+43 nodes collapsed)
function_declaration (+40 nodes collapsed)
function_declaration (+43 nodes collapsed)
function_declaration
modifiers
annotation
@ "@"
user_type
identifier "Readonly"
fun "fun"
identifier "isWorked"
function_value_parameters
( "("
parameter
identifier "tile"
: ":"
user_type
identifier "Tile"
) ")"
function_body
= "="
call_expression
navigation_expression
identifier "workedTiles"
. "."
identifier "contains"
value_arguments
( "("
value_argument
call_expression
navigation_expression
navigation_expression
identifier "tile"
. "."
identifier "position"
. "."
identifier "toVector2"
value_arguments
( "("
) ")"
) ")"
function_declaration (+35 nodes collapsed)
function_declaration (+24 nodes collapsed)
function_declaration (+27 nodes collapsed)
function_declaration (+32 nodes collapsed)
function_declaration (+32 nodes collapsed)
function_declaration (+32 nodes collapsed)
function_declaration (+24 nodes collapsed)
function_declaration (+72 nodes collapsed)
function_declaration (+21 nodes collapsed)
function_declaration (+55 nodes collapsed)
function_declaration (+31 nodes collapsed)
function_declaration (+28 nodes collapsed)
function_declaration (+23 nodes collapsed)
function_declaration (+23 nodes collapsed)
function_declaration (+71 nodes collapsed)
function_declaration
modifiers
annotation
@ "@"
user_type
identifier "Readonly"
fun "fun"
identifier "getRuleset"
function_value_parameters
( "("
) ")"
function_body
= "="
navigation_expression
navigation_expression
identifier "civ"
. "."
identifier "gameInfo"
. "."
identifier "ruleset"
function_declaration (+42 nodes collapsed)
function_declaration (+32 nodes collapsed)
function_declaration (+21 nodes collapsed)
function_declaration (+21 nodes collapsed)
function_declaration (+27 nodes collapsed)
function_declaration (+53 nodes collapsed)
function_declaration (+24 nodes collapsed)
function_declaration (+28 nodes collapsed)
function_declaration (+65 nodes collapsed)
function_declaration (+74 nodes collapsed)
function_declaration (+115 nodes collapsed)
function_declaration (+82 nodes collapsed)
function_declaration (+68 nodes collapsed)
function_declaration (+38 nodes collapsed)
function_declaration (+40 nodes collapsed)
block_comment "/** Gets max air units that can remain in the city untranspo"...
function_declaration (+89 nodes collapsed)
function_declaration
modifiers
member_modifier
override "override"
fun "fun"
identifier "toString"
function_value_parameters
( "("
) ")"
function_body
= "="
identifier "name"
line_comment "// for debug"
function_declaration (+31 nodes collapsed)
function_declaration (+34 nodes collapsed)
function_declaration (+151 nodes collapsed)
line_comment "//endregion"
line_comment "//region state-changing functions"
function_declaration (+142 nodes collapsed)
function_declaration (+32 nodes collapsed)
function_declaration (+28 nodes collapsed)
function_declaration (+38 nodes collapsed)
line_comment "// Reassign all Specialists and Unlock all tiles"
line_comment "// Mainly for automated cities, Puppets, just captured"
function_declaration (+23 nodes collapsed)
block_comment "/** Apply worked tiles optimization (aka CityFocus) - Expens"...
function_declaration (+93 nodes collapsed)
block_comment "/** Apply worked tiles optimization (aka CityFocus) -\n *"...
function_declaration (+46 nodes collapsed)
function_declaration (+342 nodes collapsed)
function_declaration (+23 nodes collapsed)
block_comment "/** This happens when we either puppet OR annex, basically w"...
function_declaration (+30 nodes collapsed)
block_comment "/* Liberating is returning a city to its founder - makes you"...
function_declaration (+30 nodes collapsed)
function_declaration (+30 nodes collapsed)
function_declaration (+140 nodes collapsed)
function_declaration (+38 nodes collapsed)
function_declaration (+35 nodes collapsed)
function_declaration (+78 nodes collapsed)
function_declaration (+76 nodes collapsed)
block_comment "/** Implements [UniqueParameterType.CityFilter][com.unciv.mo"...
function_declaration (+84 nodes collapsed)
function_declaration (+478 nodes collapsed)
line_comment "// So everywhere in the codebase there were continuous calls"...
line_comment "// `cityConstructions.builtBuildingUniqueMap.getUniques()` o"...
line_comment "// which was fine as long as those were the only uniques tha"...
line_comment "// However, with the introduction of religion, cities might "...
line_comment "// Adding both calls to `builtBuildingsUniqueMap` and `Relig"...
line_comment "// Looking at all the use cases, the following functions wer"...
line_comment "// Sadly, due to the large disparity between use cases, ther"...
line_comment "// Finds matching uniques provided from both local and non-l"...
function_declaration (+150 nodes collapsed)
line_comment "// Uniques special to this city"
function_declaration (+126 nodes collapsed)
line_comment "// Uniques coming from this city, but that should be provide"...
function_declaration (+125 nodes collapsed)
line_comment "//endregion"
} "}"

After

source_file
package_header
package "package"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "badlogic"
. "."
identifier "gdx"
. "."
identifier "math"
. "."
identifier "Vector2"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "Constants"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "GUI"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "IsPartOfGameInfoSerialization"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "MultiFilter"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "CityConquestFunctions"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "CityEspionageManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "CityExpansionManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "CityPopulationManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "CityReligionManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "city"
. "."
identifier "managers"
. "."
identifier "SpyFleeReason"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "civilization"
. "."
identifier "Civilization"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "civilization"
. "."
identifier "transients"
. "."
identifier "CapitalConnectionsFinder"
. "."
identifier "CapitalConnectionMedium"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "HexCoord"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "TileMap"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "mapunit"
. "."
identifier "MapUnit"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "mapunit"
. "."
identifier "UnitPromotions"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "tile"
. "."
identifier "RoadStatus"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "tile"
. "."
identifier "Tile"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "logic"
. "."
identifier "map"
. "."
identifier "toVector2"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "Counter"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "Building"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "tile"
. "."
identifier "TileResource"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "unique"
. "."
identifier "GameContext"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "unique"
. "."
identifier "Unique"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "unique"
. "."
identifier "UniqueType"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "ruleset"
. "."
identifier "unit"
. "."
identifier "BaseUnit"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "stats"
. "."
identifier "GameResource"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "stats"
. "."
identifier "INamed"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "stats"
. "."
identifier "Stat"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "models"
. "."
identifier "stats"
. "."
identifier "SubStat"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "unciv"
. "."
identifier "utils"
. "."
identifier "withoutItem"
import
import "import"
qualified_identifier
identifier "yairm210"
. "."
identifier "purity"
. "."
identifier "annotations"
. "."
identifier "Readonly"
import
import "import"
qualified_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "EnumSet"
import
import "import"
qualified_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "UUID"
import
import "import"
qualified_identifier
identifier "kotlin"
. "."
identifier "math"
. "."
identifier "roundToInt"
class_declaration
modifiers
class_modifier
enum "enum"
class "class"
identifier "CityFlags"
enum_class_body
{ "{"
enum_entry
identifier "WeLoveTheKing"
, ","
enum_entry
identifier "ResourceDemand"
, ","
enum_entry
identifier "Resistance"
} "}"
class_declaration
class "class"
identifier "City"
: ":"
delegation_specifiers
delegation_specifier
user_type
identifier "IsPartOfGameInfoSerialization"
, ","
delegation_specifier
user_type
identifier "INamed"
class_body
{ "{"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
member_modifier
lateinit "lateinit"
var "var"
variable_declaration
identifier "civ"
: ":"
user_type
identifier "Civilization"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
visibility_modifier
private "private"
member_modifier
lateinit "lateinit"
var "var"
variable_declaration
identifier "centerTile"
: ":"
user_type
identifier "Tile"
line_comment "// cached for better performance"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
member_modifier
lateinit "lateinit"
var "var"
variable_declaration
identifier "tileMap"
: ":"
user_type
identifier "TileMap"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
member_modifier
lateinit "lateinit"
var "var"
variable_declaration
identifier "tilesInRange"
: ":"
user_type
identifier "HashSet"
type_arguments
< "<"
type_projection
user_type
identifier "Tile"
> ">"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
var "var"
variable_declaration
identifier "state"
= "="
navigation_expression
identifier "GameContext"
. "."
identifier "EmptyState"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
line_comment "// This is so that military units can enter the city, even b"...
var "var"
variable_declaration
identifier "hasJustBeenConquered"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "location"
= "="
call_expression
identifier "HexCoord"
value_arguments
( "("
) ")"
property_declaration (+23 nodes collapsed)
property_declaration
modifiers
member_modifier
override "override"
var "var"
variable_declaration
identifier "name"
: ":"
user_type
identifier "String"
= "="
string_literal
" "\""
" "\""
block_comment "/** Serialization field for [foundingCivObject]. Is equivale"...
property_declaration
modifiers
visibility_modifier
private "private"
var "var"
variable_declaration
identifier "foundingCiv"
= "="
string_literal
" "\""
" "\""
line_comment "// This is so that cities in resistance that are recaptured "...
property_declaration
var "var"
variable_declaration
identifier "previousOwner"
= "="
string_literal
" "\""
" "\""
property_declaration
var "var"
variable_declaration
identifier "turnAcquired"
= "="
number_literal "0"
property_declaration
var "var"
variable_declaration
identifier "health"
= "="
number_literal "200"
property_declaration
var "var"
variable_declaration
identifier "population"
= "="
call_expression
identifier "CityPopulationManager"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "cityConstructions"
= "="
call_expression
identifier "CityConstructions"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "expansion"
= "="
call_expression
identifier "CityExpansionManager"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "religion"
= "="
call_expression
identifier "CityReligionManager"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "espionage"
= "="
call_expression
identifier "CityEspionageManager"
value_arguments
( "("
) ")"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
line_comment "// CityStats has no serializable fields"
var "var"
variable_declaration
identifier "cityStats"
= "="
call_expression
identifier "CityStats"
value_arguments
( "("
value_argument
this_expression
this "this"
) ")"
property_declaration
var "var"
variable_declaration
identifier "resourceStockpiles"
= "="
call_expression
identifier "Counter"
type_arguments
< "<"
type_projection
user_type
identifier "String"
> ">"
value_arguments
( "("
) ")"
block_comment "/** All tiles that this city controls */"
property_declaration
var "var"
variable_declaration
identifier "tiles"
= "="
call_expression
identifier "HashSet"
type_arguments
< "<"
type_projection
user_type
identifier "HexCoord"
> ">"
value_arguments
( "("
) ")"
block_comment "/** Tiles that have population assigned to them */"
property_declaration
var "var"
variable_declaration
identifier "workedTiles"
= "="
call_expression
identifier "HashSet"
type_arguments
< "<"
type_projection
user_type
identifier "HexCoord"
> ">"
value_arguments
( "("
) ")"
block_comment "/** Tiles that the population in them won't be reassigned */"
property_declaration
var "var"
variable_declaration
identifier "lockedTiles"
= "="
call_expression
identifier "HashSet"
type_arguments
< "<"
type_projection
user_type
identifier "HexCoord"
> ">"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "manualSpecialists"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "isBeingRazed"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "attackedThisTurn"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "hasSoldBuildingThisTurn"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "isPuppet"
= "="
identifier "false"
property_declaration
var "var"
variable_declaration
identifier "shouldReassignPopulation"
= "="
identifier "false"
line_comment "// flag so that on startTurn() we reassign population"
property_declaration
var "var"
variable_declaration
identifier "unitShouldUseSavedPromotion"
= "="
call_expression
identifier "HashMap"
type_arguments
< "<"
type_projection
user_type
identifier "String"
, ","
type_projection
user_type
identifier "Boolean"
> ">"
value_arguments
( "("
) ")"
property_declaration
var "var"
variable_declaration
identifier "unitToPromotions"
= "="
call_expression
identifier "HashMap"
type_arguments
< "<"
type_projection
user_type
identifier "String"
, ","
type_projection
user_type
identifier "UnitPromotions"
> ">"
value_arguments
( "("
) ")"
block_comment "/** Neighboring explored cities, in radius of 12 tiles */"
property_declaration (+105 nodes collapsed)
property_declaration
modifiers
visibility_modifier
private "private"
var "var"
variable_declaration
identifier "cityAIFocus"
: ":"
user_type
identifier "String"
= "="
navigation_expression
navigation_expression
identifier "CityFocus"
. "."
identifier "NoFocus"
. "."
identifier "name"
function_declaration (+38 nodes collapsed)
function_declaration (+22 nodes collapsed)
block_comment "/**\n * Civ object for the original founder of this city\n"...
property_declaration (+93 nodes collapsed)
property_declaration
var "var"
variable_declaration
identifier "avoidGrowth"
: ":"
user_type
identifier "Boolean"
= "="
identifier "false"
property_declaration
modifiers
annotation
@ "@"
user_type
identifier "Transient"
var "var"
variable_declaration
identifier "currentGPPBonus"
: ":"
user_type
identifier "Int"
= "="
number_literal "0"
line_comment "// temporary variable saved for rankSpecialist()"
block_comment "/** The very first found city is the _original_ capital,\n "...
property_declaration
var "var"
variable_declaration
identifier "isOriginalCapital"
= "="
identifier "false"
block_comment "/** For We Love the King Day */"
property_declaration
var "var"
variable_declaration
identifier "demandedResource"
= "="
string_literal
" "\""
" "\""
property_declaration (+23 nodes collapsed)
block_comment "/** Persisted connected-to-capital (by any medium) to allow "...
property_declaration
var "var"
variable_declaration
identifier "connectedToCapitalStatus"
= "="
identifier "false"
function_declaration
modifiers
annotation
@ "@"
user_type
identifier "Readonly"
fun "fun"
identifier "hasDiplomaticMarriage"
function_value_parameters
( "("
) ")"
: ":"
user_type
identifier "Boolean"
function_body
= "="
binary_expression
identifier "foundingCivObject"
== "=="
identifier "null"
line_comment "//region pure functions"
function_declaration (+256 nodes collapsed)
function_declaration (+25 nodes collapsed)
function_declaration
modifiers
annotation
@ "@"
user_type
identifier "Readonly"
fun "fun"
identifier "getCenterTile"
function_value_parameters
( "("
) ")"
: ":"
user_type
identifier "Tile"
function_body
= "="
identifier "centerTile"
function_declaration (+31 nodes collapsed)
function_declaration (+43 nodes collapsed)
function_declaration (+40 nodes collapsed)
function_declaration (+43 nodes collapsed)
function_declaration
modifiers
annotation
@ "@"
user_type
identifier "Readonly"
fun "fun"
identifier "isWorked"
function_value_parameters
( "("
parameter
identifier "tile"
: ":"
user_type
identifier "Tile"
) ")"
function_body
= "="
call_expression
navigation_expression
identifier "workedTiles"
. "."
identifier "contains"
value_arguments
( "("
value_argument
navigation_expression
identifier "tile"
. "."
identifier "position"
) ")"
function_declaration (+35 nodes collapsed)
function_declaration (+24 nodes collapsed)
function_declaration (+27 nodes collapsed)
function_declaration (+32 nodes collapsed)
function_declaration (+32 nodes collapsed)
function_declaration (+32 nodes collapsed)
function_declaration (+24 nodes collapsed)
function_declaration (+72 nodes collapsed)
function_declaration (+21 nodes collapsed)
function_declaration (+55 nodes collapsed)
function_declaration (+31 nodes collapsed)
function_declaration (+28 nodes collapsed)
function_declaration (+23 nodes collapsed)
function_declaration (+23 nodes collapsed)
function_declaration (+71 nodes collapsed)
function_declaration
modifiers
annotation
@ "@"
user_type
identifier "Readonly"
fun "fun"
identifier "getRuleset"
function_value_parameters
( "("
) ")"
function_body
= "="
navigation_expression
navigation_expression
identifier "civ"
. "."
identifier "gameInfo"
. "."
identifier "ruleset"
function_declaration (+42 nodes collapsed)
function_declaration (+32 nodes collapsed)
function_declaration (+21 nodes collapsed)
function_declaration (+21 nodes collapsed)
function_declaration (+27 nodes collapsed)
function_declaration (+53 nodes collapsed)
function_declaration (+24 nodes collapsed)
function_declaration (+28 nodes collapsed)
function_declaration (+65 nodes collapsed)
function_declaration (+74 nodes collapsed)
function_declaration (+115 nodes collapsed)
function_declaration (+82 nodes collapsed)
function_declaration (+68 nodes collapsed)
function_declaration (+38 nodes collapsed)
function_declaration (+40 nodes collapsed)
block_comment "/** Gets max air units that can remain in the city untranspo"...
function_declaration (+89 nodes collapsed)
function_declaration
modifiers
member_modifier
override "override"
fun "fun"
identifier "toString"
function_value_parameters
( "("
) ")"
function_body
= "="
identifier "name"
line_comment "// for debug"
function_declaration (+31 nodes collapsed)
function_declaration (+34 nodes collapsed)
function_declaration (+151 nodes collapsed)
line_comment "//endregion"
line_comment "//region state-changing functions"
function_declaration (+142 nodes collapsed)
function_declaration (+32 nodes collapsed)
function_declaration (+28 nodes collapsed)
function_declaration (+38 nodes collapsed)
line_comment "// Reassign all Specialists and Unlock all tiles"
line_comment "// Mainly for automated cities, Puppets, just captured"
function_declaration (+23 nodes collapsed)
block_comment "/** Apply worked tiles optimization (aka CityFocus) - Expens"...
function_declaration (+93 nodes collapsed)
block_comment "/** Apply worked tiles optimization (aka CityFocus) -\n *"...
function_declaration (+46 nodes collapsed)
function_declaration (+342 nodes collapsed)
function_declaration (+23 nodes collapsed)
block_comment "/** This happens when we either puppet OR annex, basically w"...
function_declaration (+30 nodes collapsed)
block_comment "/* Liberating is returning a city to its founder - makes you"...
function_declaration (+30 nodes collapsed)
function_declaration (+30 nodes collapsed)
function_declaration (+140 nodes collapsed)
function_declaration (+38 nodes collapsed)
function_declaration (+35 nodes collapsed)
function_declaration (+78 nodes collapsed)
function_declaration (+76 nodes collapsed)
block_comment "/** Implements [UniqueParameterType.CityFilter][com.unciv.mo"...
function_declaration (+84 nodes collapsed)
function_declaration (+478 nodes collapsed)
line_comment "// So everywhere in the codebase there were continuous calls"...
line_comment "// `cityConstructions.builtBuildingUniqueMap.getUniques()` o"...
line_comment "// which was fine as long as those were the only uniques tha"...
line_comment "// However, with the introduction of religion, cities might "...
line_comment "// Adding both calls to `builtBuildingsUniqueMap` and `Relig"...
line_comment "// Looking at all the use cases, the following functions wer"...
line_comment "// Sadly, due to the large disparity between use cases, ther"...
line_comment "// Finds matching uniques provided from both local and non-l"...
function_declaration (+150 nodes collapsed)
line_comment "// Uniques special to this city"
function_declaration (+126 nodes collapsed)
line_comment "// Uniques coming from this city, but that should be provide"...
function_declaration (+125 nodes collapsed)
line_comment "//endregion"
} "}"