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。