SepComet
|
ab7c7172b8
|
refactor 6:
- CombatInfoFormUseCase.cs 改成回调驱动:
- 不再直接读 GameEntry.CombatNode
- 由 CombatLoadSession.cs 在打开 CombatInfoForm 前注入 modelProvider 和 TryEndCombat 回调
- CombatSelectFormUseCase.cs 的默认 coin provider 改成返回 0,不再偷偷 fallback 到 GameEntry.CombatNode
- CombatFinishFormUseCase.cs 去掉了未准备 summary 时对 GameEntry.CombatNode 的兜底读取
- MapData.cs 进一步补充了战斗初始快照:
- InventorySnapshot
- ParticipantTowerSnapshot
- CombatLoadingState.cs 现在会把这些背包/参战塔快照也一起打进 MapData
- MapEntity.cs 配置建塔面板时不再直接读 PlayerInventory,改为用 MapData 里的快照
|
2026-03-07 15:22:24 +08:00 |
SepComet
|
ca7b2f2dca
|
refactor 5:
- MapData.cs 现在会携带战斗初始上下文:
- InitialCoin
- 建塔 TowerStatsData 快照
- TryConsumeCoin / AddCoin 运行时回调
- CombatLoadingState.cs 负责从 CombatInRunResourceManager 读取 coin 和 build stats 快照,组装 MapData 后再交给加载链。
- CombatLoadSession.cs 改成接收外部构造好的 MapData,不再自己只塞一个 LevelId。
- CombatScheduler.cs 不再在 Start() 里直接发起地图加载,加载细节回到 CombatLoadingState。
- MapEntity.cs 已经不再直接读 GameEntry.CombatNode 的 coin / build count / build stats,也不再通过它做 coin 读写:
- 初始 coin 和 build stats 从 MapData 读取
- 后续 coin 通过 CombatCoinChangedEventArgs 同步
- 建塔/升级/拆塔时的 coin 变更通过 MapData 注入回调执行
|
2026-03-07 15:12:18 +08:00 |
SepComet
|
ccb4738b96
|
refactor 5:
- CombatSettlementFlowService.cs 负责结算上下文构建、基地血量奖励修正、奖励选择准备、奖励追加、结算背包提交、FinishForm 摘要准备。
- CombatSettlementContext.cs 变成独立共享上下文,不再作为 CombatScheduler 内部私有类。
- 状态链改成各司其职:
- CombatSettlementState.cs 负责结束战斗现场并构建结算上下文。
- CombatRewardSelectionState.cs 只负责进入奖励选择流程。
- CombatFinishFormState.cs 只负责提交结算背包并打开 FinishForm。
- CombatScheduler.cs 删除了大块结算/奖励构建细节,保留状态切换、共享运行时和少量桥接回调。
|
2026-03-07 15:05:59 +08:00 |
SepComet
|
e488a2ca0f
|
refactor 4:
- CombatWaitingForPhaseEndState.cs 不再调用旧的 PhaseLoopRuntime.ShouldEndCurrentPhase(...),改为构造 PhaseEndConditionContext,再通过
PhaseEndConditionFactory.Create(currentPhase.EndType) 执行判定。
- PhaseLoopRuntime.cs 删除了旧的 phase 结束规则实现,现在只保留 phase 运行时数据管理,职责和架构文档一致。
- 为了让 BossDeadPhaseEndCondition 真正可用,我补了 boss 真值链路:
- EnemyLifecycleTracker.cs 现在会跟踪存活 boss。
- EnemyManager.cs 暴露 HasAliveBoss,并在 EntryType.Boss 刷怪时标记 boss 身份。
|
2026-03-07 14:45:42 +08:00 |
SepComet
|
91eeeaaeea
|
refactor 3:
- EnemyManager.cs 不再计算 droppedCoin / droppedGold / baseDamage,只在敌人隐藏完成后区分“击杀”还是“非击杀到家”,并把 DREnemy 上报给 CombatScheduler。
- CombatScheduler.cs 新增统一入口:
- OnEnemyDefeated(DREnemy enemy):通过 EnemyDropResolver 解析掉落,再调用 CombatInRunResourceManager 入账,并按结果决定是否触发局外掉落判定。
- OnEnemyReachedBase(DREnemy enemy):从 enemy.BaseDamage 解析伤害,再统一扣减基地血量。
|
2026-03-07 14:42:19 +08:00 |
SepComet
|
853886797c
|
refactor 2: 迁移局内资源真值
- CombatInRunResourceManager 现在持有并管理:
- CurrentCoin
- CurrentBaseHp
- MaxBaseHp
- GainedCoin / GainedGold
- 本局 BuildTowerStats 快照
- 奖励背包快照
- CombatInRunResourceManager.cs:38
- CombatInRunResourceManager.cs:46
- CombatInRunResourceManager.cs:89
- CombatInRunResourceManager.cs:156
- CombatScheduler 变成资源访问入口,不再通过 CombatNodeComponent 持有 coin/baseHp/build stats 真值。
- 启动时先初始化局内资源。
- 对外提供 CurrentCoin / CurrentGold / CurrentBaseHp / CurrentBuildTowerCount
- 提供 TryConsumeCoin / AddCoin / TryGetBuildTowerStats
- CombatNodeComponent 已退回 facade:
- 不再保存 _currentCoin / _currentGold / _currentBaseHp / _currentBuildTowerStats
- 只做只读转发和启动/结束协调
- 资源变化事件现在由资源管理器发布,并补上了 delta 字段:
额外修正
- Reset() 现在会清掉奖励背包里的 ParticipantTowerInstanceIds,避免跨局残留。
- TryConsumeCoin(0) 保持原先返回 true 的语义。
|
2026-03-07 11:41:47 +08:00 |
SepComet
|
1d7c5b80d9
|
refactor 1: 新增/重命名类定义
- 将资源服务类型从 CombatResourceManager 重命名为 CombatInRunResourceManager,并同步更新现有引用。
- CombatScheduler.cs:28
- CombatInRunResourceManager.cs:11
- CombatFinishFormState.cs:22
- 新增掉落解析骨架:
- EnemyDropResolveContext.cs:6
- EnemyDropResolveResult.cs:3
- EnemyDropResolver.cs:7
- 新增 phase end condition 骨架:
- IPhaseEndCondition.cs:5
- PhaseEndConditionContext.cs:5
- PhaseEndConditionFactory.cs:5
- 以及 4 个实现类:
- NonePhaseEndCondition
- TimeElapsedPhaseEndCondition
- EnemiesClearedPhaseEndCondition
- BossDeadPhaseEndCondition
|
2026-03-07 11:30:44 +08:00 |
SepComet
|
0ff04f02f4
|
拆分 CombatScheduler 状态机到独立文件
|
2026-03-07 11:21:07 +08:00 |
SepComet
|
1e5803f4c5
|
补全防御塔组装与介绍描述功能
- RepoForm.CombineArea:防御塔组装,直接继承所有组件的属性
- ItemDescUtility:根据属性构建不同的 ItemDescForm 的文本
|
2026-03-04 18:17:10 +08:00 |
SepComet
|
e12d2e73b2
|
补全 UI 设计
- `ItemDescForm` 道具详细信息面板,目前还未添加 DescText 内容的赋值
- `RepoForm` 道具入槽逻辑调整,为了适应 `ItemDescForm` 的点击打开逻辑,点击道具自动匹配槽位改成拖动道具到相应槽位
- 添加了一系列图片素材
|
2026-03-04 12:47:20 +08:00 |
SepComet
|
3e52a4df55
|
添加“奖励 3 选 1”UI
- RewardSelectForm:其中包括 3 个可选的 RewardItem ,刷新和放弃按钮
- 应用战斗节点基地生命产生的额外事件
|
2026-03-02 21:42:27 +08:00 |
SepComet
|
daba9cbdf9
|
仓库组件 + 防御塔升级
- `PlayerInventoryComponent`:玩家库存组件,收集金币/组件/防御塔等道具
- 补全防御塔的升级逻辑,最高 5 级
|
2026-03-02 19:50:12 +08:00 |
SepComet
|
5ba94828a8
|
补全 `CombatNode` 逻辑 + 重构 `EnemyManager`
- 添加了关卡内的难度系数与掉落
- 难度系数:每循环一轮波次敌人血量翻倍
- 道具掉落:按照掉落概率曲线根据波次计算当前爆率,并从新增的道具池里选择道具
- `CombatResourceManager`:统一维护关卡内资源状态(硬币/金币/道具掉落)
- 重构 `EnemyManager`:
- `EnemyManager`:编排子服务,不承载具体业务细节
- `EnemySpawnDirector`:管理刷怪时序
- `SpawnerResolver`:管理出生点与路径
- `EnemyLifecycleTracker`:追踪敌人生命周期
- `EnemyConfigService`:管理敌人配置与倍率
|
2026-03-02 17:23:34 +08:00 |