From dbbc0f0d7698456b0c82c3427d9d86ee78eb7f66 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Tue, 19 Nov 2024 22:43:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20boss=E6=88=98=E4=B8=AD=E8=AF=BB=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugin/boss/barrage.ts | 8 +++++++- src/plugin/boss/index.ts | 13 +++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/plugin/boss/barrage.ts b/src/plugin/boss/barrage.ts index 76d5352..df0ea4a 100644 --- a/src/plugin/boss/barrage.ts +++ b/src/plugin/boss/barrage.ts @@ -2,9 +2,15 @@ import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d'; import { RenderItem, RenderItemPosition } from '@/core/render/item'; import { Transform } from '@/core/render/transform'; import { IStateDamageable } from '@/game/state/interface'; +import EventEmitter from 'eventemitter3'; import { Ticker } from 'mutate-animate'; -export abstract class BarrageBoss { +interface BarrageBossEvent { + end: []; + start: []; +} + +export abstract class BarrageBoss extends EventEmitter { ticker: Ticker = new Ticker(); /** 这个boss的所有弹幕 */ projectiles: Set = new Set(); diff --git a/src/plugin/boss/index.ts b/src/plugin/boss/index.ts index 7b18e39..85b3ea0 100644 --- a/src/plugin/boss/index.ts +++ b/src/plugin/boss/index.ts @@ -1,13 +1,22 @@ import { BarrageBoss } from './barrage'; import { TowerBoss } from './towerBoss'; -let boss: BarrageBoss; +let boss: BarrageBoss | null; export function startTowerBoss() { boss = new TowerBoss(); boss.start(); + boss.once('end', () => { + boss = null; + }); } -export function getBoss(): T { +export function getBoss(): T | null { return boss as T; } + +Mota.require('var', 'hook').on('reset', () => { + if (boss) { + boss.end(); + } +});