# MapleScouter 設定
# 領域(region)は「ウィンドウ矩形(GetWindowRect)に対する正規化割合 [x, y, w, h]」で定義する。
# 解像度やウィンドウ位置が変わっても追従できるよう相対指定。実機で scripts/calibrate.py で調整する。

window:
  # ウィンドウタイトル(部分一致)。JMSは "MapleStory"。
  title: "MapleStory"

capture:
  # OCRを回す頻度(Hz)。EXP/メルの更新確認には 2〜4 で十分。
  hz: 3
  backend: "wgc"        # "wgc"(既定/他ウィンドウに隠れても取得可) | "mss"(デスクトップ合成)

# 各OCR対象の領域。値は [x, y, w, h]（0..1 の割合）。
# 初期値は 1936x1119 ウィンドウでの実測に基づく概算。calibrate.py で上書きする。
regions:
  exp_bar:   [0.361, 0.974, 0.269, 0.026]   # 下部中央: "221,624,371,136 [12.796%]"
  map_name:  [0.028, 0.088, 0.150, 0.024]   # 左上: 現在マップ名
  character: [0.005, 0.944, 0.110, 0.028]   # 左下: "Lv.281 裕武者"（キャラ切替/レベルアップ検知）
  # ※チャット欄は使わない。討伐数はゲーム内の計測器から読むようになったため。
  #   （チャット欄も位置が固定ではなく、追従させる意味がない）

ocr:
  device: "cuda"                 # "cuda" | "cpu"
  model_name: "parseq-tiny-dynw-v4"
  # 装飾フォントでは正読でもスコアが極端に低く出る（実機でEXPバーが0.05未満になり、
  # 正しい読みがフィルタで捨てられた）。スコアでは足切りせず、妥当性は必ずパース層
  # （EXPの正規表現＋小数桁＋自己整合、マップ/キャラの辞書照合＋デバウンス）で担保する。
  min_score: 0.0
  upscale: 3                     # 小領域の拡大率（前処理）

parse:
  # 稼働判定: この秒数を超えてEXPに変化が無ければ「休止」とみなす
  idle_timeout_sec: 120
  # 狩り終了判定: 最後の獲得からこの秒数を超えてEXPが動かなければ「狩り終了」とみなし
  # リザルトを出す（idle_timeout_sec より長い。休止・移動程度では終了扱いにしない）。
  # 獲得が再開すれば自動でリザルトは引っ込み、集計は続きから積み上がる。
  end_timeout_sec: 300
  # モンスターのリスポーン周期(秒)。消化率＝「周期あたり討伐数 ÷ マップの湧き数」の分母に使う
  respawn_sec: 7.5
  # 討伐数はゲーム内の計測器「BATTLE STATISTICS」から読む（表示している間だけ測定）。
  # チャットからの推定は精度が出ず廃止した。

session:
  out_dir: "sessions"            # JSONL/CSV 保存先（プロジェクト直下からの相対）
