Ticket #4010: wondervictorymessagesfix_v4.patch

File wondervictorymessagesfix_v4.patch, 2.3 KB (added by Sandarac, 8 years ago)

Also adds "PlayerWon" and "PlayerDefeated" as Trigger events, after discussion with elexis.

  • binaries/data/mods/public/maps/scripts/WonderVictory.js

     
    2828    // Add -1 to notify observers too
    2929    let players = [-1];
    3030    for (let i = 1; i < numPlayers; ++i)
     31    {
     32        let cmpPlayer = QueryPlayerIDInterface(i);
     33        if (cmpPlayer.GetState() == "won")
     34            return;
    3135        if (i != data.to)
    3236            players.push(i);
     37    }
    3338
    3439    let cmpPlayer = QueryOwnerInterface(ent, IID_Player);
    3540    let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager);
     
    5863    this.wonderVictoryMessages[ent] = messages;
    5964};
    6065
     66Trigger.prototype.DeleteMessages = function(ent)
     67{
     68    let cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
     69    let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
     70
     71    for (let ent in this.wonderVictoryMessages)
     72    {
     73        cmpGuiInterface.DeleteTimeNotification(this.wonderVictoryMessages[ent].ownMessage);
     74        cmpGuiInterface.DeleteTimeNotification(this.wonderVictoryMessages[ent].otherMessage);
     75        cmpTimer.CancelTimer(this.wonderVictoryTimers[ent]);
     76    }
     77};
     78
    6179var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
    6280cmpTrigger.RegisterTrigger("OnOwnershipChanged", "CheckWonderVictory", { "enabled": true });
     81cmpTrigger.RegisterTrigger("OnPlayerWon", "DeleteMessages", { "enabled": true });
    6382cmpTrigger.wonderVictoryTimers = {};
    6483cmpTrigger.wonderVictoryMessages = {};
  • binaries/data/mods/public/simulation/components/Trigger.js

     
    1414    "Interval",
    1515    "OwnershipChanged",
    1616    "PlayerCommand",
     17    "PlayerDefeated",
     18    "PlayerWon",
    1719    "Range",
    1820    "ResearchFinished",
    1921    "ResearchQueued",
     
    253255    // data is {"entity": ent, "from": playerId, "to": playerId}
    254256};
    255257
     258Trigger.prototype.OnGlobalPlayerDefeated = function(msg)
     259{
     260    this.CallEvent("PlayerDefeated", msg);
     261};
     262
     263Trigger.prototype.OnGlobalPlayerWon = function(msg)
     264{
     265    this.CallEvent("PlayerWon", msg);
     266};
     267
    256268/**
    257269 * Execute a function after a certain delay.
    258270 *