diff --git a/android/build.gradle b/android/build.gradle index 673acf4a89..04ec6c4fc6 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -21,8 +21,8 @@ android { applicationId "com.unciv.app" minSdkVersion 14 targetSdkVersion 29 - versionCode 333 - versionName "3.3.3" + versionCode 334 + versionName "3.3.4" } // Had to add this crap for Travis to build, it wanted to sign the app diff --git a/core/src/com/unciv/logic/GameInfo.kt b/core/src/com/unciv/logic/GameInfo.kt index 7885c48c5c..d4224d9eb0 100644 --- a/core/src/com/unciv/logic/GameInfo.kt +++ b/core/src/com/unciv/logic/GameInfo.kt @@ -63,30 +63,13 @@ class GameInfo { var thisPlayer = previousHumanPlayer // not calling is currentPlayer because that's alreay taken and I can't think of a better name var currentPlayerIndex = civilizations.indexOf(thisPlayer) + fun switchTurn(){ thisPlayer.endTurn() currentPlayerIndex = (currentPlayerIndex+1) % civilizations.size if(currentPlayerIndex==0){ turns++ - if (turns % 10 == 0 && !gameParameters.noBarbarians) { - val encampments = tileMap.values.filter { it.improvement==Constants.barbarianEncampment } - - if(encampments.size < civilizations.filter { it.isMajorCiv() }.size) { - val newEncampmentTile = placeBarbarianEncampment(encampments) - if (newEncampmentTile != null) - placeBarbarianUnit(newEncampmentTile) - } - - val totalBarbariansAllowedOnMap = encampments.size*3 - var extraBarbarians = totalBarbariansAllowedOnMap - getBarbarianCivilization().getCivUnits().size - - for (tile in tileMap.values.filter { it.improvement == Constants.barbarianEncampment }) { - if(extraBarbarians<=0) break - extraBarbarians-- - placeBarbarianUnit(tile) - } - } - + if (turns % 10 == 0 && !gameParameters.noBarbarians) placeBarbarians() } thisPlayer = civilizations[currentPlayerIndex] thisPlayer.startTurn() @@ -95,7 +78,7 @@ class GameInfo { switchTurn() while(thisPlayer.playerType==PlayerType.AI){ - NextTurnAutomation().automateCivMoves(thisPlayer) + if(!thisPlayer.isDefeated()) NextTurnAutomation().automateCivMoves(thisPlayer) switchTurn() } @@ -103,6 +86,10 @@ class GameInfo { currentPlayerCiv = getCivilization(currentPlayer) // Start our turn immediately before the player can made decisions - affects whether our units can commit automated actions and then be attacked immediately etc. + notifyOfCloseEnemyUnits(thisPlayer) + } + + private fun notifyOfCloseEnemyUnits(thisPlayer: CivilizationInfo) { val viewableInvisibleTiles = thisPlayer.viewableInvisibleUnitsTiles.map { it.position } val enemyUnitsCloseToTerritory = thisPlayer.viewableTiles .filter { @@ -113,15 +100,13 @@ class GameInfo { } // enemy units ON our territory - addEnemyUnitNotification( - thisPlayer, - enemyUnitsCloseToTerritory.filter { it.getOwner()==thisPlayer }, + addEnemyUnitNotification(thisPlayer, + enemyUnitsCloseToTerritory.filter { it.getOwner() == thisPlayer }, "in" ) // enemy units NEAR our territory - addEnemyUnitNotification( - thisPlayer, - enemyUnitsCloseToTerritory.filter { it.getOwner()!=thisPlayer }, + addEnemyUnitNotification(thisPlayer, + enemyUnitsCloseToTerritory.filter { it.getOwner() != thisPlayer }, "near" ) } @@ -140,6 +125,26 @@ class GameInfo { } } + + fun placeBarbarians() { + val encampments = tileMap.values.filter { it.improvement == Constants.barbarianEncampment } + + if (encampments.size < civilizations.filter { it.isMajorCiv() }.size) { + val newEncampmentTile = placeBarbarianEncampment(encampments) + if (newEncampmentTile != null) + placeBarbarianUnit(newEncampmentTile) + } + + val totalBarbariansAllowedOnMap = encampments.size * 3 + var extraBarbarians = totalBarbariansAllowedOnMap - getBarbarianCivilization().getCivUnits().size + + for (tile in tileMap.values.filter { it.improvement == Constants.barbarianEncampment }) { + if (extraBarbarians <= 0) break + extraBarbarians-- + placeBarbarianUnit(tile) + } + } + fun placeBarbarianEncampment(existingEncampments: List): TileInfo? { // Barbarians will only spawn in places that no one can see val allViewableTiles = civilizations.filterNot { it.isBarbarian() }