Ticket #3395: ticket3395unitactions_5.diff

File ticket3395unitactions_5.diff, 9.1 KB (added by bb, 8 years ago)

unhunking previous patch

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

     
    157157    else
    158158        var rateLabel = txtFormats.header[0] + translate("Rate:") + txtFormats.header[1];
    159159
    160     for (var type in template.attack)
     160    for (let type in template.attack)
    161161    {
    162162        if (type == "Slaughter")
    163163            continue; // Slaughter is not a real attack, so do not show it.
     
    225225    return attacks.join("\n");
    226226}
    227227
     228function getRepairRatioTooltip(ratio)
     229{
     230    var unit = sprintf(translate("%(health)s / %(second)s / %(worker)s"), {
     231                health: txtFormats.unit[0] + translate("Health") + txtFormats.unit[1],
     232                second: txtFormats.unit[0] + translate("second") + txtFormats.unit[1],
     233                worker: txtFormats.unit[0] + translate("worker") + txtFormats.unit[1]
     234            });
     235
     236    return "\n" + sprintf(translate("%(repairRateLabel)s %(detail)s %(unit)s"), {
     237                repairRateLabel: txtFormats.header[0] + translate("Repair Rate:") + txtFormats.header[1],
     238                detail: ratio,
     239                unit: unit
     240            });
     241}
     242
    228243/**
    229244 * Translates a cost component identifier as they are used internally
    230245 * (e.g. "population", "food", etc.) to proper display names.
  • binaries/data/mods/public/gui/session/selection_details.js

     
    255255    var armorString = getArmorTooltip(entState.armour);
    256256
    257257    // Attack and Armor
    258     if ("attack" in entState && entState.attack)
     258    if (entState.attack)
    259259        Engine.GetGUIObjectByName("attackAndArmorStats").tooltip = getAttackTooltip(entState) + "\n" + armorString;
    260260    else
    261261        Engine.GetGUIObjectByName("attackAndArmorStats").tooltip = armorString;
    262262
     263    // Repair Rate
     264    if (entState.repairRatio)
     265        Engine.GetGUIObjectByName("attackAndArmorStats").tooltip += getRepairRatioTooltip(entState.repairRatio);
     266
    263267    // Icon Tooltip
    264268    var iconTooltip = "";
    265269
  • binaries/data/mods/public/gui/session/unit_actions.js

     
    677677                    count += state.garrisonHolder.entities.length;
    678678            }
    679679            return {
    680                 "tooltip": translate("Unload All"),
     680                "tooltip": '[font="sans-bold-16"]' + translate("Unload All") + "[/font]\n" + translate("Release all garrisoned units"),
    681681                "icon": "garrison-out.png",
    682682                "count": count,
    683683            };
     
    708708                   
    709709
    710710            return {
    711                 "tooltip": translate("Delete"),
     711                "tooltip": '[font="sans-bold-16"]' + translate("Delete") + "[/font]\n" + translate("Destroy everything selected"),
    712712                "icon": "kill_small.png"
    713713            };
    714714        },
     
    734734            if (!entState.unitAI)
    735735                return false;
    736736            return {
    737                 "tooltip": translate("Stop"),
     737                "tooltip": '[font="sans-bold-16"]' + translate("Stop") + "[/font]\n" + translate("Cancel all existing orders"),
    738738                "icon": "stop.png"
    739739            };
    740740        },
     
    752752            if (!entState.unitAI || entState.turretParent)
    753753                return false;
    754754            return {
    755                 "tooltip": translate("Garrison"),
     755                "tooltip": '[font="sans-bold-16"]' + translate("Garrison") + "[/font]\n" + translate("Lock selected units inside and shoot arrows from warships and defensive buildings"),
    756756                "icon": "garrison.png"
    757757            };
    758758        },
     
    773773            if (!p.garrisonHolder || p.garrisonHolder.entities.indexOf(entState.id) == -1)
    774774                return false;
    775775            return {
    776                 "tooltip": translate("Unload"),
     776                "tooltip": '[font="sans-bold-16"]' + translate("Unload") + "[/font]\n" + translate("Release one unit"),
    777777                "icon": "garrison-out.png"
    778778            };
    779779        },
     
    789789            if (!entState.builder)
    790790                return false;
    791791            return {
    792                 "tooltip": translate("Repair"),
     792                "tooltip": '[font="sans-bold-16"]' + translate("Repair") + "[/font]\n" + translate("Restore health, rate depends on structure"),
    793793                "icon": "repair.png"
    794794            };
    795795        },
     
    806806            if (!entState.rallyPoint)
    807807                return false;
    808808            return {
    809                 "tooltip": translate("Focus on Rally Point"),
     809                "tooltip": '[font="sans-bold-16"]' + translate("Focus on Rally Point") + "[/font]\n" + translate("Move camera to entity"),
    810810                "icon": "focus-rally.png"
    811811            };
    812812        },
     
    829829            if (!entState.unitAI || !entState.unitAI.hasWorkOrders)
    830830                return false;
    831831            return {
    832                 "tooltip": translate("Back to Work"),
     832                "tooltip": '[font="sans-bold-16"]' + translate("Back to Work") + "[/font]\n" + translate("Order unit the last given task"),
    833833                "icon": "production.png"
    834834            };
    835835        },
     
    845845            if (!entState.unitAI || !entState.unitAI.canGuard || entState.unitAI.isGuarding)
    846846                return false;
    847847            return {
    848                 "tooltip": translate("Guard"),
     848                "tooltip": '[font="sans-bold-16"]' + translate("Guard") + "[/font]\n" + translate("Follow another entity, repair/heal it and protect when attacked"),
    849849                "icon": "add-guard.png"
    850850            };
    851851        },
     
    862862            if (!entState.unitAI || !entState.unitAI.isGuarding)
    863863                return false;
    864864            return {
    865                 "tooltip": translate("Remove guard"),
     865                "tooltip": '[font="sans-bold-16"]' + translate("Remove guard") +"[/font]\n" + translate("Stop guarding"),
    866866                "icon": "remove-guard.png"
    867867            };
    868868        },
     
    913913                }
    914914            }
    915915            return {
    916                 "tooltip": translate("Unload All"),
     916                "tooltip": '[font="sans-bold-16"]' + translate("Unload All") + "[/font]\n" + translate("Release all garrisoned units"),
    917917                "icon": "garrison-out.png",
    918918                "count": count,
    919919            };
  • binaries/data/mods/public/simulation/components/GuiInterface.js

     
    342342   
    343343    var cmpOwnership = Engine.QueryInterface(ent, IID_Ownership);
    344344    if (cmpOwnership)
    345     {
    346345        ret.player = cmpOwnership.GetOwner();
    347     }
    348346
    349347    var cmpRallyPoint = Engine.QueryInterface(ent, IID_RallyPoint);
    350348    if (cmpRallyPoint)
    351     {
    352349        ret.rallyPoint = {'position': cmpRallyPoint.GetPositions()[0]}; // undefined or {x,z} object
    353     }
    354350
    355351    var cmpGarrisonHolder = Engine.QueryInterface(ent, IID_GarrisonHolder);
    356352    if (cmpGarrisonHolder)
     
    432428        "obstruction": null,
    433429        "turretParent":null,
    434430        "promotion": null,
     431        "repairTime": null,
    435432        "resourceDropsite": null,
    436433        "resourceGatherRates": null,
    437434        "resourceSupply": null,
     
    488485
    489486    var cmpArmour = Engine.QueryInterface(ent, IID_DamageReceiver);
    490487    if (cmpArmour)
    491     {
    492488        ret.armour = cmpArmour.GetArmourStrengths();
    493     }
    494489
    495490    var cmpAuras = Engine.QueryInterface(ent, IID_Auras);
    496491    if (cmpAuras)
    497     {
    498492        ret.auras = cmpAuras.GetDescriptions();
    499     }
    500493
    501494    var cmpBuildingAI = Engine.QueryInterface(ent, IID_BuildingAI);
    502495    if (cmpBuildingAI)
     
    522515    if (cmpPosition && cmpPosition.GetTurretParent() != INVALID_ENTITY)
    523516        ret.turretParent = cmpPosition.GetTurretParent();
    524517
     518    var cmpRepairable = Engine.QueryInterface(ent, IID_Repairable);
     519        if (cmpRepairable)
     520            ret.repairRatio = cmpRepairable.GetRepairRatio();
     521
    525522    var cmpResourceSupply = QueryMiragedInterface(ent, IID_ResourceSupply);
    526523    if (cmpResourceSupply)
    527524    {
     
    538535
    539536    var cmpResourceGatherer = Engine.QueryInterface(ent, IID_ResourceGatherer);
    540537    if (cmpResourceGatherer)
    541     {
    542538        ret.resourceGatherRates = cmpResourceGatherer.GetGatherRates();
    543     }
    544539   
    545540    var cmpResourceDropsite = Engine.QueryInterface(ent, IID_ResourceDropsite);
    546541    if (cmpResourceDropsite)
  • binaries/data/mods/public/simulation/components/Repairable.js

     
    7474        Engine.PostMessage(this.entity, MT_ConstructionFinished, { "entity": this.entity, "newentity": this.entity });
    7575};
    7676
     77Repairable.prototype.GetRepairRatio = function()
     78{
     79    let cmpHealth = Engine.QueryInterface(this.entity, IID_Health);
     80    let cmpCost = Engine.QueryInterface(this.entity, IID_Cost);
     81    let repairTime = this.repairTimeRatio * cmpCost.GetBuildTime();
     82    let repairRatio = (cmpHealth.GetMaxHitpoints() / repairTime);
     83    return (Math.round(repairRatio * 10 ) / 10);
     84};
     85
    7786Engine.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,
    513514    resourceDropsite: null,
    514515    resourceGatherRates: null,
    515516    resourceSupply: null,