diff --git a/client/plugins/controltips/index.js b/client/plugins/controltips/index.js index 37ad45af..6874f995 100644 --- a/client/plugins/controltips/index.js +++ b/client/plugins/controltips/index.js @@ -11,7 +11,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function ( if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; -var _ControlTipsPlugin_instances, _ControlTipsPlugin_element, _ControlTipsPlugin_app, _ControlTipsPlugin_shortcutManager, _ControlTipsPlugin_cursorIsHoveringOverUnit, _ControlTipsPlugin_cursorIsHoveringOverAirbase, _ControlTipsPlugin_updateTips; +var _ControlTipsPlugin_instances, _ControlTipsPlugin_element, _ControlTipsPlugin_app, _ControlTipsPlugin_shortcutManager, _ControlTipsPlugin_cursorIsHoveringOverUnit, _ControlTipsPlugin_cursorIsHoveringOverAirbase, _ControlTipsPlugin_mouseoverElement, _ControlTipsPlugin_updateTips; Object.defineProperty(exports, "__esModule", { value: true }); exports.ControlTipsPlugin = void 0; const SHOW_CONTROL_TIPS = "Show control tips"; @@ -23,6 +23,7 @@ class ControlTipsPlugin { _ControlTipsPlugin_shortcutManager.set(this, void 0); _ControlTipsPlugin_cursorIsHoveringOverUnit.set(this, false); _ControlTipsPlugin_cursorIsHoveringOverAirbase.set(this, false); + _ControlTipsPlugin_mouseoverElement.set(this, void 0); __classPrivateFieldSet(this, _ControlTipsPlugin_element, document.createElement("div"), "f"); __classPrivateFieldGet(this, _ControlTipsPlugin_element, "f").id = "control-tips-panel"; document.body.appendChild(__classPrivateFieldGet(this, _ControlTipsPlugin_element, "f")); @@ -64,6 +65,12 @@ class ControlTipsPlugin { document.addEventListener("mapVisibilityOptionsChanged", () => { this.toggle(!__classPrivateFieldGet(this, _ControlTipsPlugin_app, "f").getMap().getVisibilityOptions()[SHOW_CONTROL_TIPS]); }); + document.addEventListener("mouseover", (ev) => { + if (ev.target instanceof HTMLElement) { + __classPrivateFieldSet(this, _ControlTipsPlugin_mouseoverElement, ev.target, "f"); + } + __classPrivateFieldGet(this, _ControlTipsPlugin_instances, "m", _ControlTipsPlugin_updateTips).call(this); + }); __classPrivateFieldGet(this, _ControlTipsPlugin_instances, "m", _ControlTipsPlugin_updateTips).call(this); __classPrivateFieldGet(this, _ControlTipsPlugin_app, "f").getMap().addVisibilityOption(SHOW_CONTROL_TIPS, true); return true; @@ -76,7 +83,7 @@ class ControlTipsPlugin { } } exports.ControlTipsPlugin = ControlTipsPlugin; -_ControlTipsPlugin_element = new WeakMap(), _ControlTipsPlugin_app = new WeakMap(), _ControlTipsPlugin_shortcutManager = new WeakMap(), _ControlTipsPlugin_cursorIsHoveringOverUnit = new WeakMap(), _ControlTipsPlugin_cursorIsHoveringOverAirbase = new WeakMap(), _ControlTipsPlugin_instances = new WeakSet(), _ControlTipsPlugin_updateTips = function _ControlTipsPlugin_updateTips() { +_ControlTipsPlugin_element = new WeakMap(), _ControlTipsPlugin_app = new WeakMap(), _ControlTipsPlugin_shortcutManager = new WeakMap(), _ControlTipsPlugin_cursorIsHoveringOverUnit = new WeakMap(), _ControlTipsPlugin_cursorIsHoveringOverAirbase = new WeakMap(), _ControlTipsPlugin_mouseoverElement = new WeakMap(), _ControlTipsPlugin_instances = new WeakSet(), _ControlTipsPlugin_updateTips = function _ControlTipsPlugin_updateTips() { const combos = [ { "keys": [], @@ -163,6 +170,16 @@ _ControlTipsPlugin_element = new WeakMap(), _ControlTipsPlugin_app = new WeakMap "action": `Delete unit`, "showIfHoveringOverAirbase": false, "showIfUnitSelected": true + }, + { + "key": `mouse1`, + "action": "Toggle Blue/Red", + "mouseoverSelector": "#coalition-switch .ol-switch-fill" + }, + { + "key": `mouse2`, + "action": "Set Neutral", + "mouseoverSelector": "#coalition-switch .ol-switch-fill" } ] }, @@ -219,28 +236,48 @@ _ControlTipsPlugin_element = new WeakMap(), _ControlTipsPlugin_app = new WeakMap numSelectedUnits = selectedUnits.length; unitSelectionContainsControlled = selectedUnits.some((unit) => unit.getControlled()); } - currentCombo.tips.forEach((tip) => { + const tipsIncludesActiveMouseover = (currentCombo.tips.some((tip) => { + if (!tip.mouseoverSelector) { + return false; + } + if (__classPrivateFieldGet(this, _ControlTipsPlugin_mouseoverElement, "f") instanceof HTMLElement === false) { + return false; + } + if (!__classPrivateFieldGet(this, _ControlTipsPlugin_mouseoverElement, "f").matches(tip.mouseoverSelector)) { + return false; + } + return true; + })); + currentCombo.tips.filter((tip) => { if (numSelectedUnits > 0) { if (tip.showIfUnitSelected === false) { - return; + return false; } if (tip.unitsMustBeControlled === true && unitSelectionContainsControlled === false) { - return; + return false; } } if (numSelectedUnits === 0 && tip.showIfUnitSelected === true) { - return; + return false; } if (typeof tip.showIfHoveringOverAirbase === "boolean") { if (tip.showIfHoveringOverAirbase !== __classPrivateFieldGet(this, _ControlTipsPlugin_cursorIsHoveringOverAirbase, "f")) { - return; + return false; } } if (typeof tip.showIfHoveringOverUnit === "boolean") { if (tip.showIfHoveringOverUnit !== __classPrivateFieldGet(this, _ControlTipsPlugin_cursorIsHoveringOverUnit, "f")) { - return; + return false; } } + if (tipsIncludesActiveMouseover && typeof tip.mouseoverSelector !== "string" && !__classPrivateFieldGet(this, _ControlTipsPlugin_mouseoverElement, "f").matches(tip.mouseoverSelector)) { + return false; + } + if (!tipsIncludesActiveMouseover && typeof tip.mouseoverSelector === "string") { + return false; + } + return true; + }).forEach((tip) => { element.innerHTML += `