refactor: combat flow

This commit is contained in:
AncTe committed 2026-09-30 17:54:11 +08:00
1 parent 548ad9eb7d
commit 2d3287804d
4 files changed
+34 -8

No files matched your search

+13 -7
View File
@@ -17,7 +17,6 @@ import {
IReadonlyEnemyHandler
} from './types';
import {
Enemy,
IEnemy,
IHeroAttribute,
IReadonlyEnemy,
@@ -78,8 +77,13 @@ export class CombatFlow<TEnemy, THero>
}
}
/**
* 创建战斗流程信息对象
* @param enemy 怪物对象
* @param locator 怪物所在位置
*/
private createHandler(
enemy: IEnemy<TEnemy>,
enemy: IReadonlyEnemy<TEnemy>,
locator: ITileLocator | null
): ICombatFlowHandler<TEnemy, THero> {
return {
@@ -92,6 +96,11 @@ export class CombatFlow<TEnemy, THero>
};
}
/**
* 创建只读怪物信息对象
* @param enemy 只读怪物对象
* @param locator 怪物所在位置
*/
private createEnemyHandler(
enemy: IReadonlyEnemy<TEnemy>,
locator: ITileLocator | null
@@ -234,11 +243,8 @@ export class CombatFlow<TEnemy, THero>
if (view) return this.battle(view);
else {
// 否则走单独的流程
const locator = { x: -1, y: -1 };
const attr = enemy.cloneAttributes();
const writableEnemy = new Enemy(enemy.id, enemy.code, attr);
const handler = this.createHandler(writableEnemy, locator);
const eHandler = this.createEnemyHandler(enemy, locator);
const handler = this.createHandler(enemy, null);
const eHandler = this.createEnemyHandler(enemy, null);
return this.combatFlow(handler, eHandler);
}
}
@@ -110,6 +110,8 @@ export class EnemyContext<TEnemy, THero> implements IEnemyContext<
this.needUpdate = true;
}
//#region 功能注册
registerAuraConverter(converter: IAuraConverter<TEnemy, THero>): void {
this.auraConverter.add(converter);
this.converterStatus.set(converter, true);
@@ -201,6 +203,8 @@ export class EnemyContext<TEnemy, THero> implements IEnemyContext<
return this.bindedHero;
}
//#endregion
/**
* 创建可修改信息对象
* @param enemy 怪物对象
@@ -743,7 +743,7 @@ export interface ICombatFlowHandler<TEnemy, THero> extends IDataBaseExtended {
/** 可修改勇士对象 */
readonly hero: IHeroAttribute<THero>;
/** 可修改怪物对象 */
readonly enemy: IEnemy<TEnemy>;
readonly enemy: IReadonlyEnemy<TEnemy>;
/** 怪物上下文 */
readonly context: IEnemyContext<TEnemy, THero>;
/** 怪物位置 */