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

@ -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){