FishDrawPool
1 回の抽選の候補と、その重み。FishDrawer.createPool で作り、FishDrawer.draw に渡す。
候補 (メンバー)
enabled が true で、レアリティが rarities に含まれ、FishData.conditions が world と weather で満たされる魚が候補になる。 この条件は絶対で、候補外の魚を後から加えることはできない。 レアリティは候補の魚を 1 匹以上持つものだけが候補になる。
重みの初期値は RarityData.weight と FishData.weight である。 weight が 0 の魚も重み 0 の候補として含まれるため、setFishWeight で重みを与えれば釣れるようになる (餌限定の魚など)。
抽選
まず重み付きでレアリティを選び、その中から重み付きで魚を選ぶ。 抽選対象になるのは、重みが正で、重みが正の魚を 1 匹以上持つレアリティだけである。 そのようなレアリティが無ければ抽選結果は null (バニラのドロップ) になる。
重みの変更
重みと倍率は有限かつ 0 以上でなければならず、それ以外は IllegalArgumentException を投げる。 検証は変更の前に行うため、拒否された呼び出しは何も変更しない。 結果が Double.MAX_VALUE を超える場合は Double.MAX_VALUE に丸める。
スレッドセーフではない。1 回の抽選の中で、同じスレッドから使うことを想定している。
Parameters
抽選する釣りワールドの ID
釣りワールドの現在の天候。不明なら null (天候条件付きの魚は候補外になる)
登録されているレアリティ
登録されている魚
Constructors
Functions
魚の現在の重みを返す。候補外の魚なら 0。
現在の重みで、この魚が釣れる全体の確率を返す。候補外や抽選対象外の魚なら 0。 全ての魚の確率の合計は、抽選対象があれば 1、無ければ 0 になる。
候補のレアリティを登録順に返す。返すリストは変更できない。
レアリティの現在の重みを返す。候補外のレアリティなら 0。
候補の判定に使った天候を返す。不明なら null。
抽選する釣りワールドの ID を返す。
魚が釣れる全体の確率 (getProbability) を factor 倍にする。他の全ての候補の確率は互いの比を保ったまま一律に増減する。
魚の重みに倍率を掛ける。通常は同じレアリティ内での割合だけが変わり、全体の確率は倍率どおりにはならない。 全体の確率を倍率どおりに変えたい場合は multiplyFishProbability を使う。
レアリティの重みに倍率を掛ける。同じレアリティの魚の確率がまとめて変わり、他のレアリティの確率は相対的に下がる。
魚の重み (同じレアリティ内での重み) を設定する。
レアリティの重みを設定する。