mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
Cleanup click detector code
This commit is contained in:
parent
fd70130ec4
commit
2dec257dd9
@ -1,70 +0,0 @@
|
||||
import { STOP_PROPAGATION } from "../core/signal";
|
||||
import { GameRoot } from "./root";
|
||||
import { ClickDetector } from "../core/click_detector";
|
||||
import { createLogger } from "../core/logging";
|
||||
|
||||
const logger = createLogger("canvas_click_interceptor");
|
||||
|
||||
export class CanvasClickInterceptor {
|
||||
/**
|
||||
* @param {GameRoot} root
|
||||
*/
|
||||
constructor(root) {
|
||||
this.root = root;
|
||||
|
||||
this.root.signals.postLoadHook.add(this.initialize, this);
|
||||
this.root.signals.aboutToDestruct.add(this.cleanup, this);
|
||||
|
||||
/** @type {Array<object>} */
|
||||
this.interceptors = [];
|
||||
}
|
||||
|
||||
initialize() {
|
||||
this.clickDetector = new ClickDetector(this.root.canvas, {
|
||||
applyCssClass: null,
|
||||
captureTouchmove: false,
|
||||
targetOnly: true,
|
||||
preventDefault: true,
|
||||
maxDistance: 13,
|
||||
clickSound: null,
|
||||
});
|
||||
this.clickDetector.click.add(this.onCanvasClick, this);
|
||||
this.clickDetector.rightClick.add(this.onCanvasRightClick, this);
|
||||
|
||||
if (this.root.hud.parts.buildingPlacer) {
|
||||
this.interceptors.push(this.root.hud.parts.buildingPlacer);
|
||||
}
|
||||
|
||||
logger.log("Registered", this.interceptors.length, "interceptors");
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
if (this.clickDetector) {
|
||||
this.clickDetector.cleanup();
|
||||
}
|
||||
this.interceptors = [];
|
||||
}
|
||||
|
||||
onCanvasClick(position, event, cancelAction = false) {
|
||||
if (!this.root.gameInitialized) {
|
||||
logger.warn("Skipping click outside of game initiaization!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.root.hud.hasBlockingOverlayOpen()) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (let i = 0; i < this.interceptors.length; ++i) {
|
||||
const interceptor = this.interceptors[i];
|
||||
if (interceptor.onCanvasClick(position, cancelAction) === STOP_PROPAGATION) {
|
||||
// log(this, "Interceptor", interceptor.constructor.name, "catched click");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onCanvasRightClick(position, event) {
|
||||
this.onCanvasClick(position, event, true);
|
||||
}
|
||||
}
|
@ -17,7 +17,6 @@ import { SavegameSerializer } from "../savegame/savegame_serializer";
|
||||
import { AutomaticSave } from "./automatic_save";
|
||||
import { MetaHubBuilding } from "./buildings/hub";
|
||||
import { Camera } from "./camera";
|
||||
import { CanvasClickInterceptor } from "./canvas_click_interceptor";
|
||||
import { EntityManager } from "./entity_manager";
|
||||
import { GameSystemManager } from "./game_system_manager";
|
||||
import { HubGoals } from "./hub_goals";
|
||||
@ -98,7 +97,6 @@ export class GameCore {
|
||||
root.logic = new GameLogic(root);
|
||||
root.hud = new GameHUD(root);
|
||||
root.time = new GameTime(root);
|
||||
root.canvasClickInterceptor = new CanvasClickInterceptor(root);
|
||||
root.automaticSave = new AutomaticSave(root);
|
||||
root.soundProxy = new SoundProxy(root);
|
||||
|
||||
|
@ -243,20 +243,10 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
|
||||
* @param {boolean} cancelAction
|
||||
*/
|
||||
onCanvasClick(mousePos, cancelAction = false) {
|
||||
if (cancelAction) {
|
||||
if (this.currentMetaBuilding.get()) {
|
||||
this.currentMetaBuilding.set(null);
|
||||
} else {
|
||||
this.deleteBelowCursor();
|
||||
}
|
||||
// Prevent any other canvas clicks
|
||||
if (this.currentMetaBuilding.get()) {
|
||||
return STOP_PROPAGATION;
|
||||
}
|
||||
|
||||
if (!this.currentMetaBuilding.get()) {
|
||||
return;
|
||||
}
|
||||
|
||||
return STOP_PROPAGATION;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -479,13 +469,18 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
|
||||
}
|
||||
|
||||
// Deletion
|
||||
if (button === enumMouseButton.right && !this.currentMetaBuilding.get()) {
|
||||
if (button === enumMouseButton.right && !metaBuilding) {
|
||||
this.currentlyDragging = true;
|
||||
this.currentlyDeleting = true;
|
||||
this.lastDragTile = this.root.camera.screenToWorld(pos).toTileSpace();
|
||||
this.currentMetaBuilding.set(null);
|
||||
return STOP_PROPAGATION;
|
||||
}
|
||||
|
||||
// Cancel placement
|
||||
if (button === enumMouseButton.right && metaBuilding) {
|
||||
this.currentMetaBuilding.set(null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -19,7 +19,6 @@ import { SoundProxy } from "./sound_proxy";
|
||||
import { Savegame } from "../savegame/savegame";
|
||||
import { GameLogic } from "./logic";
|
||||
import { ShapeDefinitionManager } from "./shape_definition_manager";
|
||||
import { CanvasClickInterceptor } from "./canvas_click_interceptor";
|
||||
import { HubGoals } from "./hub_goals";
|
||||
import { BufferMaintainer } from "../core/buffer_maintainer";
|
||||
import { ProductionAnalytics } from "./production_analytics";
|
||||
@ -110,9 +109,6 @@ export class GameRoot {
|
||||
/** @type {BufferMaintainer} */
|
||||
this.buffers = null;
|
||||
|
||||
/** @type {CanvasClickInterceptor} */
|
||||
this.canvasClickInterceptor = null;
|
||||
|
||||
/** @type {AutomaticSave} */
|
||||
this.automaticSave = null;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user