diff --git a/client/public/stylesheets/style/style.css b/client/public/stylesheets/style/style.css index deafa238..f8f1a1be 100644 --- a/client/public/stylesheets/style/style.css +++ b/client/public/stylesheets/style/style.css @@ -687,6 +687,19 @@ nav.ol-panel> :last-child { width:10px; } +@keyframes lock-prompt { + 100% { + opacity: 1; + } + 0% { + opacity: 0; + } +} + +.ol-navbar-buttons-group > .protectable > button[data-protected].lock.prompt svg { + animation: lock-prompt .25s alternate infinite; +} + .ol-navbar-buttons-group > .protectable > button.lock svg.locked * { fill:white !important; } diff --git a/client/src/unit/unitsmanager.ts b/client/src/unit/unitsmanager.ts index 486d7982..efb26e2b 100644 --- a/client/src/unit/unitsmanager.ts +++ b/client/src/unit/unitsmanager.ts @@ -260,6 +260,10 @@ export class UnitsManager { if (options.showProtectionReminder === true && numProtectedUnits > selectedUnits.length && selectedUnits.length === 0) { const messageText = (numProtectedUnits === 1) ? `Unit is protected` : `All selected units are protected`; (getApp().getPopupsManager().get("infoPopup") as Popup).setText(messageText); + // Cheap way for now until we use more locks + let lock = document.querySelector("#unit-visibility-control button.lock"); + lock.classList.add("prompt"); + setTimeout(() => lock.classList.remove("prompt"), 4000); } if (options.onlyOnePerGroup) { @@ -811,7 +815,7 @@ export class UnitsManager { * @returns */ selectedUnitsDelete(explosion: boolean = false, explosionType: string = "") { - var selectedUnits = this.getSelectedUnits({ excludeProtected: true }); /* Can be applied to humans too */ + var selectedUnits = this.getSelectedUnits({ excludeProtected: true, showProtectionReminder: true }); /* Can be applied to humans too */ const selectionContainsAHuman = selectedUnits.some((unit: Unit) => { return unit.getHuman() === true; });