mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-15 02:09:21 +07:00
Can now disable diplomatic relationship changes in a mod
This commit is contained in:
@ -11,6 +11,8 @@ import com.unciv.logic.civilization.diplomacy.RelationshipLevel
|
|||||||
import com.unciv.logic.map.BFS
|
import com.unciv.logic.map.BFS
|
||||||
import com.unciv.logic.map.MapUnit
|
import com.unciv.logic.map.MapUnit
|
||||||
import com.unciv.logic.trade.*
|
import com.unciv.logic.trade.*
|
||||||
|
import com.unciv.models.ruleset.ModOptions
|
||||||
|
import com.unciv.models.ruleset.ModOptionsConstants
|
||||||
import com.unciv.models.ruleset.VictoryType
|
import com.unciv.models.ruleset.VictoryType
|
||||||
import com.unciv.models.ruleset.tech.Technology
|
import com.unciv.models.ruleset.tech.Technology
|
||||||
import com.unciv.models.translations.tr
|
import com.unciv.models.translations.tr
|
||||||
@ -26,9 +28,11 @@ object NextTurnAutomation{
|
|||||||
respondToTradeRequests(civInfo)
|
respondToTradeRequests(civInfo)
|
||||||
|
|
||||||
if(civInfo.isMajorCiv()) {
|
if(civInfo.isMajorCiv()) {
|
||||||
declareWar(civInfo)
|
if(!civInfo.gameInfo.ruleSet.modOptions.uniques.contains(ModOptionsConstants.diplomaticRelationshipsCannotChange)) {
|
||||||
|
declareWar(civInfo)
|
||||||
// offerDeclarationOfFriendship(civInfo)
|
// offerDeclarationOfFriendship(civInfo)
|
||||||
offerPeaceTreaty(civInfo)
|
offerPeaceTreaty(civInfo)
|
||||||
|
}
|
||||||
offerResearchAgreement(civInfo)
|
offerResearchAgreement(civInfo)
|
||||||
exchangeLuxuries(civInfo)
|
exchangeLuxuries(civInfo)
|
||||||
issueRequests(civInfo)
|
issueRequests(civInfo)
|
||||||
|
@ -4,6 +4,7 @@ import com.unciv.Constants
|
|||||||
import com.unciv.logic.civilization.CivilizationInfo
|
import com.unciv.logic.civilization.CivilizationInfo
|
||||||
import com.unciv.logic.civilization.diplomacy.DiplomacyFlags
|
import com.unciv.logic.civilization.diplomacy.DiplomacyFlags
|
||||||
import com.unciv.logic.civilization.diplomacy.DiplomaticStatus
|
import com.unciv.logic.civilization.diplomacy.DiplomaticStatus
|
||||||
|
import com.unciv.models.ruleset.ModOptionsConstants
|
||||||
import com.unciv.models.ruleset.tile.ResourceType
|
import com.unciv.models.ruleset.tile.ResourceType
|
||||||
import com.unciv.models.translations.tr
|
import com.unciv.models.translations.tr
|
||||||
|
|
||||||
@ -52,7 +53,8 @@ class TradeLogic(val ourCivilization:CivilizationInfo, val otherCivilization: Ci
|
|||||||
offers.add(TradeOffer(thirdCiv.civName, TradeType.Introduction))
|
offers.add(TradeOffer(thirdCiv.civName, TradeType.Introduction))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!civInfo.isCityState() && !otherCivilization.isCityState()) {
|
if (!civInfo.isCityState() && !otherCivilization.isCityState()
|
||||||
|
&& !civInfo.gameInfo.ruleSet.modOptions.uniques.contains(ModOptionsConstants.diplomaticRelationshipsCannotChange)) {
|
||||||
val civsWeBothKnow = otherCivsWeKnow
|
val civsWeBothKnow = otherCivsWeKnow
|
||||||
.filter { otherCivilization.diplomacy.containsKey(it.civName) }
|
.filter { otherCivilization.diplomacy.containsKey(it.civName) }
|
||||||
val civsWeArentAtWarWith = civsWeBothKnow
|
val civsWeArentAtWarWith = civsWeBothKnow
|
||||||
|
@ -19,11 +19,16 @@ import com.unciv.models.ruleset.unit.Promotion
|
|||||||
import com.unciv.models.stats.INamed
|
import com.unciv.models.stats.INamed
|
||||||
import kotlin.collections.set
|
import kotlin.collections.set
|
||||||
|
|
||||||
|
object ModOptionsConstants {
|
||||||
|
const val diplomaticRelationshipsCannotChange = "Diplomatic relationships cannot change"
|
||||||
|
}
|
||||||
|
|
||||||
class ModOptions {
|
class ModOptions {
|
||||||
var isBaseRuleset = false
|
var isBaseRuleset = false
|
||||||
var techsToRemove = HashSet<String>()
|
var techsToRemove = HashSet<String>()
|
||||||
var buildingsToRemove = HashSet<String>()
|
var buildingsToRemove = HashSet<String>()
|
||||||
var unitsToRemove = HashSet<String>()
|
var unitsToRemove = HashSet<String>()
|
||||||
|
var uniques = HashSet<String>()
|
||||||
}
|
}
|
||||||
|
|
||||||
class Ruleset {
|
class Ruleset {
|
||||||
|
@ -17,6 +17,7 @@ import com.unciv.logic.civilization.diplomacy.RelationshipLevel
|
|||||||
import com.unciv.logic.trade.TradeLogic
|
import com.unciv.logic.trade.TradeLogic
|
||||||
import com.unciv.logic.trade.TradeOffer
|
import com.unciv.logic.trade.TradeOffer
|
||||||
import com.unciv.logic.trade.TradeType
|
import com.unciv.logic.trade.TradeType
|
||||||
|
import com.unciv.models.ruleset.ModOptionsConstants
|
||||||
import com.unciv.models.translations.tr
|
import com.unciv.models.translations.tr
|
||||||
import com.unciv.ui.utils.*
|
import com.unciv.ui.utils.*
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
@ -146,26 +147,28 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() {
|
|||||||
|
|
||||||
val diplomacyManager = viewingCiv.getDiplomacyManager(otherCiv)
|
val diplomacyManager = viewingCiv.getDiplomacyManager(otherCiv)
|
||||||
|
|
||||||
if (viewingCiv.isAtWarWith(otherCiv)) {
|
if(!viewingCiv.gameInfo.ruleSet.modOptions.uniques.contains(ModOptionsConstants.diplomaticRelationshipsCannotChange)) {
|
||||||
val peaceButton = "Negotiate Peace".toTextButton()
|
if (viewingCiv.isAtWarWith(otherCiv)) {
|
||||||
peaceButton.onClick {
|
val peaceButton = "Negotiate Peace".toTextButton()
|
||||||
YesNoPopup("Peace with [${otherCiv.civName}]?".tr(), {
|
peaceButton.onClick {
|
||||||
val tradeLogic = TradeLogic(viewingCiv, otherCiv)
|
YesNoPopup("Peace with [${otherCiv.civName}]?".tr(), {
|
||||||
tradeLogic.currentTrade.ourOffers.add(TradeOffer(Constants.peaceTreaty, TradeType.Treaty))
|
val tradeLogic = TradeLogic(viewingCiv, otherCiv)
|
||||||
tradeLogic.currentTrade.theirOffers.add(TradeOffer(Constants.peaceTreaty, TradeType.Treaty))
|
tradeLogic.currentTrade.ourOffers.add(TradeOffer(Constants.peaceTreaty, TradeType.Treaty))
|
||||||
tradeLogic.acceptTrade()
|
tradeLogic.currentTrade.theirOffers.add(TradeOffer(Constants.peaceTreaty, TradeType.Treaty))
|
||||||
updateLeftSideTable()
|
tradeLogic.acceptTrade()
|
||||||
updateRightSide(otherCiv)
|
updateLeftSideTable()
|
||||||
}, this).open()
|
updateRightSide(otherCiv)
|
||||||
|
}, this).open()
|
||||||
|
}
|
||||||
|
diplomacyTable.add(peaceButton).row()
|
||||||
|
val cityStatesAlly = otherCiv.getAllyCiv()
|
||||||
|
val atWarWithItsAlly = viewingCiv.getKnownCivs().any { it.civName == cityStatesAlly && it.isAtWarWith(viewingCiv) }
|
||||||
|
if (isNotPlayersTurn() || atWarWithItsAlly) peaceButton.disable()
|
||||||
|
} else {
|
||||||
|
val declareWarButton = getDeclareWarButton(diplomacyManager, otherCiv)
|
||||||
|
if (isNotPlayersTurn()) declareWarButton.disable()
|
||||||
|
diplomacyTable.add(declareWarButton).row()
|
||||||
}
|
}
|
||||||
diplomacyTable.add(peaceButton).row()
|
|
||||||
val cityStatesAlly = otherCiv.getAllyCiv()
|
|
||||||
val atWarWithItsAlly = viewingCiv.getKnownCivs().any { it.civName == cityStatesAlly && it.isAtWarWith(viewingCiv) }
|
|
||||||
if (isNotPlayersTurn() || atWarWithItsAlly) peaceButton.disable()
|
|
||||||
} else {
|
|
||||||
val declareWarButton = getDeclareWarButton(diplomacyManager, otherCiv)
|
|
||||||
if (isNotPlayersTurn()) declareWarButton.disable()
|
|
||||||
diplomacyTable.add(declareWarButton).row()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return diplomacyTable
|
return diplomacyTable
|
||||||
@ -184,6 +187,8 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() {
|
|||||||
diplomacyTable.add(otherCiv.nation.neutralHello.toLabel()).row()
|
diplomacyTable.add(otherCiv.nation.neutralHello.toLabel()).row()
|
||||||
diplomacyTable.addSeparator()
|
diplomacyTable.addSeparator()
|
||||||
|
|
||||||
|
val diplomaticRelationshipsCanChange = !viewingCiv.gameInfo.ruleSet.modOptions.uniques.contains(ModOptionsConstants.diplomaticRelationshipsCannotChange)
|
||||||
|
|
||||||
if (!viewingCiv.isAtWarWith(otherCiv)) {
|
if (!viewingCiv.isAtWarWith(otherCiv)) {
|
||||||
val tradeButton = "Trade".toTextButton()
|
val tradeButton = "Trade".toTextButton()
|
||||||
tradeButton.onClick {
|
tradeButton.onClick {
|
||||||
@ -195,7 +200,7 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() {
|
|||||||
}
|
}
|
||||||
diplomacyTable.add(tradeButton).row()
|
diplomacyTable.add(tradeButton).row()
|
||||||
if (isNotPlayersTurn()) tradeButton.disable()
|
if (isNotPlayersTurn()) tradeButton.disable()
|
||||||
} else {
|
} else if(diplomaticRelationshipsCanChange) {
|
||||||
val negotiatePeaceButton = "Negotiate Peace".toTextButton()
|
val negotiatePeaceButton = "Negotiate Peace".toTextButton()
|
||||||
negotiatePeaceButton.onClick {
|
negotiatePeaceButton.onClick {
|
||||||
val tradeTable = setTrade(otherCiv)
|
val tradeTable = setTrade(otherCiv)
|
||||||
@ -213,7 +218,7 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() {
|
|||||||
val diplomacyManager = viewingCiv.getDiplomacyManager(otherCiv)
|
val diplomacyManager = viewingCiv.getDiplomacyManager(otherCiv)
|
||||||
|
|
||||||
if (!viewingCiv.isAtWarWith(otherCiv)) {
|
if (!viewingCiv.isAtWarWith(otherCiv)) {
|
||||||
if(!diplomacyManager.hasFlag(DiplomacyFlags.DeclarationOfFriendship)) {
|
if (!diplomacyManager.hasFlag(DiplomacyFlags.DeclarationOfFriendship)) {
|
||||||
val declareFriendshipButton = "Offer Declaration of Friendship ([30] turns)".toTextButton()
|
val declareFriendshipButton = "Offer Declaration of Friendship ([30] turns)".toTextButton()
|
||||||
declareFriendshipButton.onClick {
|
declareFriendshipButton.onClick {
|
||||||
otherCiv.popupAlerts.add(PopupAlert(AlertType.DeclarationOfFriendship, viewingCiv.civName))
|
otherCiv.popupAlerts.add(PopupAlert(AlertType.DeclarationOfFriendship, viewingCiv.civName))
|
||||||
@ -260,9 +265,11 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() {
|
|||||||
if (isNotPlayersTurn()) denounceButton.disable()
|
if (isNotPlayersTurn()) denounceButton.disable()
|
||||||
}
|
}
|
||||||
|
|
||||||
val declareWarButton = getDeclareWarButton(diplomacyManager, otherCiv)
|
if (diplomaticRelationshipsCanChange) {
|
||||||
diplomacyTable.add(declareWarButton).row()
|
val declareWarButton = getDeclareWarButton(diplomacyManager, otherCiv)
|
||||||
if (isNotPlayersTurn()) declareWarButton.disable()
|
diplomacyTable.add(declareWarButton).row()
|
||||||
|
if (isNotPlayersTurn()) declareWarButton.disable()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val demandsButton = "Demands".toTextButton()
|
val demandsButton = "Demands".toTextButton()
|
||||||
|
Reference in New Issue
Block a user