Ticket #4010: wondervictorymessagesfix_v2.patch
File wondervictorymessagesfix_v2.patch, 3.9 KB (added by , 8 years ago) |
---|
-
binaries/data/mods/public/maps/scripts/WonderVictory.js
28 28 // Add -1 to notify observers too 29 29 let players = [-1]; 30 30 for (let i = 1; i < numPlayers; ++i) 31 { 32 var playerEntityId = cmpPlayerManager.GetPlayerByID(i); 33 let cmpPlayer = Engine.QueryInterface(playerEntityId, IID_Player); 34 if (cmpPlayer.GetState() == "won") 35 return; 31 36 if (i != data.to) 32 37 players.push(i); 38 } 33 39 34 40 let cmpPlayer = QueryOwnerInterface(ent, IID_Player); 35 41 let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager); … … 58 64 this.wonderVictoryMessages[ent] = messages; 59 65 }; 60 66 67 Trigger.prototype.DeleteMessages = function(ent, OnPlayerWon = true) 68 { 69 let timers = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger).wonderVictoryTimers; 70 let messages = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger).wonderVictoryMessages; 71 72 if (!messages || !timers) 73 return; 74 75 let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); 76 let cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface); 77 78 for (let message in messages) 79 { 80 cmpGuiInterface.DeleteTimeNotification(messages[message].ownMessage); 81 cmpGuiInterface.DeleteTimeNotification(messages[message].otherMessage); 82 } 83 84 for (let timer in timers) 85 cmpTimer.CancelTimer(timers[timer]); 86 }; 87 61 88 var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger); 62 89 cmpTrigger.RegisterTrigger("OnOwnershipChanged", "CheckWonderVictory", { "enabled": true }); 90 cmpTrigger.RegisterTrigger("OnPlayerWon", "DeleteMessages", { "enabled": true }); 63 91 cmpTrigger.wonderVictoryTimers = {}; 64 92 cmpTrigger.wonderVictoryMessages = {}; -
binaries/data/mods/public/simulation/components/EndGameManager.js
59 59 continue; 60 60 61 61 if (playerID == cmpPlayer.GetPlayerID() || this.alliedVictory && cmpPlayer.IsMutualAlly(playerID)) 62 { 62 63 cmpPlayer.SetState("won"); 64 Engine.BroadcastMessage(MT_PlayerWon); 65 } 63 66 else 64 67 Engine.PostMessage(playerEntityId, MT_PlayerDefeated, { 65 68 "playerId": i, … … 106 109 { 107 110 let cmpPlayer = QueryPlayerIDInterface(playerID); 108 111 if (cmpPlayer) 112 { 109 113 cmpPlayer.SetState("won"); 114 Engine.BroadcastMessage(MT_PlayerWon); 115 } 110 116 } 111 117 112 118 let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); -
binaries/data/mods/public/simulation/components/interfaces/EndGameManager.js
1 1 Engine.RegisterInterface("EndGameManager"); 2 2 Engine.RegisterMessageType("PlayerDefeated"); 3 3 Engine.RegisterMessageType("GameTypeChanged"); 4 Engine.RegisterMessageType("PlayerWon"); -
binaries/data/mods/public/simulation/components/Trigger.js
14 14 "Interval", 15 15 "OwnershipChanged", 16 16 "PlayerCommand", 17 "PlayerWon", 17 18 "Range", 18 19 "ResearchFinished", 19 20 "ResearchQueued", … … 253 254 // data is {"entity": ent, "from": playerId, "to": playerId} 254 255 }; 255 256 257 Trigger.prototype.OnPlayerWon = function(msg) 258 { 259 this.CallEvent("PlayerWon", msg); 260 }; 261 256 262 /** 257 263 * Execute a function after a certain delay. 258 264 *