Ticket #2749: t2749_ceasefire_cleanup_v2.patch

File t2749_ceasefire_cleanup_v2.patch, 7.1 KB (added by elexis, 9 years ago)

Same patch as the other cleanup before, but also does more simplifications, (4) remove two unused variables and (5) removes some unneeded brackets.

  • binaries/data/mods/public/simulation/components/CeasefireManager.js

     
    11function CeasefireManager() {}
    22
    3 CeasefireManager.prototype.Schema =
    4     "<a:help>Lists the sound groups associated with this unit.</a:help>" +
    5     "<a:example>" +
    6         "<SoundGroups>" +
    7             "<ceasefire>interface/alarm/alarm_alert_0.xml</ceasefire>" +
    8         "</SoundGroups>" +
    9     "</a:example>" +
    10     "<element name='SoundGroups'>" +
    11         "<zeroOrMore>" + /* TODO: make this more specific, like a list of specific elements */
    12             "<element>" +
    13                 "<anyName/>" +
    14                 "<text/>" +
    15             "</element>" +
    16         "</zeroOrMore>" +
    17     "</element>";
     3CeasefireManager.prototype.Schema = "<a:component type='system'/><empty/>";
    184
    195CeasefireManager.prototype.Init = function()
    206{
    217    // Weather or not ceasefire is active currently.
    228    this.ceasefireIsActive = false;
     
    8369    // Save diplomacy and set everyone neutral
    8470    if (!this.ceasefireIsActive)
    8571    {
    8672        // Save diplomacy
    8773        var playerEntities = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager).GetAllPlayerEntities();
    88         for (var i = 1; i < playerEntities.length; i++)
    89         {
     74        for (var i = 1; i < playerEntities.length; ++i)
    9075            // Copy array with slice(), otherwise it will change
    91             var cmpPlayer = Engine.QueryInterface(playerEntities[i], IID_Player);
    92             this.diplomacyBeforeCeasefire.push(cmpPlayer.GetDiplomacy().slice());
    93         }
     76            this.diplomacyBeforeCeasefire.push(Engine.QueryInterface(playerEntities[i], IID_Player).GetDiplomacy().slice());
    9477
    9578        // Set every enemy (except gaia) to neutral
    96         for (var i = 1; i < playerEntities.length; i++)
    97         {
    98             var cmpPlayer = Engine.QueryInterface(playerEntities[i], IID_Player);
    99             for (var j = 1; j < playerEntities.length; j++)
    100             {
     79        for (var i = 1; i < playerEntities.length; ++i)
     80            for (var j = 1; j < playerEntities.length; ++j)
    10181                if (this.diplomacyBeforeCeasefire[i-1][j] < 0)
    102                     cmpPlayer.SetNeutral(j);
    103             }
    104         }
     82                    Engine.QueryInterface(playerEntities[i], IID_Player).SetNeutral(j);
    10583    }
    10684   
    10785    // Save other data
    10886    this.ceasefireIsActive = true;
    10987    this.ceasefireTime = ceasefireTime;
     
    11391    Engine.PostMessage(SYSTEM_ENTITY, MT_CeasefireStarted);
    11492
    11593    // Add timers for countdown message and reseting diplomacy
    11694    this.stopCeasefireTimer = cmpTimer.SetTimeout(SYSTEM_ENTITY, IID_CeasefireManager, "StopCeasefire", this.ceasefireTime);
    11795    this.ceasefireCountdownMessageTimer = cmpTimer.SetTimeout(SYSTEM_ENTITY, IID_CeasefireManager, "ShowCeasefireCountdownMessage",
    118             this.ceasefireTime - this.countdownMessageDuration, this.countdownMessageDuration);
     96            this.ceasefireTime - this.countdownMessageDuration);
    11997};
    12098
    121 CeasefireManager.prototype.ShowCeasefireCountdownMessage = function(duration)
     99CeasefireManager.prototype.ShowCeasefireCountdownMessage = function()
    122100{
    123101    var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
    124102    this.ceasefireCountdownMessage = cmpGuiInterface.AddTimeNotification({
    125103        "message": markForTranslation("You can attack in %(time)s"),
    126104        "translateMessage": true
    127     }, duration);
     105    }, this.countdownMessageDuration);
    128106};
    129107
    130108CeasefireManager.prototype.StopCeasefire = function()
    131109{
    132110    var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
     
    140118        "message": markForTranslation("You can attack now!"),
    141119        "translateMessage": true
    142120    }, this.postCountdownMessageDuration);
    143121   
    144122    // Reset diplomacies to original settings
    145     var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
    146123    var playerEntities = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager).GetAllPlayerEntities();
    147     for (var i = 1; i < playerEntities.length; i++)
    148     {
    149         var cmpPlayer = Engine.QueryInterface(playerEntities[i], IID_Player);
    150         cmpPlayer.SetDiplomacy(this.diplomacyBeforeCeasefire[i-1]);
    151     }       
     124    for (var i = 1; i < playerEntities.length; ++i)
     125        Engine.QueryInterface(playerEntities[i], IID_Player).SetDiplomacy(this.diplomacyBeforeCeasefire[i-1]);
    152126
    153127    // Send chat notifications and update the diplomacy screen
    154     for (var i = 1; i < playerEntities.length; i++)
    155     {
    156         var cmpPlayer = Engine.QueryInterface(playerEntities[i], IID_Player);
    157         for (var j = 1; j < playerEntities.length; j++)
    158         {
     128    for (var i = 1; i < playerEntities.length; ++i)
     129        for (var j = 1; j < playerEntities.length; ++j)
    159130            if (i != j && this.diplomacyBeforeCeasefire[i-1][j] == -1)
    160131                cmpGuiInterface.PushNotification({"type": "diplomacy", "players": [j], "player1": [i], "status": "enemy"});
    161         }
    162     }   
    163132   
    164133    // Reset values
    165134    this.ceasefireIsActive = false;
    166135    this.ceasefireTime = 0;
    167136    this.ceasefireStartedTime = 0;
  • binaries/data/mods/public/simulation/components/GuiInterface.js

     
    694694{
    695695    var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
    696696    notification.endTime = duration + cmpTimer.GetTime();
    697697    notification.id = ++this.timeNotificationID;
    698698
    699     // Let all players receive the notification by default
     699    // Let all players and observers receive the notification by default
    700700    if (notification.players == undefined)
    701701    {
    702702        var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
    703703        var numPlayers = cmpPlayerManager.GetNumPlayers();
    704         notification.players = [];
    705         for (var i = 1; i < numPlayers; i++)
     704        notification.players = [-1];
     705        for (var i = 1; i < numPlayers; ++i)
    706706            notification.players.push(i);
    707707    }
    708    
    709708    this.timeNotifications.push(notification);
    710709    this.timeNotifications.sort(function (n1, n2){return n2.endTime - n1.endTime});
    711710
    712711    cmpTimer.SetTimeout(this.entity, IID_GuiInterface, "DeleteTimeNotification", duration, this.timeNotificationID);
    713712
  • binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js

     
    33Engine.LoadComponentScript("interfaces/AlertRaiser.js");
    44Engine.LoadComponentScript("interfaces/Auras.js");
    55Engine.LoadComponentScript("interfaces/Barter.js");
    66Engine.LoadComponentScript("interfaces/Builder.js");
    77Engine.LoadComponentScript("interfaces/Capturable.js");
     8Engine.LoadComponentScript("interfaces/CeasefireManager.js");
    89Engine.LoadComponentScript("interfaces/DamageReceiver.js");
    910Engine.LoadComponentScript("interfaces/EndGameManager.js");
    1011Engine.LoadComponentScript("interfaces/EntityLimits.js");
    1112Engine.LoadComponentScript("interfaces/Foundation.js");
    1213Engine.LoadComponentScript("interfaces/GarrisonHolder.js");