mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-07-21 13:35:51 +00:00
Move warship by a touch (of magic) (#2408)
## Description: This adds moving warships by tapping them on a touchscreen. Now you can steer them just like you already could with a mouse. Also has some earlier returns, doing checks only when needed, prevent as much duplicate checks and a bugfix. In onMouseUp: - early return if no OceanTile. Before, function findWarshipsNearCell would still go look for warships even if ocean wasn't clicked. - Move const nearbyWarShips down. It isn't needed when this.selectedUnit is true. - Remove unnecessary const clickedWarship. - Move getting clickRef from function findWarshipsNearCell into onMouseUp. Because it is needed in case of this.selectedUnit too, within onMouseUp. Getting a valid clickRef for this.selectedUnit fixes: Runtime error when clicking outside the map after selecting a warship. The isValidCoord/Ref check was missing for this.selectedUnit. For findWarshipsNearCell: - moved the cell/tile checks out to onMouseUp, the only caller of the function. - did NOT rename findWarshipsNearCell. Although it now uses tileRef as input. Renaming can cause merge issues so i only do this when needed. Added onTouch: - Tests if we need to look for warships to select/move or if we can open Radial Menu. - Prevent as much duplicated checks as possible. So if no there's no Ocean Tile found, just send the radial menu event, which checks isValidCoord anyway. isOceanTile itself works fine even if it's no valid cell (proven by this.selectedUnit working all this time in onMouseUp without an isValidCoord test). Screencap on mobile, shows selecting and moving warships, no runtime error when clicking outside the map after selecting a warship, while radial menu still opens as normal: https://github.com/user-attachments/assets/1300d557-ae2f-46e3-92bd-d434c523aae7 ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I process any text displayed to the user through translateText() and I've added it to the en.json file - [x] I have added relevant tests to the test directory - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced ## Please put your Discord username so you can be contacted if a bug or regression is found: tryout33
This commit is contained in:
@@ -18,6 +18,12 @@ export class MouseOverEvent implements GameEvent {
|
||||
public readonly y: number,
|
||||
) {}
|
||||
}
|
||||
export class TouchEvent implements GameEvent {
|
||||
constructor(
|
||||
public readonly x: number,
|
||||
public readonly y: number,
|
||||
) {}
|
||||
}
|
||||
|
||||
/**
|
||||
* Event emitted when a unit is selected or deselected
|
||||
@@ -476,7 +482,7 @@ export class InputHandler {
|
||||
Math.abs(event.y - this.lastPointerDownY);
|
||||
if (dist < 10) {
|
||||
if (event.pointerType === "touch") {
|
||||
this.eventBus.emit(new ContextMenuEvent(event.clientX, event.clientY));
|
||||
this.eventBus.emit(new TouchEvent(event.x, event.y));
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user