最終更新日 2024-06-21

複雑なデータの取得

複雑なものをC++で直接相手にせず、Luaで平らにして取り扱いやすくする

Lua側で複雑な入り組んだデータを定義し、これをScenarioModで取得する場合、
複雑なデータのまま、画用紙に書いてしまうと、SceanrioMod側の負担が高まります。

なぜなら、ScenarioModで簡単に画用紙から取得できるのは、「少数」もしくは「文字列」であり、
複雑なデータ構造となると、素のLuaの比較的複雑で取り回しにくいAPIを直接扱うことになるからです。

今回は、以下のようなデータが、個数不明のまま定義されたとしても、問題なくSceanrioModで取得する
ということを目指します。

ファイルの読み込み部

以下のように対象となるtxtファイルを「天翔記フォルダ」に用意します。

Luaで値を返す関数を作成

先述のBushouData.txtのデータは、「テーブルのなかに、さらにテーブル」が入っており、入り組んでいますので、
画用紙に書かれているこのままの形だと、C++側で値を取得するのは、とても大変です。

そこで、Luaで、以下のような関数を作り、
「Get_グローバル数値」や「Get_グローバル文字列」で値を引き出せるような形で取れる準備をします。

dprintしてみると、その様子がわかります。