Battle simulation will no longer be dislayed for fogged-out tiles with units

This commit is contained in:
Yair Morgenstern
2019-12-07 20:21:44 +02:00
parent 69cdd0c187
commit 440941cdea
3 changed files with 45 additions and 38 deletions

View File

@ -308,7 +308,7 @@ class Building : NamedStats(), IConstruction{
if(!civInfo.gameInfo.gameParameters.victoryTypes.contains(VictoryType.Scientific) if(!civInfo.gameInfo.gameParameters.victoryTypes.contains(VictoryType.Scientific)
&& "Enables construction of Spaceship parts" in uniques) && "Enables construction of Spaceship parts" in uniques)
return "Can't construct spaceship parts if scientific victory is not enabled!" return "Can't construct spaceship parts if scientific victory is not enabled!"
return "" return ""
} }

View File

@ -32,7 +32,7 @@ class NewGameScreenOptionsTable(val newGameParameters: GameParameters, val rules
addNoRuinsCheckbox() addNoRuinsCheckbox()
addIsOnlineMultiplayerCheckbox() addIsOnlineMultiplayerCheckbox()
addModCheckboxes() // addModCheckboxes()
pack() pack()
} }
@ -260,25 +260,19 @@ class NewGameScreenOptionsTable(val newGameParameters: GameParameters, val rules
} }
} }
for (victoryType in VictoryType.values()) {
if (victoryType == VictoryType.Neutral) continue
val victoryCheckbox = CheckBox(victoryType.name.tr(), CameraStageBaseScreen.skin)
victoryCheckbox.name = victoryType.name
victoryCheckbox.isChecked = newGameParameters.victoryTypes.contains(victoryType)
victoryCheckbox.addListener(object : ChangeListener() {
override fun changed(event: ChangeEvent?, actor: Actor?) {
// If the checkbox is checked, adds the victoryTypes else remove it
if (victoryCheckbox.isChecked) {
newGameParameters.victoryTypes.add(victoryType)
} else {
newGameParameters.victoryTypes.remove(victoryType)
}
}
})
modCheckboxTable.add(victoryCheckbox)
if (++i % 2 == 0) modCheckboxTable.row()
}
add(modCheckboxTable).colspan(2).row() add(modCheckboxTable).colspan(2).row()
} }
} }
//
//class Mod(val name:String){
// val ruleSet=Ruleset(false)
//
// fun tryLoadRuleset(){
// val folderPath="mods/$name"
// val jsonsFolderLocation = folderPath+"/jsons"
// if(Gdx.files.local(jsonsFolderLocation).exists())
//
// }
//}

View File

@ -37,38 +37,51 @@ class BattleTable(val worldScreen: WorldScreen): Table() {
fun update() { fun update() {
isVisible = true isVisible = true
val attacker = tryGetAttacker()
if(attacker==null){ hide(); return }
val defender = tryGetDefender()
if(defender==null){ hide(); return }
simulateBattle(attacker, defender)
}
private fun tryGetAttacker(): ICombatant? {
val unitTable = worldScreen.bottomUnitTable val unitTable = worldScreen.bottomUnitTable
val attacker : ICombatant?
if (unitTable.selectedUnit != null if (unitTable.selectedUnit != null
&& !unitTable.selectedUnit!!.type.isCivilian()) { && !unitTable.selectedUnit!!.type.isCivilian()) {
attacker = MapUnitCombatant(unitTable.selectedUnit!!) return MapUnitCombatant(unitTable.selectedUnit!!)
} else if (unitTable.selectedCity != null) { } else if (unitTable.selectedCity != null) {
attacker = CityCombatant(unitTable.selectedCity!!) return CityCombatant(unitTable.selectedCity!!)
} else { } else {
hide() return null // no attacker
return // no attacker
} }
}
if (worldScreen.tileMapHolder.selectedTile == null) return private fun tryGetDefender(): ICombatant? {
val attackerCiv = worldScreen.viewingCiv
if (worldScreen.tileMapHolder.selectedTile == null) return null // no selected tile
val selectedTile = worldScreen.tileMapHolder.selectedTile!! val selectedTile = worldScreen.tileMapHolder.selectedTile!!
val defender: ICombatant? = Battle(worldScreen.gameInfo).getMapCombatantOfTile(selectedTile) val defender: ICombatant? = Battle(worldScreen.gameInfo).getMapCombatantOfTile(selectedTile)
if(defender==null || if(defender==null ||
defender.getCivInfo()==worldScreen.viewingCiv defender.getCivInfo()==attackerCiv)
|| !(UncivGame.Current.viewEntireMapForDebug return null // no enemy combatant in tile
|| attacker.getCivInfo().exploredTiles.contains(selectedTile.position))) {
hide() val canSeeDefender = if(UncivGame.Current.viewEntireMapForDebug) true
return else {
when {
defender.isInvisible() -> attackerCiv.viewableInvisibleUnitsTiles.contains(selectedTile)
defender.getUnitType()==UnitType.City -> attackerCiv.exploredTiles.contains(selectedTile.position)
else -> attackerCiv.viewableTiles.contains(selectedTile)
}
} }
if(defender.isInvisible() if(!canSeeDefender) return null
&& !attacker.getCivInfo().viewableInvisibleUnitsTiles.contains(selectedTile)) {
hide()
return
}
simulateBattle(attacker, defender) return defender
} }
fun simulateBattle(attacker: ICombatant, defender: ICombatant){ fun simulateBattle(attacker: ICombatant, defender: ICombatant){