忍者ブログ

BVE-I-WEB

BVEの個人的な技術備忘録です。 いつか誰かの役に立てば幸いです。

C++向けAtsプラグイン作成方法その2

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

C++向けAtsプラグイン作成方法その2

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

はプラグインが読み込み解除されたときのみ呼び出されます。

拍手[1回]

PR

コメント

プロフィール

HN:
BVE_I_
性別:
非公開

P R