Commit Graph
2 Commits
Author SHA1 Message Date
snowy-yang 4bc7729715 地图手感打磨:动作粒子 + 昼夜色温 + 成熟呼吸金光
为什么:地图功能已全通但缺"游戏手感"——点击有反馈(toast)却看不到
画面上的动静,时间流动也只在倒计时数字里。这一轮全部补上。

- 动作粒子特效(webui):act() 成功后在目标位置喷粒子 + 上浮表情小字
  (浇水💧水花、播种🌱扬土、收获/收取✨金点、喂食🍽)。粒子受重力、
  按寿命衰减,失败动作不触发(api() 返回 null 时 mapJuice 不执行)。
- 昼夜色温:一天的进度(1 - seconds_to_tick/tick_seconds)映射成
  清晨淡金 → 正午不叠色 → 黄昏橙 → 入夜靛紫的半透明覆盖层,
  让"40 分钟一天"在画面光色上也流动。tick_seconds 完整快照里有、
  brief 里没有,靠 refreshFromBrief 的合并语义保留。
- 成熟作物金光改呼吸式(shadowBlur 随 sin 起伏),悬停可交互对象时
  指针变手型。

验证:532 项测试全绿、ruff/pyright 干净;真机 headless Chrome 实测
粒子注入 23 枚 2 秒内衰减归零、失败动作不产生特效、dayTint 三时段
数值正确、截图目检清晨色调正常、控制台零报错。
2026-09-25 23:38:40 +08:00
snowy-yang 92b1a628b1 网页端新增 Canvas 二维农场地图
为什么:地块和牲畜原本是响应式卡片列表,信息全但没有"农场"的形状感。
改成一张俯视像素风地图作主视觉:农田按 4 列排成方阵(地块多自动改 6 列),
土壤颜色随水分深浅变化、作物随生长进度放大、成熟发金光、缺水画干裂;
牧场围栏里牲畜随机漫步,待收产出挂金色气泡、没喂食标 💢;
已拥有的建筑在底部建筑带列队;五种天气各有天色,雨/暴雨有雨滴动画。
悬停出提示框,点地块即播种/浇水/收获、点牲畜即喂食/收取——全部复用
既有 openCropPick/act() 流程,卡片面板原样保留作精确操作入口。

实现要点:画布用逻辑坐标绘制、按容器宽 × devicePixelRatio 缩放,
高分屏不糊、窄屏等比缩;命中检测在逻辑坐标上自己算。
服务端零改动——state 里的 plots/animals/buildings 现成够用。

修复一个真机才抓得到的初始化 bug:动画循环首帧同步执行,原顺序
"先绑定后布局"让首帧在未初始化的字段上 TypeError,rAF 注册被一起吞掉,
表现为画布全白但点击命中正常(命中不经过画布)。改为先布局再绑定,
并给 mapStep/mapDraw 加空值护栏。

真浏览器端到端验证:登录、canvas 坐标点击浇水(AP/水分/toast 全对)、
悬停提示、动画循环存活(云位移 5.24px/600ms)、截图目检渲染效果,
errors/console 干净。534 项测试全绿,ruff/pyright 无告警。
2026-09-25 22:24:08 +08:00