2025-05-04 02:18:58 +02:00
|
|
|
import { LogAggregator } from './../logging/LogAggregator';
|
2022-09-28 01:18:58 +02:00
|
|
|
import EventBus, { EventBusCommand } from '../EventBus';
|
2025-05-04 02:18:58 +02:00
|
|
|
import { ComponentLogger } from '../logging/ComponentLogger';
|
2025-07-15 19:41:00 +02:00
|
|
|
import Settings from '../settings/Settings';
|
2023-01-07 18:57:47 +01:00
|
|
|
import { SiteSettings } from '../settings/SiteSettings';
|
2022-11-20 14:46:01 +01:00
|
|
|
import KbmBase from './KbmBase';
|
2022-09-28 01:18:58 +02:00
|
|
|
|
|
|
|
|
if(process.env.CHANNEL !== 'stable'){
|
|
|
|
|
console.info("Loading PlayerMouseHandler");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-05-04 02:18:58 +02:00
|
|
|
const BASE_LOGGING_STYLES = {
|
|
|
|
|
log: "color: #ff0"
|
|
|
|
|
};
|
|
|
|
|
|
2022-09-28 01:18:58 +02:00
|
|
|
/**
|
|
|
|
|
* Handles keypress
|
|
|
|
|
*/
|
2022-11-20 14:46:01 +01:00
|
|
|
export class MouseHandler extends KbmBase {
|
2022-11-20 17:09:08 +01:00
|
|
|
listenFor: string[] = ['mousemove'];
|
2022-11-20 14:46:01 +01:00
|
|
|
|
2022-09-28 01:18:58 +02:00
|
|
|
playerElement: HTMLElement;
|
|
|
|
|
|
|
|
|
|
eventBusCommands: { [x: string]: EventBusCommand } = {
|
|
|
|
|
'kbm-enable': {
|
|
|
|
|
function: () => this.enable()
|
|
|
|
|
},
|
|
|
|
|
'kbm-disable': {
|
|
|
|
|
function: () => this.disable()
|
|
|
|
|
},
|
|
|
|
|
'kbm-set-config': {
|
|
|
|
|
function: (data: {config: any, temporary?: boolean}) => this.setConfig(data.config, data.temporary),
|
|
|
|
|
},
|
|
|
|
|
'uw-enable': {
|
|
|
|
|
function: () => this.load()
|
|
|
|
|
},
|
|
|
|
|
'uw-disable': {
|
|
|
|
|
function: () => this.disable()
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//#region lifecycle
|
2025-05-04 02:18:58 +02:00
|
|
|
constructor(playerElement: HTMLElement, eventBus: EventBus, siteSettings: SiteSettings, settings: Settings, logAggregator: LogAggregator) {
|
|
|
|
|
const tmpLogger = new ComponentLogger(logAggregator, 'MouseHandler', {styles: BASE_LOGGING_STYLES});
|
|
|
|
|
|
|
|
|
|
super(eventBus, siteSettings, settings, tmpLogger);
|
2022-11-20 14:46:01 +01:00
|
|
|
|
2022-09-28 01:18:58 +02:00
|
|
|
this.settings = settings;
|
2023-01-07 18:57:47 +01:00
|
|
|
this.siteSettings = siteSettings;
|
2022-09-28 01:18:58 +02:00
|
|
|
this.eventBus = eventBus;
|
|
|
|
|
this.playerElement = playerElement;
|
|
|
|
|
|
|
|
|
|
this.init();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
init() {
|
2025-05-04 02:18:58 +02:00
|
|
|
// this.logger.debug('init', 'starting init');
|
2022-09-28 01:18:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
load() {
|
2023-01-07 18:57:47 +01:00
|
|
|
// todo: process whether mouse movement should be enabled or disabled
|
2022-09-28 01:18:58 +02:00
|
|
|
this.addListener();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
destroy() {
|
|
|
|
|
this.removeListener();
|
|
|
|
|
}
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
//#region listener setup, teardown, handling
|
|
|
|
|
handleEvent(event: MouseEvent) {
|
|
|
|
|
switch (event.type) {
|
|
|
|
|
case 'mousemove':
|
|
|
|
|
this.handleMouseMove(event)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
enable() {
|
|
|
|
|
this.load();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
disable() {
|
|
|
|
|
this.removeListener();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private handleMouseMove(event: MouseEvent) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|