refactor: 将旧样板怪物移植单独提取出来

This commit is contained in:
AncTe committed 2026-04-15 23:12:28 +08:00
1 parent 6c1acb990e
commit 39e91b241f
6 files changed
+72 -14

No files matched your search

+14 -2
View File
@@ -13,6 +13,7 @@ import {
import { IEnemyAttributes } from './enemy/types';
import {
CommonAuraConverter,
EnemyLegacyBridge,
GuardAuraConverter,
MainEnemyFinalEffect,
MainMapDamageConverter,
@@ -38,9 +39,18 @@ export class CoreState implements ICoreState {
this.idNumberMap = new Map();
this.numberIdMap = new Map();
//#region 怪物初始化
// 怪物管理器初始化
this.enemyManager = new EnemyManager();
registerSpecials(this.enemyManager);
const enemyManager = new EnemyManager(new EnemyLegacyBridge());
enemyManager.setAttributeDefaults('hp', 0);
enemyManager.setAttributeDefaults('atk', 0);
enemyManager.setAttributeDefaults('def', 0);
enemyManager.setAttributeDefaults('exp', 0);
enemyManager.setAttributeDefaults('money', 0);
enemyManager.setAttributeDefaults('point', 0);
registerSpecials(enemyManager);
this.enemyManager = enemyManager;
// 怪物上下文初始化
const enemyContext = new EnemyContext<IEnemyAttributes>();
const damageSystem = new DamageSystem(enemyContext);
@@ -54,6 +64,8 @@ export class CoreState implements ICoreState {
enemyContext.registerFinalEffect(new MainEnemyFinalEffect());
enemyContext.resize(TILE_WIDTH, TILE_HEIGHT);
this.enemyContext = enemyContext;
//#endregion
}
saveState(): IStateSaveData {
@@ -1,5 +1,6 @@
export * from './aura';
export * from './damage';
export * from './final';
export * from './legacy';
export * from './mapDamage';
export * from './special';
@@ -0,0 +1,19 @@
import { IEnemyLegacyBridge } from '@user/data-base';
import { IEnemyAttributes } from './types';
export class EnemyLegacyBridge implements IEnemyLegacyBridge<IEnemyAttributes> {
fromLegacyEnemy(
enemy: Enemy,
defaultAttr: Partial<IEnemyAttributes>
): IEnemyAttributes {
return {
hp: enemy.hp ?? defaultAttr.hp ?? 0,
atk: enemy.atk ?? defaultAttr.atk ?? 0,
def: enemy.def ?? defaultAttr.def ?? 0,
money: enemy.money ?? defaultAttr.money ?? 0,
exp: enemy.exp ?? defaultAttr.exp ?? 0,
point: enemy.point ?? defaultAttr.point ?? 0,
guard: defaultAttr.guard ?? new Set()
};
}
}
@@ -51,7 +51,7 @@ export interface IHaloValue {
export function registerSpecials(
manager: IEnemyManager<IEnemyAttributes>
): void {
manager.registerAttribute('guard', new Set());
manager.setAttributeDefaults('guard', new Set());
// 0 - 空
manager.registerSpecial(