[d'] センサーで取得した値を、ポイントのグローバル変数に代入する。
[e] センサーからポイントの編成判別をおこなうメソッドを実行する。
[f] センサーから得た値からポイントを正/反位のどちらにするか判別する。
[g] ポイントを切り替える。
[センサースクリプト]第一の重要点は、冒頭のVarPoint命令によるポイントオブジェクト変数の宣言と、続くget命令による代入です。get命令の第2引数の{ポイント名}は、実際にはレイアウト上に配置されたポイントに付けた名称に置き換えます。
//センサーイベントを設定
Var EvtSensor
SetEventSensor MtdSenseTrain EvtSensor
//このセンサーが担当するポイント
VarPoint ObjPoint
get ObjPoint {ポイント名}
//編成検知時に実行されるメソッド
BeginFunc MtdSenseTrain
VarTrain TmpTrain
Var TmpType
//検知した編成オブジェクトを取得
GetSenseTrain TmpTrain
//変数TmpTypeに検知した編成のVarTypeの値を取得
mov TmpType TmpTrain.VarType
//[d']ポイントのグローバル変数にTmpTypeの値を代入
mov ObjPoint.VarTrainType TmpType
//[e]ポイントの編成判別メソッドを実行
call ObjPoint MtdCheckType
EndFunc
[ポイントスクリプト]ポイントの状態は、三叉ポイントを除けば要するに正/反位の2つしかありません。使う/使わないは別にして、とりあえずレイアウト上のすべてのポイントに上記のメソッドを予め用意しておくことをお奨めします。こうしておけば、そこへ至る処理はともかく、call {ポイント名} MtdStraight を実行すれば正位に、call {ポイント名} MtdTurnout としてやれば反位にポイントが切り替わります。[g]はこれがすべてです。
//正位切替メソッド
BeginFunc MtdStraight
SetPointBranch 0
EndFunc
//反位切替メソッド
BeginFunc MtdTurnout
SetPointBranch 1
EndFunc
[f]-1 センサーから編成判別の値を受け取るためのグローバル変数を宣言する。
[f]-2 センサーから実行されるメソッドを作る。
[f]-3 グローバル変数をif命令で調べ、ある条件に当てはまる場合とそうでない場合(追越列車と退避列車に相当)を判別すること。
[f]-4 [f]-3の結果に応じてポイント切替メソッドを実行すること。