Ticket #3395: ticket3395unitactions_7.2.diff

File ticket3395unitactions_7.2.diff, 4.8 KB (added by bb, 8 years ago)

use GetRepairRate for repair too

  • binaries/data/mods/public/gui/common/tooltips.js

     
    229229    return attacks.join("\n");
    230230}
    231231
    232 function getRepairRatioTooltip(ratio)
     232function getRepairRateTooltip(rate)
    233233{
    234     let unit = sprintf(translate("%(health)s / %(second)s / %(worker)s"), {
     234    let detail = Math.round(rate * 10) / 10;
     235    return "\n" + sprintf(translate("%(repairRateLabel)s %(detail)s %(health)s / %(second)s / %(worker)s"), {
     236        "repairRateLabel": g_TooltipTextFormats.header[0] + translate("Repair Rate:") + g_TooltipTextFormats.header[1],
     237        "detail": detail,
    235238        "health": g_TooltipTextFormats.unit[0] + translate("health") + g_TooltipTextFormats.unit[1],
    236239        "second": g_TooltipTextFormats.unit[0] + translate("second") + g_TooltipTextFormats.unit[1],
    237240        "worker": g_TooltipTextFormats.unit[0] + translate("worker") + g_TooltipTextFormats.unit[1]
    238241    });
    239 
    240     return "\n" + sprintf(translate("%(repairRateLabel)s %(detail)s %(unit)s"), {
    241         "repairRateLabel": g_TooltipTextFormats.header[0] + translate("Repair Rate:") + g_TooltipTextFormats.header[1],
    242         "detail": ratio,
    243         "unit": unit
    244     });
    245242}
    246243
    247244/**
  • binaries/data/mods/public/gui/session/selection_details.js

     
    262262    Engine.GetGUIObjectByName("attackAndArmorStats").tooltip = entState.attack ? (getAttackTooltip(entState) + "\n" + armorString) : armorString;
    263263
    264264    // Repair Rate
    265     if (entState.repairRatio)
    266         Engine.GetGUIObjectByName("attackAndArmorStats").tooltip += getRepairRatioTooltip(entState.repairRatio);
     265    if (entState.repairRate)
     266        Engine.GetGUIObjectByName("attackAndArmorStats").tooltip += getRepairRateTooltip(entState.repairRate);
    267267
    268268    // Icon Tooltip
    269269    let iconTooltip = "";
  • binaries/data/mods/public/simulation/components/GuiInterface.js

     
    404404        "obstruction": null,
    405405        "turretParent":null,
    406406        "promotion": null,
    407         "repairTime": null,
     407        "repairRate": null,
    408408        "resourceDropsite": null,
    409409        "resourceGatherRates": null,
    410410        "resourceSupply": null,
     
    487487
    488488    let cmpRepairable = Engine.QueryInterface(ent, IID_Repairable);
    489489    if (cmpRepairable)
    490         ret.repairRatio = cmpRepairable.GetRepairRatio();
     490        ret.repairRate = cmpRepairable.GetRepairRate();
    491491
    492492    let cmpResourceSupply = QueryMiragedInterface(ent, IID_ResourceSupply);
    493493    if (cmpResourceSupply)
  • binaries/data/mods/public/simulation/components/Repairable.js

     
    6262        return;
    6363
    6464    // Calculate the amount of hitpoints that will be added (using diminushing rate when several builders)
    65     let work = rate * this.buildMultiplier;
    66     let repairTime = this.repairTimeRatio * cmpCost.GetBuildTime();
    67     if (repairTime)
    68         work *= (cmpHealth.GetMaxHitpoints() / repairTime);
     65    let work = rate * this.buildMultiplier * this.GetRepairRate();
    6966    let amount = Math.min(damage, work);
    7067    cmpHealth.Increase(amount);
    7168
     
    7471        Engine.PostMessage(this.entity, MT_ConstructionFinished, { "entity": this.entity, "newentity": this.entity });
    7572};
    7673
    77 Repairable.prototype.GetRepairRatio = function()
     74Repairable.prototype.GetRepairRate = function()
    7875{
    7976    let cmpHealth = Engine.QueryInterface(this.entity, IID_Health);
    8077    let cmpCost = Engine.QueryInterface(this.entity, IID_Cost);
    8178    let repairTime = this.repairTimeRatio * cmpCost.GetBuildTime();
    82     let repairRatio = (cmpHealth.GetMaxHitpoints() / repairTime);
    83     return (Math.round(repairRatio * 10 ) / 10);
     79    return repairTime ? cmpHealth.GetMaxHitpoints() / repairTime : 1;
    8480};
    8581
    8682Engine.RegisterComponentType(IID_Repairable, "Repairable", Repairable);
  • binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js

     
    510510    obstruction: null,
    511511    turretParent: null,
    512512    promotion: null,
    513     repairTime: null,
     513    repairRate: null,
    514514    resourceDropsite: null,
    515515    resourceGatherRates: null,
    516516    resourceSupply: null,