mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-19 23:03:56 -07:00
Properly handle wonder victory messages after a player has won.
Patch by Sandarac, reviewed by elexis, fixes #4010 This was SVN commit r18514.
This commit is contained in:
parent
d29806ff2d
commit
ced8ceed47
2 changed files with 31 additions and 0 deletions
|
|
@ -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 = {};
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in a new issue