mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-08-18 09:14:09 +00:00
Merge pull request #2 from openfrontio/center-camera
Added hotkey 'C' to center camera on player
This commit is contained in:
@@ -211,7 +211,7 @@ export class HelpModal extends LitElement {
|
|||||||
<span class="close" @click=${this.close}>×</span>
|
<span class="close" @click=${this.close}>×</span>
|
||||||
|
|
||||||
<div class="flex flex-col items-center">
|
<div class="flex flex-col items-center">
|
||||||
<div class="text-center text-2xl font-bold mb-4">Keybinds</div>
|
<div class="text-center text-2xl font-bold mb-4">Hotkeys</div>
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -224,6 +224,10 @@ export class HelpModal extends LitElement {
|
|||||||
<td>Space</td>
|
<td>Space</td>
|
||||||
<td>Alternate view</td>
|
<td>Alternate view</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>C</td>
|
||||||
|
<td>Center camera on player</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Q / E</td>
|
<td>Q / E</td>
|
||||||
<td>Zoom out/in</td>
|
<td>Zoom out/in</td>
|
||||||
|
|||||||
@@ -63,6 +63,10 @@ export class AttackRatioEvent implements GameEvent {
|
|||||||
constructor(public readonly attackRatio: number) {}
|
constructor(public readonly attackRatio: number) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class CenterCameraEvent implements GameEvent {
|
||||||
|
constructor() {}
|
||||||
|
}
|
||||||
|
|
||||||
export class InputHandler {
|
export class InputHandler {
|
||||||
private lastPointerX: number = 0;
|
private lastPointerX: number = 0;
|
||||||
private lastPointerY: number = 0;
|
private lastPointerY: number = 0;
|
||||||
@@ -173,6 +177,7 @@ export class InputHandler {
|
|||||||
"KeyQ",
|
"KeyQ",
|
||||||
"Digit1",
|
"Digit1",
|
||||||
"Digit2",
|
"Digit2",
|
||||||
|
"KeyC",
|
||||||
].includes(e.code)
|
].includes(e.code)
|
||||||
) {
|
) {
|
||||||
this.activeKeys.add(e.code);
|
this.activeKeys.add(e.code);
|
||||||
@@ -200,6 +205,11 @@ export class InputHandler {
|
|||||||
this.eventBus.emit(new AttackRatioEvent(10));
|
this.eventBus.emit(new AttackRatioEvent(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (e.code === "KeyC") {
|
||||||
|
e.preventDefault();
|
||||||
|
this.eventBus.emit(new CenterCameraEvent());
|
||||||
|
}
|
||||||
|
|
||||||
// Remove all movement keys from activeKeys
|
// Remove all movement keys from activeKeys
|
||||||
if (
|
if (
|
||||||
[
|
[
|
||||||
@@ -217,6 +227,7 @@ export class InputHandler {
|
|||||||
"KeyQ",
|
"KeyQ",
|
||||||
"Digit1",
|
"Digit1",
|
||||||
"Digit2",
|
"Digit2",
|
||||||
|
"KeyC",
|
||||||
].includes(e.code)
|
].includes(e.code)
|
||||||
) {
|
) {
|
||||||
this.activeKeys.delete(e.code);
|
this.activeKeys.delete(e.code);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import {
|
|||||||
calculateBoundingBox,
|
calculateBoundingBox,
|
||||||
calculateBoundingBoxCenter,
|
calculateBoundingBoxCenter,
|
||||||
} from "../../core/Util";
|
} from "../../core/Util";
|
||||||
import { ZoomEvent, DragEvent } from "../InputHandler";
|
import { ZoomEvent, DragEvent, CenterCameraEvent } from "../InputHandler";
|
||||||
import { GoToPlayerEvent } from "./layers/Leaderboard";
|
import { GoToPlayerEvent } from "./layers/Leaderboard";
|
||||||
import { placeName } from "./NameBoxCalculator";
|
import { placeName } from "./NameBoxCalculator";
|
||||||
import { GameView } from "../../core/game/GameView";
|
import { GameView } from "../../core/game/GameView";
|
||||||
@@ -27,6 +27,7 @@ export class TransformHandler {
|
|||||||
this.eventBus.on(ZoomEvent, (e) => this.onZoom(e));
|
this.eventBus.on(ZoomEvent, (e) => this.onZoom(e));
|
||||||
this.eventBus.on(DragEvent, (e) => this.onMove(e));
|
this.eventBus.on(DragEvent, (e) => this.onMove(e));
|
||||||
this.eventBus.on(GoToPlayerEvent, (e) => this.onGoToPlayer(e));
|
this.eventBus.on(GoToPlayerEvent, (e) => this.onGoToPlayer(e));
|
||||||
|
this.eventBus.on(CenterCameraEvent, () => this.centerCamera());
|
||||||
}
|
}
|
||||||
|
|
||||||
boundingRect(): DOMRect {
|
boundingRect(): DOMRect {
|
||||||
@@ -148,6 +149,14 @@ export class TransformHandler {
|
|||||||
this.intervalID = setInterval(() => this.goTo(), 1);
|
this.intervalID = setInterval(() => this.goTo(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
centerCamera() {
|
||||||
|
this.clearTarget();
|
||||||
|
const player = this.game.myPlayer();
|
||||||
|
if (!player || !player.nameLocation()) return;
|
||||||
|
this.target = new Cell(player.nameLocation().x, player.nameLocation().y);
|
||||||
|
this.intervalID = setInterval(() => this.goTo(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
private goTo() {
|
private goTo() {
|
||||||
const { screenX, screenY } = this.screenCenter();
|
const { screenX, screenY } = this.screenCenter();
|
||||||
const screenMapCenter = new Cell(screenX, screenY);
|
const screenMapCenter = new Cell(screenX, screenY);
|
||||||
|
|||||||
Reference in New Issue
Block a user