コードフレームワーク
ルールブックの表
固定のルールデータを表に置き、ルールから読むか、入力の選択肢として使います。
表とは
ルールブックの表は、職業ごとのボーナスのように、ルールが読む固定のデータです。プレイ状態ではなく、プレイヤーが変えることはありません。行を変えると、ソースの他の編集と同じように、ゲームの新しいバージョンができます。
表を宣言する
表は tables/ にある JSON ファイルです。マニフェストに載せます。
manifest/project.json
"tables": ["tables/callings.json"]- 10 行目 表ファイルのパスです。
tables/callings.json
{
"id": "callings",
"name": "Callings",
"columns": [
{ "key": "calling", "label": "Calling", "type": "string" },
{ "key": "bonus", "label": "Watch bonus", "type": "number" }
],
"rows": [
{ "calling": "Guard", "bonus": 30 },
{ "calling": "Scout", "bonus": 10 }
]
}- 4-7 行目 列です。各列にキー、ラベル、型があります。型は string、number、boolean のいずれかです。
- 8-11 行目 行です。各行はすべての列の値を持ち、それ以外は持ちません。
フレームワークは、読む表の ID を一覧にします。
schemas/keeper.json
"tables": ["callings"]- 22 行目 このフレームワークは callings の表を読めます。
| 上限 | 値 |
|---|---|
| 1 つの表の列数 | 64 |
| 1 つの表の行数 | 1000 |
| 1 つのフレームワークの表数 | 64 |
| 1 つのゲームの表数 | 128 |
ルールで表を読む
table.find は、表の ID、照合する列と探す値、返す列とそれぞれのデフォルトを取ります。照合する列がすべて値と等しい最初の行から、指定した列を返します。一致する行がなければ、デフォルトを返します。
rules/keeper.ts
export function construct(
name: string,
max_hp: number,
calling: string,
): { name: string; max_hp: number; hp: number; calling: string; watch: number } {
const row = table.find("callings", { calling: calling }, { bonus: 0 });
const bonus: number = row.bonus;
return {
name: name,
max_hp: max_hp,
hp: max_hp,
calling: calling,
watch: 20 + bonus,
};
}- 6 行目 職業のボーナスを探します。デフォルトは 0 です。
- 7 行目 結果の列を読みます。型は表から決まるので、キャストは要りません。
- 13 行目 ボーナスを開始値に使います。
表の ID はコードに書いた文字列で、フレームワークがその表を一覧に載せている必要があります。指定する列はすべて存在しなければならず、返るのは指定した列だけです。コンストラクタも、この方法で表を読みます。 照合する値は、変数、フィールド、リテラルのいずれかにします。計算した値は使えません。
次の間違いは、プロジェクトを検証したときに見つかります。
const row = table.find("callings", { calling: calling }, { boost: 0 });has no column 'boost'which manifest.tables does not declare const row = table.find("callings", { calling: calling + "!" }, { bonus: 0 });table.find match values must be a variable, a field or a literal表を選択肢に使う
テキスト入力は、表の 1 つの列から選択肢を取れます。選択肢は、その列の重複しない値で、行の順に並びます。
schemas/keeper.json
"calling": {
"label": "Calling",
"optionsFrom": { "table": "callings", "column": "calling" },
"defaultValue": "Guard"
}- 11 行目 ウィザードは calling 列の値を選択肢として出します。
- 12 行目 デフォルトは、選択肢のどれかにします。
is not one of this Framework's tablesテキスト型のアクション入力も、アクションの宣言にある optionsFrom の項目で同じことができます。ソースは、選択肢を 2 つ以上出す必要があります。

