feat: 勇士撞击行为

This commit is contained in:
AncTe committed 2026-06-29 19:57:46 +08:00
1 parent 0508dfb9e4
commit c4bcecdf8a
12 files changed
+380 -254

No files matched your search

+11 -15
View File
@@ -5,14 +5,13 @@ import {
ISpecial,
IReadonlyHeroAttribute,
IHeroAttribute,
IStateBase,
IStateBaseExtended
IDataBaseExtended
} from '@user/data-base';
import { ILocationHelper } from '@user/data-common';
//#region 辅助接口
export interface IEnemyHandler<TEnemy, THero> {
export interface IEnemyHandler<TEnemy, THero> extends IDataBaseExtended {
/** 怪物属性信息 */
readonly enemy: IEnemy<TEnemy>;
/** 怪物上下文 */
@@ -21,11 +20,12 @@ export interface IEnemyHandler<TEnemy, THero> {
readonly locator: ITileLocator;
/** 勇士属性信息 */
readonly hero: IReadonlyHeroAttribute<THero>;
/** 当前全局状态对象 */
readonly state: IStateBase;
}
export interface IReadonlyEnemyHandler<TEnemy, THero> {
export interface IReadonlyEnemyHandler<
TEnemy,
THero
> extends IDataBaseExtended {
/** 怪物属性信息 */
readonly enemy: IReadonlyEnemy<TEnemy>;
/** 怪物上下文 */
@@ -34,8 +34,6 @@ export interface IReadonlyEnemyHandler<TEnemy, THero> {
readonly locator: ITileLocator;
/** 勇士属性信息 */
readonly hero: IReadonlyHeroAttribute<THero>;
/** 当前全局状态对象 */
readonly state: IStateBase;
}
//#endregion
@@ -283,7 +281,7 @@ export interface IMapDamageReducer {
): Readonly<IMapDamageInfo>;
}
export interface IMapDamage<TEnemy, THero> extends IStateBaseExtended {
export interface IMapDamage<TEnemy, THero> extends IDataBaseExtended {
/** 当前绑定的怪物上下文 */
readonly context: IEnemyContext<TEnemy, THero>;
@@ -406,7 +404,7 @@ export interface IDamageCalculator<TEnemy, THero> {
): number;
}
export interface IDamageContext<TEnemy, THero> extends IStateBaseExtended {
export interface IDamageContext<TEnemy, THero> extends IDataBaseExtended {
/**
* 获取战斗伤害信息
* @param enemy 怪物视图
@@ -499,7 +497,7 @@ export interface IDamageSystem<TEnemy, THero> extends IDamageContext<
export interface IReadonlyEnemyContext<
TEnemy,
THero
> extends IStateBaseExtended {
> extends IDataBaseExtended {
/** 怪物上下文宽度 */
readonly width: number;
/** 怪物上下文高度 */
@@ -739,7 +737,7 @@ export interface IEnemyContext<TEnemy, THero> extends IReadonlyEnemyContext<
//#region 战斗流程
export interface ICombatFlowHandler<TEnemy, THero> {
export interface ICombatFlowHandler<TEnemy, THero> extends IDataBaseExtended {
/** 战斗的怪物是否在地图上 */
readonly onMap: boolean;
/** 可修改勇士对象 */
@@ -750,8 +748,6 @@ export interface ICombatFlowHandler<TEnemy, THero> {
readonly context: IEnemyContext<TEnemy, THero>;
/** 怪物位置 */
readonly locator: ITileLocator;
/** 全局状态对象 */
readonly state: IStateBase;
}
export interface ICombatFlowHook<TEnemy, THero> extends IHookBase {
@@ -803,7 +799,7 @@ export interface ICombatResult<TEnemy, THero> {
}
export interface ICombatFlow<TEnemy, THero>
extends IHookable<ICombatFlowHook<TEnemy, THero>>, IStateBaseExtended {
extends IHookable<ICombatFlowHook<TEnemy, THero>>, IDataBaseExtended {
/** 勇士属性对象 */
readonly hero: IReadonlyHeroAttribute<THero> | null;
/** 怪物上下文对象 */
@@ -3,7 +3,7 @@ import {
ILayerState,
IMapLayer,
IStateBase,
IStateBaseExtended
IDataBaseExtended
} from '@user/data-base';
export interface ITriggerHandler {
@@ -19,7 +19,7 @@ export interface ITriggerHandler {
export type TriggerFactory = (type: number, state: IStateBase) => ITrigger;
export interface ITrigger extends IStateBaseExtended {
export interface ITrigger extends IDataBaseExtended {
/** 触发器类型标识 */
readonly type: number;
/** 触发器优先级 */
@@ -37,7 +37,7 @@ export interface ITrigger extends IStateBaseExtended {
collection(): ITriggerCollection;
}
export interface ITriggerRegistry extends IStateBaseExtended {
export interface ITriggerRegistry extends IDataBaseExtended {
/**
* 注册一个按类型创建的触发器工厂
* @param type 触发器类型