mirror of
https://github.com/yairm210/Unciv.git
synced 2025-01-20 09:17:47 +07:00
Added notifications for enemies in or near our borders
ALL enemies now marked with a red circle to make them more visible
This commit is contained in:
parent
e0cfbea5a2
commit
f593d1eab6
@ -1,5 +1,6 @@
|
|||||||
package com.unciv.logic
|
package com.unciv.logic
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.Color
|
||||||
import com.unciv.logic.automation.Automation
|
import com.unciv.logic.automation.Automation
|
||||||
import com.unciv.logic.city.CityInfo
|
import com.unciv.logic.city.CityInfo
|
||||||
import com.unciv.logic.civilization.CivilizationInfo
|
import com.unciv.logic.civilization.CivilizationInfo
|
||||||
@ -23,6 +24,7 @@ class GameInfo {
|
|||||||
|
|
||||||
fun nextTurn() {
|
fun nextTurn() {
|
||||||
notifications.clear()
|
notifications.clear()
|
||||||
|
val player = getPlayerCivilization()
|
||||||
|
|
||||||
for (civInfo in civilizations){
|
for (civInfo in civilizations){
|
||||||
if(civInfo.tech.techsToResearch.isEmpty()){ // should belong in automation? yes/no?
|
if(civInfo.tech.techsToResearch.isEmpty()){ // should belong in automation? yes/no?
|
||||||
@ -36,7 +38,7 @@ class GameInfo {
|
|||||||
// We need to update the stats after ALL the cities are done updating because
|
// We need to update the stats after ALL the cities are done updating because
|
||||||
// maybe one of them has a wonder that affects the stats of all the rest of the cities
|
// maybe one of them has a wonder that affects the stats of all the rest of the cities
|
||||||
|
|
||||||
for (civInfo in civilizations.filterNot { it.isPlayerCivilization() }){
|
for (civInfo in civilizations.filterNot { it==player }){
|
||||||
civInfo.startTurn()
|
civInfo.startTurn()
|
||||||
Automation().automateCivMoves(civInfo)
|
Automation().automateCivMoves(civInfo)
|
||||||
}
|
}
|
||||||
@ -47,7 +49,14 @@ class GameInfo {
|
|||||||
|
|
||||||
// Start our turn immediately before the player can made decisions - affects whether our units can commit automated actions and then be attacked immediately etc.
|
// Start our turn immediately before the player can made decisions - affects whether our units can commit automated actions and then be attacked immediately etc.
|
||||||
|
|
||||||
getPlayerCivilization().startTurn()
|
player.startTurn()
|
||||||
|
|
||||||
|
val enemyUnitsCloseToTerritory = player.getViewableTiles().filter { it.militaryUnit!=null && it.militaryUnit!!.civInfo!=player
|
||||||
|
&& (it.getOwner()==player || it.neighbors.any { neighbor -> neighbor.getOwner()==player }) }
|
||||||
|
for(enemyUnitTile in enemyUnitsCloseToTerritory) {
|
||||||
|
val inOrNear = if(enemyUnitTile.getOwner()==player) "in" else "near"
|
||||||
|
player.addNotification("Enemy spotted $inOrNear our territory!", enemyUnitTile.position, Color.RED)
|
||||||
|
}
|
||||||
|
|
||||||
turns++
|
turns++
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@ class CivilizationInfo {
|
|||||||
viewablePositions += getCivUnits()
|
viewablePositions += getCivUnits()
|
||||||
.flatMap { it.getViewableTiles()} // Tiles within 2 tiles of units
|
.flatMap { it.getViewableTiles()} // Tiles within 2 tiles of units
|
||||||
viewablePositions.map { it.position }.filterNot { exploredTiles.contains(it) }.toCollection(exploredTiles)
|
viewablePositions.map { it.position }.filterNot { exploredTiles.contains(it) }.toCollection(exploredTiles)
|
||||||
return viewablePositions
|
return viewablePositions.distinct()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addNotification(text: String, location: Vector2?,color: Color) {
|
fun addNotification(text: String, location: Vector2?,color: Color) {
|
||||||
|
@ -87,11 +87,15 @@ class TileMapHolder(internal val worldScreen: WorldScreen, internal val tileMap:
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun updateTiles() {
|
internal fun updateTiles() {
|
||||||
val civViewableTiles = civInfo.getViewableTiles().toHashSet()
|
val playerViewableTiles = civInfo.getViewableTiles().toHashSet()
|
||||||
|
|
||||||
for (WG in tileGroups.values){
|
for (WG in tileGroups.values){
|
||||||
WG.update(civViewableTiles.contains(WG.tileInfo))
|
WG.update(playerViewableTiles.contains(WG.tileInfo))
|
||||||
}
|
val unitsInTile = WG.tileInfo.getUnits()
|
||||||
|
if(playerViewableTiles.contains(WG.tileInfo)
|
||||||
|
&& unitsInTile.isNotEmpty() && unitsInTile.first().civInfo!=civInfo)
|
||||||
|
WG.showCircle(Color.RED)
|
||||||
|
} // Display ALL viewable enemies ewith a red circle so that users don't need to go "hunting" for enemy units
|
||||||
|
|
||||||
if(worldScreen.bottomBar.unitTable.selectedUnit!=null){
|
if(worldScreen.bottomBar.unitTable.selectedUnit!=null){
|
||||||
val unit = worldScreen.bottomBar.unitTable.selectedUnit!!
|
val unit = worldScreen.bottomBar.unitTable.selectedUnit!!
|
||||||
@ -112,7 +116,7 @@ class TileMapHolder(internal val worldScreen: WorldScreen, internal val tileMap:
|
|||||||
for (tile in attackableTiles.filter {
|
for (tile in attackableTiles.filter {
|
||||||
it.getUnits().isNotEmpty()
|
it.getUnits().isNotEmpty()
|
||||||
&& it.getUnits().first().owner != unit.owner
|
&& it.getUnits().first().owner != unit.owner
|
||||||
&& civViewableTiles.contains(it)}) {
|
&& playerViewableTiles.contains(it)}) {
|
||||||
if(unit.getBaseUnit().unitType== UnitType.Civilian) tileGroups[tile]!!.hideCircle()
|
if(unit.getBaseUnit().unitType== UnitType.Civilian) tileGroups[tile]!!.hideCircle()
|
||||||
else tileGroups[tile]!!.showCircle(colorFromRGB(237, 41, 57))
|
else tileGroups[tile]!!.showCircle(colorFromRGB(237, 41, 57))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user