"use strict"; // 點穿決策的純邏輯,由主程序使用;抽出來是為了能在 node 直接單元測試(main.js 一載入就 require electron)。 function inside(r, p) { return !!r && !!p && p.x >= r.x && p.x < r.x + r.w && p.y >= r.y && p.y < r.y + r.h; } // 人物方框在視窗內的位置,與 renderer 的版面一致(#stage 水平置中、上方保留氣泡高度、底部留白)。 // renderer 活著時會回報實際量到的矩形,這只是它還沒回報或掛掉時的備援。 function petBoxRect(bounds, scale, { petW, petH, bubbleH }) { const w = Math.round(petW * scale); const h = Math.round(petH * scale); return { x: Math.round((bounds.width - w) / 2), y: bubbleH, w, h }; } // 這一刻視窗該不該點穿:拖曳中一律接滑鼠;否則游標在人物方框或氣泡上才接,其餘穿透。 function wantIgnore({ rel, box, bubble, dragging }) { if (dragging) return false; if (!rel) return true; return !(inside(box, rel) || inside(bubble, rel)); } module.exports = { inside, petBoxRect, wantIgnore };