You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
AdLike2048/docs/需求-铲子开挖.md

56 lines
2.2 KiB

# 需求:铲子开挖(还原)与拆除区域解锁
> 状态:已实现
> 对照基线:老项目 `22AdLikeXy`
## 目标
1. 拆除「五行数字合成/拖放解锁区域」玩法。
2. 还原老项目「铲子开挖可开挖地块」主链。
3. 还原局内铲子广告。
4. MapGrid 字段语义回到「是否可开挖」;去掉「解锁区域 ID」。
## 配表
| 项 | 值 |
|----|-----|
| 铲子 Text.id | `3003` |
| 铲子 Text.type | `14`(不可复用 type=4,4 为五行火) |
| 铲子广告每局上限 | Const id=10 / `BattleShovelAdMax` |
逻辑判定以 **`Text.type === 14`** 为准,常量 `SHOVEL_WEAPON2_ID = 3003` 作辅助。
## MapGrid
- 编辑器显示名:**是否可开挖**;序列化字段仍为 `_isCanBeDig`(既有地图勾选保持)。
- **玩法上删除**「解锁区域 ID」;`_unlockAreaId` 仍序列化(编辑器隐藏),仅用于换皮:现有地图 digSprite=土地块、putSprite=空地白格、waitUnlocked=待解锁地块。
- 皮映射:可开挖默认 **无皮**(`null`,露深色底);已揭示宝箱格才用 `waitUnlockedSprite`(待解锁);可放置 → 区域格用 `digSprite`(浅色土地块)、否则 `putSprite`。宝箱揭示见 `docs/需求-开挖宝箱.md`。
- `isCanBeDig && !isCanPutText` → Dig(可铲);铲后 Dig→Put。
## 开挖流程
背包铲子 → 拖到空 Dig 格 → 扣铲(不挂字)→ Dig→Put → 音效 + 铲 Spine + **格子 statusSprite** 土地块(digSprite)fillRange 0→1 + openSpine 冒烟。
## 表现资源
- `铲.prefab` 独立预制体,**不进** `textGrid.prefab`。
- 运行时 `gg.res.getNode` / `putNode` 对象池挂到 TextGrid;回池前停动画并复位。
## 铲子广告
同时满足才展示:
1. 己方无可放置 Put
2. 背包有空位且无铲
3. 本局广告剩余次数 > 0
与门神:Const 盾牌触发距离内有怪优先门神;无威胁时铲子可展示。看广告后按空位发 1~2 把铲飞入背包。
本轮不做掘宝铲 / 被动产铲;无掘宝态时广告图标固定普通铲。
## 不做
- 掘宝铲、被动产铲
- 批量改地图预制体中的残留 `_unlockAreaId` 序列化(引擎忽略即可)
- `Level.unlockland*` 配表清理(代码不再读取,表由策划后续清)