Rosso Laboratory

CommonStatusの有用性

面倒なので細かいことは抜きにしよう。

VRMスクリプトを研究したい人に対しては、「この「減少メソッド」が典型的な「センサーチェーン構造」の使用例だよ」と伝えておくだけにしておきます。



当然ながら、これはcVssへの導入予定機能のテストです。閉塞運転制御のためには、コレ以外に、
・レイアウト スクリプト(VRM4のみ)
・ATS-P(5灯式閉塞編成動作)センサー スクリプト
・5灯式信号機 スクリプト
・cVss編成 改

が必要ですので無理して使わないように。そのうち何処かでサンプルレイアウトを公開するつもりなので。
//----------------------------------------------------------------------
//閉塞構築センサー スクリプト
//----------------------------------------------------------------------
//変数宣言
 //一般変数宣言
  Var VarStatus
  Var VarBlockadeZoneStatus
  //(VRM5/ONLINE)
  //Var VarBlockadeZoneNo
 //オブジェクト変数宣言
  VarTrain ObjTrain
  VarSensor ObjThisSensor
  VarSensor ObjPreviousSensor
  //(VRM4)
  VarLayout ObjLayout
 //イベントID変数宣言
  Var SensorEventID

//----------------------------------------------------------------------
//ユーザー設定項目
 //使用信号機-1(5灯式:4、4灯式:3、3灯式:2、2灯式:1)
  set VarBlockadeZoneStatus 4
 //共通ステータス番号(VRM5/ONLINE)
  //set VarBlockadeZoneNo 1
//----------------------------------------------------------------------

//スタート
 //レイアウト取得(VRM4)
  getlayout ObjLayout
 //自分取得
  get ObjThisSensor this
 //センサーが編成を発見したらメソッドへ
  SetEventSensor MethodSensorEvent SensorEventID

//メソッド
 //閉塞メソッド
 BeginFunc MethodSensorEvent
  GetSenseTrain ObjTrain
  //(VRM4)
  mov ObjLayout VarBlockadeZone01 this VarBlockadeZoneStatus
  //(VRM5/ONLINE)
  //SetCommonStatus VarBlockadeZoneNo VarBlockadeZoneStatus
  mov this ObjPreviousSensor ObjTrain ObjBZoneSensor
  ifeq VarBlockadeZoneStatus 4
   call ObjPreviousSensor Method4to3
  endif
  ifeq VarBlockadeZoneStatus 3
   call ObjPreviousSensor Method3to2
  endif
  ifeq VarBlockadeZoneStatus 2
   call ObjPreviousSensor Method2to1
  endif
  ifeq VarBlockadeZoneStatus 1
   call ObjPreviousSensor Method1to0
  endif
  mov ObjTrain ObjBZoneSensor this ObjThisSensor
 EndFunc

 //減少メソッド
 BeginFunc Method4to3
  //(VRM4)
  mov this VarStatus ObjLayout VarBlockadeZone01
  //(VRM5/ONLINE)
  //GetCommonStatus VarBlockadeZoneNo VarStatus
  ifeq VarStatus 4
   //(VRM4)
   set ObjLayout VarBlockadeZone01 3
   //(VRM5/ONLINE)
   //SetCommonStatus VarBlockadeZoneNo 3
   call ObjPreviousSensor Method3to2
  endif
 EndFunc

 BeginFunc Method3to2
  //(VRM4)
  mov this VarStatus ObjLayout VarBlockadeZone01
  //(VRM5/ONLINE)
  //GetCommonStatus VarBlockadeZoneNo VarStatus
  ifeq VarStatus 3
   //(VRM4)
   set ObjLayout VarBlockadeZone01 2
   //(VRM5/ONLINE)
   //SetCommonStatus VarBlockadeZoneNo 2
   call ObjPreviousSensor Method2to1
  endif
 EndFunc

 BeginFunc Method2to1
  //(VRM4)
  mov this VarStatus ObjLayout VarBlockadeZone01
  //(VRM5/ONLINE)
  //GetCommonStatus VarBlockadeZoneNo VarStatus
  ifeq VarStatus 2
   //(VRM4)
   set ObjLayout VarBlockadeZone01 1
   //(VRM5/ONLINE)
   //SetCommonStatus VarBlockadeZoneNo 1
   call ObjPreviousSensor Method1to0
  endif
 EndFunc

 BeginFunc Method1to0
  //(VRM4)
  mov this VarStatus ObjLayout VarBlockadeZone01
  //(VRM5/ONLINE)
  //GetCommonStatus VarBlockadeZoneNo VarStatus
  ifeq VarStatus 1
   //(VRM4)
   set ObjLayout VarBlockadeZone01 0
   //(VRM5/ONLINE)
   //SetCommonStatus VarBlockadeZoneNo 0
  endif
 EndFunc


---*---*---*---

・・・要するに、このスクリプトを使いまわす上で、「赤の部分全部」と「黄色の部分一箇所」を直すのではどちらが楽ですか?という、あまりにも馬鹿馬鹿しい比較。

共通ステータスによって「VRMのオブジェクト間通信は次の時代に移行した」というだけのお話。

ランキングに参加中。クリックして応援お願いします!

名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「VRMスクリプト」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事