前回まででパッと思いつくシステム部分は出来上がったように思えるので、気分転換の意味でもLonewolfの実際のデータを日本語に翻訳していこう!
もちろん、こういう時間だけがかかってプログラミング能力に全く寄与しないような作業はAIに頼むのだった。やったれGPT!

そうそう、それで頼むで

出来たのがコレ。おいっ!日本語訳って言ってるのにテキストの先頭に[JA]ってつけるだけって!

さすがに切れ気味で苦情を言ったところ・・そうそう、最初からそうやってれば良いんだよ

ファファファファーック!てめぇGPT・・・

考えてみたらGPTにこういう単純すぎる作業をやらせるのはそもそも勿体ない・・気がする。大衆の味方、Grokにかけあってみる。とりあえず第1パラグラフのみを貼り付け、textとdescriptionのみを日本語に、文体は冒険物語調で!と注文したところこんな感じ。良すぎませんかコレ!?ということで次は5000行を依頼するw鬼!
GoogleDriveに上げてリンクを渡したり色々と試したんだけど、結局1000行ずつに分けて普通に貼り付ける・・って事で決着。いや~大変でしたよ!毎回褒めたり励ましたり・・実際、これを手作業でやるとなると・・気が遠くなる!

では続いてパラグラフを先頭から読んでいって、既存のTypeでは対応できないページを見つけて新たな機能を実装していく・・という作業を開始。正直、これが一番楽しい!しかし見事に構造化してくれてるねぇ。日本語も雰囲気出ててイイですね

特定のアイテムを持ってないと選択肢が選べない場合を表すrequired_itemだけど、お金の場合は考えてなかった・・これは新たなスロットを作るしか無いな

まあ、こういう感じでTOMLに書いて

Choice構造体にRequiredGoldスロットを作って

HandleStoryNode内の場合分けでRequiredGoldスロットが””(Stringだから)じゃない場合にお金を支払って選択可能にするように書いて・・と。これで行けるんじゃないか?テストは後回しで

続いてアイテムを拾うページに出会う。あ、こういう風に普通の選択肢のパラグラフに潜り込ませてくるのか~・・これだとTypeにItemgetみたいなのを入れるのは非効率なので・・・

Nodesの中のスロットに新たにItemgetbeforeってのを設定してアイテムを入れてみる。beforeってつけたけど、多分afterは無いと思う

というわけで、泥縄実装だけどNodeにItemGetBeforeスロットを設定

で、TypeがStroy(普通の選択肢)の場合にItemGetBeforeスロットが""(Stringなので空は””なのだ)では無い場合にはアイテムが有るってことだから・・ハッ!?あ~しまった・・TablesはWeapon、Armor、Itemそれぞれ別のMapで管理することにしたからItemだけで呼び出すことが(簡単には)出来ない。うーん

ま、こうなりますよね・・どんどんスロットが増えるぜ・・

で、Weaponの場合にはWeaponのメソッドであるGetを呼び出して

もうついでなのでArmorとItemも一緒に書いておく。せっかくInventoryインターフェイスを作ったのに意味がなかった~・・なるほど、インターフェイスで統一するならデータの管理もまとめるようにしないと意味ないわ(多分)と理解した。item.Getでエラーが出てるのはItem構造体のGetメソッドが未実装だったため。

次回はこれを実装するところからだな!
それにしても本文読みながら機能を追加してくのは楽しいねぇ~・・多分1つ1つはすぐに決着するからだと思われる