"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 };
