mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-04-24 16:13:24 +08:00
65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
import { logger } from '@motajs/common';
|
|
import {
|
|
LayerGroupFloorBinder,
|
|
ILayerGroupRenderExtends,
|
|
LayerGroup
|
|
} from '@motajs/render';
|
|
import { loading } from '@user/data-base';
|
|
|
|
const filterMap: [FloorIds[], string][] = [];
|
|
|
|
function getCanvasFilterByFloorId(floorId: FloorIds = core.status.floorId) {
|
|
return filterMap.find(v => v[0].includes(floorId))?.[1] ?? '';
|
|
}
|
|
|
|
export function createGameCanvas() {
|
|
loading.once('coreInit', () => {
|
|
filterMap.push(
|
|
[['MT50', 'MT60', 'MT61'], 'contrast(120%)'], // 童心佬的滤镜(
|
|
[
|
|
core.floorIds
|
|
.slice(61, 70)
|
|
.concat(core.floorIds.slice(72, 107)),
|
|
'contrast(120%)'
|
|
] // 童心佬的滤镜(
|
|
);
|
|
});
|
|
}
|
|
|
|
export class LayerGroupFilter implements ILayerGroupRenderExtends {
|
|
id: string = 'filter';
|
|
|
|
group!: LayerGroup;
|
|
binder!: LayerGroupFloorBinder;
|
|
|
|
setFilter(floorId: FloorIds) {
|
|
const filter = getCanvasFilterByFloorId(floorId);
|
|
this.group.setFilter(filter);
|
|
// console.log(filter);
|
|
}
|
|
|
|
private onFloorChange = (floor: FloorIds) => {
|
|
this.setFilter(floor);
|
|
};
|
|
|
|
private listen() {
|
|
this.binder.on('floorChange', this.onFloorChange);
|
|
}
|
|
|
|
awake(group: LayerGroup): void {
|
|
this.group = group;
|
|
const ex = group.getExtends('floor-binder');
|
|
if (ex instanceof LayerGroupFloorBinder) {
|
|
this.binder = ex;
|
|
this.listen();
|
|
} else {
|
|
logger.error(1201);
|
|
group.removeExtends('floor-damage');
|
|
}
|
|
}
|
|
|
|
onDestroy(group: LayerGroup): void {
|
|
this.binder?.off('floorChange', this.onFloorChange);
|
|
}
|
|
}
|