[信号スクリプト]コレやコレと比べるとウソのようにシンプルですが、これが「割り切り」の結果です。この信号機&センサーは以下のような動作をします。
//初期設定
call this MtdSignalG
//
//停止現示メソッド
//
BeginFunc MtdSignalR
SetSignal 1
EndFunc
//
//注意現示メソッド
//
BeginFunc MtdSignalY
SetSignal 3
EndFunc
//
//進行現示メソッド
//
BeginFunc MtdSignalG
SetSignal 6
EndFunc
[センサースクリプト]
//パートナー信号定義
VarSignal ObjPartnerSignal
get ObjPartnerSignal "{センサーに連動する信号名}"
//編成検知イベント設定
Var TimerID
Var EventID
SetEventSensor MtdControlSignal EventID
//
//編成検知=信号制御メソッド
//
BeginFunc MtdControlSignal
KillEvent TimerID
call ObjPartnerSignal MtdSignalR
SetEventAfter ObjPartnerSignal MtdSignalY TimerID 10000
SetEventAfter ObjPartnerSignal MtdSignalG TimerID 15000
EndFunc
(1)編成がセンサーを通過したら信号が赤になる。
(2)その10秒後に信号が黄になる(1つ目のSetEvnetAfter命令)。
(3)その5秒後に信号が青になる(2つ目にSetEventAfter命令)。
・どちらから編成が進入しても同じ動作をする。
・現在の信号の状態を外部から参照できない。
・編成がどんな速度で通過しても、信号通過中に停車しても、信号の動作はまったく同じである。