mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-23 11:34:54 -04:00
Get notification when pantheon, religion or religion enhancement is made by other civ (#13613)
* notification for when religion is founded * fix typo with space * notification for pantheon and enhancement * actions and notifications don't reveal info * fix typo with space again * shorten code * an unknown civilization!
This commit is contained in:
parent
fa7d075cde
commit
8138a0b9c5
@ -1799,6 +1799,11 @@ Holy City of: [religionName] =
|
|||||||
Former Holy City of: [religionName] =
|
Former Holy City of: [religionName] =
|
||||||
Followers =
|
Followers =
|
||||||
Pressure =
|
Pressure =
|
||||||
|
[nation] has founded pantheon [belief]! =
|
||||||
|
[nation] has enhanced [religionName]! =
|
||||||
|
[nation] has founded [religionName] in [cityName]! =
|
||||||
|
[nation] has founded [religionName]! =
|
||||||
|
An unknown civilization =
|
||||||
|
|
||||||
# Religion overview screen
|
# Religion overview screen
|
||||||
Religion Name: =
|
Religion Name: =
|
||||||
|
@ -183,12 +183,25 @@ class EspionageAction : NotificationAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Open [url] externally in the browser */
|
||||||
class LinkAction(private val url: String = "") : NotificationAction {
|
class LinkAction(private val url: String = "") : NotificationAction {
|
||||||
override fun execute(worldScreen: WorldScreen) {
|
override fun execute(worldScreen: WorldScreen) {
|
||||||
if (url.isNotEmpty()) Gdx.net.openURI(url)
|
if (url.isNotEmpty()) Gdx.net.openURI(url)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Open [EmpireOverviewScreen] on the [Religion][EmpireOverviewCategories.Religion] tab */
|
||||||
|
class ReligionAction(private val religionName: String? = null) : NotificationAction {
|
||||||
|
override fun execute(worldScreen: WorldScreen) {
|
||||||
|
worldScreen.game.pushScreen(EmpireOverviewScreen(worldScreen.selectedCiv, EmpireOverviewCategories.Religion, religionName.orEmpty()))
|
||||||
|
}
|
||||||
|
companion object {
|
||||||
|
fun withLocation(location: Vector2?, religionName: String?): Sequence<NotificationAction> =
|
||||||
|
LocationAction(location) + ReligionAction(religionName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Suppress("PrivatePropertyName") // These names *must* match their class name, see below
|
@Suppress("PrivatePropertyName") // These names *must* match their class name, see below
|
||||||
internal class NotificationActionsDeserializer {
|
internal class NotificationActionsDeserializer {
|
||||||
/* This exists as trick to leverage readFields for Json deserialization.
|
/* This exists as trick to leverage readFields for Json deserialization.
|
||||||
@ -213,13 +226,14 @@ internal class NotificationActionsDeserializer {
|
|||||||
private val PolicyAction: PolicyAction? = null
|
private val PolicyAction: PolicyAction? = null
|
||||||
private val EspionageAction: EspionageAction? = null
|
private val EspionageAction: EspionageAction? = null
|
||||||
private val LinkAction: LinkAction? = null
|
private val LinkAction: LinkAction? = null
|
||||||
|
private val ReligionAction: ReligionAction? = null
|
||||||
|
|
||||||
fun read(json: Json, jsonData: JsonValue): List<NotificationAction> {
|
fun read(json: Json, jsonData: JsonValue): List<NotificationAction> {
|
||||||
json.readFields(this, jsonData)
|
json.readFields(this, jsonData)
|
||||||
return listOfNotNull(
|
return listOfNotNull(
|
||||||
LocationAction, TechAction, CityAction, DiplomacyAction, MayaLongCountAction,
|
LocationAction, TechAction, CityAction, DiplomacyAction, MayaLongCountAction,
|
||||||
MapUnitAction, CivilopediaAction, PromoteUnitAction, OverviewAction, PolicyAction,
|
MapUnitAction, CivilopediaAction, PromoteUnitAction, OverviewAction, PolicyAction,
|
||||||
EspionageAction, LinkAction
|
EspionageAction, LinkAction, ReligionAction
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,9 @@ package com.unciv.logic.civilization.managers
|
|||||||
import com.unciv.logic.IsPartOfGameInfoSerialization
|
import com.unciv.logic.IsPartOfGameInfoSerialization
|
||||||
import com.unciv.logic.city.City
|
import com.unciv.logic.city.City
|
||||||
import com.unciv.logic.civilization.Civilization
|
import com.unciv.logic.civilization.Civilization
|
||||||
|
import com.unciv.logic.civilization.Notification
|
||||||
|
import com.unciv.logic.civilization.NotificationIcon
|
||||||
|
import com.unciv.logic.civilization.ReligionAction
|
||||||
import com.unciv.logic.map.mapunit.MapUnit
|
import com.unciv.logic.map.mapunit.MapUnit
|
||||||
import com.unciv.logic.map.tile.Tile
|
import com.unciv.logic.map.tile.Tile
|
||||||
import com.unciv.models.Counter
|
import com.unciv.models.Counter
|
||||||
@ -140,6 +143,15 @@ class ReligionManager : IsPartOfGameInfoSerialization {
|
|||||||
civInfo.gameInfo.religions[beliefName] = religion!!
|
civInfo.gameInfo.religions[beliefName] = religion!!
|
||||||
for (city in civInfo.cities)
|
for (city in civInfo.cities)
|
||||||
city.religion.addPressure(beliefName, 200 * city.population.population)
|
city.religion.addPressure(beliefName, 200 * city.population.population)
|
||||||
|
|
||||||
|
val humanPlayers = civInfo.gameInfo.civilizations.filter { it.isHuman() && it != civInfo }
|
||||||
|
for (civ in humanPlayers) {
|
||||||
|
val text = if (civInfo in civ.getKnownCivs()) "[${civInfo.civName}]"
|
||||||
|
else "[An unknown civilization]"
|
||||||
|
|
||||||
|
civ.addNotification(text + " has founded pantheon [${beliefName}]!",
|
||||||
|
ReligionAction(beliefName), Notification.NotificationCategory.Religion, NotificationIcon.Faith)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun greatProphetsEarned(): Int = civInfo.civConstructions.boughtItemsWithIncreasingPrice[getGreatProphetEquivalent()?.name ?: ""]
|
fun greatProphetsEarned(): Int = civInfo.civConstructions.boughtItemsWithIncreasingPrice[getGreatProphetEquivalent()?.name ?: ""]
|
||||||
@ -313,8 +325,20 @@ class ReligionManager : IsPartOfGameInfoSerialization {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun useProphetForEnhancingReligion(prophet: MapUnit) {
|
fun useProphetForEnhancingReligion(prophet: MapUnit) {
|
||||||
if (!mayEnhanceReligionHere(prophet.getTile())) return // How did you do this?
|
val currentTile = prophet.getTile()
|
||||||
|
if (!mayEnhanceReligionHere(currentTile)) return // How did you do this?
|
||||||
religionState = ReligionState.EnhancingReligion
|
religionState = ReligionState.EnhancingReligion
|
||||||
|
|
||||||
|
val humanPlayers = civInfo.gameInfo.civilizations.filter { it.isHuman() && it != civInfo }
|
||||||
|
val religion = civInfo.religionManager.religion!!
|
||||||
|
|
||||||
|
for (civ in humanPlayers) {
|
||||||
|
val text = if (civInfo in civ.getKnownCivs()) "[${civInfo.civName}]"
|
||||||
|
else "[An unknown civilization]"
|
||||||
|
|
||||||
|
civ.addNotification(text + " has enhanced [${religion.name}]!",
|
||||||
|
ReligionAction(religion.name), Notification.NotificationCategory.Religion, NotificationIcon.Faith)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -438,6 +462,20 @@ class ReligionManager : IsPartOfGameInfoSerialization {
|
|||||||
for (unit in civInfo.units.getCivUnits())
|
for (unit in civInfo.units.getCivUnits())
|
||||||
if (unit.hasUnique(UniqueType.ReligiousUnit) && unit.hasUnique(UniqueType.TakeReligionOverBirthCity))
|
if (unit.hasUnique(UniqueType.ReligiousUnit) && unit.hasUnique(UniqueType.TakeReligionOverBirthCity))
|
||||||
unit.religion = newReligion.name
|
unit.religion = newReligion.name
|
||||||
|
|
||||||
|
val humanPlayers = civInfo.gameInfo.civilizations.filter { it.isHuman() && it != civInfo }
|
||||||
|
for (civ in humanPlayers) {
|
||||||
|
if (civInfo in civ.getKnownCivs()) {
|
||||||
|
if (civ.hasExplored(holyCity.getCenterTile()))
|
||||||
|
civ.addNotification("[${civInfo.civName}] has founded [$displayName] in [${holyCity.name}]!",
|
||||||
|
ReligionAction.withLocation(holyCity.location, name),
|
||||||
|
Notification.NotificationCategory.Religion, NotificationIcon.Faith)
|
||||||
|
else civ.addNotification("[${civInfo.civName}] has founded [$displayName]!",
|
||||||
|
ReligionAction(name), Notification.NotificationCategory.Religion, NotificationIcon.Faith)
|
||||||
|
}
|
||||||
|
else civ.addNotification("[An unknown civilization] has founded [$displayName]!",
|
||||||
|
ReligionAction(name), Notification.NotificationCategory.Religion, NotificationIcon.Faith)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun maySpreadReligionAtAll(missionary: MapUnit): Boolean {
|
fun maySpreadReligionAtAll(missionary: MapUnit): Boolean {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user