C++の基本的な部分について説明します。
.hファイルには変数(値を入れる箱)を定義します。
変数にはいくつか種類があり
bool型:trueとfalseつまり0と1しか扱うことができません
int型:整数を扱うことができます。小数を入れると切り捨てられます
double型、float型:基本的にこの2つは小数を扱うことができます。
.cppファイルにはどのように実行するのかの命令を書きます。 .cppファイルの中にはいくつかの関数があります。
関数の役割は様々なページで紹介されていますが、こちらでも紹介させていただきます。
BOOL APIENTRY DllMain
はDLLファイル出力についての処理が記述されています。基本的にこの部分を削除してしまうとDLLファイルの出力がうまく行かずエラーが出てしまいます。
ATS_API int WINAPI GetPluginVersion
は0x00020000という数字を返します。 使用用途は不明です。
ATS_API void WINAPI SetVehicleSpec
はparameter.txtに記述されている車両情報を取得します。ノッチ段数やATS確認最小ノッチ、両数を取得できます。
ATS_API void WINAPI Initialize
は駅ジャンプ時やロードされたときに呼び出される関数です。主に初期化に使います。 コラム:値系の代入はinitで行うと、変な値を引っ張ってしまうので、initでは行わず、initでtrueにした変数を用いてElapseで値を代入して変数をfalseに戻すと変な値を取得することが少なくなります。
ATS_API ATS_HANDLES WINAPI Elapse
毎フレーム呼び出される関数です。基本的な処理はここで行われます。 たとえば
sound[0] = ATS_PLAY_LOOPING;
と入れるとsoundの0番をずっとループ再生するコードになります。
ATS_API void WINAPI SetPower
は力行ノッチが変化したときに呼び出される関数です。
ATS_API void WINAPI SetBrake
は制動ノッチが変化したときに呼び出される関数です。
ATS_API void WINAPI SetReverser
はレバーサーが変化したときに呼び出される関数です。 コラム:レバーサーの情報はdetailmanagerで先に読み込まれたプラグインによって書き換えられている可能性があります。(ドア開扉時に切になる) 一番最初に読み込まれたプラグインが正しく情報を取得できるので、レバーサーに関与するプラグインは最初に読み込ませるほうが良いです。(具体的な解決策が見つけられてないので情報ある方はご教授ください)
AtsExプラグインを併用することによって解決できます。
ATS_API void WINAPI KeyDown
はキーを押されたときに呼び出される関数です。Bveの設定のAts部分のキーアサインに記述されているキーに限り情報を取得することができます。(Atsのキーアサイン以外のキー情報を取得する情報は後日記載します。)
ATS_API void WINAPI KeyUp
はキーを離したときに呼び出される関数です。Bveの設定のAts部分のキーアサインに記述されているキーに限り情報を取得することができます。
ATS_API void WINAPI HornBlow
は警笛を扱われたときに呼び出される関数です。警笛を取り扱い始めたときしか取得できないので、用途はEBスイッチぐらいしかありません。(警笛をAtsプラグイン側で鳴らす方法は後日記載します。)
ATS_API void WINAPI DoorOpen
ドアが開いたときに呼び出される関数です。
ATS_API void WINAPI DoorClose
ドアが閉まりきったときに呼び出される関数です。(ドアの閉まり始めはAtsExプラグインによって取得する方法は後日記載します。)
ATS_API void WINAPI SetSignal
現示が変化するときに呼び出される関数です。
ATS_API void WINAPI SetBeaconData
地上子を踏み越えたときに呼び出される関数です。
beaconData.Type:int型で地上子の種類を取得します。
beaconData.Signal:int型で対になる信号機の現示を取得します。(地上子を超えた段階での現示しか取得できないので、現示アップしても先行現示の情報は取得できない)
beaconData.distance:float型で次の現示までの距離を取得します。(signalまでの距離ではなくsectionまでの距離なのが注意)
beaconData.Optional:int型で地上子のsendDataの情報を取得します。
ATS_API void WINAPI Load
はプラグインが読み込まれたときのみ呼び出されます。駅ジャンプ時などには呼び出されないので読み込まれたときだけ初期値を代入するなどで使うことができます。
ATS_API void WINAPI Dispose
はプラグインが読み込み解除されたときのみ呼び出されます。