diff --git a/binaries/data/mods/public/maps/scenarios/unit_dancing_test_triggers.js b/binaries/data/mods/public/maps/scenarios/unit_dancing_test_triggers.js index 30555755a9..2c72622fef 100644 --- a/binaries/data/mods/public/maps/scenarios/unit_dancing_test_triggers.js +++ b/binaries/data/mods/public/maps/scenarios/unit_dancing_test_triggers.js @@ -370,8 +370,7 @@ Trigger.prototype.RemoveSpread = function() Trigger.prototype.EndGame = function() { - Engine.QueryInterface(3, IID_Player).SetState("defeated", "trigger"); - Engine.QueryInterface(4, IID_Player).SetState("won", "trigger"); + TriggerHelper.SetPlayerWon(3, "trigger", "trigger"); }; var cmpModifiersManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_ModifiersManager); diff --git a/binaries/data/mods/public/maps/scenarios/unit_pushing_test.js b/binaries/data/mods/public/maps/scenarios/unit_pushing_test.js index d54259b71c..37e5b25bf1 100644 --- a/binaries/data/mods/public/maps/scenarios/unit_pushing_test.js +++ b/binaries/data/mods/public/maps/scenarios/unit_pushing_test.js @@ -433,8 +433,7 @@ Trigger.prototype.RunExperiment = function(data) Trigger.prototype.EndGame = function() { - Engine.QueryInterface(4, IID_Player).SetState("defeated", "trigger"); - Engine.QueryInterface(3, IID_Player).SetState("won", "trigger"); + TriggerHelper.SetPlayerWon(3, "trigger", "trigger"); }; /* diff --git a/binaries/data/mods/public/maps/scripts/CaptureTheRelic.js b/binaries/data/mods/public/maps/scripts/CaptureTheRelic.js index 3d43942481..d6cb8516dc 100644 --- a/binaries/data/mods/public/maps/scripts/CaptureTheRelic.js +++ b/binaries/data/mods/public/maps/scripts/CaptureTheRelic.js @@ -119,7 +119,7 @@ Trigger.prototype.StartCaptureTheRelicCountdown = function(winningPlayers) for (let playerID = 1; playerID < TriggerHelper.GetNumberOfPlayers(); ++playerID) { const cmpPlayer = QueryPlayerIDInterface(playerID); - if (cmpPlayer.GetState() == "won") + if (cmpPlayer.HasWon()) return; if (winningPlayers.indexOf(playerID) == -1) diff --git a/binaries/data/mods/public/maps/scripts/ConquestCommon.js b/binaries/data/mods/public/maps/scripts/ConquestCommon.js index a4d1a191e7..a35dbf599c 100644 --- a/binaries/data/mods/public/maps/scripts/ConquestCommon.js +++ b/binaries/data/mods/public/maps/scripts/ConquestCommon.js @@ -23,7 +23,7 @@ Trigger.prototype.ConquestOwnershipChanged = function(msg) { const cmpPlayer = QueryPlayerIDInterface(msg.from); if (cmpPlayer) - cmpPlayer.SetState("defeated", query.defeatReason); + cmpPlayer.Defeat(query.defeatReason); } } }; diff --git a/binaries/data/mods/public/maps/scripts/TriggerHelper.js b/binaries/data/mods/public/maps/scripts/TriggerHelper.js index 2e01c129e0..23ba75f3cc 100644 --- a/binaries/data/mods/public/maps/scripts/TriggerHelper.js +++ b/binaries/data/mods/public/maps/scripts/TriggerHelper.js @@ -315,7 +315,7 @@ TriggerHelper.DefeatPlayer = function(playerID, defeatReason) { const cmpPlayer = QueryPlayerIDInterface(playerID); if (cmpPlayer) - cmpPlayer.SetState("defeated", defeatReason); + cmpPlayer.Defeat(defeatReason); }; /** diff --git a/binaries/data/mods/public/maps/scripts/WonderVictory.js b/binaries/data/mods/public/maps/scripts/WonderVictory.js index 7ca615412c..3c9ca8824b 100644 --- a/binaries/data/mods/public/maps/scripts/WonderVictory.js +++ b/binaries/data/mods/public/maps/scripts/WonderVictory.js @@ -59,7 +59,7 @@ Trigger.prototype.WonderVictoryStartTimer = function(ent, player) for (let playerID = 1; playerID < TriggerHelper.GetNumberOfPlayers(); ++playerID) { const cmpPlayer = QueryPlayerIDInterface(playerID); - if (cmpPlayer.GetState() == "won") + if (cmpPlayer.HasWon()) return; if (allies.indexOf(playerID) == -1 && playerID != player) others.push(playerID); diff --git a/source/ps/Game.cpp b/source/ps/Game.cpp index 149e2bbd73..5c360a9258 100644 --- a/source/ps/Game.cpp +++ b/source/ps/Game.cpp @@ -495,7 +495,7 @@ bool CGame::IsGameFinished() const for (const std::pair& p : m_Simulation2->GetEntitiesWithInterface(IID_Player)) { CmpPtr cmpPlayer(*m_Simulation2, p.first); - if (cmpPlayer && cmpPlayer->GetState() == "won") + if (cmpPlayer && cmpPlayer->HasWon()) return true; } diff --git a/source/simulation2/components/ICmpPlayer.cpp b/source/simulation2/components/ICmpPlayer.cpp index 4e66deb998..1d4ee21959 100644 --- a/source/simulation2/components/ICmpPlayer.cpp +++ b/source/simulation2/components/ICmpPlayer.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2025 Wildfire Games. +/* Copyright (C) 2026 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -88,9 +88,9 @@ public: return m_Script.Call("HasStartingCamera"); } - std::string GetState() override + bool HasWon() override { - return m_Script.Call("GetState"); + return m_Script.Call("HasWon"); } bool IsRemoved() override diff --git a/source/simulation2/components/ICmpPlayer.h b/source/simulation2/components/ICmpPlayer.h index 2b55fe9f11..ee0f2f6616 100644 --- a/source/simulation2/components/ICmpPlayer.h +++ b/source/simulation2/components/ICmpPlayer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2025 Wildfire Games. +/* Copyright (C) 2026 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -42,7 +42,7 @@ public: virtual bool HasStartingCamera() = 0; virtual bool IsRemoved() = 0; - virtual std::string GetState() = 0; + virtual bool HasWon() = 0; // See the cpp file for why this is implemented in C++. virtual bool IsActive() = 0;