diff --git a/bve-autopilot/ato.cpp b/bve-autopilot/ato.cpp index 9870b5d..2bbeec8 100644 --- a/bve-autopilot/ato.cpp +++ b/bve-autopilot/ato.cpp @@ -159,6 +159,29 @@ namespace autopilot } } + if (状態.互換モード() == 互換モード型::小田急PI) { + switch (地上子.Type) { + case 4: //制限速度設定 + if(地上子.Optional % 100 == 0)//制限解除 + 制限区間終了(_制限速度6, { 直前位置, 状態.現在位置() }); + else //制限開始 + { + int 制限速度 = (地上子.Optional % 100) * 5; + int 距離 = 300; //300m固定 + int 送信電文 = 距離 * 1000 + 制限速度; + 制限区間追加( + _制限速度6, 送信電文, { 直前位置, 状態.現在位置() }, + 4.0_kmph); + } + break; + case 5: //制限速度設定 + 制限区間追加( + _制限速度9, 地上子.Optional, { 直前位置, 状態.現在位置() }, + 5.0_kmph); + break; + } + } + _信号.地上子通過(地上子, 直前位置, 状態); _早着防止.地上子通過(地上子, 直前位置, 状態); } diff --git a/bve-autopilot/tasc.cpp b/bve-autopilot/tasc.cpp index 9889c48..e92f28e 100644 --- a/bve-autopilot/tasc.cpp +++ b/bve-autopilot/tasc.cpp @@ -84,6 +84,11 @@ namespace autopilot { case 255: // TASC 目標停止位置設定 停止位置を追加(static_cast(地上子.Optional), 状態); break; + case 200: // TASC 目標停止位置設定(追加:小田急PIのATO互換) + if (状態.互換モード() == 互換モード型::メトロ総合 || 状態.互換モード() == 互換モード型::小田急PI) { + 停止位置を追加(static_cast(地上子.Optional / 10), 状態); + } + break; case 1031: // TASC 停止位置許容誤差設定 最大許容誤差を設定(static_cast(地上子.Optional)); break; @@ -102,6 +107,14 @@ namespace autopilot { switch (地上子.Type) { + case 21: + //case 22:(小田急PIのATSと干渉するため暫定コメントアウト) + case 23:// TASC 目標停止位置設定(追加:メトロ対応TASC互換) + if (状態.互換モード() == 互換モード型::メトロ総合) { + 次駅停止位置を設定( + static_cast(地上子.Optional % 1000), 直前位置, 状態); + } + break; case 30: // TASC 目標停止位置設定 if (状態.互換モード() == 互換モード型::汎用ats) { 次駅停止位置を設定( diff --git "a/bve-autopilot/\344\277\241\345\217\267\351\240\206\345\256\210.cpp" "b/bve-autopilot/\344\277\241\345\217\267\351\240\206\345\256\210.cpp" index 689aef8..dcaaf51 100644 --- "a/bve-autopilot/\344\277\241\345\217\267\351\240\206\345\256\210.cpp" +++ "b/bve-autopilot/\344\277\241\345\217\267\351\240\206\345\256\210.cpp" @@ -434,6 +434,31 @@ namespace autopilot } } break; + case 22: // 信号現示受信(小田急PI互換) + if (状態.互換モード() == 互換モード型::小田急PI) { + ATS_BEACONDATA Option; + Option = 地上子; //代入する + switch (地上子.Optional) + { + case 4: + Option.Optional = 7654320; + break; + case 5: + Option.Optional = 76543210; + break; + case -4: + Option.Optional = 7654210; + break; + case 3: + Option.Optional = 765420; + break; + default: + Option.Optional = 0; + break; + } + 信号現示受信(Option, 直前位置, 状態, true); + } + break; case 31: // 信号現示受信 (メトロ総合プラグイン互換) if (状態.互換モード() == 互換モード型::メトロ総合) { 信号現示受信(地上子, 直前位置, 状態, false); diff --git "a/bve-autopilot/\345\205\261\351\200\232\347\212\266\346\205\213.h" "b/bve-autopilot/\345\205\261\351\200\232\347\212\266\346\205\213.h" index 95c6a91..c0a7940 100644 --- "a/bve-autopilot/\345\205\261\351\200\232\347\212\266\346\205\213.h" +++ "b/bve-autopilot/\345\205\261\351\200\232\347\212\266\346\205\213.h" @@ -39,6 +39,7 @@ namespace autopilot { 汎用ats, メトロ総合, swp2, + 小田急PI, }; class 共通状態