インフィニットアンディスカバリーをプレイしていたらすごいことに気づいてしまいまして、なんと、あのゲーム、キャンプ中に敵の気配を感じるとキャラクターが立ち上がるのです。
キャラクターが敵の気配を察知すると立ち上がって戦闘モードに入ります(抜刀するわけではありません)。戦闘モードに入るとアイテムを使うのにモーションが必要になったり、クリエイションやエンチャントができなくなるという違いがあります。敵の気配が消えると、また座り直して通常のキャンプメニューになります。
「あの手のゲームを作るのってかなり面倒だよなぁ」と思ってはいたのですが、ここまでしているとなると適当な作り方ではまず無理ですよね。最初に思いついたのがストラテジーパターンみたいな実装で、オブジェクトのインタフェースは同じでも状況によってロジックが変わるというやり方。これならあまり if 文は増えないはずです。
また、データの読み込みがほとんど非同期なので、 MVC でいうモデルの変更をビューに伝える仕組みが必要なのですが、あれはなんていうパターンなのでしょうか。オブザーバー?
Contributions