NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Tiberium Alliances Repair Time Of Death // @version 1.0.1 // @namespace https://openuserjs.org/users/petui // @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html // @author petui // @description Displays how much offense repair time a dead base had at the time of death // @include http*://prodgame*.alliances.commandandconquer.com/*/index.aspx* // @updateURL https://openuserjs.org/meta/petui/Tiberium_Alliances_Repair_Time_Of_Death.meta.js // ==/UserScript== 'use strict'; (function() { var main = function() { 'use strict'; function createRepairTimeOfDeath() { console.log('RepairTimeOfDeath loaded'); qx.Class.define('RepairTimeOfDeath', { type: 'singleton', extend: qx.core.Object, members: { offenseRepairTimeLabel: null, initialize: function() { this.initializeHacks(); this.initializeUserInterface(); webfrontend.gui.region.RegionGhostStatusInfo.getInstance().addListener('appear', this.onRegionGhostStatusInfoAppear, this); }, initializeHacks: function() { if (typeof webfrontend.gui.region.RegionGhostStatusInfo.prototype.getObject !== 'function') { var source = webfrontend.gui.region.RegionGhostStatusInfo.prototype.setObject.toString(); var objectMemberName = source.match(/^function \(([A-Za-z]+)\)\{.*this\.([A-Za-z_]+)=\1;/)[2]; /** * @returns {ClientLib.Vis.Region.RegionGhostCity} */ webfrontend.gui.region.RegionGhostStatusInfo.prototype.getObject = function() { return this[objectMemberName]; }; } }, initializeUserInterface: function() { var container = new qx.ui.container.Composite(new qx.ui.layout.HBox(2)); container.add(new qx.ui.basic.Image('webfrontend/ui/icons/icn_repair_off_points.png').set({ alignY: 'middle', AutoFlipH: false, toolTipText: qx.core.Init.getApplication().tr('tnf:offense repair time') })); container.add(this.offenseRepairTimeLabel = new qx.ui.basic.Label().set({ alignY: 'middle', maxWidth: 370, rich: true, textColor: 'text-region-value', wrap: true })); var regionGhostStatusInfo = webfrontend.gui.region.RegionGhostStatusInfo.getInstance(); regionGhostStatusInfo.addAt(container, regionGhostStatusInfo.getChildren().length - 2); }, onRegionGhostStatusInfoAppear: function() { var cityId = webfrontend.gui.region.RegionGhostStatusInfo.getInstance().getObject().get_Id(); var city = ClientLib.Data.MainData.GetInstance().get_Cities().GetCity(cityId); var stepOfDeath = city.GetResourceData(ClientLib.Base.EResourceType.RepairChargeBase).Step; var repairCharge = city.get_RepairOffenseResources().get_RepairChargeOffense(); var repairTimeAtDeath = ClientLib.Base.Resource.GetResourceCountStep(repairCharge, stepOfDeath); var time = ClientLib.Data.MainData.GetInstance().get_Time(); this.offenseRepairTimeLabel.setValue(qx.core.Init.getApplication().tr('tnf:offense repair time') + ': ' + phe.cnc.Util.getTimespanString(time.GetTimeSpan(repairTimeAtDeath)) + ' / ' + phe.cnc.Util.getTimespanString(time.GetTimeSpan(repairCharge.Max)) ); } } }); } function waitForGame() { try { if (typeof qx !== 'undefined' && qx.core.Init.getApplication() && qx.core.Init.getApplication().initDone) { createRepairTimeOfDeath(); RepairTimeOfDeath.getInstance().initialize(); } else { setTimeout(waitForGame, 1000); } } catch (e) { console.log('RepairTimeOfDeath: ', e.toString()); } } setTimeout(waitForGame, 1000); }; var script = document.createElement('script'); script.innerHTML = '(' + main.toString() + ')();'; script.type = 'text/javascript'; document.getElementsByTagName('head')[0].appendChild(script); })();