7. 工房の状態を読む
ここからは練習用の数を使う代わりに自分の工房を調べます。まずは今使える鉱石の量を読みましょう。調べるだけなら採掘も加工も始まりません。
長い名前を分けて読む
Workshop.Resources[ResourceKind.Ore].Availableは今使える鉱石の量です。次のように対象を順に選んでいます。
| 部分 | 意味 |
|---|---|
| Workshop | 自分の工房 |
| .Resources | 工房の資源一覧 |
| [ResourceKind.Ore] | 一覧の中の鉱石 |
| .Available | ほかの仕事に予約されていない量 |
ドット.はその対象の中にある名前を選ぶ記号です。角括弧[ ]は一覧から対象を選びます。ResourceKind.Oreはゲームが決めた鉱石の名前なので、そのまま書きます。
ゲームが自律術式に用意している状態の読み方や操作の呼び方を「API」と呼びます。名前をすべて暗記する必要はありません。必要なものをAPIリファレンスで調べられます。
読んだ量を条件に使う
public class Program : ArcaneProgram
{
public void OnStart()
{
var ore = Workshop.Resources[ResourceKind.Ore].Available;
if (ore >= 10)
{
Workshop.Log.Write("Enough ore.");
}
else
{
Workshop.Log.Write("Need more ore.");
}
}
}var ore = ...;は右側の値から型を決めて変数を作る書き方です。この場合はゲームの資源量を扱うAmount型になります。数の大小は前の章のintと同じように比べられます。
実行したときに使える鉱石が10以上ならEnough ore.、10未満ならNeed more ore.と表示します。この術式は量を読むだけなので、鉱石は減りません。
oreには読んだ時点の量が入ります。その後に鉱石が増えても、oreの値は自動では変わりません。最新の量が必要ならもう一度Availableを読みます。
TotalとAvailable
Totalは予約中の入力素材も含めた所持量、Availableは予約されていない使用可能量です。例えば鉱石を20持ち、そのうち10が加工用に予約されていれば、Totalは20、Availableは10です。どちらにも未完成の製品は含まれません。
材料が足りるか調べるときはAvailableを使います。
練習問題
鉱石のTotalが20、Availableが8のとき、例の術式はどちらの文章を出すでしょうか。
解答例を表示する解答例を閉じる
Need more ore.を出します。読んでいるのはAvailableなので、条件は8 >= 10となり、falseです。
