mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-27 08:52:46 +00: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:
@@ -28,8 +28,13 @@ Trigger.prototype.CheckWonderVictory = function(data)
|
|||||||
// Add -1 to notify observers too
|
// Add -1 to notify observers too
|
||||||
let players = [-1];
|
let players = [-1];
|
||||||
for (let i = 1; i < numPlayers; ++i)
|
for (let i = 1; i < numPlayers; ++i)
|
||||||
|
{
|
||||||
|
let cmpPlayer = QueryPlayerIDInterface(i);
|
||||||
|
if (cmpPlayer.GetState() == "won")
|
||||||
|
return;
|
||||||
if (i != data.to)
|
if (i != data.to)
|
||||||
players.push(i);
|
players.push(i);
|
||||||
|
}
|
||||||
|
|
||||||
let cmpPlayer = QueryOwnerInterface(ent, IID_Player);
|
let cmpPlayer = QueryOwnerInterface(ent, IID_Player);
|
||||||
let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager);
|
let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager);
|
||||||
@@ -58,7 +63,21 @@ Trigger.prototype.CheckWonderVictory = function(data)
|
|||||||
this.wonderVictoryMessages[ent] = messages;
|
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);
|
var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
|
||||||
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "CheckWonderVictory", { "enabled": true });
|
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "CheckWonderVictory", { "enabled": true });
|
||||||
|
cmpTrigger.RegisterTrigger("OnPlayerWon", "DeleteMessages", { "enabled": true });
|
||||||
cmpTrigger.wonderVictoryTimers = {};
|
cmpTrigger.wonderVictoryTimers = {};
|
||||||
cmpTrigger.wonderVictoryMessages = {};
|
cmpTrigger.wonderVictoryMessages = {};
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ Trigger.prototype.eventNames =
|
|||||||
"Interval",
|
"Interval",
|
||||||
"OwnershipChanged",
|
"OwnershipChanged",
|
||||||
"PlayerCommand",
|
"PlayerCommand",
|
||||||
|
"PlayerDefeated",
|
||||||
|
"PlayerWon",
|
||||||
"Range",
|
"Range",
|
||||||
"ResearchFinished",
|
"ResearchFinished",
|
||||||
"ResearchQueued",
|
"ResearchQueued",
|
||||||
@@ -253,6 +255,16 @@ Trigger.prototype.OnGlobalOwnershipChanged = function(msg)
|
|||||||
// data is {"entity": ent, "from": playerId, "to": playerId}
|
// 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.
|
* Execute a function after a certain delay.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user