diff --git a/index.html b/index.html index 90f2e229bc..c5d47ffa5d 100644 --- a/index.html +++ b/index.html @@ -264,23 +264,37 @@
+
+
- - + +
+ + +
+ +
@@ -290,7 +304,6 @@ -
diff --git a/src/client/graphics/layers/AttacksDisplay.ts b/src/client/graphics/layers/AttacksDisplay.ts index f77411e553..88e0f4c150 100644 --- a/src/client/graphics/layers/AttacksDisplay.ts +++ b/src/client/graphics/layers/AttacksDisplay.ts @@ -221,7 +221,7 @@ export class AttacksDisplay extends LitElement implements Layer { return this.incomingAttacks.map( (attack) => html`
${this.renderButton({ content: html` html`
${this.renderButton({ content: html` html`
${this.renderButton({ content: html` html`
${this.renderButton({ content: html`${this.renderBoatIcon(boat)} @@ -403,7 +403,7 @@ export class AttacksDisplay extends LitElement implements Layer { return this.incomingBoats.map( (boat) => html`
${this.renderButton({ content: html`${this.renderBoatIcon(boat)} @@ -441,7 +441,7 @@ export class AttacksDisplay extends LitElement implements Layer { return html`
${this.renderOutgoingAttacks()} ${this.renderOutgoingLandAttacks()} ${this.renderBoats()} ${this.renderIncomingAttacks()} diff --git a/src/client/graphics/layers/ControlPanel.ts b/src/client/graphics/layers/ControlPanel.ts index 8aeb8d4153..5210a19951 100644 --- a/src/client/graphics/layers/ControlPanel.ts +++ b/src/client/graphics/layers/ControlPanel.ts @@ -40,9 +40,6 @@ export class ControlPanel extends LitElement implements Layer { @state() private _attackingTroops: number = 0; - @state() - private _touchDragging = false; - private _troopRateIsIncreasing: boolean = true; private _lastTroopIncreaseRate: number; @@ -127,73 +124,13 @@ export class ControlPanel extends LitElement implements Layer { this.requestUpdate(); } - private _outsideTouchHandler: ((ev: Event) => void) | null = null; - - private handleAttackTouchStart(e: TouchEvent) { - e.preventDefault(); - e.stopPropagation(); - - if (this._touchDragging) { - this.closeAttackBar(); - return; - } - - this._touchDragging = true; - - setTimeout(() => { - this._outsideTouchHandler = () => { - this.closeAttackBar(); - }; - document.addEventListener("touchstart", this._outsideTouchHandler); - }, 0); - } - - private closeAttackBar() { - this._touchDragging = false; - if (this._outsideTouchHandler) { - document.removeEventListener("touchstart", this._outsideTouchHandler); - this._outsideTouchHandler = null; - } - } - - private handleBarTouch(e: TouchEvent) { - e.preventDefault(); - e.stopPropagation(); - - this.setRatioFromTouch(e.touches[0]); - - const onMove = (ev: TouchEvent) => { - ev.preventDefault(); - this.setRatioFromTouch(ev.touches[0]); - }; - - const onEnd = () => { - document.removeEventListener("touchmove", onMove); - document.removeEventListener("touchend", onEnd); - }; - - document.addEventListener("touchmove", onMove, { passive: false }); - document.addEventListener("touchend", onEnd); - } - - private setRatioFromTouch(touch: Touch) { - const barEl = this.querySelector(".attack-drag-bar"); - if (!barEl) return; - - const rect = barEl.getBoundingClientRect(); - const ratio = (rect.bottom - touch.clientY) / (rect.bottom - rect.top); - this.attackRatio = - Math.round(Math.max(1, Math.min(100, ratio * 100))) / 100; - this.onAttackRatioChange(this.attackRatio); - } - private handleRatioSliderInput(e: Event) { const value = Number((e.target as HTMLInputElement).value); this.attackRatio = value / 100; this.onAttackRatioChange(this.attackRatio); } - private renderTroopBar() { + private calculateTroopBar(): { greenPercent: number; orangePercent: number } { const base = Math.max(this._maxTroops, 1); const greenPercentRaw = (this._troops / base) * 100; const orangePercentRaw = (this._attackingTroops / base) * 100; @@ -204,9 +141,14 @@ export class ControlPanel extends LitElement implements Layer { Math.min(100 - greenPercent, orangePercentRaw), ); + return { greenPercent, orangePercent }; + } + + private renderMobileTroopBar() { + const { greenPercent, orangePercent } = this.calculateTroopBar(); return html`
${greenPercent > 0 @@ -223,7 +165,7 @@ export class ControlPanel extends LitElement implements Layer { : ""}