mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-22 10:54:19 -04:00
Added Demand enum, with initial use for deduplicating code
This commit is contained in:
parent
5754c6c9d5
commit
daceb87f7f
@ -11,10 +11,7 @@ import com.unciv.logic.civilization.Civilization
|
|||||||
import com.unciv.logic.civilization.NotificationCategory
|
import com.unciv.logic.civilization.NotificationCategory
|
||||||
import com.unciv.logic.civilization.NotificationIcon
|
import com.unciv.logic.civilization.NotificationIcon
|
||||||
import com.unciv.logic.civilization.PopupAlert
|
import com.unciv.logic.civilization.PopupAlert
|
||||||
import com.unciv.logic.civilization.diplomacy.DiplomacyFlags
|
import com.unciv.logic.civilization.diplomacy.*
|
||||||
import com.unciv.logic.civilization.diplomacy.DiplomaticModifiers
|
|
||||||
import com.unciv.logic.civilization.diplomacy.DiplomaticStatus
|
|
||||||
import com.unciv.logic.civilization.diplomacy.RelationshipLevel
|
|
||||||
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.ruleset.MilestoneType
|
import com.unciv.models.ruleset.MilestoneType
|
||||||
@ -600,71 +597,31 @@ object NextTurnAutomation {
|
|||||||
private fun issueRequests(civInfo: Civilization) {
|
private fun issueRequests(civInfo: Civilization) {
|
||||||
for (otherCiv in civInfo.getKnownCivs().filter { it.isMajorCiv() && !civInfo.isAtWarWith(it) }) {
|
for (otherCiv in civInfo.getKnownCivs().filter { it.isMajorCiv() && !civInfo.isAtWarWith(it) }) {
|
||||||
val diploManager = civInfo.getDiplomacyManager(otherCiv)!!
|
val diploManager = civInfo.getDiplomacyManager(otherCiv)!!
|
||||||
if (diploManager.hasFlag(DiplomacyFlags.SettledCitiesNearUs))
|
for (demand in Demand.entries){
|
||||||
onCitySettledNearBorders(civInfo, otherCiv)
|
if (diploManager.hasFlag(demand.violationOccurred))
|
||||||
if (diploManager.hasFlag(DiplomacyFlags.SpreadReligionInOurCities))
|
onDemandViolation(demand, civInfo, otherCiv)
|
||||||
onReligionSpreadInOurCity(civInfo, otherCiv)
|
}
|
||||||
if (diploManager.hasFlag(DiplomacyFlags.DiscoveredSpiesInOurCities))
|
|
||||||
onSpyDiscoveredInOurCity(civInfo, otherCiv)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onCitySettledNearBorders(civInfo: Civilization, otherCiv: Civilization) {
|
|
||||||
val diplomacyManager = civInfo.getDiplomacyManager(otherCiv)!!
|
|
||||||
when {
|
|
||||||
diplomacyManager.hasFlag(DiplomacyFlags.IgnoreThemSettlingNearUs) -> {
|
|
||||||
}
|
|
||||||
diplomacyManager.hasFlag(DiplomacyFlags.AgreedToNotSettleNearUs) -> {
|
|
||||||
otherCiv.popupAlerts.add(PopupAlert(AlertType.CitySettledNearOtherCivDespiteOurPromise, civInfo.civName))
|
|
||||||
diplomacyManager.setFlag(DiplomacyFlags.IgnoreThemSettlingNearUs, 100)
|
|
||||||
diplomacyManager.setModifier(DiplomaticModifiers.BetrayedPromiseToNotSettleCitiesNearUs, -20f)
|
|
||||||
diplomacyManager.removeFlag(DiplomacyFlags.AgreedToNotSettleNearUs)
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
val threatLevel = Automation.threatAssessment(civInfo, otherCiv)
|
|
||||||
if (threatLevel < ThreatLevel.High) // don't piss them off for no reason please.
|
|
||||||
otherCiv.popupAlerts.add(PopupAlert(AlertType.DemandToStopSettlingCitiesNear, civInfo.civName))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diplomacyManager.removeFlag(DiplomacyFlags.SettledCitiesNearUs)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun onReligionSpreadInOurCity(civInfo: Civilization, otherCiv: Civilization){
|
|
||||||
val diplomacyManager = civInfo.getDiplomacyManager(otherCiv)!!
|
|
||||||
when {
|
|
||||||
diplomacyManager.hasFlag(DiplomacyFlags.IgnoreThemSpreadingReligion) -> {}
|
|
||||||
diplomacyManager.hasFlag(DiplomacyFlags.AgreedToNotSpreadReligion) -> {
|
|
||||||
otherCiv.popupAlerts.add(PopupAlert(AlertType.ReligionSpreadDespiteOurPromise, civInfo.civName))
|
|
||||||
diplomacyManager.setFlag(DiplomacyFlags.IgnoreThemSpreadingReligion, 100)
|
|
||||||
diplomacyManager.setModifier(DiplomaticModifiers.BetrayedPromiseToNotSpreadReligionToUs, -20f)
|
|
||||||
diplomacyManager.removeFlag(DiplomacyFlags.AgreedToNotSpreadReligion)
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
val threatLevel = Automation.threatAssessment(civInfo, otherCiv)
|
|
||||||
if (threatLevel < ThreatLevel.High) // don't piss them off for no reason please.
|
|
||||||
otherCiv.popupAlerts.add(PopupAlert(AlertType.DemandToStopSpreadingReligion, civInfo.civName))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diplomacyManager.removeFlag(DiplomacyFlags.SpreadReligionInOurCities)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun onSpyDiscoveredInOurCity(civInfo: Civilization, otherCiv: Civilization) {
|
private fun onDemandViolation(demand: Demand, civInfo: Civilization, otherCiv: Civilization) {
|
||||||
val diplomacyManager = civInfo.getDiplomacyManager(otherCiv)!!
|
val diplomacyManager = civInfo.getDiplomacyManager(otherCiv)!!
|
||||||
when {
|
when {
|
||||||
diplomacyManager.hasFlag(DiplomacyFlags.IgnoreThemSendingSpies) -> {}
|
diplomacyManager.hasFlag(demand.willIgnoreViolation) -> {}
|
||||||
diplomacyManager.hasFlag(DiplomacyFlags.AgreedToNotSendSpies) -> {
|
diplomacyManager.hasFlag(demand.agreedToDemand) -> {
|
||||||
otherCiv.popupAlerts.add(PopupAlert(AlertType.SpyingOnUsDespiteOurPromise, civInfo.civName))
|
otherCiv.popupAlerts.add(PopupAlert(demand.violationDiscoveredAlert, civInfo.civName))
|
||||||
diplomacyManager.setFlag(DiplomacyFlags.IgnoreThemSendingSpies, 100)
|
diplomacyManager.setFlag(demand.willIgnoreViolation, 100)
|
||||||
diplomacyManager.setModifier(DiplomaticModifiers.BetrayedPromiseToNotSendingSpiesToUs, -20f)
|
diplomacyManager.setModifier(demand.betrayedPromiseDiplomacyMpodifier, -20f)
|
||||||
diplomacyManager.removeFlag(DiplomacyFlags.AgreedToNotSendSpies)
|
diplomacyManager.removeFlag(demand.agreedToDemand)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
val threatLevel = Automation.threatAssessment(civInfo, otherCiv)
|
val threatLevel = Automation.threatAssessment(civInfo, otherCiv)
|
||||||
if (threatLevel < ThreatLevel.High) // don't piss them off for no reason please.
|
if (threatLevel < ThreatLevel.High) // don't piss them off for no reason please.
|
||||||
otherCiv.popupAlerts.add(PopupAlert(AlertType.DemandToStopSpyingOnUs, civInfo.civName))
|
otherCiv.popupAlerts.add(PopupAlert(demand.demandAlert, civInfo.civName))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
diplomacyManager.removeFlag(DiplomacyFlags.DiscoveredSpiesInOurCities)
|
diplomacyManager.removeFlag(demand.violationOccurred)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
41
core/src/com/unciv/logic/civilization/diplomacy/Demand.kt
Normal file
41
core/src/com/unciv/logic/civilization/diplomacy/Demand.kt
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
package com.unciv.logic.civilization.diplomacy
|
||||||
|
|
||||||
|
import com.unciv.logic.civilization.AlertType
|
||||||
|
|
||||||
|
enum class Demand(
|
||||||
|
val agreedToDemand: DiplomacyFlags,
|
||||||
|
val violationOccurred: DiplomacyFlags,
|
||||||
|
val willIgnoreViolation:DiplomacyFlags,
|
||||||
|
val refusedDiplomaticModifier: DiplomaticModifiers,
|
||||||
|
val betrayedPromiseDiplomacyMpodifier: DiplomaticModifiers,
|
||||||
|
val demandAlert: AlertType,
|
||||||
|
val violationDiscoveredAlert: AlertType) {
|
||||||
|
DontSpyOnUs(
|
||||||
|
agreedToDemand = DiplomacyFlags.AgreedToNotSendSpies,
|
||||||
|
violationOccurred = DiplomacyFlags.DiscoveredSpiesInOurCities,
|
||||||
|
willIgnoreViolation = DiplomacyFlags.IgnoreThemSendingSpies,
|
||||||
|
refusedDiplomaticModifier = DiplomaticModifiers.RefusedToNotSendingSpiesToUs,
|
||||||
|
betrayedPromiseDiplomacyMpodifier = DiplomaticModifiers.BetrayedPromiseToNotSendingSpiesToUs,
|
||||||
|
demandAlert = AlertType.DemandToStopSpyingOnUs,
|
||||||
|
violationDiscoveredAlert = AlertType.SpyingOnUsDespiteOurPromise
|
||||||
|
),
|
||||||
|
DoNotSpreadReligion(
|
||||||
|
agreedToDemand = DiplomacyFlags.AgreedToNotSpreadReligion,
|
||||||
|
violationOccurred = DiplomacyFlags.SpreadReligionInOurCities,
|
||||||
|
willIgnoreViolation = DiplomacyFlags.IgnoreThemSpreadingReligion,
|
||||||
|
refusedDiplomaticModifier = DiplomaticModifiers.RefusedToNotSpreadReligionToUs,
|
||||||
|
betrayedPromiseDiplomacyMpodifier = DiplomaticModifiers.BetrayedPromiseToNotSpreadReligionToUs,
|
||||||
|
demandAlert = AlertType.DemandToStopSpreadingReligion,
|
||||||
|
violationDiscoveredAlert = AlertType.ReligionSpreadDespiteOurPromise
|
||||||
|
),
|
||||||
|
DoNotSettleNearUs(
|
||||||
|
agreedToDemand = DiplomacyFlags.AgreedToNotSettleNearUs,
|
||||||
|
violationOccurred = DiplomacyFlags.SettledCitiesNearUs,
|
||||||
|
willIgnoreViolation = DiplomacyFlags.IgnoreThemSettlingNearUs,
|
||||||
|
refusedDiplomaticModifier = DiplomaticModifiers.RefusedToNotSettleCitiesNearUs,
|
||||||
|
betrayedPromiseDiplomacyMpodifier = DiplomaticModifiers.BetrayedPromiseToNotSettleCitiesNearUs,
|
||||||
|
demandAlert = AlertType.DemandToStopSettlingCitiesNear,
|
||||||
|
violationDiscoveredAlert = AlertType.CitySettledNearOtherCivDespiteOurPromise
|
||||||
|
)
|
||||||
|
;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user