From 65c8b51cd482a63bb5f66dbdaab2fee5a74d510b Mon Sep 17 00:00:00 2001 From: elexis Date: Fri, 13 Apr 2018 15:52:41 +0000 Subject: [PATCH] Don't send MT_PlayerDefeated and MT_PlayerWon to components of entities who subscribed locally but aren't the playerentity of the affected player, equal to D733. Besides the performance improvement for that hypothetical case, it also means OnGlobalPlayerDefeated is used consistently and an oversight like the one fixed by 2651caa885 might become easier to notice. From Differential_Revision: https://code.wildfiregames.com/D1426 Reviewed By: temple Refs #5099 This was SVN commit r21712. --- .../mods/public/simulation/components/Auras.js | 2 +- .../public/simulation/components/Capturable.js | 2 +- .../mods/public/simulation/components/Player.js | 2 +- .../simulation/components/tests/test_Auras.js | 17 +++++++++-------- .../components/tests/test_Capturable.js | 4 ++-- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/binaries/data/mods/public/simulation/components/Auras.js b/binaries/data/mods/public/simulation/components/Auras.js index 65c54b4044..070c14809a 100644 --- a/binaries/data/mods/public/simulation/components/Auras.js +++ b/binaries/data/mods/public/simulation/components/Auras.js @@ -483,7 +483,7 @@ Auras.prototype.OnGlobalResearchFinished = function(msg) /** * Only update playerauras, since units and structures are updated OnOwnershipChanged. */ -Auras.prototype.OnPlayerDefeated = function(msg) +Auras.prototype.OnGlobalPlayerDefeated = function(msg) { if (!Engine.QueryInterface(this.entity, IID_Player)) return; diff --git a/binaries/data/mods/public/simulation/components/Capturable.js b/binaries/data/mods/public/simulation/components/Capturable.js index 541a1e4484..e136c199a7 100644 --- a/binaries/data/mods/public/simulation/components/Capturable.js +++ b/binaries/data/mods/public/simulation/components/Capturable.js @@ -310,7 +310,7 @@ Capturable.prototype.OnOwnershipChanged = function(msg) * When a player is defeated, reassign the cp of non-owned entities to gaia. * Those owned by the defeated player are dealt with onOwnershipChanged. */ -Capturable.prototype.OnPlayerDefeated = function(msg) +Capturable.prototype.OnGlobalPlayerDefeated = function(msg) { if (!this.cp[msg.playerId]) return; diff --git a/binaries/data/mods/public/simulation/components/Player.js b/binaries/data/mods/public/simulation/components/Player.js index d427e258a3..54490d5240 100644 --- a/binaries/data/mods/public/simulation/components/Player.js +++ b/binaries/data/mods/public/simulation/components/Player.js @@ -497,7 +497,7 @@ Player.prototype.SetState = function(newState, message) }); } - Engine.BroadcastMessage(won ? MT_PlayerWon : MT_PlayerDefeated, { "playerId": this.playerID }); + Engine.PostMessage(this.entity, won ? MT_PlayerWon : MT_PlayerDefeated, { "playerId": this.playerID }); if (message) { diff --git a/binaries/data/mods/public/simulation/components/tests/test_Auras.js b/binaries/data/mods/public/simulation/components/tests/test_Auras.js index 52a41d4152..d1574747d9 100644 --- a/binaries/data/mods/public/simulation/components/tests/test_Auras.js +++ b/binaries/data/mods/public/simulation/components/tests/test_Auras.js @@ -23,13 +23,13 @@ global.AuraTemplates = { } }; -let playerID = [0, 1, 2]; -let playerEnt = [10, 11, 12]; -let playerState = "active"; -let sourceEnt = 20; -let targetEnt = 30; -let auraRange = 40; -let template = { "Identity" : { "Classes" : { "_string" : "CorrectClass OtherClass" } } }; +var playerID = [0, 1, 2]; +var playerEnt = [10, 11, 12]; +var playerState = "active"; +var sourceEnt = 20; +var targetEnt = 30; +var auraRange = 40; +var template = { "Identity" : { "Classes" : { "_string" : "CorrectClass OtherClass" } } }; function testAuras(name, test_function) { @@ -37,7 +37,8 @@ function testAuras(name, test_function) AddMock(SYSTEM_ENTITY, IID_PlayerManager, { "GetPlayerByID": idx => playerEnt[idx], - "GetNumPlayers": () => 3 + "GetNumPlayers": () => 3, + "GetAllPlayers": () => playerID }); AddMock(SYSTEM_ENTITY, IID_RangeManager, { diff --git a/binaries/data/mods/public/simulation/components/tests/test_Capturable.js b/binaries/data/mods/public/simulation/components/tests/test_Capturable.js index 0a2417e5ff..af2b1c8e7e 100644 --- a/binaries/data/mods/public/simulation/components/tests/test_Capturable.js +++ b/binaries/data/mods/public/simulation/components/tests/test_Capturable.js @@ -10,7 +10,7 @@ Engine.LoadComponentScript("interfaces/TerritoryDecay.js"); Engine.LoadComponentScript("interfaces/Timer.js"); Engine.LoadComponentScript("Capturable.js"); -let testData = { +var testData = { "structure": 20, "playerID": 1, "regenRate": 2, @@ -195,6 +195,6 @@ testReduce(testData, 3000, 3, 2000); // Test defeated player testCapturable(testData, cmpCapturable => { cmpCapturable.SetCapturePoints([500, 1000, 0, 250]); - cmpCapturable.OnPlayerDefeated({ "playerId": 3 }); + cmpCapturable.OnGlobalPlayerDefeated({ "playerId": 3 }); TS_ASSERT_UNEVAL_EQUALS(cmpCapturable.GetCapturePoints(), [750, 1000, 0, 0]); });