You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
6.5 KiB
168 lines
6.5 KiB
/**
|
|
* MX 通用塔防战斗模块(纯 TypeScript,无 Cocos 依赖)
|
|
*
|
|
* ## 快速上手
|
|
*
|
|
* 业务侧从本模块入口引入 `BattleHost` / `BattleEventType` / `EffectRegistry` /
|
|
* `registerBuiltinBattleEffects`(本文件注释勿写回本入口的 from 字面量,避免 Rollup 误报环)。
|
|
*
|
|
* 1. `registerBuiltinBattleEffects()` 注册内置效果;业务效果自行 `EffectRegistry.register`
|
|
* 2. 自实现 `IConfigProvider` 或用 `InMemoryConfigProvider`
|
|
* 3. `BattleHost.open({ levelId, config, mode, bridge })` 开局
|
|
* 4. `host.deploy` → `host.startCombat` → 每帧 `host.tick`
|
|
* 5. `host.on(BattleEventType.…)` 听事件;结束 `host.destroy()`
|
|
*
|
|
* ## 扩展点
|
|
*
|
|
* | 接口 | 用途 |
|
|
* |------|------|
|
|
* | `IConfigProvider` | 单位 / 技能 / Buff / 关卡 / 波次配表 |
|
|
* | `IBattleBridge` | 引擎相关:寻路 tick、prefab、特效 |
|
|
* | `EffectRegistry` / `ConditionRegistry` | 注册自定义 Effect / Condition(key 为字符串) |
|
|
* | `DeploySystem.setRules` | 放置规则(备战阶段、区域限制等) |
|
|
*/
|
|
|
|
// Core
|
|
export { BattlePhase } from './core/BattlePhase';
|
|
export { BattleFlowMode } from './core/BattleFlowMode';
|
|
export { BattleClock } from './core/BattleClock';
|
|
export { SeededRNG } from './core/SeededRNG';
|
|
export { BattleSession } from './core/BattleSession';
|
|
export { BattleFactory } from './core/BattleFactory';
|
|
export type { BattleCreateOptions } from './core/BattleFactory';
|
|
export { BattleHost } from './core/BattleHost';
|
|
export type { BattleHostOptions } from './core/BattleHost';
|
|
|
|
// Bridge
|
|
export type { IBattleBridge } from './bridge/IBattleBridge';
|
|
|
|
// ECS 核心框架(从独立 ecs 模块 re-export)
|
|
export type { EntityId } from 'db://assets/mx/module/ecs';
|
|
export { INVALID_ENTITY_ID } from 'db://assets/mx/module/ecs';
|
|
export { World } from 'db://assets/mx/module/ecs';
|
|
export type { ComponentStorage } from 'db://assets/mx/module/ecs';
|
|
export { EcsComponent } from 'db://assets/mx/module/ecs';
|
|
export type { ComponentCtor } from 'db://assets/mx/module/ecs';
|
|
export { View1, View2 } from 'db://assets/mx/module/ecs';
|
|
export { SystemRegistry } from 'db://assets/mx/module/ecs';
|
|
// ISystem 仅为 interface,须 type-only re-export;值导出会让 Rollup 打包报 not exported
|
|
export type { ISystem, ISystemCtor } from 'db://assets/mx/module/ecs';
|
|
|
|
// ECS 战斗业务组件
|
|
export {
|
|
AttrId,
|
|
TransformComp,
|
|
TeamComp,
|
|
HealthComp,
|
|
CombatComp,
|
|
AbilitySetComp,
|
|
GridOccupancyComp,
|
|
TagComp,
|
|
BuffContainerComp,
|
|
UnitMetaComp,
|
|
MovementComp,
|
|
ProjectileComp,
|
|
AttributeComp,
|
|
AtkHookComp,
|
|
ComboAttackComp,
|
|
} from './ecs/Components';
|
|
export {
|
|
isYanSoulClaimed,
|
|
canDealDamageToYanClaimed,
|
|
isBajiaoBlowRetreating,
|
|
} from './ecs/Components';
|
|
export type { BuffInstance, AttributeModifier } from './ecs/Components';
|
|
export { HIT_TEMP_GROUP, COUNT_BUFF_GROUP } from './combat/DamagePipeline';
|
|
|
|
// 战斗服务聚合接口(effect/condition 脚本扩展点用)
|
|
export type { BattleServices } from './combat/BattleServices';
|
|
|
|
// Battlefield
|
|
export type { Cell } from './battlefield/Cell';
|
|
export { cellKey, cellsEqual } from './battlefield/Cell';
|
|
export { GridMap } from './battlefield/GridMap';
|
|
export { MapRegion, createSoloRegion } from './battlefield/MapRegion';
|
|
export { SpatialGrid } from './battlefield/SpatialGrid';
|
|
export { MapTopology } from './battlefield/MapTopology';
|
|
export type { MapTopologySnapshot } from './battlefield/MapTopology';
|
|
export {
|
|
campAreaPolicyFromPreset,
|
|
resolveCampAreaPolicy,
|
|
isCampAreaScoped,
|
|
} from './battlefield/CampAreaPolicy';
|
|
export type { CampAreaPolicy, CampAreaPreset, CampAreaScope } from './battlefield/CampAreaPolicy';
|
|
export { Pathfinder } from './battlefield/Pathfinder';
|
|
export { buildPatrolLoopFromWalkable } from './battlefield/PatrolLoopBuilder';
|
|
/** Pathfinder 即战场格子导航系统(寻路 / 可达性 / 路径长度估算) */
|
|
|
|
// Player / Mode
|
|
export { PlayerSlot } from './player/PlayerSlot';
|
|
export type { IBattleMode } from './player/BattleMode';
|
|
export { SoloBattleMode, PvPBattleMode } from './player/BattleMode';
|
|
|
|
// Config
|
|
export type {
|
|
AbilityDef,
|
|
UnitDef,
|
|
BuffDef,
|
|
WaveDef,
|
|
WavePortPlan,
|
|
WaveSpawnSegment,
|
|
LevelDef,
|
|
EffectSpec,
|
|
TargetSpec,
|
|
TimelineEvent,
|
|
TriggerSpec,
|
|
ConditionSpec,
|
|
CostSpec,
|
|
MapRegionConfig,
|
|
UnitDefId,
|
|
AbilityId,
|
|
BuffId,
|
|
LevelId,
|
|
WaveId,
|
|
} from './config/BattleConfigTypes';
|
|
export type { IConfigProvider } from './config/IConfigProvider';
|
|
export { InMemoryConfigProvider } from './config/InMemoryConfigProvider';
|
|
|
|
// Deploy
|
|
export { DeploySystem } from './deploy/DeploySystem';
|
|
export type { DeployResult } from './deploy/DeployTypes';
|
|
export { createDefaultDeployRules } from './deploy/DeployValidator';
|
|
|
|
// Combat systems
|
|
export { AttributeSystem } from './combat/AttributeSystem';
|
|
export { BuffSystem } from './combat/BuffSystem';
|
|
export { AbilitySystem } from './combat/AbilitySystem';
|
|
export { EffectExecutor } from './combat/EffectExecutor';
|
|
export { TargetResolver } from './combat/TargetResolver';
|
|
export { DamagePipeline } from './combat/DamagePipeline';
|
|
export { ProjectileSystem } from './combat/ProjectileSystem';
|
|
export type { ProjectileOptions } from './combat/ProjectileSystem';
|
|
export { LifecycleSystem } from './combat/LifecycleSystem';
|
|
export { MovementSystem } from './combat/MovementSystem';
|
|
export { ReachGoalBaseDamageSystem } from './combat/ReachGoalBaseDamageSystem';
|
|
export type { AbilityContext } from './combat/AbilityContext';
|
|
export { PresentationPipeline } from './combat/PresentationPipeline';
|
|
export type { DeferredTimelineSlice } from './combat/PresentationPipeline';
|
|
export { VAR_LAST_CRIT } from './combat/DamagePipeline';
|
|
|
|
// Unit
|
|
export { UnitFactory } from './unit/UnitFactory';
|
|
export { WaveSpawner } from './unit/WaveSpawner';
|
|
|
|
// Registry / Extension
|
|
export { EffectRegistry, ConditionRegistry } from './registry/EffectRegistry';
|
|
export type { EffectHandler, ConditionHandler } from './registry/EffectRegistry';
|
|
export { registerBuiltinBattleEffects } from './registry/registerBuiltin';
|
|
|
|
// Events
|
|
export { BattleEventBus } from './events/BattleEventBus';
|
|
export { BattleEventType, BATTLE_EVENT_ALL } from './events/BattleEventType';
|
|
export type { BattleEventSubscription } from './events/BattleEventType';
|
|
export { BattleEventFactory } from './events/BattleEvents';
|
|
export type { BattleEvent, BattleEventListener } from './events/BattleEvents';
|
|
|
|
// ECS tags / teams
|
|
export { EntityTag } from './ecs/EntityTag';
|
|
export { BattleTeamId } from './ecs/BattleTeamId';
|
|
|