From d4b19a7bb3d1830441fc2eef70345f9663e90bf3 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sat, 20 Mar 2021 23:49:33 +0200 Subject: [PATCH] Many notification conversions --- android/Images/OtherIcons/Diplomacy.png | Bin 0 -> 749 bytes .../logic/automation/NextTurnAutomation.kt | 8 ++++---- .../com/unciv/logic/city/PopulationManager.kt | 2 +- .../civilization/CivInfoTransientUpdater.kt | 8 ++++---- .../logic/civilization/CivilizationInfo.kt | 17 ++++++----------- .../unciv/logic/civilization/Notification.kt | 3 +++ .../unciv/logic/civilization/QuestManager.kt | 6 ++++-- .../civilization/diplomacy/DiplomacyManager.kt | 8 ++++---- .../EditMultiplayerGameInfoScreen.kt | 3 ++- .../src/com/unciv/ui/worldscreen/TradePopup.kt | 5 +++-- 10 files changed, 31 insertions(+), 29 deletions(-) create mode 100644 android/Images/OtherIcons/Diplomacy.png diff --git a/android/Images/OtherIcons/Diplomacy.png b/android/Images/OtherIcons/Diplomacy.png new file mode 100644 index 0000000000000000000000000000000000000000..f0fbba7a14587d2594c46c736d648f34d1f142de GIT binary patch literal 749 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGf5dZ)S5dnW>Uy%R+0)k0IK~!i%?V8VP z8bK7t{Q;JWqL%ds6IX?_7jIkeX1wN{OG0~1{*oR_4~3q3DD+e)w9so0xwX*V3x%G7 zs7Q(xgOEi*k?{<&f&qLR3c!Q4K9bHM9`b zxG_Scy;h^qcrYH1U-8AY(`+`a!C;W)i`Q}Rrx4W);R$S!HJi;|+O~a%_q;f`e9dGs zX0cd2K`HbzK?HdyIxb0%w~q)h)kG{Jo6Qc8A4(kGKK--TyWQ?KvU2qM{d-9F4a4|4 z?|8EjSFOopa>h$f^nFA%v=G(MLR91S2`QCIKO&LH<6JKHg145aR4T``O}Sit$6HI# zI@*S|<*k1P`4rJ@|7u+N8NhH5ACY~x5!njfBXdef|J`b}N+(aW&S8wTkmcvKa2BJy zB(AmBaIJTF`5RGBhUs)_^U?*3W?TtBKY4C8E-%j3HFo1ZzY flzq*00000NkvXXu0mjfi;rBA literal 0 HcmV?d00001 diff --git a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt index a9dc5d410f..3745840486 100644 --- a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt +++ b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt @@ -65,9 +65,9 @@ object NextTurnAutomation { civInfo.tradeRequests.remove(tradeRequest) if (TradeEvaluation().isTradeAcceptable(tradeLogic.currentTrade, civInfo, otherCiv)) { tradeLogic.acceptTrade() - otherCiv.addNotification("[${civInfo.civName}] has accepted your trade request", Color.GOLD) + otherCiv.addNotification("[${civInfo.civName}] has accepted your trade request", NotificationIcon.Trade, civInfo.civName) } else { - otherCiv.addNotification("[${civInfo.civName}] has denied your trade request", Color.GOLD) + otherCiv.addNotification("[${civInfo.civName}] has denied your trade request", NotificationIcon.Trade, civInfo.civName) } } civInfo.tradeRequests.clear() @@ -88,8 +88,8 @@ object NextTurnAutomation { if (diploManager.relationshipLevel() > RelationshipLevel.Neutral && !diploManager.otherCivDiplomacy().hasFlag(DiplomacyFlags.Denunceation)) { diploManager.signDeclarationOfFriendship() - requestingCiv.addNotification("We have signed a Declaration of Friendship with [${civInfo.civName}]!", Color.GOLD) - } else requestingCiv.addNotification("[${civInfo.civName}] has denied our Declaration of Friendship!", Color.GOLD) + requestingCiv.addNotification("We have signed a Declaration of Friendship with [${civInfo.civName}]!", NotificationIcon.Diplomacy, civInfo.civName) + } else requestingCiv.addNotification("[${civInfo.civName}] has denied our Declaration of Friendship!", NotificationIcon.Diplomacy, civInfo.civName) } } diff --git a/core/src/com/unciv/logic/city/PopulationManager.kt b/core/src/com/unciv/logic/city/PopulationManager.kt index deb2823bd1..247569315f 100644 --- a/core/src/com/unciv/logic/city/PopulationManager.kt +++ b/core/src/com/unciv/logic/city/PopulationManager.kt @@ -52,7 +52,7 @@ class PopulationManager { fun nextTurn(food: Int) { foodStored += food if (food < 0) - cityInfo.civInfo.addNotification("[${cityInfo.name}] is starving!", cityInfo.location, NotificationIcon.Growth, "OtherIcons/DisbandUnit") + cityInfo.civInfo.addNotification("[${cityInfo.name}] is starving!", cityInfo.location, NotificationIcon.Growth, NotificationIcon.Death) if (foodStored < 0) { // starvation! if (population > 1) population-- foodStored = 0 diff --git a/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt b/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt index 4696af98dc..ffd028a9ff 100644 --- a/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt +++ b/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt @@ -40,8 +40,8 @@ class CivInfoTransientUpdater(val civInfo: CivilizationInfo) { val metCiv = entry.key if (metCiv == civInfo || metCiv.isBarbarian() || civInfo.diplomacy.containsKey(metCiv.civName)) continue civInfo.meetCivilization(metCiv) - civInfo.addNotification("We have encountered [" + metCiv.civName + "]!", entry.value.position, Color.GOLD) - metCiv.addNotification("We have encountered [" + civInfo.civName + "]!", entry.value.position, Color.GOLD) + civInfo.addNotification("We have encountered [" + metCiv.civName + "]!", entry.value.position, metCiv.civName, NotificationIcon.Diplomacy) + metCiv.addNotification("We have encountered [" + civInfo.civName + "]!", entry.value.position, civInfo.civName, NotificationIcon.Diplomacy) } discoverNaturalWonders() @@ -91,7 +91,7 @@ class CivInfoTransientUpdater(val civInfo: CivilizationInfo) { if (civInfo.naturalWonders.contains(tile.naturalWonder)) continue civInfo.discoverNaturalWonder(tile.naturalWonder!!) - civInfo.addNotification("We have discovered [" + tile.naturalWonder + "]!", tile.position, Color.GOLD) + civInfo.addNotification("We have discovered [" + tile.naturalWonder + "]!", tile.position, "StatIcons/Happiness") var goldGained = 0 val discoveredNaturalWonders = civInfo.gameInfo.civilizations.filter { it != civInfo && it.isMajorCiv() } @@ -109,7 +109,7 @@ class CivInfoTransientUpdater(val civInfo: CivilizationInfo) { if (goldGained > 0) { civInfo.gold += goldGained - civInfo.addNotification("We have received [" + goldGained + "] Gold for discovering [" + tile.naturalWonder + "]", null, Color.GOLD) + civInfo.addNotification("We have received [" + goldGained + "] Gold for discovering [" + tile.naturalWonder + "]", NotificationIcon.Gold) } } diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 5302a3955b..da8c00ae7c 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -344,7 +344,7 @@ class CivilizationInfo { val maxEraOfTech = tech.researchedTechnologies .asSequence() .map { it.column!! } - .maxBy { it.columnNumber }!! + .maxByOrNull { it.columnNumber }!! .era return maxEraOfTech } @@ -484,7 +484,7 @@ class CivilizationInfo { if (offeringCiv.isDefeated() || !TradeEvaluation().isTradeValid(tradeRequest.trade, this, offeringCiv)) { tradeRequests.remove(tradeRequest) // Yes, this is the right direction. I checked. - offeringCiv.addNotification("Our proposed trade is no longer relevant!", Color.GOLD) + offeringCiv.addNotification("Our proposed trade is no longer relevant!", NotificationIcon.Trade) } } updateDetailedCivResources() // If you offered a trade last turn, this turn it will have been accepted/declined @@ -509,7 +509,7 @@ class CivilizationInfo { unitToDisband.disband() civMilitaryUnits -= unitToDisband val unitName = unitToDisband.displayName() - addNotification("Cannot provide unit upkeep for [$unitName] - unit has been disbanded!", null, Color.RED) + addNotification("Cannot provide unit upkeep for [$unitName] - unit has been disbanded!", unitName, NotificationIcon.Death) } } } @@ -550,19 +550,14 @@ class CivilizationInfo { fun addNotification(text: String, location: Vector2?, color: Color) { val locations = if (location != null) listOf(location) else emptyList() - addNotification(text, color, LocationAction(locations)) + if (playerType == PlayerType.AI) return // no point in lengthening the saved game info if no one will read it + notifications.add(Notification(text, color, LocationAction(locations))) } fun addNotification(text: String, location: Vector2, vararg notificationIcons: String) { addNotification(text, LocationAction(listOf(location)), *notificationIcons) } - - fun addNotification(text: String, color: Color, action: NotificationAction? = null) { - if (playerType == PlayerType.AI) return // no point in lengthening the saved game info if no one will read it - notifications.add(Notification(text, color, action)) - } - fun addNotification(text: String, vararg notificationIcons: String) = addNotification(text, null, *notificationIcons) fun addNotification(text: String, action:NotificationAction?, vararg notificationIcons: String) { @@ -649,7 +644,7 @@ class CivilizationInfo { if (!isCityState()) return val maxInfluence = diplomacy .filter { !it.value.otherCiv().isCityState() && !it.value.otherCiv().isDefeated() } - .maxBy { it.value.influence } + .maxByOrNull { it.value.influence } if (maxInfluence != null && maxInfluence.value.influence >= 60) { newAllyName = maxInfluence.key } diff --git a/core/src/com/unciv/logic/civilization/Notification.kt b/core/src/com/unciv/logic/civilization/Notification.kt index 8614e0fd5c..87268a2f73 100644 --- a/core/src/com/unciv/logic/civilization/Notification.kt +++ b/core/src/com/unciv/logic/civilization/Notification.kt @@ -14,6 +14,9 @@ object NotificationIcon { val War = "OtherIcons/Pillage" val Trade = "StatIcons/Acquire" val Science = "StatIcons/Science" + val Gold = "StatIcons/Gold" + val Death = "OtherIcons/DisbandUnit" + val Diplomacy = "OtherIcons/Diplomacy" } /** diff --git a/core/src/com/unciv/logic/civilization/QuestManager.kt b/core/src/com/unciv/logic/civilization/QuestManager.kt index 1ed10f168e..35153f4888 100644 --- a/core/src/com/unciv/logic/civilization/QuestManager.kt +++ b/core/src/com/unciv/logic/civilization/QuestManager.kt @@ -274,7 +274,8 @@ class QuestManager { newQuest.gameInfo = civInfo.gameInfo assignedQuests.add(newQuest) - assignee.addNotification("[${civInfo.civName}] assigned you a new quest: [${quest.name}].", Color.GOLD, DiplomacyAction(civInfo.civName)) + assignee.addNotification("[${civInfo.civName}] assigned you a new quest: [${quest.name}].", + DiplomacyAction(civInfo.civName), civInfo.civName, "OtherIcons/Quest") if (quest.isIndividual()) individualQuestCountdown[assignee.civName] = UNSET @@ -345,7 +346,8 @@ class QuestManager { civInfo.getDiplomacyManager(assignedQuest.assignee).influence += rewardInfluence if (rewardInfluence > 0) - assignee.addNotification("[${civInfo.civName}] rewarded you with [${rewardInfluence.toInt()}] influence for completing the [${assignedQuest.questName}] quest.", civInfo.getCapital().location, Color.GOLD) + assignee.addNotification("[${civInfo.civName}] rewarded you with [${rewardInfluence.toInt()}] influence for completing the [${assignedQuest.questName}] quest.", + civInfo.getCapital().location, civInfo.civName, "OtherIcons/Quest") } /** Returns the score for the [assignedQuest] */ diff --git a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt index 2d7e1c8537..bc72da5f14 100644 --- a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt +++ b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt @@ -647,11 +647,11 @@ class DiplomacyManager() { setFlag(DiplomacyFlags.Denunceation, 30) otherCivDiplomacy().setFlag(DiplomacyFlags.Denunceation, 30) - otherCiv().addNotification("[${civInfo.civName}] has denounced us!", Color.RED) + otherCiv().addNotification("[${civInfo.civName}] has denounced us!", NotificationIcon.Diplomacy, civInfo.civName) // We, A, are denouncing B. What do other major civs (C,D, etc) think of this? getCommonKnownCivs().filter { it.isMajorCiv() }.forEach { thirdCiv -> - thirdCiv.addNotification("[${civInfo.civName}] has denounced [${otherCiv().civName}]!", null, Color.RED) + thirdCiv.addNotification("[${civInfo.civName}] has denounced [$otherCivName]!", civInfo.civName, NotificationIcon.Diplomacy, otherCivName) val thirdCivRelationshipWithOtherCiv = thirdCiv.getDiplomacyManager(otherCiv()).relationshipLevel() when (thirdCivRelationshipWithOtherCiv) { RelationshipLevel.Unforgivable -> addModifier(DiplomaticModifiers.DenouncedOurEnemies, 15f) @@ -665,14 +665,14 @@ class DiplomacyManager() { fun agreeNotToSettleNear() { otherCivDiplomacy().setFlag(DiplomacyFlags.AgreedToNotSettleNearUs, 100) addModifier(DiplomaticModifiers.UnacceptableDemands, -10f) - otherCiv().addNotification("[${civInfo.civName}] agreed to stop settling cities near us!", Color.MAROON) + otherCiv().addNotification("[${civInfo.civName}] agreed to stop settling cities near us!", NotificationIcon.Diplomacy, civInfo.civName) } fun refuseDemandNotToSettleNear() { addModifier(DiplomaticModifiers.UnacceptableDemands, -20f) otherCivDiplomacy().setFlag(DiplomacyFlags.IgnoreThemSettlingNearUs, 100) otherCivDiplomacy().addModifier(DiplomaticModifiers.RefusedToNotSettleCitiesNearUs, -15f) - otherCiv().addNotification("[${civInfo.civName}] refused to stop settling cities near us!", Color.MAROON) + otherCiv().addNotification("[${civInfo.civName}] refused to stop settling cities near us!", NotificationIcon.Diplomacy, civInfo.civName) } diff --git a/core/src/com/unciv/ui/multiplayer/EditMultiplayerGameInfoScreen.kt b/core/src/com/unciv/ui/multiplayer/EditMultiplayerGameInfoScreen.kt index e4dad42864..521c66c6f2 100644 --- a/core/src/com/unciv/ui/multiplayer/EditMultiplayerGameInfoScreen.kt +++ b/core/src/com/unciv/ui/multiplayer/EditMultiplayerGameInfoScreen.kt @@ -5,6 +5,7 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.scenes.scene2d.ui.TextField import com.unciv.logic.GameInfo import com.unciv.logic.GameSaver +import com.unciv.logic.civilization.NotificationIcon import com.unciv.logic.civilization.PlayerType import com.unciv.models.translations.tr import com.unciv.ui.pickerscreens.PickerScreen @@ -99,7 +100,7 @@ class EditMultiplayerGameInfoScreen(game: GameInfo?, gameName: String, backScree //Add notification so everyone knows what happened //call for every civ cause AI players are skipped anyway for (civ in gameInfo.civilizations) { - civ.addNotification("[${playerCiv.civName}] resigned and is now controlled by AI", Color.RED) + civ.addNotification("[${playerCiv.civName}] resigned and is now controlled by AI", playerCiv.civName) } //save game so multiplayer list stays up to date diff --git a/core/src/com/unciv/ui/worldscreen/TradePopup.kt b/core/src/com/unciv/ui/worldscreen/TradePopup.kt index eb1f19d1c7..2eeab9001d 100644 --- a/core/src/com/unciv/ui/worldscreen/TradePopup.kt +++ b/core/src/com/unciv/ui/worldscreen/TradePopup.kt @@ -4,6 +4,7 @@ import com.unciv.ui.utils.AutoScrollPane as ScrollPane import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.scenes.scene2d.ui.Table import com.unciv.Constants +import com.unciv.logic.civilization.NotificationIcon import com.unciv.logic.civilization.diplomacy.DiplomacyFlags import com.unciv.logic.trade.TradeEvaluation import com.unciv.logic.trade.TradeLogic @@ -75,7 +76,7 @@ class TradePopup(worldScreen: WorldScreen): Popup(worldScreen){ } open() } - requestingCiv.addNotification("[${viewingCiv.civName}] has accepted your trade request", Color.GOLD) + requestingCiv.addNotification("[${viewingCiv.civName}] has accepted your trade request", viewingCiv.civName, NotificationIcon.Trade) } // In the meantime this became invalid, perhaps because we accepted previous trades @@ -93,7 +94,7 @@ class TradePopup(worldScreen: WorldScreen): Popup(worldScreen){ diplomacyManager.setFlag(DiplomacyFlags.DeclinedPeace,5) close() - requestingCiv.addNotification("[${viewingCiv.civName}] has denied your trade request", Color.GOLD) + requestingCiv.addNotification("[${viewingCiv.civName}] has denied your trade request", viewingCiv.civName, NotificationIcon.Trade) worldScreen.shouldUpdate=true }