54 Commits
Author SHA1 Message Date
basil 91b8e177c5 优化武器商品描述文本、修复敌人子弹无法击中玩家的bug 2026-09-26 22:55:52 +08:00
basil 051c075183 添加 ShopForm 下的 StatForm,展示玩家属性 2026-09-25 00:03:39 +08:00
basil c61eb7fb68 调整敌人经验配置、修复百分率属性问题 2026-09-24 23:03:59 +08:00
basil 02f4c67464 Phase 1: 复合属性修饰器管线与伤害结算系统 2026-09-24 22:37:22 +08:00
basil ba25ec1926 引入属性、伤害管线 2026-09-18 21:43:22 +08:00
basil 92e1ea0d55 简单重构拆分 SimulationWorld 2026-09-18 17:43:41 +08:00
basil 1e4d3ef8d7 清理 Player 以及相关组件 2026-09-15 11:31:20 +08:00
basil 88ed35e757 重构清理敌人类 2026-09-15 11:07:01 +08:00
basil 421f8bf619 整理武器配置和重构 2026-09-15 10:13:58 +08:00
basil 17ee268416 清理各个 Component 里的判断以及调用规范 2026-09-14 18:35:02 +08:00
basil 9c54905f85 整理 ShopUseCase 的相关脚本 2026-09-14 17:30:04 +08:00
basil b628a8537c 迁移剩下的 UI 到 Serialization 方式 2026-09-14 17:19:31 +08:00
basil 091a29db63 引入 UISerializationRoot 和 Item
- 完成 MenuForm 和 SelectRoleForm 的迁移
2026-09-13 22:18:29 +08:00
basil e2fdb660ab 清理无用素材 2026-09-13 20:46:16 +08:00
basil 7dc529a840 调整部分数据表配置,优化 SpriteCache 功能 2026-09-13 20:36:21 +08:00
basil de53890de6 迁移数据表到 Luban,移除 JsonNet、EnumUtility 2026-09-13 14:08:14 +08:00
basil 4250e48e22 修复 GameStateBattle -> GameStateShop/LevelUp 时的敌人异常残留问题
用一个 _isStopped 布尔门替代 id 追踪:

- OnReset 开头置 _isStopped = true
- OnInit 置 _isStopped = false
- OnShowEntitySuccess:只要 _isStopped 为真且是 Enemy 组,立即 HideEntity
- SpawnEnemyAsync await 恢复后也补一道 _isStopped 检查(若 await 拿到了 enemy 且已停战,直接 hide 不注册)——双保险

为什么这样对:停战窗口(Shop/LevelUp)期间本就不该有任何敌人,所以"停战期间出生的敌人一律 hide"在语义上完全正确,且不受 await 同步抽空、id 复用、加载时序任何影响。
2026-06-26 13:53:36 +08:00
basil cc8982b131 推进计时器逻辑的集中管理
- 将敌人的攻击计时任务放到基类中进行创建
- 将 EnemySpawnScheduler 敌人生成调度器的刷怪计时任务迁移到 TimerComponent
2026-06-23 20:42:24 +08:00
basil 846e4d6f44 将 Weapon 攻击冷却计时器 由 Weapon 内部维护迁移到 TimerModule 维护 2026-06-18 23:23:29 +08:00
basil 25f36d38c9 将 Enemy 攻击冷却计时器 由 Enemy 内部维护迁移到 TimerModule 维护 2026-06-18 23:09:44 +08:00
basil 0dc5889417 导入 TimerModule 计时器模块 2026-06-18 22:50:46 +08:00
basil fbc7e66491 Delete ObjectBase.meta 2026-06-18 22:39:32 +08:00
basil 000984c676 refactor(EnemyManager): 性能优化与并发安全修复
- EnemyRegistry: 移除List冗余存储, Register/Remove从O(n)→O(1)
- 增加PruneInvalidEntries显式清理接口, 消除TryGet副作用
- Remove增加不存在告警, 防重复减成负数
- 增加CTS取消飞行中的异步生成, 关卡切换时取消+重建
- ClearEnemies先快照再遍历, 防Hide回调修改集合抛异常
- entityId去掉取模复用, 直接自增保证唯一
- Enemy EntityGroup调优: Capacity→10000, ReleaseInterval→30, ExpireTime→120
2026-06-18 17:06:10 +08:00
basil 49c300a10e Update EnemyManagerComponent.cs 2026-06-18 15:59:06 +08:00
basil 38849f5019 从 EnemyManager 里拆分出敌人的生成 2026-06-18 15:40:00 +08:00
basil 921193f469 从 EnemyManager 里拆分出敌人的注册/管理/查询功能 2026-06-18 15:33:36 +08:00
basil b6a13b18fc 从 EnemyManager 中拆分刷怪位置策略接口 2026-06-18 15:25:04 +08:00
basil 44f6729c1a 重构:调整目录结构和文件所属目录 2026-06-17 10:07:23 +08:00
basil 5c3b87ab3f 重构:统一 UI 模块目录结构规范
- 事件命名规范化:RefreshEventArgs → LevelUpRefreshEventArgs
- LevelUp 子组件目录调整:LevelUpRewardItem + LevelUpRewardItemContext 移动到 LevelUp/
- Shop 子组件目录调整:DisplayItem/DisplayListArea/GoodsItem/ShopGoodsItem 及其 Context/RawData 全部移动到 Shop/
- 删除冗余文件:LevelUpRewardItemRawData(从未被使用)
- 新增 ObjectPool 目录结构
- 更新 LevelUpController 和 LevelUpForm 中的事件引用
2026-06-17 09:50:47 +08:00
basil c30b256d7a 重构:修复 Shop 与 ItemTooltip 跨模块事件边界问题
- 将 _tooltipLocked 状态从 ItemTooltipController 移到 ShopController 维护
- DisplayItem 只发 Shop 模块 UI 事件(Hover/Lock/Hide)
- ItemTooltipForm 取消按钮发 ItemTooltip 模块事件自关闭
- ShopController 通过 UIRouter 跨模块控制 ItemTooltipForm
- 移除 DisplayItemHideEventArgs 的 Force 字段,分离两种关闭场景
2026-06-17 09:37:44 +08:00
SepComet 9049af7966 将 DisplayItemInfoForm 更名为 ItemTooltipForm 2026-06-16 17:09:21 +08:00
SepComet 1fe2f31ede 对 DisplayItemInfoForm 按 5 层 UI 规范做结构整理
- 删除无用的 DisplayItemInfoUseCase,转为轻量 UI(Controller + Context + View)
- RawData 类型安全:object Data 拆分为 WeaponData + PropItem
- View 事件规范:回收按钮改用 UI 专用事件,由 Controller 通过回调转发
- 简化 _locked 状态管理,统一在 CloseUIAsync 中清理
2026-06-16 17:09:21 +08:00
SepComet 68b9f98e0e 修复 CommonButton 导航功能失效的问题并重新绑定 UI 事件引用 2026-06-16 17:09:21 +08:00
SepComet 11621ee1c9 为随机角色卡补 hover 反向链路
新增 SelectRoleClearEventArgs:hover 随机卡时清空选中状态,让上方属性区回到 _randomRoleCard。

- SelectRoleForm.OnRandomHoverEnter 上报事件
- SelectRoleUseCase.ClearSelection 重置 SelectedRoleId 并重建 RawData
- SelectRoleController 订阅事件并刷新 Context
- SelectRoleForm.prefab 随机卡 _onPointerEnterAction 绑定新方法
2026-06-16 17:09:21 +08:00
SepComet aca311dd60 5 层 UI 规范收敛 SelectRoleForm 的 RawData / Context
围绕规范 §3.2 / §3.4 / §8 整理 SelectRoleForm 的数据传输与展示模型,让两层各自只承担规范允许的职责,并把子组件归位到模块目录内。

RawData层:
- RolePropertyAreaRawData 移除展示串 InitialPropertyText,改为业务字段 StatModifier[] InitialProperties,并补回 RoleId,避免 RawData 携带已格式化的展示文本(违反 §3.2)。
- SelectRoleRawData 拆掉平铺的 RoleIds / RoleIconNames 平行数组与 SelectedRoleId / SelectedRoleName / SelectedRoleInitialProperties 哨兵字段,聚合为 RoleItemRawData[] RoleItems 与 RolePropertyAreaRawData SelectedRole(null 表示未选中),跟 Context 端的子结构形态对称。
- SelectRoleUseCase.BuildModel 同步改造为构造子 RawData,不再处理 -1 哨兵 ID。

Context 层:
- 删除 SelectRoleContext.RoleIds 冗余字段(信息已由 RoleItemContexts[i].RoleId 承载)。
- 新增 bool ShowRoleProperty,把"显示属性卡 vs 显示随机卡"从 RolePropertyAreaContext == null 的隐式哨兵改成显式信号;Form 端 UpdateShowRole 改为读 ShowRoleProperty 切换卡片,不再用 null 当三态信号。
- Controller.BuildContext 用 rawData.SelectedRole != null 取代 >= 0 判定,InitialPropertyText 仍由 Controller 通过 ItemDescUtility.CreatePropDescription 拼装后注入 Context。

目录归属
事件命名
2026-06-16 17:09:20 +08:00
SepComet d2ce741a37 按 UI 五层规范重构 SelectRoleForm 并整理事件目录
- SelectRoleForm 五层归位:UseCase 改为构造注入 IProcedureMenu(新增 Runtime/ProcedureInterface),RawData 暴露原始 StatModifier[] 而非展示串,Controller 复用 ItemDescUtility 拼装属性文本,并修复 OpenUIAsync(object) 合法 RawData 分支缺少 return 的误报路径
- StatModifier 去展示职责:删除 _statTypeNames / ToString,富文本格式化下沉到 Presentation 层的 ItemDescUtility.Describe(StatModifier),CreatePropDescription 改用统一入口
  - 事件目录按 UIForm 归档:Base/Event/UI/Menu/* 拆解到 SelectRoleForm/ MenuForm/ DialogForm/ DisplayItemInfoForm/ Combat/ 等各自子目录,MenuSelectRoleReturnEventArgs 改名 SelectRoleReturnEventArgs,语义归属本 UI 模块
- IUIFormController → IUIController 改名,联动 UIControllerBase / UIRouterComponent / Editor
- 同步更新 docs/UI-5层架构设计规范.md 中相关示例与 MenuForm.prefab、ProcedureMenu 引用
2026-06-16 17:09:20 +08:00
SepComet 1cd3936f49 接入菜单导航并改造通用按钮交互
- 将 CommonButton 改为基于 Unity Button 实现,保留原有 pointer enter、click、pointer exit 三类事件配置,同时接入 Selectable/Button 的导航、选中和提交能力。补充 CommonButton 自定义 Inspector,保留项目自定义事件与背景配置的编辑体验。

- 同步调整菜单相关 UI,将 StartMenuForm 迁移为 MenuForm,并更新 UIForm 配置、菜单 Controller/Form 以及相关 prefab 引用。更新多个 UI prefab 和通用按钮 prefab,使菜单、商店、角色选择、道具展示等界面能够使用新的按钮选中与导航交互。
2026-06-16 17:09:20 +08:00
SepComet db481ae0a8 引入 Cinemachine 和 CameraModule,添加摄像机跟随缓动效果 2026-06-16 17:09:19 +08:00
SepComet 649930c666 扩充游戏内容,保持敌人基本行为不变,使用缩放和颜色区分不同敌人 2026-06-16 17:09:19 +08:00
SepComet 29c4468d54 清理项目目录,引入 InputModule 做多平台输入适配 2026-06-16 17:09:19 +08:00
SepComet d28ccaa7f9 迁移 Coin/Exp/Projectile/Effect 实体的生成路径 2026-06-16 17:09:19 +08:00
SepComet 734f2cd5af 调整 EnemyManagerComponent 部分逻辑到异步操作 2026-06-16 17:09:19 +08:00
SepComet 0bab6ecbc5 迁移 Player/ProcedureGame/ShopUseCase 里的实体方法调用风格
- Player/ShopUseCase:调整了 Weapon 实体的打开方式
- ProcedureGame:调整初始化时的 Hud 和 Player 的初始化写法,流程更清楚
2026-06-16 17:09:19 +08:00
SepComet a721670b36 Update EntityAsyncExtension.cs
为 EntityAsyncExtension 添加了便利的打开各类实体的方法
2026-06-16 17:09:19 +08:00
SepComet 3b61e263cc 调整 UIRouter 的打开关闭 UI 的返回值,统一成 UniTask 2026-06-16 17:09:19 +08:00
SepComet fbb9e1e068 Update AsyncTaskHelper.cs
- WaitEventAsync<T>() 增加可选 CancellationToken
- WaitSuccessOrFailureAsync<TSuccess, TFailure>() 增加可选 CancellationToken
- 保持现有调用兼容:原来的参数顺序和默认行为不变
- 抽出统一完成/清理逻辑:
    - 成功
    - 失败
    - 超时
    - 取消

- 防止重复完成导致重复 Unsubscribe
- 超时任务在事件完成后会被取消,避免后台 delay 继续跑
- 取消时会反订阅事件,适合后续 Procedure 生命周期迁移
2026-06-16 17:09:19 +08:00
basil 170ea690b2 调整 SpriteCache 的读取资源方式
将原来 UGF 事件回调风格的调用改成使用 UniTask 的异步操作
2026-06-16 17:08:06 +08:00
SepComet edd7088804 规范命名空间
具体来说就是 SepCore 开头,然后接所属的模块名,比如 SepCore.Entity,SepCore.Simulation,SepCore.Procedure
2026-06-03 16:57:40 +08:00
SepComet 5de3fdc795 迁移 EntityData 到 Base 中
- 新增 EntityDataFactory 工厂类,提供创建 EntityData 的统一入口
- 移出 EntityData 及派生类对 GameEntry 的依赖并移入 SepCore.Base 程序集中
2026-06-03 15:12:55 +08:00
SepComet 91f70dd783 添加 SepCore.Runtime 和 SepCore.Base 程序集
- 暂时将 Entity 全部归进 Runtime 程序集里
- 调整部分 UI 的 UseCase/RawData/Context 之间的关系,让 RawData 更接近业务原始数据,Context 更接近 UI 直接可读的数据
- 调整其他程序集的引用关系
2026-06-03 11:15:58 +08:00