1. コントリビューションクラスの追加
- namespace nft.contributions.ui
- {
- /// <summary>
- /// CtbMenuItem の概要の説明です。
- /// </summary>
- public class CtbMenuItem : Contribution
- {
- /// <summary>
- /// Contributes a menu and submenu items to mainmenu.
- ///
- /// This contribution can add several items at once.
- /// </summary>
- public CtbMenuItem(Plugin p, ParamsReader e)
- : base(p, e)
- {
- // 実装を定義
- }
- }
- }
2. コントリビューションタイプの宣言 plugin.xmlに以下のような記述を追加する
3. コントリビューションの追加 plugin.xmlに以下のような記述を追加する。 任意の数だけ記述することが出来る。2 とは別のplugin.xmlに書くこともできる。
4. NeoFT起動 起動時にCtbMenuItemのコンストラクタが呼ばれるようになる。 引数 ParamsReader には 3 に記述したノードの内容が含まれる。
BinaryModule を継承して作る ゲームシステムに必須ではない拡張コードを伴う。 基本的にはそれ単体で完結するシングルトン的利用を想定しているが、同じクラスを複数登録することもできる。 (その場合はxmlにパラメーターを記述して挙動を変えたりすることになると思われる)
<contribution type="binary" id="TestModule">
<name>TestBinaryModule</name>
<class name="nft.debug.TestBinaryModule" codebase=".Core"/>
</contribution>
IGlobalModule を実装したクラス コントリビューションの一種ではなくゲームシステムに必須なモジュール。 ただし、モジュールごとに別な実装による置き換えは想定している。 アプリケーション内では GlobalModules で管理されている。
DefaultContributionFactory FreeTrainで存在したContributionFactoryの概念を引き継いだもの。 コントリビューションごとに独自のファクトリを宣言できるが、基本的にはこれ一つで事足りるはず。
CtbAnonymous クラスを継承して作る
<contribution type="Anonymous" id="Test_CtbAnonymous">
<name>匿名コントリビューション</name>
<description>ファクトリ宣言を必要としない、孤立したコントリビューションのサンプル(CtbAnonymousを継承すべし)</description>
<class name="nft.debug.TestAnonymousCtb" codebase=".Core"/>
</contribution>
実際には type=Anonymous の宣言がメインのplugin.xmlに書いてある
シングルトンのような孤立したコントリビューションを気軽に追加できるように作ったものだが、
改めて考えると、そういう物は基本コードで成り立つので、BinaryModule として定義する方がよい。
(各プラグインの初期化順に影響するため)
今後処遇検討