スキン毎にシナリオを選択する

Issue #103 resolved
k4nagatsuki repo owner created an issue

それではXML形式のシナリオはスキンのタイプを設定できるがクラシックなシナリオに対応できない。そこでフォルダ分けによって判断する方法を考える。

なお、スキンには名前の他にタイプの定義があり、例えばファンタジーⅠ型・アレンジパック・カードワースダッシュはどれも中世ファンタジー(MedievalFantasy)として定義されている。このタイプによってシナリオ選択の判断を行うのが妥当。

今考えている大雑把な仕様は次のようになる。

  • スキンのタイプごとに、「貼紙を見る」を行った時にどのフォルダを見に行くか設定画面で定義できるようにする。定義が無いときはCardWirthPy\Scenarioを開く。
  • スキンの自動生成の時、自動生成されたスキンのタイプに対して上記の定義が無かった場合は自動的に追加する。
  • オプションを設け、貼紙を見るときにCardWirthPy\Scenarioを開くか、スキンごとに定義されたシナリオフォルダを開くか選択できるようにする。

Comments (10)

  1. takuto_cw

    こんばんは。β2アップお疲れ様です。いつの間に新課題ができていたので、見に来ました。

    「スキン毎にシナリオを選択」というのがどういうことか、自分にはよく分かってないのですが、MedievalFantasy などのタイプごとに最近遊んだシナリオを5つまで表示するとか、そういう話で合ってるでしょうか?

  2. k4nagatsuki reporter

    いえ、根本的に選択できるシナリオ群をスキンのタイプによって切り替えてしまおうという話です。

    例えばファンタジー用のシナリオと現代用のシナリオを別のフォルダに入れておいて、現在のスキンによってシナリオの選択がファンタジー用のフォルダから始まるか現代用のフォルダから始まるかが切り替わる、というイメージです。

  3. takuto_cw

    うわあ盛大に勘違い……大変失礼いたしました。スキンによって表示される貼り紙を絞り込みたい、その際スキン別でなくタイプ別にするのがいいだろう、ということですね。

    これから方法を詰めていくところのようですので、思いついたやり方をひとつ投下していきます。

    スキン作成時にショートカット先に設定ファイルを作る。1.20互換用のiniファイルみたいに。ただしフォルダに置いた場合は、それ以下のシナリオ全部に効く。中身は「type=school,modern」などと書いてある。オプションで無効化可能。

    複数の世界に適したシナリオもありそうですし(「両手利き」「大食い」などのおまけクーポンを配布するシナリオなど)この作者さんは自分の中で別格だから専用フォルダ作りたい、なんてときに 作者名>タイプ別 という整理の仕方も可能。

    ただこの方法だと、貼り紙表示している最中にオプション切り替えされたり、最後にプレイしたシナリオが「表示しない」ものだったときに面倒なことになりますが……。

  4. k4nagatsuki reporter

    設定ファイルもいいかもしれませんね。専用のファイルを作らないといけないのがネックではありますが、プレイヤーに許可を求めれば問題ないでしょう。そもそもシナリオとタイプは強く関連づいてるわけで、情報の位置としてもより妥当です。シナリオを上位のフォルダごと移動させても問題ない。

    現状と同じくそのフォルダへ行くまでに1ステップフォルダの選択操作が入るというのがちょっと気になるくらいですね(最初に挙げてる方法ではいきなりそのフォルダへ飛ぶ。それだとCardWirthPy\Scenarioへはショートカットでも作らないと戻れませんが実際は別タイプのシナリオをプレイする事はほぼ無いはずなのでほとんど問題ないはず)。対処するとすれば、Scenario直下で選択可能なのがフォルダ1個だけという場合に自動的にジャンプする、という感じでしょうか。

    最後にプレイしたシナリオに関しては、見つからなければ単に冒頭に戻るでいいと思います。

    なお、複数のタイプに適したシナリオ等については、ショートカットでもかなり対応できるのではないかと思っています。

  5. k4nagatsuki reporter

    時間が空いてしまいましたが、やはり設定ファイルを作るというのが気になっていました。ユーザの領域にファイルを自動生成するのはできるだけ避けたいです。

    ただ、よく考えたらこれらの方法は併用できるんですね。第一段階として、(オプションが有効であれば)スキンタイプ毎に設定されたフォルダを最初に開く。次に第二段階として、設定ファイルがあればその設定ファイルに基づいてシナリオやフォルダの表示/非表示を切り替える。

    というわけで、まずは第一段階から実装してみようかと思います。

  6. k4nagatsuki reporter
    • removed responsible

    第二段階のiniファイルの実装についてはもうちょっと検討要。

    現在、シナリオ本体が互換性DBに載っていないが互換動作させたい時にはシナリオにmode.iniというものを入れる仕様になっていますが、どうせならこれと内容を統一して([Compatibility]の他に内容を追加して[Type]とかを入れれば一つのファイルに複数種類の情報を入れられる)、シナリオ本体にmode.iniがなければ上位階層のフォルダに無いか探す……といった、全体として統一の取れた挙動をしてほしいところです。

  7. Log in to comment