Files
Nitro_Render_V3/packages/room/src/object/logic/furniture/FurnitureCounterClockLogic.ts
T
2024-04-03 09:27:56 +02:00

52 lines
1.7 KiB
TypeScript

import { IRoomGeometry, MouseEventType } from '@nitrots/api';
import { RoomObjectEvent, RoomObjectStateChangedEvent, RoomSpriteMouseEvent } from '@nitrots/events';
import { FurnitureLogic } from './FurnitureLogic';
export class FurnitureCounterClockLogic extends FurnitureLogic
{
public getEventTypes(): string[]
{
const types = [RoomObjectStateChangedEvent.STATE_CHANGE];
return this.mergeTypes(super.getEventTypes(), types);
}
public 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 useObject(): void
{
if(!this.object || !this.eventDispatcher) return;
this.eventDispatcher.dispatchEvent(new RoomObjectStateChangedEvent(RoomObjectStateChangedEvent.STATE_CHANGE, this.object, 1));
}
}