diff --git a/binaries/data/mods/public/maps/scripts/WonderVictory.js b/binaries/data/mods/public/maps/scripts/WonderVictory.js index 524de11ab5..d630963c3c 100644 --- a/binaries/data/mods/public/maps/scripts/WonderVictory.js +++ b/binaries/data/mods/public/maps/scripts/WonderVictory.js @@ -28,8 +28,13 @@ Trigger.prototype.CheckWonderVictory = function(data) // Add -1 to notify observers too let players = [-1]; for (let i = 1; i < numPlayers; ++i) + { + let cmpPlayer = QueryPlayerIDInterface(i); + if (cmpPlayer.GetState() == "won") + return; if (i != data.to) players.push(i); + } let cmpPlayer = QueryOwnerInterface(ent, IID_Player); let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager); @@ -58,7 +63,21 @@ Trigger.prototype.CheckWonderVictory = function(data) this.wonderVictoryMessages[ent] = messages; }; +Trigger.prototype.DeleteMessages = function(ent) +{ + let cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface); + let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); + + for (let ent in this.wonderVictoryMessages) + { + cmpGuiInterface.DeleteTimeNotification(this.wonderVictoryMessages[ent].ownMessage); + cmpGuiInterface.DeleteTimeNotification(this.wonderVictoryMessages[ent].otherMessage); + cmpTimer.CancelTimer(this.wonderVictoryTimers[ent]); + } +}; + var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger); cmpTrigger.RegisterTrigger("OnOwnershipChanged", "CheckWonderVictory", { "enabled": true }); +cmpTrigger.RegisterTrigger("OnPlayerWon", "DeleteMessages", { "enabled": true }); cmpTrigger.wonderVictoryTimers = {}; cmpTrigger.wonderVictoryMessages = {}; diff --git a/binaries/data/mods/public/simulation/components/Trigger.js b/binaries/data/mods/public/simulation/components/Trigger.js index e43e5831e1..4c63254689 100644 --- a/binaries/data/mods/public/simulation/components/Trigger.js +++ b/binaries/data/mods/public/simulation/components/Trigger.js @@ -14,6 +14,8 @@ Trigger.prototype.eventNames = "Interval", "OwnershipChanged", "PlayerCommand", + "PlayerDefeated", + "PlayerWon", "Range", "ResearchFinished", "ResearchQueued", @@ -253,6 +255,16 @@ Trigger.prototype.OnGlobalOwnershipChanged = function(msg) // data is {"entity": ent, "from": playerId, "to": playerId} }; +Trigger.prototype.OnGlobalPlayerDefeated = function(msg) +{ + this.CallEvent("PlayerDefeated", msg); +}; + +Trigger.prototype.OnGlobalPlayerWon = function(msg) +{ + this.CallEvent("PlayerWon", msg); +}; + /** * Execute a function after a certain delay. *