PlusleSeedCalculator.Library.ICalculator インターフェース

これはプラスルツールのプラグイン作者向けに書かれた記事です。
プラグインの使い方を知りたい方は[id:plusletool:20100918:howtouse]を参照。
プラグインの作り方を知りたい方は[id:plusletool:20100918:PluginManual]も参照。

乱数計算を実際に行うインターフェースです。

HtmlPageTitle プロパティ

html出力時の結果ファイルのページタイトルを取得します。
このプロパティはhtml出力時のみ使用され、titleタグの中身として出力します。

なお このプロパティは、検索開始時に1度だけ呼ばれます。

【定義】

string HtmlPageTitle { get; }

【プロパティ値】
html出力時の結果ファイルのページタイトル(titleタグの中身)。

※ページタイトルが必要ない場合やめんどうな場合は、 return string.Empty; や return null; などとしてください。

HtmlHeaderTitle プロパティ

html出力時の結果ファイルのヘッダを取得します。
このプロパティはhtml出力時のみ使用され、h3タグの中身として出力します。

なお このプロパティは、検索開始時に1度だけ呼ばれます。

【定義】

string HtmlHeaderTitle { get; }

【プロパティ値】
html出力時の結果ファイルのヘッダ(h3タグの中身)。

※ヘッダが必要ない場合やめんどうな場合は、 return string.Empty; や return null; などとしてください。

HtmlStyleSheet プロパティ

html出力時の結果ファイルのスタイルシートを取得します。
このプロパティはhtml出力時のみ使用され、styleタグの中身として出力します。

なお このプロパティは、結果ファイル出力時に1度だけ呼ばれます。

【定義】

string HtmlStyleSheet { get; }

【プロパティ値】
html出力時の結果ファイルのスタイルシート(styleタグの中身)。

スタイルシートが必要ない場合やめんどうな場合は、 return string.Empty; や return null; などとしてください。

Header プロパティ

結果ファイルの列ヘッダを取得します。

なお このプロパティは、検索開始時に1度だけ呼ばれます。

【定義】

PlusleSeedCalculator.Library.Result Header { get; }

【プロパティ値】
結果ファイルの列ヘッダ。

※めんどうな場合は return null; としても(プログラムの挙動的には)問題ありません(ただしその場合、表のヘッダはおかしくなる)。

Calculate メソッド

乱数を計算して検索条件に合うかを判定し、その結果を返します。

このメソッドは、初期seedと個体値乱数消費と性格値乱数消費のループの中で繰り返し呼び出されます。

// こんな感じ(※あくまでイメージ)
foreach ( ulong iniSeed in iniSeeds ) {
	ulong seed = iniSeed;
	IRandS randS = new RandS(seed);	// 性格値乱数列初期化
	IRandK randK = new RandK(randS.Next());	// 個体値乱数列初期化
	// 中略(オフセット・初期消費の処理など)
	for ( int i=kMin; i<=kMax; i++, randK.Next() ) {
		IRandS randSClone = new RandS(randS);
		for ( int j=sMin; j<=sMax; j++, randSClone.Next() ){
			IRandK randKClone = new RandK(randK);
			IRandS randSClone2 = new RandS(randSClone);
			PlusleSeedCalculator.Library.Result result;
			bool b = calculator.Calculate(randKClone,randSClone2,result);	// ←ここで呼び出し
			// 中略(出力文字列作成など)
		}
	}
}

よって、与えられたrandK,randSに対する判定結果だけを求めれば十分です。
(次の消費、その次の消費、さらに次の消費……などをわざわざ計算しなくてもいい、という意味。)

【注意】
このメソッドから、IPlugin インターフェースインスタンスやユーザコントロールにはアクセスできません。
別スレッドで計算しているので、実行時に例外(System.InvalidOperationException)が発生します。

【定義】

bool Calculate(
	PlusleSeedCalculator.Library.IRandomK randK,
	PlusleSeedCalculator.Library.IRandomS randS,
	out PlusleSeedCalculator.Library.Result result
);

【パラメータ】

randK
個体値乱数を計算するクラスのインスタンス
randS
性格値乱数を計算するクラスのインスタンス
result
結果を格納する変数。
※この変数には、必ず何らかの値(nullでも可)を入れてください。
(何も代入しないとコンパイルエラーになります。詳細は「C# out 参照渡し」で検索。)

【戻り値】
randK,randSが乱数の検索条件を満たす場合、true。
それ以外の場合、false。