mirror of
https://github.com/motajs/template.git
synced 2026-11-02 06:34:31 +08:00
refactor: combat flow
This commit is contained in:
1 parent
548ad9eb7d
commit
2d3287804d
4 files changed
+34
-8
No files matched your search
@@ -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>;
|
||||
/** 怪物位置 */
|
||||
|
||||
Reference in new issue
Block a user