128 lines
4.0 KiB
Markdown
128 lines
4.0 KiB
Markdown
|
|
# 商店
|
|||
|
|
|
|||
|
|
## 分类
|
|||
|
|
|
|||
|
|
- 项目功能
|
|||
|
|
|
|||
|
|
## 目的
|
|||
|
|
|
|||
|
|
记录商店商品、购买、货币消耗、体力/资源购买和商店 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<int, ShopRefreshInfo>
|
|||
|
|
-> Goods : Map<int, ShopGoodsInfo>
|
|||
|
|
|
|||
|
|
ShopGoodsInfo
|
|||
|
|
-> GoodsId
|
|||
|
|
-> BuyNum : Map<int, GoodsBuyNumInfo>
|
|||
|
|
-> Item
|
|||
|
|
|
|||
|
|
ShopRefreshInfo
|
|||
|
|
-> RefreshType
|
|||
|
|
-> RefreshNum
|
|||
|
|
|
|||
|
|
GoodsBuyNumInfo
|
|||
|
|
-> BuyType
|
|||
|
|
-> BuyNum
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
体力购买相关:
|
|||
|
|
|
|||
|
|
- `Tips_GetPower` 是当前能看到的体力购买/领取 UI 线索。
|
|||
|
|
- `Tips_GetPower` 读取 `Constants.PurchaseStamina`。
|
|||
|
|
- `Tips_GetPower` 监听 `HFEvent_BagItemUpdate` 刷新展示。
|
|||
|
|
- `Stamina_QueryC2S` / `Stamina_GetC2S` 协议已生成,但当前未看到实际发送点。
|
|||
|
|
|
|||
|
|
当前接入状态:
|
|||
|
|
|
|||
|
|
- `MainWindow` 中 `OpenWindow<ShopWindow>`、`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、网络、事件、配置等框架 |
|