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)
&& "Enables construction of Spaceship parts" in uniques)
return "Can't construct spaceship parts if scientific victory is not enabled!"
return ""
}

View File

@ -32,7 +32,7 @@ class NewGameScreenOptionsTable(val newGameParameters: GameParameters, val rules
addNoRuinsCheckbox()
addIsOnlineMultiplayerCheckbox()
addModCheckboxes()
// addModCheckboxes()
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()
}
}
}
//
//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() {
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 attacker : ICombatant?
if (unitTable.selectedUnit != null
&& !unitTable.selectedUnit!!.type.isCivilian()) {
attacker = MapUnitCombatant(unitTable.selectedUnit!!)
return MapUnitCombatant(unitTable.selectedUnit!!)
} else if (unitTable.selectedCity != null) {
attacker = CityCombatant(unitTable.selectedCity!!)
return CityCombatant(unitTable.selectedCity!!)
} else {
hide()
return // no attacker
return null // 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 defender: ICombatant? = Battle(worldScreen.gameInfo).getMapCombatantOfTile(selectedTile)
if(defender==null ||
defender.getCivInfo()==worldScreen.viewingCiv
|| !(UncivGame.Current.viewEntireMapForDebug
|| attacker.getCivInfo().exploredTiles.contains(selectedTile.position))) {
hide()
return
defender.getCivInfo()==attackerCiv)
return null // no enemy combatant in tile
val canSeeDefender = if(UncivGame.Current.viewEntireMapForDebug) true
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()
&& !attacker.getCivInfo().viewableInvisibleUnitsTiles.contains(selectedTile)) {
hide()
return
}
if(!canSeeDefender) return null
simulateBattle(attacker, defender)
return defender
}
fun simulateBattle(attacker: ICombatant, defender: ICombatant){