nitro/libs/renderer/src/nitro/room/object/logic/furniture/FurnitureCounterClockLogic.ts

45 lines
1.5 KiB
TypeScript

import {IRoomGeometry, MouseEventType} from "../../../../../api";
import {RoomObjectEvent, RoomObjectStateChangedEvent, RoomSpriteMouseEvent} from "../../../../../events";
import {FurnitureLogic} from "./FurnitureLogic";
export class FurnitureCounterClockLogic extends FurnitureLogic {
public override getEventTypes(): string[] {
const types = [RoomObjectStateChangedEvent.STATE_CHANGE];
return this.mergeTypes(super.getEventTypes(), types);
}
public override mouseEvent(event: RoomSpriteMouseEvent, geometry: IRoomGeometry): void {
if (!event || !geometry || !this.object) return;
let objectEvent: RoomObjectEvent = null;
switch (event.type) {
case MouseEventType.DOUBLE_CLICK:
switch (event.spriteTag) {
case "start_stop":
objectEvent = new RoomObjectStateChangedEvent(RoomObjectStateChangedEvent.STATE_CHANGE, this.object, 1);
break;
case "reset":
objectEvent = new RoomObjectStateChangedEvent(RoomObjectStateChangedEvent.STATE_CHANGE, this.object, 2);
break;
}
if (this.eventDispatcher && objectEvent) {
this.eventDispatcher.dispatchEvent(objectEvent);
return;
}
break;
}
super.mouseEvent(event, geometry);
}
public override useObject(): void {
if (!this.object || !this.eventDispatcher) return;
this.eventDispatcher.dispatchEvent(new RoomObjectStateChangedEvent(RoomObjectStateChangedEvent.STATE_CHANGE, this.object, 1));
}
}