mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-21 21:30:20 +07:00
Battle simulation will no longer be dislayed for fogged-out tiles with units
This commit is contained in:
@ -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 ""
|
||||
}
|
||||
|
||||
|
@ -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())
|
||||
//
|
||||
// }
|
||||
//}
|
@ -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){
|
||||
|
Reference in New Issue
Block a user