Ticket #3395: ticket3395unitactions_8.diff

File ticket3395unitactions_8.diff, 5.0 KB (added by bb, 8 years ago)

rebased version of 6

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

     
    233233{
    234234    return "\n" + sprintf(translate("%(repairRateLabel)s %(value)s %(health)s / %(second)s / %(worker)s"), {
    235235        "repairRateLabel": g_TooltipTextFormats.header[0] + translate("Repair Rate:") + g_TooltipTextFormats.header[1],
    236         "value": Math.round(rate * 10 ) / 10,
     236        "value": Math.round(rate * 10) / 10,
    237237        "health": g_TooltipTextFormats.unit[0] + translate("health") + g_TooltipTextFormats.unit[1],
    238238        "second": g_TooltipTextFormats.unit[0] + translate("second") + g_TooltipTextFormats.unit[1],
    239239        "worker": g_TooltipTextFormats.unit[0] + translate("worker") + g_TooltipTextFormats.unit[1]
     
    240240    });
    241241}
    242242
     243function getBuildRateTooltip(rate)
     244{
     245    return "\n" + sprintf(translate("%(buildRateLabel)s %(value)s %(health)s / %(second)s / %(worker)s"), {
     246        "buildRateLabel": g_TooltipTextFormats.header[0] + translate("Build Rate:") + g_TooltipTextFormats.header[1],
     247        "value": Math.round(rate * 10) / 10,
     248        "health": g_TooltipTextFormats.unit[0] + translate("health") + g_TooltipTextFormats.unit[1],
     249        "second": g_TooltipTextFormats.unit[0] + translate("second") + g_TooltipTextFormats.unit[1],
     250        "worker": g_TooltipTextFormats.unit[0] + translate("worker") + g_TooltipTextFormats.unit[1]
     251    });
     252}
     253
    243254/**
    244255 * Translates a cost component identifier as they are used internally
    245256 * (e.g. "population", "food", etc.) to proper display names.
  • binaries/data/mods/public/gui/session/selection_details.js

     
    265265    if (entState.repairRate)
    266266        Engine.GetGUIObjectByName("attackAndArmorStats").tooltip += getRepairRateTooltip(entState.repairRate);
    267267
     268    // Build Rate
     269    if (entState.buildRate)
     270        Engine.GetGUIObjectByName("attackAndArmorStats").tooltip += getBuildRateTooltip(entState.buildRate);
     271
    268272    // Icon Tooltip
    269273    let iconTooltip = "";
    270274
  • binaries/data/mods/public/simulation/components/Foundation.js

     
    247247        this.committed = true;
    248248    }
    249249
    250     // Calculate the amount of progress that will be added (where 1.0 = completion)
    251     var cmpCost = Engine.QueryInterface(this.entity, IID_Cost);
    252     var amount = work / cmpCost.GetBuildTime();
    253 
    254250    // Add an appropriate proportion of hitpoints
    255251    var cmpHealth = Engine.QueryInterface(this.entity, IID_Health);
    256252    var maxHealth = cmpHealth.GetMaxHitpoints();
    257     var deltaHP = Math.max(work, Math.min(maxHealth, Math.floor(maxHealth * (amount * this.buildMultiplier))));
     253    var deltaHP = Math.max(work, Math.min(maxHealth, Math.floor(work * this.GetBuildRate() * this.buildMultiplier)));
    258254    if (deltaHP > 0)
    259     {
    260255        cmpHealth.Increase(deltaHP);
    261     }
    262256
    263257    var progress = this.GetBuildProgress();
    264258
     
    344338    }
    345339};
    346340
     341Foundation.prototype.GetBuildRate = function()
     342{
     343    let cmpHealth = Engine.QueryInterface(this.entity, IID_Health);
     344    let cmpCost = Engine.QueryInterface(this.entity, IID_Cost);
     345    let buildRate = cmpHealth.GetMaxHitpoints() / cmpCost.GetBuildTime();
     346    return buildRate;
     347};
     348
    347349Engine.RegisterComponentType(IID_Foundation, "Foundation", Foundation);
    348350
  • binaries/data/mods/public/simulation/components/GuiInterface.js

     
    405405        "turretParent":null,
    406406        "promotion": null,
    407407        "repairRate": null,
     408        "buildRate": null,
    408409        "resourceDropsite": null,
    409410        "resourceGatherRates": null,
    410411        "resourceSupply": null,
     
    489490    if (cmpRepairable)
    490491        ret.repairRate = cmpRepairable.GetRepairRate();
    491492
     493    let cmpFoundation = Engine.QueryInterface(ent, IID_Foundation);
     494    if (cmpFoundation)
     495        ret.buildRate = cmpFoundation.GetBuildRate();
     496
    492497    let cmpResourceSupply = QueryMiragedInterface(ent, IID_ResourceSupply);
    493498    if (cmpResourceSupply)
    494499        ret.resourceSupply = {
  • binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js

     
    513513    turretParent: null,
    514514    promotion: null,
    515515    repairRate: null,
     516    buildRate: null,
    516517    resourceDropsite: null,
    517518    resourceGatherRates: null,
    518519    resourceSupply: null,