# 商店 ## 分类 - 项目功能 ## 目的 记录商店商品、购买、货币消耗、体力/资源购买和商店 UI 入口。 ## 已知线索 - GM 线索:`Assets/Game/GameHFScripte/GameFunction/UIWindows/GMWindow/GMWindow_GM.cs` 中有商店模块注释。 - Tips 线索:`Tips_GetPower` 引用 `ShopGoodsInfo`。 - 图集线索:`SpriteAtlasAssets/Shop` - 代码中可见 `ShopWindow`、`ShopGetCurrency` 注释引用。 ## 已确认内容 协议和数据结构已生成: - `Network_MsgId.GetShop = 2500` - `Network_MsgId.ShopBuy = 2501` - `Network_MsgId.ShopRefresh = 2502` - `HFEvent_STC_GetShopS2C` - `HFEvent_STC_ShopBuyS2C` - `HFEvent_STC_ShopRefreshS2C` 请求/响应字段: ```text GetShopC2S -> ShopId GetShopS2C -> repeated ShopInfo ShopBuyC2S -> GoodsId -> BuyType ShopBuyS2C -> ShopId -> Goods -> Item ShopRefreshC2S -> ShopId -> RefreshType ShopRefreshS2C -> Shop ``` 核心数据结构在: - `Assets/Game/GameHFScripte/CopyToHF/Network/Player.cs` - `Assets/Game/GameHFScripte/CopyToHF/Network/Common.cs` ```text ShopInfo -> ShopId -> RefreshInfo : Map -> Goods : Map ShopGoodsInfo -> GoodsId -> BuyNum : Map -> Item ShopRefreshInfo -> RefreshType -> RefreshNum GoodsBuyNumInfo -> BuyType -> BuyNum ``` 体力购买相关: - `Tips_GetPower` 是当前能看到的体力购买/领取 UI 线索。 - `Tips_GetPower` 读取 `Constants.PurchaseStamina`。 - `Tips_GetPower` 监听 `HFEvent_BagItemUpdate` 刷新展示。 - `Stamina_QueryC2S` / `Stamina_GetC2S` 协议已生成,但当前未看到实际发送点。 当前接入状态: - `MainWindow` 中 `OpenWindow`、`ShopGetCurrency`、`Tips_GetPower` 入口大多处于注释状态。 - 未发现 `GetShopC2S`、`ShopBuyC2S`、`ShopRefreshC2S` 在业务代码中的实际发送点。 - 未发现独立商店 manager。 - 因此当前判断:商店协议和部分 UI/资源痕迹存在,但客户端业务主流程未完整接入或处于注释/待开发状态。 ## 梳理任务 - [x] 查找是否存在独立商店 manager、window 或配置表。 - [x] 梳理商品数据结构和 `ShopGoodsInfo` 来源。 - [ ] 梳理购买流程:打开、选择、校验、扣费、到账。 - [x] 梳理商店与背包、资源、体力之间的关系。 - [x] 确认当前商店功能是完整实现、部分接入还是已注释/待开发。 ## 待确认 - 是否存在未纳入当前工程的 `ShopWindow`、`ShopGetCurrency` 或旧分支代码。 - 是否存在 `Shop.xlsx`、`Goods.xlsx`、`DailyDeals.xlsx` 等相关配置;当前配置列表未登记这些表,但生成代码里有旧表痕迹。 - 商店是否区分普通商店、体力购买、礼包、广告等类型。 - 商店 UI 当前看起来未接入,需要后续确认是否是产品阶段未启用。 ## 相关框架 - [背包](背包.md) - [UI 框架](../../../modules/frameworks/UI窗口系统/README.md) - [网络框架](../../../modules/frameworks/网络系统.md) - [数据/配置框架](../../../modules/frameworks/数据配置框架.md) --- ## 文档关联 > 当本文档发生变更时,应同步检查以下关联文档,避免信息不一致。 | 文档 | 关联原因 | |---|---| | [modules/模块索引.md](../../../modules/模块索引.md) | 模块索引是项目知识总入口 | | [modules/features/背包.md](背包.md) | 背包 | | [modules/frameworks/数据配置框架.md](../../../modules/frameworks/数据配置框架.md) | 数据/配置框架 | | [modules/frameworks/网络系统.md](../../../modules/frameworks/网络系统.md) | 网络框架 | | [modules/frameworks/UI窗口系统/README.md](../../../modules/frameworks/UI窗口系统/README.md) | UI 框架 | | [rules/10-架构说明.md](../../../rules/10-架构说明.md) | 架构说明定义总体分层和依赖方向 | | [rules/30-模块登记规则.md](../../../rules/30-模块登记规则.md) | 模块登记规则定义分类和状态口径 | | TODO:补充依赖的框架/模块文档 | 如 UI、网络、事件、配置等框架 |