您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Based on Maelstrom Dev Tools. Repair Time label, Resource labels, fixed compact.
// ==UserScript== // @name C&C Tiberium Alliances Info Sticker (Compact) // @namespace TAInfoSticker // @version 1.11.10 // @description Based on Maelstrom Dev Tools. Repair Time label, Resource labels, fixed compact. // @include http*://prodgame*.alliances.commandandconquer.com/*/index.aspx* // @author unicode *edited by Allwar* // ==/UserScript== (function () { var InfoSticker_main = function () { try { function createInfoSticker() { console.log('InfoSticker loaded'); // define Base qx.Class.define('InfoSticker.Base', { type: 'singleton', extend: qx.core.Object, members: { /* Desktop */ dataTimerInterval: 1000, positionInterval: 500, tibIcon: null, cryIcon: null, powIcon: null, creditIcon: null, repairIcon: null, hasStorage: false, initialize: function () { try { this.hasStorage = 'localStorage' in window && window['localStorage'] !== null; } catch (se) { } try { var fileManager = ClientLib.File.FileManager.GetInstance(); this.tibIcon = fileManager.GetPhysicalPath('ui/common/icn_res_tiberium.png');// this.cryIcon = fileManager.GetPhysicalPath('ui/common/icn_res_chrystal.png'); this.powIcon = fileManager.GetPhysicalPath('ui/common/icn_res_power.png'); this.creditIcon = fileManager.GetPhysicalPath('ui/common/icn_res_dollar.png'); this.repairIcon = fileManager.GetPhysicalPath('ui/icons/icn_repair_off_points.png'); if (typeof phe.cnc.Util.attachNetEvent == 'undefined') this.attachEvent = webfrontend.gui.Util.attachNetEvent; else this.attachEvent = phe.cnc.Util.attachNetEvent; this.runMainTimer(); } catch (e) { console.log('InfoSticker.initialize: ', e.toString()); } }, runMainTimer: function () { try { var self = this; this.calculateInfoData(); window.setTimeout(function () { self.runMainTimer(); }, this.dataTimerInterval); } catch (e) { console.log('InfoSticker.runMainTimer: ', e.toString()); } }, runPositionTimer: function () { try { var self = this; this.repositionSticker(); window.setTimeout(function () { self.runPositionTimer(); }, this.positionInterval); } catch (e) { console.log('InfoSticker.runPositionTimer: ', e.toString()); } }, infoSticker: null, mcvPopup: null, mcvTimerLabel: null, mcvInfoLabel: null, mcvPane: null, repairPopup: null, repairTimerLabel: null, resourcePane: null, resourceHidden: false, resourceTitleLabel: null, resourceHideButton: null, resourceLabel1: null, resourceLabel2: null, resourceLabel3: null, resourceLabel1per: null, resourceLabel2per: null, resourceLabel3per: null, productionTitleLabel: null, productionLabelPower: null, productionLabelCredit: null, repairInfoLabel: null, lastButton: null, top_image: null, bot_image: null, toFlipH: [ ], pinButton: null, pinned: false, pinTop: 130, pinButtonDecoration: null, pinPane: null, pinIconFix: false, lockButton: null, locked: false, lockButtonDecoration: null, lockPane: null, lockIconFix: false, mcvHide: false, repairHide: false, resourceHide: false, productionHide: false, contProductionHide: false, costHide: false, DEFcostHide: false, stickerBackground: null, mcvPane: null, pinLockPos: 0, attachEvent: function () { }, isNull: function (e) { return typeof e == 'undefined' || e == null; }, getApp: function () { return qx.core.Init.getApplication(); }, getBaseListBar: function () { var app = this.getApp(); var b; if (!this.isNull(app)) { b = app.getBaseNavigationBar(); if (!this.isNull(b)) { if (b.getChildren().length > 0) { b = b.getChildren() [0]; if (b.getChildren().length > 0) { b = b.getChildren() [0]; return b; } } } } return null; }, repositionSticker: function () { try { var i; if (this.infoSticker && !this.mcvInfoLabel.isDisposed() && !this.mcvPopup.isDisposed()) { var dele; try { if (this.top_image != null) { dele = this.top_image.getContentElement().getDomElement(); if (dele != null) { dele.style['-moz-transform'] = 'scaleY(-1)'; dele.style['-o-transform'] = 'scaleY(-1)'; dele.style['-webkit-transform'] = 'scaleY(-1)'; dele.style.transform = 'scaleY(-1)'; dele.style.filter = 'FlipV'; dele.style['-ms-filter'] = 'FlipV'; this.top_image = null; } } /*for (i = this.toFlipH.length - 1; i >= 0; i--) { var e = this.toFlipH[i]; if (e.isDisposed()) this.toFlipH.splice(i, 1); else { dele = e.getDecoratorElement().getDomElement(); if (dele != null) { dele.style['-moz-transform'] = 'scaleX(-1)'; dele.style['-o-transform'] = 'scaleX(-1)'; dele.style['-webkit-transform'] = 'scaleX(-1)'; dele.style.transform = 'scaleX(-1)'; dele.style.filter = 'FlipH'; dele.style['-ms-filter'] = 'FlipH'; this.toFlipH.splice(i, 1); } } }*/ } catch (e2) { console.log('Error flipping images.', e2.toString()); } var baseListBar = this.getBaseListBar(); if (baseListBar != null) { var baseCont = baseListBar.getChildren(); for (i = 0; i < baseCont.length; i++) { var baseButton = baseCont[i]; if (typeof baseButton.getBaseId === 'function') { if (baseButton.getBaseId() == ClientLib.Data.MainData.GetInstance().get_Cities().get_CurrentOwnCity().get_Id() && baseButton.getBounds() != null && baseButton.getBounds().top != null) { //var baseButtonDecorator = baseButton.getDecorator(); //if (baseButton!=this.mcvPopup && baseButtonDecorator != null && typeof baseButtonDecorator === "string" && baseButton.getBounds() != null && baseButton.getBounds().top!=null) { //if (baseButtonDecorator.indexOf("focused") >= 0 || baseButtonDecorator.indexOf("pressed") >= 0) { if (this.locked) { if (!this.pinned) { if (baseListBar.indexOf(this.mcvPopup) >= 0) { baseListBar.remove(this.mcvPopup); } this.pinLockPos = baseListBar.indexOf(baseButton) + 1; baseListBar.addAt(this.mcvPopup, this.pinLockPos); } else if (baseListBar.indexOf(this.mcvPopup) < 0) { baseListBar.addAt(this.mcvPopup, Math.max(0, Math.min(this.pinLockPos, baseCont.length))); } } else { if (baseListBar.indexOf(this.mcvPopup) >= 0) { baseListBar.remove(this.mcvPopup); } if (!this.pinned) { var top = baseButton.getBounds().top; var infoTop; try { var stickerHeight = this.infoSticker.getContentElement().getDomElement().style.height; stickerHeight = stickerHeight.substring(0, stickerHeight.indexOf('px')); infoTop = Math.min(130 + top, Math.max(660, window.innerHeight) - parseInt(stickerHeight, 10) - 130); } catch (heighterror) { infoTop = 130 + top; } if (this.infoSticker.getContentElement().getDomElement() != null) this.infoSticker.setDomTop(infoTop); this.pinTop = infoTop; } } break; } } } } } } catch (ex) { console.log('InfoSticker.repositionSticker: ', ex.toString()); } }, toLock: function (e) { try { this.locked = !this.locked; if (!this.locked) { this.infoSticker.show(); this.stickerBackground.add(this.mcvPopup); } else this.infoSticker.hide(); this.lockButton.setIcon(this.locked ? 'FactionUI/icons/icn_thread_locked_active.png' : 'FactionUI/icons/icn_thread_locked_inactive.png'); this.updateLockButtonDecoration(); if (this.hasStorage) { if (this.locked) { localStorage['infoSticker-locked'] = 'true'; if (this.pinned) localStorage['infoSticker-pinLock'] = this.pinLockPos.toString(); } else { localStorage['infoSticker-locked'] = 'false'; } } if (this.locked && this.pinned) { this.menuUpButton.setEnabled(true); this.menuDownButton.setEnabled(true); } else { this.menuUpButton.setEnabled(false); this.menuDownButton.setEnabled(false); } this.repositionSticker(); } catch (e) { console.log('InfoSticker.toLock: ', e.toString()); } }, updateLockButtonDecoration: function () { var light = '#CDD9DF'; var mid = '#9CA4A8'; var dark = '#cddfd8'; //lock color this.lockPane.setDecorator(null); this.lockButtonDecoration = new qx.ui.decoration.Background(); this.lockButtonDecoration.setBackgroundColor(this.locked ? dark : light); this.lockPane.setDecorator(this.lockButtonDecoration); }, toPin: function (e) { try { this.pinned = !this.pinned; this.pinButton.setIcon(this.pinned ? 'FactionUI/icons/icn_thread_pin_active.png' : 'FactionUI/icons/icn_thread_pin_inactive.png'); this.updatePinButtonDecoration(); if (this.hasStorage) { if (this.pinned) { localStorage['infoSticker-pinned'] = 'true'; localStorage['infoSticker-top'] = this.pinTop.toString(); if (this.locked) { localStorage['infoSticker-pinLock'] = this.pinLockPos.toString(); } } else { localStorage['infoSticker-pinned'] = 'false'; } } if (this.locked && this.pinned) { this.menuUpButton.setEnabled(true); this.menuDownButton.setEnabled(true); } else { this.menuUpButton.setEnabled(false); this.menuDownButton.setEnabled(false); } } catch (e) { console.log('InfoSticker.toPin: ', e.toString()); } }, updatePinButtonDecoration: function () { var light = '#CDD9DF'; var mid = '#9CA4A8'; var dark = '#cddfd8'; //lock color this.pinPane.setDecorator(null); this.pinButtonDecoration = new qx.ui.decoration.Background().set({ //innerOpacity: 0.5 }); //this.pinButtonDecoration.setInnerColor(this.pinned ? mid : light); //this.pinButtonDecoration.setOuterColor(this.pinned ? light : mid); this.pinButtonDecoration.setBackgroundColor(this.pinned ? dark : light); this.pinPane.setDecorator(this.pinButtonDecoration); }, hideResource: function () { try { //if(this.resourceHidden) if (this.resourcePane.isVisible()) { //this.resourcePane.hide(); this.resourcePane.exclude(); this.resourceHideButton.setLabel('+'); } else { this.resourcePane.show(); this.resourceHideButton.setLabel('-'); } } catch (e) { console.log('InfoSticker.hideResource: ', e.toString()); } }, lastPane: null, createSection: function (parent, titleLabel, visible, visibilityStorageName) { try { var pane = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({ //padding: [5, 0, 5, 5], width: 124, decorator: new qx.ui.decoration.Background().set({ backgroundImage: 'decoration/pane_messaging_item/messaging_items_pane.png', ///картинка фон backgroundRepeat: 'scale', }), alignX: 'right' }); var labelStyle = { font: qx.bom.Font.fromString('normal').set({ size: 14 }), textColor: '#550d10' }; titleLabel.set(labelStyle); var hidePane = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({ width: 130, alignX: 'right' }); var hideButton = new qx.ui.form.Button('-').set({ //decorator: new qx.ui.decoration.Single(1, "solid", "black"), maxWidth: 25, maxHeight: 17, textColor: '#ffbdd3' //Button }); var self = this; //resourceHideButton.addListener("execute", this.hideResource, this); hideButton.addListener('execute', function () { if (hidePane.isVisible()) { hidePane.exclude(); hideButton.setLabel('+'); } else { hidePane.show(); hideButton.setLabel('-'); } if (self.hasStorage) localStorage['infoSticker-' + visibilityStorageName] = !hidePane.isVisible(); }); var titleBar = new qx.ui.container.Composite(new qx.ui.layout.HBox(0)); titleBar.add(hideButton); titleBar.add(titleLabel); pane.add(titleBar); pane.add(hidePane); if (!visible) hidePane.exclude(); this.toFlipH.push(pane); this.lastPane = pane; parent.add(pane); return hidePane; } catch (e) { console.log('InfoSticker.createSection: ', e.toString()); throw e; } }, createHBox: function (ele1, ele2, ele3) { var cnt; cnt = new qx.ui.container.Composite(); cnt.setLayout(new qx.ui.layout.HBox(0)); if (ele1 != null) { cnt.add(ele1); ele1.setAlignY('middle'); } if (ele2 != null) { cnt.add(ele2); ele2.setAlignY('bottom'); } if (ele3 != null) { cnt.add(ele3); ele3.setAlignY('bottom'); } return cnt; }, formatCompactTime: function (time) { var comps = time.split(':'); var i = 0; var value = Math.round(parseInt(comps[i], 10)).toString(); var len = comps.length; while (value == 0) { value = Math.round(parseInt(comps[++i], 10)).toString(); len--; } var unit; switch (len) { case 1: unit = 's'; break; case 2: unit = 'm'; break; case 3: unit = 'h'; break; case 4: unit = 'd'; break; } return value + unit; }, createImage: function (icon) { var image = new qx.ui.basic.Image(icon); image.setScale(true); image.setWidth(20); image.setHeight(20); return image; }, createMCVPane: function () { try { this.mcvInfoLabel = new qx.ui.basic.Label(); this.mcvTimerLabel = new qx.ui.basic.Label().set({ font: qx.bom.Font.fromString('bold').set({ size: 18 }), textColor: '#282828', height: 20, width: 114, textAlign: 'center' }); this.mcvTimerCreditProdLabel = new qx.ui.basic.Label().set({ font: qx.bom.Font.fromString('normal').set({ size: 12 }), textColor: '#282828', height: 20, width: 114, textAlign: 'center', marginTop: 4, marginBottom: - 4 }); this.mcvTimerRPPercLabel = new qx.ui.basic.Label().set({ font: qx.bom.Font.fromString('normal').set({ size: 14 }), textColor: '#282828', height: 20, width: 114, textAlign: 'center', }); //var app = qx.core.Init.getApplication(); //var b3 = app.getBaseNavigationBar().getChildren() [0].getChildren() [0]; //var pane = this.createSection(b3, this.mcvInfoLabel, !this.mcvHide, 'mcvHide'); //pane.add(this.mcvTimerLabel); //123 //pane.add(this.mcvTimerCreditProdLabel); //123 //pane.add(this.mcvTimerRPPercLabel); //123 //this.mcvPane = this.lastPane; //this.lastPane.setMarginLeft(7); } catch (e) { console.log('InfoSticker.createMCVPopup', e.toString()); } }, moveStickerUp: function () { try { var baseListBar = this.getBaseListBar(); this.pinLockPos = Math.max(0, this.pinLockPos - 1); if (baseListBar.indexOf(this.mcvPopup) >= 0) { baseListBar.remove(this.mcvPopup); } if (this.hasStorage) { localStorage['infoSticker-pinLock'] = this.pinLockPos.toString(); } } catch (e) { console.log('InfoSticker.moveStickerUp', e.toString()); } }, moveStickerDown: function () { try { var baseListBar = this.getBaseListBar(); this.pinLockPos = Math.min(baseListBar.getChildren().length, this.pinLockPos + 1); if (baseListBar.indexOf(this.mcvPopup) >= 0) { baseListBar.remove(this.mcvPopup); } if (this.hasStorage) { localStorage['infoSticker-pinLock'] = this.pinLockPos.toString(); } } catch (e) { console.log('InfoSticker.moveStickerDown', e.toString()); } }, menuUpButton: null, menuDownButton: null, createMCVPopup: function () { try { var self = this; this.mcvPopup = new qx.ui.container.Composite(new qx.ui.layout.VBox().set({ spacing: 3 })).set({ paddingLeft: 5, width: 105, decorator: new qx.ui.decoration.Background() }); var menu = new qx.ui.menu.Menu(); var menuPinButton = new qx.ui.menu.Button('Pin', 'FactionUI/icons/icn_thread_pin_inactive.png'); menuPinButton.addListener('execute', this.toPin, this); menu.add(menuPinButton); var menuLockButton = new qx.ui.menu.Button('Lock', 'FactionUI/icons/icn_thread_locked_inactive.png'); menuLockButton.addListener('execute', this.toLock, this); menu.add(menuLockButton); var fileManager = ClientLib.File.FileManager.GetInstance(); this.menuUpButton = new qx.ui.menu.Button('Move up', fileManager.GetPhysicalPath('ui/icons/icon_tracker_arrow_up.png')); //ui/icons/icon_tracker_arrow_up.png ui/gdi/icons/cht_opt_arrow_down.png this.menuUpButton.addListener('execute', this.moveStickerUp, this); menu.add(this.menuUpButton); this.menuDownButton = new qx.ui.menu.Button('Move down', fileManager.GetPhysicalPath('ui/icons/icon_tracker_arrow_down.png')); this.menuDownButton.addListener('execute', this.moveStickerDown, this); menu.add(this.menuDownButton); this.mcvPopup.setContextMenu(menu); if (!this.locked) { this.stickerBackground.add(this.mcvPopup); } ////////////////////////////---------------------------------------------------------- this.pinButton = new webfrontend.ui.SoundButton().set({ decorator: 'button-forum-light', icon: this.pinned ? 'FactionUI/icons/icn_thread_pin_active.png' : 'FactionUI/icons/icn_thread_pin_inactive.png', iconPosition: 'top', show: 'icon', cursor: 'pointer', height: 23, width: 50, maxWidth: 28, maxHeight: 25, alignX: 'center' }); this.pinButton.addListener('execute', this.toPin, this); this.pinPane = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({ //width: 50, maxWidth: 37, }); this.updatePinButtonDecoration(); this.pinPane.setDecorator(this.pinButtonDecoration); this.pinPane.add(this.pinButton); //this.mcvPopup.add(this.pinPane); //this.toFlipH.push(this.pinPane); var icon = this.pinButton.getChildControl('icon'); icon.setWidth(15); icon.setHeight(15); icon.setScale(true); ////////////////////////////---------------------------------------------------------- this.lockButton = new webfrontend.ui.SoundButton().set({ decorator: 'button-forum-light', icon: this.pinned ? 'FactionUI/icons/icn_thread_locked_active.png' : 'FactionUI/icons/icn_thread_locked_inactive.png', iconPosition: 'top', show: 'icon', cursor: 'pointer', height: 23, width: 50, maxWidth: 28, maxHeight: 25, //icon alignX: 'center' }); this.lockButton.addListener('execute', this.toLock, this); this.lockPane = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({ //width: 50, maxWidth: 37, }); this.updateLockButtonDecoration(); this.lockPane.setDecorator(this.lockButtonDecoration); this.lockPane.add(this.lockButton); //this.mcvPopup.add(this.pinPane); //this.toFlipH.push(this.pinPane); icon = this.lockButton.getChildControl('icon'); icon.setWidth(15); icon.setHeight(15); icon.setScale(true); ////////////////////////////---------------------------------------------------------- this.resourceTitleLabel = new qx.ui.basic.Label(); this.resourceTitleLabel.setValue('Base'); var resStyle = { font: qx.bom.Font.fromString('bold').set({ size: 13 //$ }), textColor: '#282828', height: 20, width: 65, marginLeft: - 10, textAlign: 'right' }; this.resourceLabel1 = new qx.ui.basic.Label().set(resStyle); this.resourceLabel2 = new qx.ui.basic.Label().set(resStyle); this.resourceLabel3 = new qx.ui.basic.Label().set(resStyle); var perStyle = { font: qx.bom.Font.fromString('bold').set({ size: 10 //% }), textColor: '#2129d6', height: 18, width: 33, textAlign: 'right' }; this.resourceLabel1per = new qx.ui.basic.Label().set(perStyle); this.resourceLabel2per = new qx.ui.basic.Label().set(perStyle); this.resourceLabel3per = new qx.ui.basic.Label().set(perStyle); var pane3 = this.createSection(this.mcvPopup, this.resourceTitleLabel, !this.resourceHide, 'resourceHide'); this.repairTimerLabel = new qx.ui.basic.Label().set({ font: qx.bom.Font.fromString('bold').set({ size: 14 }), textColor: '#282828', height: 20, width: 90, marginLeft: 0, textAlign: 'center' }); pane3.add(this.createHBox(this.createImage(this.tibIcon), this.resourceLabel1, this.resourceLabel1per)); pane3.add(this.createHBox(this.createImage(this.cryIcon), this.resourceLabel2, this.resourceLabel2per)); pane3.add(this.createHBox(this.createImage(this.powIcon), this.resourceLabel3, this.resourceLabel3per)); var mcvC = this.mcvPopup.getChildren(); mcvC[mcvC.length - 1].getChildren() [0].add(this.pinPane); mcvC[mcvC.length - 1].getChildren() [0].add(this.lockPane); ////////////////////////////---------------------------------------------------------- this.repairTimeTitleLabel = new qx.ui.basic.Label(); this.repairTimeTitleLabel.setValue('Time Repair'); this.repairTimeStyle = { font: qx.bom.Font.fromString('bold').set({ size: 12 }), textColor: '#282828', height: 20, //size blok width: 90, textAlign: 'center', }; this.repairTimeLabel0 = new qx.ui.basic.Label().set(this.repairTimeStyle); this.repairTimeLabel1 = new qx.ui.basic.Label().set(this.repairTimeStyle); this.repairTimeLabel2 = new qx.ui.basic.Label().set(this.repairTimeStyle); this.repairTimeLabel3 = new qx.ui.basic.Label().set(this.repairTimeStyle); var pane6 = this.createSection(this.mcvPopup, this.repairTimeTitleLabel.set(this.repairTimeStyle), !this.rtHide, 'repairHide'); pane6.add(this.createHBox(this.createImage(this.repairIcon), this.repairTimerLabel)); pane6.add(this.createHBox(this.createImage("ui/icons/icon_res_repair_air.png"), this.repairTimeLabel0)); pane6.add(this.createHBox(this.createImage("ui/icons/icon_res_repair_tnk.png"), this.repairTimeLabel1)); pane6.add(this.createHBox(this.createImage("ui/icons/icon_res_repair_inf.png"), this.repairTimeLabel2)); //pane6.add(this.createHBox(this.createImage(this.repairIcon), this.repairTimeLabel3)); //pane6.add(this.createHBox(this.createImage(this.creditIcon), this.productionLabelCredit)); ////////////////////////////---------------------------------------------------------- this.UnitCostTitleLabel = new qx.ui.basic.Label(); this.UnitCostTitleLabel.setValue('Off Unitcost'); this.UnitCostStyle = { font: qx.bom.Font.fromString('bold').set({ size: 13 }), textColor: '#282828', height: 20, width: 85, textAlign: 'center', marginTop: 2, marginBottom: - 2 }; this.UnitCostLabel0 = new qx.ui.basic.Label().set(this.UnitCostStyle); this.UnitCostLabel1 = new qx.ui.basic.Label().set(this.UnitCostStyle); //this.UnitCostLabel2 = new qx.ui.basic.Label().set(this.UnitCostStyle); var pane7 = this.createSection(this.mcvPopup, this.UnitCostTitleLabel.set(this.UnitCostStyle), !this.costHide, 'costHide'); pane7.add(this.createHBox(this.createImage(this.cryIcon), this.UnitCostLabel0)); pane7.add(this.createHBox(this.createImage(this.powIcon), this.UnitCostLabel1)); //pane7.add(this.createHBox(this.createImage(this.repairIcon), this.UnitCostLabel2)); //pane6.add(this.createHBox(this.createImage(this.creditIcon), this.productionLabelCredit)); ////////////////////////////---------------------------------------------------------- this.DEFUnitCostTitleLabel = new qx.ui.basic.Label(); this.DEFUnitCostTitleLabel.setValue('Def Unitcost'); this.DEFUnitCostStyle = { font: qx.bom.Font.fromString('bold').set({ size: 13 }), textColor: '#282828', height: 20, width: 85, textAlign: 'center', marginTop: 2, marginBottom: - 2 }; this.DEFUnitCostLabel0 = new qx.ui.basic.Label().set(this.DEFUnitCostStyle); this.DEFUnitCostLabel1 = new qx.ui.basic.Label().set(this.DEFUnitCostStyle); this.DEFUnitCostLabel2 = new qx.ui.basic.Label().set(this.DEFUnitCostStyle); var pane8 = this.createSection(this.mcvPopup, this.DEFUnitCostTitleLabel.set(this.DEFUnitCostStyle), !this.DEFcostHide, 'DEFcostHide'); pane8.add(this.createHBox(this.createImage(this.tibIcon), this.DEFUnitCostLabel0)); pane8.add(this.createHBox(this.createImage(this.cryIcon), this.DEFUnitCostLabel1)); pane8.add(this.createHBox(this.createImage(this.powIcon), this.DEFUnitCostLabel2)); //pane7.add(this.createHBox(this.createImage(this.repairIcon), this.UnitCostLabel2)); //pane6.add(this.createHBox(this.createImage(this.creditIcon), this.productionLabelCredit)); ////////////////////////////---------------------------------------------------------- } catch (e) { console.log('InfoSticker: createMCVPopup', e.toString()); } }, currentCityChange: function () { this.calculateInfoData(); this.repositionSticker(); }, disposeRecover: function () { try { if (this.mcvPane.isDisposed()) { this.createMCVPane(); } if (this.mcvPopup.isDisposed()) { this.createMCVPopup(); this.repositionSticker(); } this.waitingRecovery = false; } catch (e) { console.log('InfoSticker: disposeRecover', e.toString()); } }, waitingRecovery: false, citiesChange: function () { try { var self = this; var baseListBar = this.getBaseListBar(); this.disposeRecover(); if (baseListBar.indexOf(this.mcvPopup) >= 0) { baseListBar.remove(this.mcvPopup); this.mcvPopup.dispose(); } if (baseListBar.indexOf(this.mcvPane) >= 0) { baseListBar.remove(this.mcvPane); this.mcvPane.dispose(); } if (!this.waitingRecovery) { this.waitingRecovery = true; window.setTimeout(function () { self.disposeRecover(); }, 10); } } catch (e) { console.log('InfoSticker: citiesChange', e.toString()); } }, calculateInfoData: function () { try { var self = this; var player = ClientLib.Data.MainData.GetInstance().get_Player(); var cw = player.get_Faction(); var cj = ClientLib.Base.Tech.GetTechIdFromTechNameAndFaction(ClientLib.Base.ETechName.Research_BaseFound, cw); var cr = player.get_PlayerResearch(); var cd = cr.GetResearchItemFomMdbId(cj); var app = qx.core.Init.getApplication(); var b3 = app.getBaseNavigationBar().getChildren() [0].getChildren() [0]; if (b3.getChildren().length == 0) return; if (!this.infoSticker) { this.infoSticker = new qx.ui.container.Composite(new qx.ui.layout.VBox().set({ alignX: 'right' })).set({ width: 105, }); var top = 130; if (this.hasStorage) { var l = localStorage['infoSticker-locked'] == 'true'; if (l != null) { this.locked = l; var pl = localStorage['infoSticker-pinLock']; if (pl != null) { try { this.pinLockPos = parseInt(pl, 10); } catch (etm) { } } } var p = localStorage['infoSticker-pinned']; var t = localStorage['infoSticker-top']; if (p != null && t != null) { var tn; try { this.pinned = p == 'true'; if (this.pinned) { tn = parseInt(t, 10); top = tn; } } catch (etn) { } } this.mcvHide = localStorage['infoSticker-mcvHide'] == 'true'; this.repairHide = localStorage['infoSticker-repairHide'] == 'true'; this.rtHide = localStorage['infoSticker-repairHide'] == 'true'; this.costHide = localStorage['infoSticker-costHide'] == 'true'; this.DEFcostHide = localStorage['infoSticker-DEFcostHide'] == 'true'; this.resourceHide = localStorage['infoSticker-resourceHide'] == 'true'; this.productionHide = localStorage['infoSticker-productionHide'] == 'true'; this.contProductionHide = localStorage['infoSticker-contProductionHide'] == 'true'; } app.getDesktop().add(this.infoSticker, { right: 124, top: top }); if (this.locked) { this.infoSticker.hide(); } this.stickerBackground = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({ //paddingLeft: 5, width: 105, decorator: new qx.ui.decoration.Background().set({ backgroundImage: 'webfrontend/ui/common/bgr_region_world_select_scaler.png', backgroundRepeat: 'scale', }) }); this.createMCVPane(); this.createMCVPopup(); if (this.locked && this.pinned) { this.menuUpButton.setEnabled(true); this.menuDownButton.setEnabled(true); } else { this.menuUpButton.setEnabled(false); this.menuDownButton.setEnabled(false); } this.top_image = new qx.ui.basic.Image('webfrontend/ui/common/bgr_region_world_select_end.png'); this.infoSticker.add(this.top_image); this.infoSticker.add(this.stickerBackground); //this.infoSticker.add(this.mcvPopup); this.bot_image = new qx.ui.basic.Image('webfrontend/ui/common/bgr_region_world_select_end.png'); this.infoSticker.add(this.bot_image); this.runPositionTimer(); try { this.attachEvent(ClientLib.Data.MainData.GetInstance().get_Cities(), 'CurrentOwnChange', ClientLib.Data.CurrentOwnCityChange, this, this.currentCityChange); this.attachEvent(ClientLib.Data.MainData.GetInstance().get_Cities(), 'Change', ClientLib.Data.CitiesChange, this, this.citiesChange); } catch (eventError) { console.log('InfoSticker.EventAttach:', eventError); console.log('The script will continue to run, but with slower response speed.'); } } this.disposeRecover(); if (cd == null) { if (this.mcvPopup) { //this.mcvInfoLabel.setValue("MCV ($???)"); this.mcvInfoLabel.setValue('MCV<br>$???'); this.mcvTimerLabel.setValue('Loading'); } } else { var nextLevelInfo = cd.get_NextLevelInfo_Obj(); var resourcesNeeded = [ ]; for (var i in nextLevelInfo.rr) { if (nextLevelInfo.rr[i].t > 0) { resourcesNeeded[nextLevelInfo.rr[i].t] = nextLevelInfo.rr[i].c; } } //var researchNeeded = resourcesNeeded[ClientLib.Base.EResourceType.ResearchPoints]; //var currentResearchPoints = player.get_ResearchPoints(); var creditsNeeded = resourcesNeeded[ClientLib.Base.EResourceType.Gold]; var rpNeeded = resourcesNeeded[ClientLib.Base.EResourceType.ResearchPoints]; var creditsResourceData = player.get_Credits(); var creditGrowthPerHour = (creditsResourceData.Delta + creditsResourceData.ExtraBonusDelta) * ClientLib.Data.MainData.GetInstance().get_Time().get_StepsPerHour(); var currentRP = player.get_ResearchPoints(); var creditTimeLeftInHours = (creditsNeeded - player.GetCreditsCount()) / creditGrowthPerHour; this.mcvInfoLabel.setValue('MCV ($ ' + this.formatNumbersCompact(creditsNeeded) + ')'); //this.mcvInfoLabel.setValue("MCV<br>$" + this.formatNumbersCompact(creditsNeeded)); this.mcvTimerCreditProdLabel.setTextColor(this.formatNumberColor(rpNeeded, currentRP)); if (currentRP / rpNeeded < 1) { this.mcvTimerCreditProdLabel.setValue('RP ' + this.formatNumbersCompact(rpNeeded - currentRP) + ' needed'); this.mcvTimerRPPercLabel.setValue('need ' + this.formatNumbersCompact(Math.round(100 - (currentRP / rpNeeded) * 100)) + '% more'); } else { this.mcvTimerCreditProdLabel.setValue('RP ' + this.formatNumbersCompact((rpNeeded - currentRP) * - 1) + ' not needed'); this.mcvTimerRPPercLabel.setValue('need ' + this.formatNumbersCompact(Math.round((currentRP / rpNeeded) * 100)-100) + '% less'); } if ((creditTimeLeftInHours <= 0) && ((currentRP / rpNeeded) >= 1)) { this.mcvTimerLabel.setValue('Ready'); } else if (creditGrowthPerHour == 0) { this.mcvTimerLabel.setValue('Never'); } else if ((creditTimeLeftInHours <= 0) && ((currentRP / rpNeeded) <= 1)) { this.mcvTimerLabel.setValue('Need RP!!!'); } else { if (creditTimeLeftInHours >= 24 * 100) { this.mcvTimerLabel.setValue('> 99 days'); } else { this.mcvTimerLabel.setValue(this.FormatTimespan(creditTimeLeftInHours * 60 * 60)); } } } var ncity = ClientLib.Data.MainData.GetInstance().get_Cities().get_CurrentOwnCity(); if (ncity == null) { if (this.mcvPopup) { this.repairTimerLabel.setValue('Select a base'); this.repairTimeLabel0.setValue('Select a base'); this.repairTimeLabel1.setValue('Select a base'); this.repairTimeLabel2.setValue('Select a base'); this.repairTimeLabel3.setValue('Select a base'); this.resourceLabel1.setValue('N/A'); this.resourceLabel2.setValue('N/A'); this.resourceLabel3.setValue('N/A'); this.UnitCostLabel0.setValue('N/A'); this.UnitCostLabel1.setValue('N/A'); //this.UnitCostLabel2.setValue("N/A"); } } else { //console.log(ncity.get_CommandCenterLevel()); //var HQ = ncity.GetBuildingTypeMaxLvlByTechName(ClientLib.Base.ETechName.Defense_HQ); //console.log(ClientLib.API.Defense.GetInstance().GetUpgradeCostsForAllUnitsToLevel(ncity.GetBuildingTypeMaxLvlByTechName(ClientLib.Base.ETechName.Defense_HQ))[0].Type, ClientLib.Base.EResourceType.Tiberium, ClientLib.Base.EResourceType.Crystal, ClientLib.Base.EResourceType.Power ); var DEFtibCost = 0; var DEFcryCost = 0; var DEFpowCost = 0; var cryCost = 0; var powCost = 0; var cost = ClientLib.API.Defense.GetInstance().GetUpgradeCostsForAllUnitsToLevel(ncity.GetBuildingTypeMaxLvlByTechName(ClientLib.Base.ETechName.Defense_HQ)); if (cost != null) { //console.log(ClientLib.API.Defense.GetInstance().GetUpgradeCostsForAllUnitsToLevel(ncity.GetBuildingTypeMaxLvlByTechName(ClientLib.Base.ETechName.Defense_HQ))[0].Type, ClientLib.Base.EResourceType.Tiberium, ClientLib.Base.EResourceType.Crystal, ClientLib.Base.EResourceType.Power ); if (cost[0].Type == ClientLib.Base.EResourceType.Crystal) { DEFcryCost = cost[0].Count; //DEFpowCost = cost[1].Count; } else if (cost[0].Type == ClientLib.Base.EResourceType.Tiberium) { DEFtibCost = cost[0].Count; if (cost[1].Type == ClientLib.Base.EResourceType.Crystal) { DEFcryCost = cost[1].Count; } } if (cost[1].Type == ClientLib.Base.EResourceType.Power) { DEFpowCost = cost[1].Count; } else if (cost[2] !== undefined && cost[2].Type == ClientLib.Base.EResourceType.Power) { DEFpowCost = cost[2].Count; } //console.log(HQ, ClientLib.API.Defense.GetInstance().GetUpgradeCostsForAllUnitsToLevel(ncity.GetBuildingTypeMaxLvlByTechName(ClientLib.Base.ETechName.Defense_HQ)), DEFpowCost); this.DEFUnitCostLabel0.setValue(this.formatNumbersCompact(DEFtibCost)); this.DEFUnitCostLabel1.setValue(this.formatNumbersCompact(DEFcryCost)); this.DEFUnitCostLabel2.setValue(this.formatNumbersCompact(DEFpowCost)); } else { this.DEFUnitCostLabel0.setValue('Upgrade'); this.DEFUnitCostLabel1.setValue('n/a'); this.DEFUnitCostLabel2.setValue('n/a'); } if (ClientLib.API.Army.GetInstance().GetUpgradeCostsForAllUnitsToLevel(ncity.get_CommandCenterLevel()) != null) { cryCost = ClientLib.API.Army.GetInstance().GetUpgradeCostsForAllUnitsToLevel(ncity.get_CommandCenterLevel()) [0].Count; powCost = ClientLib.API.Army.GetInstance().GetUpgradeCostsForAllUnitsToLevel(ncity.get_CommandCenterLevel()) [1].Count; this.UnitCostLabel0.setValue(this.formatNumbersCompact(cryCost)); this.UnitCostLabel1.setValue(this.formatNumbersCompact(powCost)); } else { this.UnitCostLabel0.setValue('Upgrade'); this.UnitCostLabel1.setValue('n/a'); } var rt = Math.min(ncity.GetResourceCount(ClientLib.Base.EResourceType.RepairChargeInf), ncity.GetResourceCount(ClientLib.Base.EResourceType.RepairChargeVeh), ncity.GetResourceCount(ClientLib.Base.EResourceType.RepairChargeAir)); if (ncity.get_CityUnitsData().get_UnitLimitOffense() == 0) { this.repairTimerLabel.setValue('No army'); } else { this.repairTimerLabel.setValue(this.FormatTimespan(rt)); } var airRT = ncity.get_CityUnitsData().GetRepairTimeFromEUnitGroup(ClientLib.Data.EUnitGroup.Aircraft, false); if (ncity.get_CityUnitsData().GetRepairTimeFromEUnitGroup(ClientLib.Data.EUnitGroup.Aircraft, false) == 0) { this.repairTimeLabel0.setValue('No birds'); } else { this.repairTimeLabel0.setValue(this.FormatTimespan(airRT) + ' '); } var vehRT = ncity.get_CityUnitsData().GetRepairTimeFromEUnitGroup(ClientLib.Data.EUnitGroup.Vehicle, false); if (ncity.get_CityUnitsData().GetRepairTimeFromEUnitGroup(ClientLib.Data.EUnitGroup.Vehicle, false) == 0) { this.repairTimeLabel1.setValue('No cars'); } else { this.repairTimeLabel1.setValue(this.FormatTimespan(vehRT) + ' '); } var infRT = ncity.get_CityUnitsData().GetRepairTimeFromEUnitGroup(ClientLib.Data.EUnitGroup.Infantry, false); if (ncity.get_CityUnitsData().GetRepairTimeFromEUnitGroup(ClientLib.Data.EUnitGroup.Infantry, false) == 0) { this.repairTimeLabel2.setValue('No dudes'); } else { this.repairTimeLabel2.setValue(this.FormatTimespan(infRT) + ' '); } var defRT = ncity.get_CityUnitsData().GetRepairTimeFromEUnitGroup(ClientLib.Data.EUnitGroup.Defense, false); if (ncity.get_CityUnitsData().GetRepairTimeFromEUnitGroup(ClientLib.Data.EUnitGroup.Defense, false) == 0) { this.repairTimeLabel3.setValue('No nothin'); } else { this.repairTimeLabel3.setValue(this.FormatTimespan((defRT)) + ' '); } //this.repairTimerLabel0.setValue(this.FormatTimespan(airRT)); //this.repairTimerLabel1.setValue(this.FormatTimespan(vehRT)); //this.repairTimerLabel2.setValue(this.FormatTimespan(infRT)); var tib = ncity.GetResourceCount(ClientLib.Base.EResourceType.Tiberium); var tibMax = ncity.GetResourceMaxStorage(ClientLib.Base.EResourceType.Tiberium); var tibRatio = tib / tibMax; this.resourceLabel1.setTextColor(this.formatNumberColor(tib, tibMax)); this.resourceLabel1.setValue(this.formatNumbersCompact(tib)); this.resourceLabel1per.setValue(this.formatPercent(tibRatio)); var cry = ncity.GetResourceCount(ClientLib.Base.EResourceType.Crystal); var cryMax = ncity.GetResourceMaxStorage(ClientLib.Base.EResourceType.Crystal); var cryRatio = cry / cryMax; this.resourceLabel2.setTextColor(this.formatNumberColor(cry, cryMax)); this.resourceLabel2.setValue(this.formatNumbersCompact(cry)); this.resourceLabel2per.setValue(this.formatPercent(cryRatio)); var power = ncity.GetResourceCount(ClientLib.Base.EResourceType.Power); var powerMax = ncity.GetResourceMaxStorage(ClientLib.Base.EResourceType.Power); var powerRatio = power / powerMax; this.resourceLabel3.setTextColor(this.formatNumberColor(power, powerMax)); this.resourceLabel3.setValue(this.formatNumbersCompact(power)); this.resourceLabel3per.setValue(this.formatPercent(powerRatio)); var powerCont = ncity.GetResourceGrowPerHour(ClientLib.Base.EResourceType.Power, false, false); var powerBonus = ncity.GetResourceBonusGrowPerHour(ClientLib.Base.EResourceType.Power); var alliance = ClientLib.Data.MainData.GetInstance().get_Alliance(); var powerAlly = alliance.GetPOIBonusFromResourceType(ClientLib.Base.EResourceType.Power); var powerProd = (powerCont + powerAlly); var powerPac = (powerCont + powerAlly + powerBonus) * 6; if (powerRatio >= 1) { powerProd = 0; powerPac = (powerBonus) * 6; } var tiberiumCont = ncity.GetResourceGrowPerHour(ClientLib.Base.EResourceType.Tiberium, false, false); var tiberiumBonus = ncity.GetResourceBonusGrowPerHour(ClientLib.Base.EResourceType.Tiberium); //var alliance = ClientLib.Data.MainData.GetInstance().get_Alliance(); var tiberiumAlly = alliance.GetPOIBonusFromResourceType(ClientLib.Base.EResourceType.Tiberium); var tiberiumPac = (tiberiumCont + tiberiumAlly + tiberiumBonus) * 6; var tiberiumProd = (tiberiumCont + tiberiumAlly); if (tibRatio >= 1) { tiberiumProd = 0; tiberiumPac = (tiberiumBonus) * 6; } var crystalCont = ncity.GetResourceGrowPerHour(ClientLib.Base.EResourceType.Crystal, false, false); var crystalBonus = ncity.GetResourceBonusGrowPerHour(ClientLib.Base.EResourceType.Crystal); //var alliance = ClientLib.Data.MainData.GetInstance().get_Alliance(); var crystalAlly = alliance.GetPOIBonusFromResourceType(ClientLib.Base.EResourceType.Crystal); var crystalPac = (crystalCont + crystalAlly + crystalBonus) * 6; var crystalProd = (crystalCont + crystalAlly); if (cryRatio >= 1) { crystalProd = 0; crystalPac = (crystalBonus) * 6; } var creditCont = ClientLib.Base.Resource.GetResourceGrowPerHour(ncity.get_CityCreditsProduction(), false); var creditBonus = ClientLib.Base.Resource.GetResourceBonusGrowPerHour(ncity.get_CityCreditsProduction(), false); var creditProd = (creditCont + creditBonus) * 6; if (ncity.get_hasCooldown() == true) { powerPac = (powerCont + powerAlly) * 6; creditProd = (creditCont) * 6; crystalPac = (crystalCont + crystalAlly) * 6; tiberiumPac = (tiberiumCont + tiberiumAlly) * 6; } if (tiberiumPac > powerPac * 2) { this.productionLabelTiberium.setTextColor(this.formatNumberColor(1, 2)); } else { this.productionLabelTiberium.setTextColor(this.formatNumberColor(2, 1)); } if (crystalPac > powerPac * 2) { this.productionLabelCrystal.setTextColor(this.formatNumberColor(1, 2)); } else { this.productionLabelCrystal.setTextColor(this.formatNumberColor(2, 1)); } if ((powerPac * 2 > tiberiumPac) || (powerPac * 2 > crystalPac)) { this.productionLabelPower1.setTextColor(this.formatNumberColor(1, 2)); } else { this.productionLabelPower1.setTextColor(this.formatNumberColor(2, 1)); } if (creditProd > tiberiumPac) { this.productionLabelCredit.setTextColor(this.formatNumberColor((tiberiumPac), creditProd)); } this.productionLabelTiberium.setValue(this.formatNumbersCompact(tiberiumPac) + '/6h'); this.productionLabelCrystal.setValue(this.formatNumbersCompact(crystalPac) + '/6h'); this.productionLabelPower1.setValue(this.formatNumbersCompact(powerPac) + '/6h'); if (tiberiumProd > powerProd * 2) { this.contProductionLabelTiberium.setTextColor(this.formatNumberColor(1, 2)); } else { this.contProductionLabelTiberium.setTextColor(this.formatNumberColor(2, 1)); } if (crystalProd > powerProd * 2) { this.contProductionLabelCrystal.setTextColor(this.formatNumberColor(1, 2)); } else { this.contProductionLabelCrystal.setTextColor(this.formatNumberColor(2, 1)); } if ((powerProd * 2 > tiberiumProd) || (powerProd * 2 > crystalProd)) { this.contProductionLabelPower.setTextColor(this.formatNumberColor(1, 2)); } else { this.contProductionLabelPower.setTextColor(this.formatNumberColor(2, 1)); } if (creditCont > tiberiumProd) { this.contProductionLabelCredit.setTextColor(this.formatNumberColor((tiberiumProd), creditCont)); } this.productionLabelCredit.setValue(this.formatNumbersCompact(creditProd) + '/6h'); this.contProductionLabelTiberium.setValue(this.formatNumbersCompact(tiberiumProd) + '/h'); this.contProductionLabelCrystal.setValue(this.formatNumbersCompact(crystalProd) + '/h'); this.contProductionLabelPower.setValue(this.formatNumbersCompact(powerProd) + '/h'); this.contProductionLabelCredit.setValue(this.formatNumbersCompact(creditCont) + '/h'); } } catch (e) { console.log('InfoSticker.calculateInfoData', e.toString()); } }, formatPercent: function (value) { return value > 999 / 100 ? '>999%' : this.formatNumbersCompact(value * 100, 0) + '%'; //return this.formatNumbersCompact(value*100, 0) + "%"; }, formatNumberColor: function (value, max) { var ratio = value / max; var color; var black = [ 40, 180, 40 ]; var yellow = [ 181, 181, 0 ]; var red = [ 187, 43, 43 ]; if (ratio < 0.5) color = black; else if (ratio < 0.75) color = this.interpolateColor(black, yellow, (ratio - 0.5) / 0.25); else if ((ratio < 1)) color = this.interpolateColor(yellow, red, (ratio - 0.75) / 0.25); else color = red; //console.log(qx.util.ColorUtil.rgbToHexString(color)); return qx.util.ColorUtil.rgbToHexString(color); }, interpolateColor: function (color1, color2, s) { //console.log("interp "+s+ " " + color1[1]+" " +color2[1]+" " +(color1[1]+s*(color2[1]-color1[1]))); return [Math.floor(color1[0] + s * (color2[0] - color1[0])), Math.floor(color1[1] + s * (color2[1] - color1[1])), Math.floor(color1[2] + s * (color2[2] - color1[2]))]; }, formatNumbersCompact: function (value, decimals) { if (decimals == undefined) decimals = 2; var valueStr; var unit = ''; if (value < 1000) valueStr = value.toString(); else if (value < 1000 * 1000) { valueStr = (value / 1000).toString(); unit = 'K'; } else if (value < 1000 * 1000 * 1000) { valueStr = (value / (1000 * 1000)).toString(); unit = 'M'; } else if (value < 1000 * 1000 * 1000 * 1000){ valueStr = (value / (1000*1000*1000)).toString(); unit = 'G'; } else if(value < 1000 * 1000 * 1000 * 1000 * 1000){ valueStr = (value / (1000*1000*1000*1000)).toString(); unit = 'T'; } else if(value < 1000 * 1000 * 1000 * 1000 * 1000 * 1000){ valueStr = (value / (1000*1000*1000*1000*1000)).toString(); unit = 'P'; } else if(value < 1000 * 1000 * 1000 * 1000 * 1000 * 1000 * 1000){ valueStr = (value / (1000*1000*1000*1000*1000*1000)).toString(); unit = 'E'; } else if(value < 1000 * 1000 * 1000 * 1000 * 1000 * 1000 * 1000 * 1000){ valueStr = (value / (1000*1000*1000*1000*1000*1000*1000)).toString(); unit = 'Z'; } else { valueStr = (value / (1000*1000*1000*1000*1000*1000*1000*1000)).toString(); unit = 'Y'; } if (valueStr.indexOf('.') >= 0) { var whole = valueStr.substring(0, valueStr.indexOf('.')); if (decimals === 0) { valueStr = whole; } else { var fraction = valueStr.substring(valueStr.indexOf('.') + 1); if (fraction.length > decimals) fraction = fraction.substring(0, decimals); valueStr = whole + '.' + fraction; } } valueStr = valueStr + unit; return valueStr; }, FormatTimespan: function (value) { var i; var t = ClientLib.Vis.VisMain.FormatTimespan(value); var colonCount = 0; for (i = 0; i < t.length; i++) { if (t.charAt(i) == ':') colonCount++; } var r = ''; for (i = 0; i < t.length; i++) { if (t.charAt(i) == ':') { if (colonCount > 2) { r += 'd '; } else { r += t.charAt(i); } colonCount--; } else { r += t.charAt(i); } } return r; } } }); } } catch (e) { console.log('InfoSticker: createInfoSticker: ', e.toString()); } function InfoSticker_checkIfLoaded() { try { if (typeof qx != 'undefined' && qx.core.Init.getApplication() && qx.core.Init.getApplication().getUIItem(ClientLib.Data.Missions.PATH.BAR_NAVIGATION) && qx.core.Init.getApplication().getUIItem(ClientLib.Data.Missions.PATH.BAR_NAVIGATION).isVisible()) { createInfoSticker(); window.InfoSticker.Base.getInstance().initialize(); } else { window.setTimeout(InfoSticker_checkIfLoaded, 1000); } } catch (e) { InfoSticker_IsInstalled = false; console.log('InfoSticker_checkIfLoaded: ', e.toString()); } } if (/commandandconquer\.com/i.test(document.domain)) { window.setTimeout(InfoSticker_checkIfLoaded, 1000); } } try { var InfoStickerScript = document.createElement('script'); InfoStickerScript.innerHTML = 'var InfoSticker_IsInstalled = true; (' + InfoSticker_main.toString() + ')();'; InfoStickerScript.type = 'text/javascript'; if (/commandandconquer\.com/i.test(document.domain)) { document.getElementsByTagName('head') [0].appendChild(InfoStickerScript); } } catch (e) { console.log('InfoSticker: init error: ', e.toString()); } }) ();