DetermineAceWindowsNarratorReadoutUseCase
ACE の燃料残量・フラッグ状態・タイヤカーカス温度・周辺車両接近から、今回読み上げるべき音声イベントを決定する UseCase。
注意: ACE の共有メモリには自車の向きに相当するフィールドが存在せず、周辺車両との直線距離 (AceWindowsVehicleApproachData.nearbyVehicles)のみが取得できるため、LMU(LmuWindowsCarLeft/ LmuWindowsCarRight 等)のような左右を区別した接近アナウンスはできない。単一の閾値 (AceWindowsNarratorReadoutSettings.vehicleApproachThresholdMeters)を下回る車両が1台でもいれば、 左右を区別しない AceWindowsVehicleApproach を読み上げる。
燃料残り周回数(AceWindowsReadoutItemKey.RemainingFuelLaps.Root)は、GT7 のように燃料消費を自前で追跡せず、 ACE が算出した AceWindowsRemainingFuelLapsData.remainingLaps の整数部を使う(determineRemainingFuelLaps)。 閾値以下になった時点と、以降1周減るごとに読み上げる。給油で周回数が増えた場合は基準を更新し、 整数境界付近の揺れで同じ周回数を繰り返し読み上げないよう、基準の次の整数から0.5周以上の増加のみ給油とみなす。
自己ベストラップ(AceWindowsReadoutItemKey.MyBestLap.Root)は AceWindowsBestLapTimeData.bestLapTimeMs の 更新を determineMyBestLap で判定する。GT7(DetermineGt7Ps5NarratorReadoutUseCase.determineMyBestLap)と 同じく、共有メモリのベストラップタイムは Int(milliseconds)でセッション内の値を都度返すため、 前回値との比較(AceWindowsNarratorState.previousBestLapTimeMs)と読み上げ済みベスト (AceWindowsNarratorState.personalBestMs)の2段構えで二重読み上げを防ぐ。
Functions
未受信または未計測の自己ベストラップは手動読み上げのデータなしとして扱う。
未受信・鮮度切れ・全輪が非有限または0以下の場合はデータなしとして扱う。
未受信・鮮度切れ・非有限・0以下・1,000周超の値はデータなしとし、1周未満の正数は整数部へ切り捨てる。
未受信・鮮度切れ・範囲外や非有限の燃料値は手動読み上げのデータなしとして扱う。
セットの対応項目を保存順に連結し、自動読み上げの警告済み状態を維持する。