mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-06-09 00:38:00 +08:00
refactor: gameListener事件改用eventemitter3库
This commit is contained in:
parent
f9358eb24e
commit
eb194bf2b3
@ -1,13 +1,12 @@
|
|||||||
import { EventEmitter } from '../core/common/eventEmitter';
|
import { EventEmitter } from 'eventemitter3';
|
||||||
import type { DamageEnemy, EnemyCollection } from './enemy/damage';
|
import type { DamageEnemy, EnemyCollection } from './enemy/damage';
|
||||||
|
|
||||||
// ----- 加载事件
|
// ----- 加载事件
|
||||||
interface GameLoadEvent {
|
interface GameLoadEvent {
|
||||||
coreLoaded: () => void;
|
coreLoaded: [];
|
||||||
autotileLoaded: () => void;
|
autotileLoaded: [];
|
||||||
coreInit: () => void;
|
coreInit: [];
|
||||||
loaded: () => void;
|
loaded: [];
|
||||||
materialLoaded: () => void;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class GameLoading extends EventEmitter<GameLoadEvent> {
|
class GameLoading extends EventEmitter<GameLoadEvent> {
|
||||||
@ -17,17 +16,8 @@ class GameLoading extends EventEmitter<GameLoadEvent> {
|
|||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
this.on(
|
this.on('coreInit', () => {
|
||||||
'coreInit',
|
this.autotileNum = Object.keys(core.material.icons.autotile).length;
|
||||||
() => {
|
|
||||||
this.autotileNum = Object.keys(
|
|
||||||
core.material.icons.autotile
|
|
||||||
).length;
|
|
||||||
},
|
|
||||||
{ immediate: true }
|
|
||||||
);
|
|
||||||
this.on('materialLoaded', () => {
|
|
||||||
core.loader._loadMaterials_afterLoad();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,51 +57,51 @@ export const loading = new GameLoading();
|
|||||||
|
|
||||||
export interface GameEvent {
|
export interface GameEvent {
|
||||||
/** Emitted in libs/events.js resetGame. */
|
/** Emitted in libs/events.js resetGame. */
|
||||||
reset: () => void;
|
reset: [];
|
||||||
/** Emitted in src/App.vue setup. */
|
/** Emitted in src/App.vue setup. */
|
||||||
mounted: () => void;
|
mounted: [];
|
||||||
/** Emitted in plugin/game/ui.ts updateStatusBar_update */
|
/** Emitted in plugin/game/ui.ts updateStatusBar_update */
|
||||||
statusBarUpdate: () => void;
|
statusBarUpdate: [];
|
||||||
/** Emitted in core/index.ts */
|
/** Emitted in core/index.ts */
|
||||||
renderLoaded: () => void;
|
renderLoaded: [];
|
||||||
/** Emitted in libs/events.js getItem */
|
/** Emitted in libs/events.js getItem */
|
||||||
afterGetItem: (
|
afterGetItem: [
|
||||||
itemId: AllIdsOf<'items'>,
|
itemId: AllIdsOf<'items'>,
|
||||||
x: number,
|
x: number,
|
||||||
y: number,
|
y: number,
|
||||||
isGentleClick: boolean
|
isGentleClick: boolean
|
||||||
) => void;
|
];
|
||||||
/** Emitted in libs/events.js _openDoor_animate */
|
/** Emitted in libs/events.js _openDoor_animate */
|
||||||
afterOpenDoor: (doorId: AllIdsOf<'animates'>, x: number, y: number) => void;
|
afterOpenDoor: [doorId: AllIdsOf<'animates'>, x: number, y: number];
|
||||||
/** Emitted in project/functions.js afterChangeFloor */
|
/** Emitted in project/functions.js afterChangeFloor */
|
||||||
afterChangeFloor: (floorId: FloorIds) => void;
|
afterChangeFloor: [floorId: FloorIds];
|
||||||
/** Emitted in project/functions.js moveOneStep */
|
/** Emitted in project/functions.js moveOneStep */
|
||||||
moveOneStep: (x: number, y: number, floorId: FloorIds) => void;
|
moveOneStep: [x: number, y: number, floorId: FloorIds];
|
||||||
/** Emitted in src/game/enemy/battle.ts afterBattle */
|
/** Emitted in src/game/enemy/battle.ts afterBattle */
|
||||||
afterBattle: (enemy: DamageEnemy, x?: number, y?: number) => void;
|
afterBattle: [enemy: DamageEnemy, x?: number, y?: number];
|
||||||
/** Emitted in libs/events.js changingFloor */
|
/** Emitted in libs/events.js changingFloor */
|
||||||
changingFloor: (floorId: FloorIds, heroLoc: Loc) => void;
|
changingFloor: [floorId: FloorIds, heroLoc: Loc];
|
||||||
/** Emitted in libs/maps.js setBlock */
|
/** Emitted in libs/maps.js setBlock */
|
||||||
setBlock: (
|
setBlock: [
|
||||||
x: number,
|
x: number,
|
||||||
y: number,
|
y: number,
|
||||||
floorId: FloorIds,
|
floorId: FloorIds,
|
||||||
newBlock: AllNumbers,
|
newBlock: AllNumbers,
|
||||||
oldBlock: AllNumbers
|
oldBlock: AllNumbers
|
||||||
) => void;
|
];
|
||||||
/** Emitted in game/enemy/damage.ts */
|
/** Emitted in game/enemy/damage.ts */
|
||||||
enemyExtract: (col: EnemyCollection) => void;
|
enemyExtract: [col: EnemyCollection];
|
||||||
}
|
}
|
||||||
|
|
||||||
export const hook = new EventEmitter<GameEvent>();
|
export const hook = new EventEmitter<GameEvent>();
|
||||||
|
|
||||||
interface ListenerEvent {
|
interface ListenerEvent {
|
||||||
// block
|
// block
|
||||||
hoverBlock: (block: Block, ev: MouseEvent) => void;
|
hoverBlock: [block: Block, ev: MouseEvent];
|
||||||
leaveBlock: (block: Block, ev: MouseEvent, leaveGame: boolean) => void;
|
leaveBlock: [block: Block, ev: MouseEvent, leaveGame: boolean];
|
||||||
clickBlock: (block: Block, ev: MouseEvent) => void;
|
clickBlock: [block: Block, ev: MouseEvent];
|
||||||
// mouse
|
// mouse
|
||||||
mouseMove: (ev: MouseEvent) => void;
|
mouseMove: [ev: MouseEvent];
|
||||||
}
|
}
|
||||||
|
|
||||||
class GameListener extends EventEmitter<ListenerEvent> {
|
class GameListener extends EventEmitter<ListenerEvent> {
|
||||||
|
Loading…
Reference in New Issue
Block a user