Closed magicant closed 4 years ago
TASC 停止位置や信号現示受信の地上子と同様の手法で地上子の位置の誤差を吸収できたらできそうな気がする。
「停車場へ移動」したときに通過する地上子をうまく処理 (無視?) できればよい。
「停車場へ移動」したときに通過する地上子をうまく処理 (無視?) できればよい。
「停車場へ移動」するとき (地上子通過直前の自車の位置が 0 のとき) は地上子を無視するという風にすることも考えられる。しかし、これまで地上子仕様に
駅構内に制限速度が課せられている場合は、「停車場へ移動」や「シナリオをやり直す」で移動した直後に制限速度を正しく反映するために、駅の停止位置に d = 0 で地上子を置くことを奨めます。
と書いているので、移動時に地上子を無視するようにすると後方互換性がない。 となると無視しないようにした方が良いが、制限速度の変化する地点は正確には分からないので、地上子を通過した順に (移動後の位置で制限速度が変化するとみなして) 処理するしかない。結果として、移動時の動作はこれまでと変わらない。
ただし、速度変化地点のある範囲が非常に大きいままだとその後に普通に通過する地上子からの制限速度区間と混同して正しく処理できないので、「停車場へ移動」の時に登録する制限速度区間の始点の範囲は必ず [0, 0] とする。(地上子から区間までの距離が 0 以外で指定されている場合でも)
Wiki の説明も更新したのでこの件は完了。
v1.1 現在の仕様では、制限速度設定地上子の設置順序は、地上子が指示する制限速度変化地点の順になっていないといけない。順序が誤っていると、より後の区間の制限速度の情報が上書きされてしまう。この制限を緩和して、自由な順序で (あるいは、同じ制限速度変化地点に対して複数) 地上子を設置してよいようにできないだろうか。
cf. https://github.com/magicant/bve-random-map/issues/8#issuecomment-601533341