28 KiB
GeometryTD 三层拆分迁移 TODO
最后更新:2026-04-30
2026-04-30 第一波完成:Definition/Enum + Event 2026-04-30 第二波完成:Vector3/Mathf 替换,AttackPayload/HitContext 迁移
概述
| 指标 | 数量 | 状态 |
|---|---|---|
| 总文件数 | 457 | - |
| L0 (Domain) 可直接迁移 | ~180 | 第一波已完成 62 个文件,第二波完成 5 个文件 |
| L1 (Infrastructure) 需重构 | ~80 | - |
| L2 (Presentation) Unity 依赖 | ~197 | - |
项目骨架
src/
├── GeometryTD.Domain/ # L0 - 纯净 C#
├── GeometryTD.Infrastructure/ # L1 - Unity 胶水层
├── GeometryTD.Presentation/ # L2 - Unity 表现层
└── Geometry-Tower-Defense-Base.sln
阶段一:L0 直接迁移(无需修改)
以下文件可直接复制到 GeometryTD.Domain/,无任何修改。
Definition/Enum(27 个文件)
Definition/Enum/AttackMethodType.csDefinition/Enum/AttackPropertyType.csDefinition/Enum/CampType.csDefinition/Enum/CombatSelectActionType.cs⚠️ 已修改 - 从UI/Combat/Context/迁移Definition/Enum/EntryType.csDefinition/Enum/EventEffectType.csDefinition/Enum/EventRequirementType.csDefinition/Enum/InventoryTagSourceType.csDefinition/Enum/LevelThemeType.csDefinition/Enum/LevelVictoryType.csDefinition/Enum/PhaseEndType.csDefinition/Enum/ProcedureMainCombatEntryBlockReason.csDefinition/Enum/ProcedureMainFlowPhase.csDefinition/Enum/ProcedureMainRunAdvanceResult.csDefinition/Enum/ProcedureMainRunCompletionResult.csDefinition/Enum/RarityType.csDefinition/Enum/RelationType.csDefinition/Enum/RepoItemClickActionType.csDefinition/Enum/RunNodeCompletionStatus.cs⚠️ 已修改 - 从Procedure/ProcedureMain/RunModel.cs迁移枚举Definition/Enum/RunNodeStatus.cs⚠️ 已修改 - 从Procedure/ProcedureMain/RunModel.cs迁移枚举Definition/Enum/RunNodeType.cs⚠️ 已修改 - 从Procedure/ProcedureMain/RunModel.cs迁移枚举Definition/Enum/SceneType.csDefinition/Enum/TagCategory.csDefinition/Enum/TagTriggerPhase.csDefinition/Enum/TagType.csDefinition/Enum/TowerCompSlotType.csDefinition/Enum/UIFormType.cs
⚠️ 注:原 TODO 统计 25 个 Enum 文件,实际源文件 23 个。第一波新增 4 个枚举从其他层迁移:CombatSelectActionType(UI层)、RunNodeType/RunNodeStatus/RunNodeCompletionStatus(Procedure层)
Definition/DataStruct(8 个文件)
Definition/DataStruct/AttackPayload.cs⚠️ 已迁移 - Vector3 → System.Numerics.Vector3Definition/DataStruct/HitContext.cs⚠️ 已迁移 - Vector3 → System.Numerics.Vector3,TargetStatusRuntime 已恢复Definition/DataStruct/BackpackInventoryData.csDefinition/DataStruct/BuildInfo.csDefinition/DataStruct/EventItem.csDefinition/DataStruct/EventOption.csDefinition/DataStruct/ImpactData.csDefinition/DataStruct/TowerCompItemData.csDefinition/DataStruct/TowerStatsData.csDefinition/DataStruct/VersionInfo.cs
Definition/ 其他
Definition/CombatParticipantTowerValidation.csDefinition/CombatParticipantTowerValidationText.csDefinition/InventoryRarityRuleService.csDefinition/ParticipantTowerAssignResult.cs
Event(35 个文件)
Event/Combat/CombatBaseHpChangedEventArgs.csEvent/Combat/CombatCoinChangedEventArgs.csEvent/Combat/CombatDebugFailEventArgs.csEvent/Combat/CombatEndEventArgs.csEvent/Combat/CombatEnemyHpRateChangedEventArgs.csEvent/Combat/CombatFinishReturnEventArgs.csEvent/Combat/CombatPauseEventArgs.csEvent/Combat/CombatProcessEventArgs.csEvent/Combat/CombatSelectItemClickEventArgs.cs⚠️ 已修改 - 依赖迁移的枚举Event/EventForm/EventOptionItemSelectedEventArgs.csEvent/Game/NodeCompleteEventArgs.cs⚠️ 已修改 - 依赖迁移的枚举和数据结构Event/Game/NodeEnterEventArgs.cs⚠️ 已修改 - 依赖迁移的枚举Event/Game/NodeMapNodeClickEventArgs.csEvent/Game/NodeMapNodeEnterRequestedEventArgs.cs⚠️ 已修改 - 依赖迁移的枚举Event/Game/TestMenuNodeClickEventArgs.csEvent/General/RewardSelectGiveUpEventArgs.csEvent/General/RewardSelectItemSelectedEventArgs.csEvent/General/RewardSelectRefreshEventArgs.csEvent/MainForm/RepoButtonClickedEventArgs.csEvent/MainForm/ReturnButtonClickedEventArgs.csEvent/Menu/MenuExitRequestedEventArgs.csEvent/Menu/MenuSettingsRequestedEventArgs.csEvent/Menu/MenuStartRequestedEventArgs.csEvent/RepoForm/CombineSlotClickedEventArgs.csEvent/RepoForm/RepoCombineRequestedEventArgs.csEvent/RepoForm/RepoFormReturnEventArgs.csEvent/RepoForm/RepoItemClickedEventArgs.cs⚠️ 已修改 -UnityEngine.Vector2→System.Numerics.Vector2Event/RepoForm/RepoItemDragEndedEventArgs.csEvent/RepoForm/RepoParticipantAssignRequestedEventArgs.csEvent/RepoForm/RepoSellCancelRequestedEventArgs.csEvent/RepoForm/RepoSellConfirmRequestedEventArgs.csEvent/RepoForm/RepoSellModeToggleRequestedEventArgs.csEvent/Shop/ShopExitRequestedEventArgs.csEvent/Shop/ShopInventoryRequestedEventArgs.csEvent/Shop/ShopPurchaseRequestedEventArgs.cs
⚠️ 注:以下 5 个 Event 文件在初始迁移后因跨层依赖被移除,后经修复(枚举迁移、Vector2替换)后重新加入:CombatSelectItemClickEventArgs、NodeCompleteEventArgs、NodeEnterEventArgs、NodeMapNodeEnterRequestedEventArgs、RepoItemClickedEventArgs
UI/Base(3 个文件)
UI/Base/IUIFormController.csUI/Base/IUIUseCase.csUI/Base/UIContext.cs
Definition/Tag(37 个文件)
Definition/Tag/Aggregation/TagRuntimeData.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Aggregation/TagRuntimeUtility.cs⚠️ 已新建 - CloneTagRuntimes 方法Definition/Tag/Aggregation/TowerTagAggregationService.csDefinition/Tag/Combat/EnemyStatusTagRegistry.cs⚠️ 已迁移 - 简化版(含 FireTagEffect、IceTagEffect 注册)Definition/Tag/Combat/Handlers/AttackShapeTagEffectHandler.csDefinition/Tag/Combat/Handlers/NumericTagEffectHandler.csDefinition/Tag/Combat/States/EnemyStatusTagStateBase.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Combat/States/FireTagState.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Combat/States/IceTagState.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Combat/StatusEffects/EnemyStatusTagEffectBase.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Combat/StatusEffects/FireTagEffect.cs⚠️ 已迁移 - Mathf → System.MathDefinition/Tag/Combat/StatusEffects/IEnemyStatusTagEffect.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Combat/StatusEffects/IceTagEffect.cs⚠️ 已迁移 - Mathf → System.MathDefinition/Tag/Combat/TagEffectResolver.csDefinition/Tag/Generation/ComponentTagGenerationService.csDefinition/Tag/Generation/InventoryTagRandomContext.csDefinition/Tag/Generation/RarityTagBudgetRule.csDefinition/Tag/Generation/RarityTagBudgetRuleRegistry.csDefinition/Tag/Generation/TagGenerationRule.csDefinition/Tag/Generation/TagGenerationRuleRegistry.csDefinition/Tag/Metadata/Config/AbsoluteZeroTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/BurnSpreadTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/CritTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/ExecutionTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/FireTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/FreezeMaskTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/IceTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/IgniteBurstTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/InfernoTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/OverpenetrateTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/PierceTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/ShatterTagConfig.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/Config/TagConfigBase.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/TagDefinition.cs⚠️ 已迁移 - 无 Unity 依赖Definition/Tag/Metadata/TagDefinitionRegistry.cs⚠️ 已迁移 - 简化版(移除 DR* 依赖)
Definition/Event(6 个文件)
Definition/Event/EventEffect/AddGoldEffect.csDefinition/Event/EventEffect/AddRandomCompsEffect.csDefinition/Event/EventEffect/DamageRandomTowerEnduranceEffect.csDefinition/Event/EventEffect/EventEffectBase.csDefinition/Event/EventEffect/RemoveRandomCompEffect.csDefinition/Event/EventOptionExecutor.csDefinition/Event/EventRequirement/CompCountAtLeastRequirement.csDefinition/Event/EventRequirement/EventRequirementBase.csDefinition/Event/EventRequirement/GoldAtLeastRequirement.csDefinition/Event/EventRequirement/HasRelicRequirement.csDefinition/Event/EventRequirement/TowerCountAtLeastRequirement.cs
Factory(6 个文件)
Factory/EventEffectFactory.csFactory/EventRequirementFactory.csFactory/OutGameDropItemBuilder.csFactory/PhaseEndConditionFactory.csFactory/RunStateFactory.cs
Network(12 个文件)
Network/CSPacketBase.csNetwork/CSPacketHeader.csNetwork/Packet/CSHeartBeat.csNetwork/Packet/SCHeartBeat.csNetwork/PacketBase.csNetwork/PacketHandler/SCHeartBeatHandler.csNetwork/PacketHandlerBase.csNetwork/PacketHeaderBase.csNetwork/PacketType.csNetwork/SCPacketBase.csNetwork/SCPacketHeader.cs
UI/Context / RawData(大量文件)
UI/DialogParams.csUI/Game/Context/CombineAreaContext.csUI/Game/Context/CompAreaContext.csUI/Game/Context/EventFormContext.csUI/Game/Context/EventOptionItemContext.csUI/Game/Context/MainFormContext.csUI/Game/Context/NodeItemContext.csUI/Game/Context/NodeMapFormContext.csUI/Game/Context/ParticipantAreaContext.csUI/Game/Context/RepoFormContext.csUI/Game/Context/RepoFormState.csUI/Game/Context/RepoItemClickActionType.csUI/Game/Context/RepoItemContext.csUI/Game/Context/SellAreaContext.csUI/Game/Context/TowerRepoItemContext.csUI/Game/RawData/EventFormRawData.csUI/Game/RawData/NodeMapFormRawData.csUI/Game/RawData/RepoFormRawData.csUI/Game/RepoParticipantAssignDialogUtility.csUI/Game/View/IRepoDragItemView.csUI/General/Context/DialogFormContext.csUI/General/Context/RewardItemContext.csUI/General/Context/RewardSelectFormContext.csUI/General/Context/TagItemContext.csUI/General/RawData/DialogFormRawData.csUI/General/RawData/ItemDescFormRawData.csUI/General/RawData/RewardSelectFormRawData.csUI/General/RawData/RewardSelectItemRawData.csUI/General/RawData/RewardSelectItemRawDataBuilder.csUI/Menu/Context/MenuFormContext.csUI/Menu/Context/TestMenuFormContext.csUI/Menu/RawData/MenuFormRawData.csUI/Shop/Context/GoodsItemContext.csUI/Shop/Context/ShopFormContext.csUI/Shop/RawData/GoodsItemRawData.csUI/Shop/RawData/ShopFormRawData.csUI/Templates/GameScene/Context/DisplayItemContext.csUI/Templates/GameScene/Context/DisplayListAreaContext.csUI/Templates/GameScene/Context/GoodsItemContext.csUI/Templates/GameScene/Context/HudFormContext.csUI/Templates/GameScene/Context/LevelUpFormContext.csUI/Templates/GameScene/Context/LevelUpRewardItemContext.csUI/Templates/GameScene/Context/ShopFormContext.csUI/Templates/GameScene/RawData/LevelUpFormRawData.csUI/Templates/GameScene/RawData/ShopFormRawData.csUI/Templates/MenuScene/Context/RoleItemContext.csUI/Templates/MenuScene/Context/RolePropertyAreaContext.csUI/Templates/MenuScene/Context/SelectRoleFormContext.csUI/Templates/MenuScene/Context/StartMenuFormContext.csUI/Templates/MenuScene/RawData/SelectRoleFormRawData.csUI/Templates/MenuScene/RawData/StartMenuFormRawData.csUI/Combat/Context/CombatFinishFormContext.csUI/Combat/Context/CombatInfoFormContext.csUI/Combat/Context/CombatSelectActionType.csUI/Combat/RawData/CombatFinishFormRawData.csUI/Combat/RawData/CombatInfoFormRawData.csUI/Combat/RawData/CombatSelectClickObjectType.csUI/Combat/RawData/CombatSelectDisplayMode.cs
CustomComponent 纯 C# 文件
Components/IDamageReceiver.csCustomComponent/CombatNode/CombatScheduler/CombatSettlementContext.csCustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropContext.csCustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResult.csCustomComponent/CombatNode/CombatScheduler/ICombatSchedulerPort.csCustomComponent/CombatNode/CombatScheduler/PhaseEndConditions/IPhaseEndCondition.csCustomComponent/CombatNode/CombatScheduler/PhaseEndConditions/NonePhaseEndCondition.csCustomComponent/CombatNode/CombatScheduler/PhaseEndConditions/PhaseEndConditionContext.csCustomComponent/CombatNode/CombatScheduler/PhaseEndConditions/TimeElapsedPhaseEndCondition.csCustomComponent/CombatNode/CombatSettlementCalculator.csCustomComponent/CombatNode/CombatSettlementCommitter.csCustomComponent/CombatNode/EnemyManager/EnemyLifecycleTracker.csCustomComponent/InventoryGeneration/DropPoolRoller.csCustomComponent/InventoryGeneration/InventoryGenerationRandomContext.csCustomComponent/InventoryGeneration/RewardCandidateBuilder.csCustomComponent/PlayerInventory/PlayerInventoryStateStore.csCustomComponent/PlayerInventory/PlayerInventoryTowerRosterService.csCustomComponent/PlayerInventory/PlayerInventoryTradeService.cs
Scene/Pathfinding
Scene/Pathfinding/IMapPathfinder.cs
Procedure 纯 C#
Procedure/ProcedureMain/FixedRunNodeSequenceBuilder.csProcedure/ProcedureMain/ProcedureMainCombatEntryValidationResult.csProcedure/ProcedureMain/ProcedureMainCombatEntryValidationService.csProcedure/ProcedureMain/ProcedureMainNodeEventGuardService.csProcedure/ProcedureMain/ProcedureMainParticipantTowerCleanupService.csProcedure/ProcedureMain/ProcedureMainRunCompletionService.csProcedure/ProcedureMain/ProcedureMainRunFlowService.csProcedure/ProcedureMain/RunStateAdvanceService.cs
Entity
Entity/EntityLogic/EnemyTagStatusRuntime.cs
Utility
Utility/EnumUtility.csUtility/InventoryCloneUtility.csUtility/InventoryParticipantUtility.csUtility/InventorySeedUtility.csUtility/ItemDescUtility.csUtility/ShopPriceRuleService.csUtility/WebUtility.cs
阶段二:L1 重构迁移(需修改后迁移)
策略 1:Vector3 替换
将 UnityEngine.Vector3 替换为 System.Numerics.Vector3
| 文件 | 修改内容 |
|---|---|
Definition/DataStruct/AttackPayload.cs |
Vector3 OriginPosition → System.Numerics.Vector3 |
Definition/DataStruct/HitContext.cs |
Vector3 → System.Numerics.Vector3 |
Entity/EntityLogic/CombatSelectInputService.cs |
Vector2 → System.Numerics.Vector2 |
策略 2:GameEntry 静态调用替换为注入服务
| 文件 | 修改内容 |
|---|---|
Definition/Tag/Metadata/TagDefinitionRegistry.cs |
GameEntry.DataTable → 注入 IDataTableService |
Definition/Tag/Presentation/TagDisplayUtility.cs |
GameEntry.DataTable → 注入 IDataTableService |
Utility/AssetUtility.cs |
GameEntry.* → 注入服务 |
Utility/JsonNetUtility.cs |
GameFramework.Utility.Json → 注入 |
策略 3:DataTable 保持 L1
所有 DR* 类继承 UnityGameFramework.Runtime.DataRowBase,留在 L1:
DataTable/DREnemy.csDataTable/DRLevel.csDataTable/DRLevelPhase.csDataTable/DRLevelSpawnEntry.csDataTable/DREvent.csDataTable/DREntity.csDataTable/DRBaseComp.csDataTable/DRBearingComp.csDataTable/DRMusic.csDataTable/DRMuzzleComp.csDataTable/DROutGameDropPool.csDataTable/DRRarityTagBudget.csDataTable/DRScene.csDataTable/DRShopPrice.csDataTable/DRSound.csDataTable/DRTag.csDataTable/DRTagConfig.csDataTable/DRUIForm.csDataTable/DRUISound.csDataTable/DataTableExtension.cs(含 Vector3/Color 解析)DataTable/BinaryReaderExtension.cs
策略 4:Tilemap 接口抽象
| 文件 | 修改内容 |
|---|---|
Scene/Map/MapTopologyService.cs |
Tilemap → ITilemap 接口 |
Scene/Map/TowerPlacementService.cs |
Tilemap → ITilemap 接口 |
Scene/Map/TowerSelectionPresenter.cs |
Vector3 → System.Numerics.Vector3 |
Scene/Map/MapCombatRuntimeBridge.cs |
Unity 类型 → 接口 |
Scene/Pathfinding/GridMapPathfinder.cs |
Vector3Int → 自定义 struct |
策略 5:Constant.Layer 修复
Definition/Constant/Constant.Layer.cs—LayerMask.NameToLayer→ int 常量
策略 6:Color 替换
Entity/EntityLogic/CombatSelectUseCaseConfigurator.cs—UnityEngine.Color→ 纯 C# structProcedure/ProcedureMain/RunState.cs—UnityEngine.Color→ 纯 C# structUtility/IconColorGenerator.cs—UnityEngine.Color→ 纯 C# structUtility/TowerIconComposeUtility.cs—UnityEngine.Color/Sprite→ 接口
策略 7:TagEffectResolver
Definition/Tag/Combat/TagEffectResolver.cs—Mathf→System.Math
阶段三:L2 保持 Unity
以下文件属于 L2,直接保留在 Unity 项目中,无需修改:
Base(3 个文件)
Base/GameEntry.csBase/GameEntry.Builtin.csBase/GameEntry.Custom.cs
Components(8 个文件)
Components/BasicBaseComp.csComponents/BasicBearingComp.csComponents/InputComponent.csComponents/MovementComponent.csComponents/ShooterBullet.csComponents/ShooterMuzzleComp.csComponents/TowerController.cs
CustomComponent/*Component(10 个文件)
CustomComponent/BuiltinDataComponent.csCustomComponent/CombatNode/CombatNodeComponent.csCustomComponent/EventNodeComponent.csCustomComponent/HPBar/HPBarComponent.csCustomComponent/InventoryGeneration/InventoryGenerationComponent.csCustomComponent/PlayerInventory/PlayerInventoryComponent.csCustomComponent/ResolutionAdapterComponent.csCustomComponent/ShopNodeComponent.csCustomComponent/SpriteCacheComponent.csCustomComponent/TagRegistry/TagRegistryComponent.csCustomComponent/UIRouterComponent.cs
Entity/EntityLogic(7 个文件)
Entity/EntityLogic/EntityBase.csEntity/EntityLogic/EnemyEntity.csEntity/EntityLogic/TowerEntity.csEntity/EntityLogic/BulletEntity.csEntity/EntityLogic/Player.csEntity/EntityLogic/MapEntity.csEntity/EntityLogic/CombatSelectUseCaseConfigurator.cs
UI/View(大量文件)
所有继承 UGuiForm 的 View 类:
UI/Combat/View/CombatFinishForm.csUI/Combat/View/CombatInfoForm.csUI/Combat/View/CombatSelectBuildArea.csUI/Combat/View/CombatSelectForm.csUI/Combat/View/CombatSelectFuncArea.csUI/Combat/View/TowerSelectItem.csUI/Game/View/CombineArea.csUI/Game/View/CombineSlotItem.csUI/Game/View/CompArea.csUI/Game/View/EventForm.csUI/Game/View/EventOptionItem.csUI/Game/View/MainForm.csUI/Game/View/NodeItem.csUI/Game/View/NodeMapForm.csUI/Game/View/ParticipantArea.csUI/Game/View/RepoForm.csUI/Game/View/RepoItem.csUI/Game/View/SellArea.csUI/Game/View/TowerRepoItem.csUI/General/View/DialogForm.csUI/General/View/IconArea.csUI/General/View/ItemDescForm.csUI/General/View/RewardItem.csUI/General/View/RewardSelectForm.csUI/General/View/TagItem.csUI/General/View/TowerIconArea.csUI/Menu/View/MenuForm.csUI/Menu/View/TestMenuForm.csUI/Shop/View/GoodsItem.csUI/Shop/View/ShopForm.csUI/Templates/GameScene/View/DisplayItem.csUI/Templates/GameScene/View/DisplayItemInfoForm.csUI/Templates/GameScene/View/DisplayItemObject.csUI/Templates/GameScene/View/DisplayListArea.csUI/Templates/GameScene/View/HudForm.csUI/Templates/GameScene/View/LevelUpForm.csUI/Templates/GameScene/View/LevelUpRewardItem.csUI/Templates/GameScene/View/ShopForm.csUI/Templates/MenuScene/View/RoleItem.csUI/Templates/MenuScene/View/RolePropertyArea.csUI/Templates/MenuScene/View/SelectRoleForm.csUI/Templates/MenuScene/View/SettingForm.csUI/Templates/MenuScene/View/StartMenuForm.csUI/HPBarItem.csUI/CommonButton.csUI/UpdateResourceForm.cs
UI/Controller(多个文件)
UI/Combat/Controller/CombatFinishFormController.csUI/Combat/Controller/CombatInfoFormController.csUI/Combat/Controller/CombatSelectFormController.csUI/Game/Controller/EventFormController.csUI/Game/Controller/MainFormController.csUI/Game/Controller/NodeMapFormController.csUI/Game/Controller/RepoFormController.csUI/General/Controller/DialogFormController.csUI/General/Controller/ItemDescFormController.csUI/General/Controller/RewardSelectFormController.csUI/Menu/Controller/MenuFormController.csUI/Menu/Controller/TestMenuFormController.csUI/Shop/Controller/ShopFormController.csUI/Templates/GameScene/Controller/DisplayItemInfoFormController.csUI/Templates/GameScene/Controller/HudFormController.csUI/Templates/GameScene/Controller/LevelUpFormController.csUI/Templates/GameScene/Controller/ShopFormController.csUI/Templates/MenuScene/Controller/SelectRoleFormController.csUI/Templates/MenuScene/Controller/StartMenuFormController.cs
Procedure(13 个文件)
Procedure/Base/ProcedureBase.csProcedure/Base/ProcedureChangeScene.csProcedure/Base/ProcedureCheckResources.csProcedure/Base/ProcedureCheckVersion.csProcedure/Base/ProcedureInitResources.csProcedure/Base/ProcedureLaunch.csProcedure/Base/ProcedurePreload.csProcedure/Base/ProcedureSplash.csProcedure/Base/ProcedureUpdateResources.csProcedure/Base/ProcedureUpdateVersion.csProcedure/Base/ProcedureVerifyResources.csProcedure/ProcedureMain/ProcedureMain.csProcedure/ProcedureMenu.csProcedure/ProcedureTest.cs
Scene(5 个文件)
Scene/HideByBoundary.csScene/Map/House.csScene/Map/MapDataRefs.csScene/Map/Spawner.cs
PoolObjectBase(3 个文件)
PoolObjectBase/HPBarItemObject.csPoolObjectBase/RepoItemObject.csPoolObjectBase/TowerRepoItemObject.cs
Network
Network/NetworkChannelHelper.cs
Editor(3 个文件)
Editor/GameFrameworkConfigs.csEditor/GeometryTDBuildEventHandler.csEditor/SceneSwitchLeft.cs
关键依赖链
L0 迁移阻塞链:
├── TagDefinitionRegistry (L1 重构) ──→ DR* (L1) ──→ DataTableExtension (L1)
├── AttackPayload (L1 重构) ──→ TagEffectResolver (L1 重构)
└── MapTopologyService (L1 重构) ──→ EntityData (L2)
重构优先级
- 第一波:Definition/Enum + Event ✅ 已完成
- 第二波:Vector3 → System.Numerics.Vector3,Mathf → System.Math ✅ 已完成部分
- 第三波:Tag 系统迁移到 L1(TagDefinitionRegistry、TagEffectResolver 等)
- 第四波:GameEntry 静态调用 → 接口注入
- 第五波:Tilemap 接口抽象
- 第六波:剩余 L1 文件迁移
第一波修改记录(2026-04-30)
进度统计
| 类别 | 源文件数 | 已迁移 | 完成率 |
|---|---|---|---|
| Definition/Enum | 23 | 27* | 100%+ |
| Event | 35 | 35 | 100% |
| 小计 | 58 | 62 | ~34% of L0 |
*注:Enum 源文件23个,第一波新增4个枚举从其他层迁移,故总计27个。L0总约180个文件。
新增文件
| 文件 | 说明 |
|---|---|
Definition/Enum/CombatSelectActionType.cs |
从 UI/Combat/Context/ 迁移 |
Definition/Enum/RunNodeType.cs |
从 Procedure/ProcedureMain/RunModel.cs 迁移枚举 |
Definition/Enum/RunNodeStatus.cs |
从 Procedure/ProcedureMain/RunModel.cs 迁移枚举 |
Definition/Enum/RunNodeCompletionStatus.cs |
从 Procedure/ProcedureMain/RunModel.cs 迁移枚举 |
Definition/DataStruct/RunItemState.cs |
新建,简化版 |
Definition/DataStruct/RunNodeCompletionSnapshot.cs |
新建,简化版(移除了对 Unity 类型的依赖) |
修改文件
| 文件 | 修改内容 |
|---|---|
Event/RepoForm/RepoItemClickedEventArgs.cs |
UnityEngine.Vector2 → System.Numerics.Vector2 |
Event/Combat/CombatSelectItemClickEventArgs.cs |
using GeometryTD.UI → 迁移的枚举 |
Event/Game/NodeCompleteEventArgs.cs |
依赖迁移的枚举和数据结构 |
Event/Game/NodeEnterEventArgs.cs |
using GeometryTD.Procedure → 迁移的枚举 |
Event/Game/NodeMapNodeEnterRequestedEventArgs.cs |
using GeometryTD.Procedure → 迁移的枚举 |
命名空间统一
所有新增/修改的 Enum 文件使用 GeometryTD.Definition 命名空间(与原有文件保持一致)
第二波修改记录(2026-04-30)
进度统计
| 类别 | 源文件数 | 已迁移 | 说明 |
|---|---|---|---|
| Definition/DataStruct | 2 | 2 | AttackPayload, HitContext(Vector3 替换) |
| Definition/Tag | 17 | 17 | Tag系统(TagDefinition、TagConfig系列、TagEffect系列等) |
| Entity/EntityLogic | 1 | 1 | EnemyTagStatusRuntime(Mathf → System.Math) |
| 小计 | 20 | 20 | - |
新增/迁移文件(Mathf 替换)
| 文件 | 修改内容 |
|---|---|
Entity/EntityLogic/EnemyTagStatusRuntime.cs |
Mathf → System.Math |
Definition/Tag/Combat/StatusEffects/FireTagEffect.cs |
新建,Mathf → System.Math |
Definition/Tag/Combat/StatusEffects/IceTagEffect.cs |
新建,Mathf → System.Math |
Definition/Tag/Metadata/TagDefinitionRegistry.cs |
简化版,移除 DR* 依赖 |
L0 构建状态
✅ dotnet build GeometryTD.Domain 成功,0 警告 0 错误
阻塞说明
TagDefinitionRegistry简化版已可用,DRTag/DRTagConfig依赖已移除TagGenerationRuleRegistry等仍有Debug.Assert待替换
验收标准
- L0 独立构建成功(
dotnet build GeometryTD.Domain)✅ 2026-04-30 - L1 引用 L0 无循环依赖
- L2 引用 L1 无循环依赖
- 三层整体构建成功(
dotnet build Geometry-Tower-Defense-Base.sln) - 原有游戏流程(战斗/商店/组装)在 Unity 中正常运行