マッププラグイン - stop-pattern/BveExCsTemplate GitHub Wiki

概要

本項ではAtsEXのプラグインのうちマッププラグインを扱う
マッププラグインは公式によると次のように説明されている

マッププラグインは、路線データに同梱するプラグインです。
通常のBVEでは提供されていない、新しい形のプラグインになります。

このことからも、ストラクチャーや他列車などのマップにかかわる機能の実装に向いているとわかる

コードでの実装

マッププラグインを実装する場合には、マッププラグインであるという情報をAtsEx側に伝達するため次の設定が必要となる

  • プラグインのメインクラスにPluginType(PluginType.MapPlugin)属性を付与
  • PluginBase抽象クラスを継承
    • 基本的にPluginBaseから派生したAssemblyPluginBase抽象クラスを継承
  • TickMapPluginTickResultを返す

この時の最小構成を下に引用して示す

[PluginType(PluginType.MapPlugin)]
internal class PluginMain : AssemblyPluginBase
{
    public PluginMain(PluginBuilder builder) : base(builder)
    {
    }

    public override void Dispose()
    {
    }

    public override void Tick(TimeSpan elapsed)
    {
        return new MapPluginTickResult();
    }
}

Bveへの導入

配置場所

マップアドオンの中にプラグインを配置する

ディレクトリ構成例:

Scenarios
├ MyScenario.txt
└ MyMaps
  └ SampleMap
    ├ MapPlugins
    │ ├ **プラグイン**
    │ ├ OtherPlugin.dll
    │ └ ...
    ├ MapPluginUsing.xml
    ├ Image.jpg
    ├ Map.txt
    ├ Signals.csv
    ├ Sounds.csv
    ├ Sounds3D.csv
    ├ Stations.csv
    └ Structures.csv

参照設定

マップアドオンからAtsEXのマッププラグインを参照するためには、マップファイルの加工に加え設定ファイルの追加が必要である
設定ファイルの追加をはじめとする参照のための設定は次のとおりである

設定ファイル

設定ファイルを作成しプラグインの情報を記入する
MapPluginUsing.xml(例):

<?xml version="1.0" encoding="utf-8" ?>
<AtsExPluginUsing xmlns="http://automatic9045.github.io/ns/xmlschemas/AtsExPluginUsingXmlSchema.xsd">
    <Assembly Path="MapPlugins\**プラグイン**" />
    <Assembly Path="MapPlugins\OtherPlugin.dll" />
</AtsExPluginUsing>

Mapファイルから参照

Bve側にプラグインを使用することを教える必要があるため、その設定を行う
Map.txt(例):

BveTs Map 2.02:utf-8

// AtsEX
include '<AtsEx::USEATSEX>';                            // AtsEXのプラグインを使うという宣言
include '<AtsEx::READDEPTH>1';                          // AtsEXのプラグインを探すディレクトリの深さ
include '<AtsEx::MapPluginUsing>MapPluginUsing.xml';    // 使うプラグインの情報を伝えるファイルの位置

Structure.Load('Structures.txt');
Signal.Load('Signals.csv');
Sound.Load('Sounds_e.txt');
Sound3D.Load('Sounds3D.txt');
Station.Load('Stations.csv');

0;
...

読み込まれ方

マッププラグインはAtsEXの車両プラグインと同様にシナリオ読み込み時にAtsEXから呼ばれ、シナリオ終了時に開放される

参考文献・引用元