diff --git a/client/plugins/controltips/index.js b/client/plugins/controltips/index.js
index 2153ddef..a3092be0 100644
--- a/client/plugins/controltips/index.js
+++ b/client/plugins/controltips/index.js
@@ -273,6 +273,11 @@ _ControlTipsPlugin_element = new WeakMap(), _ControlTipsPlugin_app = new WeakMap
"showIfUnitSelected": true,
"minSelectedUnits": 2
},
+ {
+ "key": `[Num 1-9]`,
+ "action": "Add to hotgroup",
+ "showIfUnitSelected": true
+ },
{
"key": "CTRL",
"action": " ... more",
@@ -292,6 +297,16 @@ _ControlTipsPlugin_element = new WeakMap(), _ControlTipsPlugin_app = new WeakMap
"showIfUnitSelected": true,
"minSelectedUnits": 2,
"unitsMustBeControlled": true
+ }, {
+ "key": `[Num 1-9]`,
+ "action": "Add hotgroup to selection",
+ "callback": (tip) => {
+ return (Object.values(__classPrivateFieldGet(this, _ControlTipsPlugin_app, "f").getUnitsManager().getUnits()).some((unit) => {
+ return unit.getHotgroup();
+ }));
+ },
+ "showIfUnitSelected": true,
+ "minSelectedUnits": 1
}
]
}
@@ -351,6 +366,9 @@ _ControlTipsPlugin_element = new WeakMap(), _ControlTipsPlugin_app = new WeakMap
if (!tipsIncludesActiveMouseover && typeof tip.mouseoverSelector === "string") {
return false;
}
+ if (typeof tip.callback === "function" && !tip.callback(tip)) {
+ return false;
+ }
element.innerHTML += `
${tip.key}${tip.action}
`;
});
};
diff --git a/client/plugins/controltips/src/controltipsplugin.ts b/client/plugins/controltips/src/controltipsplugin.ts
index b50a1ee2..511f89bf 100644
--- a/client/plugins/controltips/src/controltipsplugin.ts
+++ b/client/plugins/controltips/src/controltipsplugin.ts
@@ -1,4 +1,6 @@
import { OlympusPlugin } from "interfaces";
+import { OlympusApp } from "olympusapp";
+import { Unit } from "unit/unit";
const SHOW_CONTROL_TIPS = "Show control tips"
@@ -279,6 +281,11 @@ export class ControlTipsPlugin implements OlympusPlugin {
"showIfUnitSelected": true,
"minSelectedUnits": 2
},
+ {
+ "key": `[Num 1-9]`,
+ "action": "Add to hotgroup",
+ "showIfUnitSelected": true
+ },
{
"key": "CTRL",
"action": " ... more",
@@ -298,6 +305,16 @@ export class ControlTipsPlugin implements OlympusPlugin {
"showIfUnitSelected": true,
"minSelectedUnits": 2,
"unitsMustBeControlled": true
+ }, {
+ "key": `[Num 1-9]`,
+ "action": "Add hotgroup to selection",
+ "callback": ( tip:object ) => {
+ return (Object.values( this.#app.getUnitsManager().getUnits() ).some( ( unit:Unit ) => {
+ return unit.getAlive() && unit.getControlled() && unit.getHotgroup();
+ }));
+ },
+ "showIfUnitSelected": true,
+ "minSelectedUnits": 1
}
]
}
@@ -375,6 +392,10 @@ export class ControlTipsPlugin implements OlympusPlugin {
return false;
}
+ if ( typeof tip.callback === "function" && !tip.callback( tip ) ) {
+ return false;
+ }
+
element.innerHTML += `${tip.key}${tip.action}
`;
});
diff --git a/client/src/olympusapp.ts b/client/src/olympusapp.ts
index 551b6363..2d9b7be7 100644
--- a/client/src/olympusapp.ts
+++ b/client/src/olympusapp.ts
@@ -343,13 +343,13 @@ export class OlympusApp {
"altKey": false,
"callback": (ev: KeyboardEvent) => {
if (ev.ctrlKey && ev.shiftKey)
- this.getUnitsManager().selectedUnitsAddToHotgroup(parseInt(ev.code.substring(5)));
+ this.getUnitsManager().selectUnitsByHotgroup(parseInt(ev.code.substring(5)), false); // "Select hotgroup X in addition to any units already selected"
else if (ev.ctrlKey && !ev.shiftKey)
- this.getUnitsManager().selectedUnitsSetHotgroup(parseInt(ev.code.substring(5)));
+ this.getUnitsManager().selectedUnitsSetHotgroup(parseInt(ev.code.substring(5))); // "These selected units are hotgroup X (forget any previous membership)"
else if (!ev.ctrlKey && ev.shiftKey)
- this.getUnitsManager().selectUnitsByHotgroup(parseInt(ev.code.substring(5)), false);
+ this.getUnitsManager().selectedUnitsAddToHotgroup(parseInt(ev.code.substring(5))); // "Add (append) these units to hotgroup X (in addition to any existing members)"
else
- this.getUnitsManager().selectUnitsByHotgroup(parseInt(ev.code.substring(5)));
+ this.getUnitsManager().selectUnitsByHotgroup(parseInt(ev.code.substring(5))); // "Select hotgroup X, deselect any units not in it."
},
"code": code
});
diff --git a/client/src/panels/hotgrouppanel.ts b/client/src/panels/hotgrouppanel.ts
index 007e5b92..ef9d2e5f 100644
--- a/client/src/panels/hotgrouppanel.ts
+++ b/client/src/panels/hotgrouppanel.ts
@@ -42,8 +42,8 @@ export class HotgroupPanel extends Panel {
this.getElement().appendChild(el);
- el.addEventListener("click", () => {
- getApp().getUnitsManager().selectUnitsByHotgroup(hotgroup);
+ el.addEventListener("click", ( ev:MouseEvent ) => {
+ getApp().getUnitsManager().selectUnitsByHotgroup(hotgroup, (!ev.ctrlKey));
});
el.addEventListener("mouseover", () => {