8. 採掘と加工を頼む

工房の様子が分かったらゴーレムへ最初の仕事を任せましょう。空いているかを確かめてから鉱石の採掘を頼みます。この章の術式は実際の工房で仕事を始めます。

ゴーレムを選ぶ

Workshop.Golems[0]は所有する最初のゴーレムです。番号は0から始まるため、最初が0、次が1です。ここでは最初の1体を使います。

golem.IsIdleはそのゴーレムが空いているかを調べます。採掘中や充電中ならfalseです。こうした状態を読む名前を「プロパティ」と呼びます。

空いているときだけ注文する

ArcaneScript
public class Program : ArcaneProgram
{
    public void OnStart()
    {
        var golem = Workshop.Golems[0];
        if (golem.IsIdle)
        {
            var result = golem.Mine(Mineral.Ore, 20);
            if (result.Ok)
            {
                Workshop.Log.Write("Mining accepted.");
            }
            else
            {
                Workshop.Log.Write("Mining was not accepted.");
            }
        }
    }
}

OnStartの中は実行を始めたときに一度動きます。術式の順番を追ってみましょう。

  1. 最初のゴーレムをgolemに入れます。
  2. IsIdleを調べます。falseならifの中へ入りません。
  3. 空いていれば、Mineで鉱石20の採掘を注文します。
  4. 受付結果をresultに入れ、Okで受け付けられたかを調べます。

Mine(Mineral.Ore, 20)の丸括弧の中は操作へ渡す値です。この値を「引数」と呼びます。ここでは採掘する種類と数量をカンマで区切っています。Mineのように呼び出して処理を行うものを「メソッド」と呼びます。Log.Writeもメソッドです。

Okがtrueでも採掘が完成したわけではありません。工房の表示で進み具合を確認してください。空いていても容量などの理由で断られることがあるため、受付結果も調べます。

加工を注文するには

Workshop.Production[RecipeKind.Iron].Start(5)で鉄5の加工を注文できます。Startに渡す数は作りたい製品の数量です。鉄1には鉱石2を使うので鉄5には使用可能な鉱石10が必要です。

Mineと同じように返ってきた結果のOkを調べます。設備が使用中なら受け付けられません。レシピと設備は設備と研究の解放で確認できます。

採掘の例を次の術式へ置き換えると、鉄の加工を一度注文できます。使える鉱石が10未満なら注文しません。

ArcaneScript
public class Program : ArcaneProgram
{
    public void OnStart()
    {
        if (Workshop.Resources[ResourceKind.Ore].Available >= 10)
        {
            var result = Workshop.Production[RecipeKind.Iron].Start(5);
            if (result.Ok)
            {
                Workshop.Log.Write("Crafting accepted.");
            }
            else
            {
                Workshop.Log.Write("Crafting was not accepted.");
            }
        }
    }
}

練習問題

最初のゴーレムが空いているときだけ鉱石10を採掘するように例を変えてください。

解答例を表示する解答例を閉じる

golem.Mine(Mineral.Ore, 20)の20を10に変えます。IsIdleを調べるifは残します。空いていない場合には数量に関係なく注文しません。