- edited description
タスク:CardWirthのインターフェースに近づける
当面のメインとして分ける。
達成
ステータスバーのグラデーション廃止ステータスバーを12.2以前に戻してレイアウトを整理各ダイアログの移動パネル[◁ 閉じる ▷]をCWに合わせて細くするレベル調節スライダを四角くして上に緑のビューを付けるパーティ情報ダイアログ(冒険中)の所持金欄を所持金パネルの色とフォントに指定パーティ情報ダイアログ(宿)のスピンに色を付けてオリジナル文言をtooltipに移動カード操作ダイアログの幅をCWに合わせて細くするメイン画面とカード操作ダイアログでCtrl+ENTERを有効にする「Backspace」「(BackSlash)」キーをEscキーと同じ挙動にする宿/シナリオ選択ダイアログのオブジェクト描画位置をCWに合わせるシナリオ選択の開始位置を従来のScenarioフォルダ固定にするオプションシナリオタイトルの縁取りをオプション化し「カード名を縁取りする」に連動
未達成アイディア
- パーティ情報ダイアログ(宿) スピンを維持したままボーダーラインを消してパネル風にして所持金単位を付ける
- バリアントのアイコンを取得 右上に表示できるようにする
- メッセージウインドウの透過設定 CW準拠のドットを選択可能にする(Pyはアルファ値管理)
Comments (27)
-
reporter -
reporter - edited description
-
reporter ステータスバーをwxSYS_COLOUR_WINDOWで塗る方法がわかんない。
ふと思ってログの人氏版のPyを落としなおしてみたらステータスバーでもテーマ依存のボタンカラーになっていた。 どうやらステータスボタンのUIは元々の実装ではWXでOSネイティブなボタン画像を作ってそれをPygameで使っていたようだが、長月さんがLinux側で落ちるので統一してしまった模様。LiteではLinuxにはこだわらないので暫定的に元に戻してみる。
-
reporter うーん…まぁ角は取れたからいいか…
-
reporter - edited description
- ステータスバーを12.2以前に戻して整理
テーマ変えて試したけど多分反映されるようになったはず。一応Windowsのみにした。情報カード通知欄の点灯の色が消えてわかりにくくなったが、カードワースにはない通知なのでそのうち。こっそり配布する演出とあんまり相性が良くなかった気もするし、もうこれはこれでいいかも。
-
reporter 見逃していたレベル調節ダイアログとデザイン変更ダイアログのボタン類を小さめに修正した。レベル調節はもう少しコンパクトにしたい。
ステータスバーの比較(自分用メモ/画像はgroupASK)。ボタンの隙間はもう少し詰めた方が良いか。1.50はボタンの隣から別にバーを作ってる感じで1.28と色が違う。でもハイコントラストにしたら黒くなったのでOS依存なようだ。
-
reporter - edited description
- メイン画面とカード操作ダイアログでCtrl+ENTERを有効にする
- 「Backspace」「(BackSlash)」キーをEscキーと同じ挙動にする(メイン画面、キャラ情報、カード情報)
対応。 現状のPyではキーボード操作だけでキャラクター情報ダイアログやカード解説が見られないっぽい。 今回は流石にあれだと思ったのでRebootにも報告しといた。
-
reporter - 「デバッグ中はレベル上昇を抑止する」をデフォルトで有効にし設定ダイアログ上で廃止(デバッグモードではレベルが上がらない)
常時デバッグモードでプレイしてる人には混乱を呼ぶかも知れないけど、CWのデバグ宿では本来レベルが上がらないし、 デバッグモードが通常モードの上位互換になってる現状はあまり良くない(Pyは長らく安定してなかったので今までは仕方ない面もあった)と思うので断行する。
一応、Settings_Lite.xmlに以下を追加すれば有効化も可能。
<NoLevelUpInDebugMode>False</NoLevelUpInDebugMode>
-
reporter - edited description
選択ダイアログ
- 宿選択とフォルダ選択のオブジェクト表示位置(画像やContents等)をほぼ一致させた(横方向の文字は微妙にズレがある)
- シナリオのタイトルと対象レベルを完全一致
- Contents(シナリオリスト)の最大表示数が異なっている(12ではなく13)
- 全てのスキンで文言の対象レベル("target_level_1""target_level_2")の半角スペースが一つ少ないためズレる(SkinBase、Classic、自動変換をそれぞれ修正)
- 選択ダイアログのページ数の「/」のあいだに半角スペースを入れる
設定ダイアログ
- 拠点・シナリオ選択画面等の縁取りをカード名の縁取りオプションに連動させ、「カード名やタイトルを縁取りする」に改名
- シナリオオプション「直前に選んだシナリオを開始位置にする」(デフォルトで有効)
- 「カードの使用前に空白時間を入れる」を描画タブに移動し、デフォルトで有効に再変更
- 「貼紙の対象レベル」の初期フォントを等幅明朝から可変幅明朝に変更
CWHSチャットを覗いたら丁度PyLiteを話題にして頂いていたようで、色々CWとの違いが指摘されていたので、とりあえず開始位置とタイトル縁取りのオプション化、選択ダイアログの表示位置など簡単に合わせられるところだけ合わせてみた。
対象レベルは生成するスキン文言自体がズレてたので、Classic以外のスキンを使っていて、気になる人はスキンの再変換かskin.xmlを手動修正してください。
(修正前:
対象レベル: s~s
修正後:対象レベル:s ~ s
)描画速度はCW準拠なら「カードの使用前に空白時間を入れる」を有効にしないといけない(最速なら逆に無効)けど、 どうせ完全には一致できないし…と思って高速設定にしていたのを元に戻した。というか、分かりにくい位置にあって気づかない人が多い印象なので描画に移した。Reboot側の先月の更新で色々改善はされているので、現状で駄目ならあとは以前の七篠さんの提案通り設定幅を増やすしかないかなぁ。
-
reporter - 「Backspace」「\(BackSlash)」キーをEscキーと同じ挙動にする(宿・シナリオ選択、宿帳、アルバム、パーティ情報、冒険の再開、パーティ記録、戦闘開始、解説(シナリオの付属テキスト)、確認ダイアログ)
カード操作ダイアログ以外は大体効くようになった。Pyは絞り込み入力欄があるので、バックスペースと\は(ESCと違って入力に使うので)入力欄でだけ無効化するように工夫しないとならない。 カード操作ダイアログの検索絞り込み欄はパネルにそのままつけてるので現状だと簡単に対応する方法が思い浮かばない… Pyの戦闘行動ダイアログではESCキーも効かないようなのでついでに対応。
-
reporter - 移動パネルの左右ボタン等連打可能なボタンをBITMAPBTNからGenBitmapToggleButtonに変更
CW1.28の移動ボタンはTSpeedButtonが指定されている。 Delphi/C++B独特のウィジェットらしく解説を読む限り以下の特徴があるようだ。
- BITMAPボタンと大体同じで同じダイアログ内で複数つけると連動させることができる
- トグル風にもできる
- Tabでフォーカスを取れない
WXPythonには当然ないので近いものを選んでそれっぽく見せるしかない。
PyではスタンダードなBITMAPボタンになっていて、ボタンの異物感が目立つ(特にWindows7で)ので Liteでは仕方なくNOBORDER(ボタンの形状が消えるStyle)にしてたんだけどアニメーションも消えてクリック感がないのが不満だった。
で、今回のGenBitmapToggleButtonだとアニメするんだけど、トグルボタンを普通のボタンとして無理矢理使うので連打すると効かないことがあって憤死しかけた。 これはLEFTDCLICKからもバインドで解決した。(こんなんで丸三日潰れた)
1.50のボーダーを消しつつ、フォーカス時にはテーマ反映のボタンクリックになるのは再現できてない。 とりあえず現状のNOBORDERよりはマシなのでこれで様子見。 将来的にはステータスバーみたいにボタン画像を取得して使うのがよさそう。
他platebutton(スマートな表示で文字と画像を同時に表示できる)も試したけど、 テーマ反映は多分自力取得しなきゃいけないし、文字がなくても画像が左寄りになるので諦めた。 どっかで使えるかも知れないしここにメモ。
#TODO:platebuttonを使いたいが位置がおかしくなる為断念 #import wx.lib.platebtn as platebtn #button = platebtn.PlateButton(parent, cid, "", bmp, style=platebtn.PB_STYLE_SQUARE) #button.SetPressColor(wx.SystemSettings.GetColour(wx.SYS_COLOUR_INACTIVEBORDER))
WXPythonのサンプルコードのテトリスの方向キーが動かない。ググったら2008年の記事が引っかかったけど未だに動かないって…3では動くとかかなぁ。
-
reporter - 「Backspace」「\(BackSlash)」キーをEscキーと同じ挙動にする(キャラ登録、カード操作、説明付き選択(拡張メニュー)、戦闘行動選択ダイアログ)
util.set_acceleratortable
のwx.TextCtrl, wx.Dialog, wx.Panel
が問題で、wx.Panelを取り除くか取り除かないかで情報ダイアログとカード操作ダイアログでキーが効いたり効かなくなったりして困ってたんだけど長月さんが登録ダイアログの方向キー対応でたぶん同種の問題にあたってignoreleftrightkeys
を導入してアクセラレータを切り替えるという妙手で解決していたので、それに便乗・真似させてもらう形で対応できた。これでやっと全部終わったー!
-
reporter - 各ダイアログでBACKキーで閉じた場合は、CWだとクリック音が鳴る
情報ダイアログはWXデフォルトで用意されてるIDCANCELにすれば数行節約できると思ってやったんだけど 効果音が鳴らないことに気付いたので戻した。 RebootにPRした分についてはID振ってあるので問題なし。
カード操作ダイアログはIDCANCELに閉じるボタンが紐付いていないのでイベントIDで分岐するようにした。
現状BACKキーとESCキーの挙動は僅かに違っている。
-
BACK:効果音が鳴る、 テキスト入力欄にフォーカスがある場合はそちら優先、シナリオ選択では最上フォルダ以外では「戻る」(CW準拠)
-
ESCキー:効果音が鳴らない、 テキスト入力欄にフォーカスがあっても問答無用で閉じる、シナリオ選択ではどの階層にいても「閉じる」(Py独自)
CWではESCキーでも鳴るのだが、PyではESCキーはWXでデフォルトでIDCANCELに割り振られているので鳴らない。 統一できないこともないけどちょっと面倒くさいし、どこにいても閉じられるのはこれで便利だと思う。 なので、要望とかない限りはこのままにしておく。
-
reporter - カード使用・カード移動時、CWでは中央に中止ボタンが置かれ所持金は表示されないが、Pyでは所持金がそのままでその隣に表示される
- Pyではデバッガがアクティブな状態でPCをクリックしてカード操作ダイアログを開くと高確率で中止が表示される
- CWのパーティ解散エリアでステータスバーに出るのは「中止」ではなく「終了」
カード移動・使用時のみ表示、中央・所持金非表示にした。元々処理がこんがらがってるところを無理矢理やったのでコードが汚くなった上に副作用として中止ボタンが表示されてる状態でデバッグモードを切り替えると消えるようになってしまった。
IF文入れまくれば直せなくもないが、面倒なので、上述の通りデバッグモードに無制限でいつでも切り替えられる状態は改善していきたいのでとりあえずそのままで。 (CWでユーティリティモードで入り直せるタイミングのみ切替許可という感じにしたい)Rebootでは、スキンによっては解散エリアで所持金を変更することもあるのであえて情報を落とすこともないのではないかという判断だった。たしかにJUDGMENTではその方がよさそうなのでそのうちもっと適切な分岐を入れる。
-
reporter - シナリオ中データをロードした時や冒険を再開した時はメニューカードよりもPCカードを先行して表示する
Rebootでは現状対応しないとのこと。 とりあえず検証。1.50で検証した結果は以下になった。
宿起動時(宿内でセーブ) … メニューカード→PCカード 宿起動時(シナリオ中セーブ) … PCカード→メニューカード 宿(パーティ未展開)から冒険の再開(シナリオ中パーティ) … PCカード→メニューカード 宿(パーティ未展開)から冒険の再開(宿内パーティ) … PCカード→メニューカード 宿(パーティ展開時)から冒険の再開(シナリオ中パーティ) … PCカード→メニューカード 宿(パーティ展開時)から冒険の再開(宿内別パーティ) … PCカード→メニューカード
要するに宿セーブを起動した時のみメニューカード→PCカードになるようだ。(Pyでは常にメニューカード→PCカード)
これは恐らく長月さんの推察とは逆で、ロード・再開時はPCカード→メニューカードが正しい表示順なのであり、「パーティのオートロード」オプションが後から付けられた結果のように思う。
処理順入れ替える程度楽勝だろうと思って着手したら、ステータスバーと同じくごしゃごしゃしててめげそうだった。根性で読んで達成。
-
reporter - 「荷物袋」「カード置き場」のページ数を記憶するようにした
PyRebootではダイアログを閉じる度に1に初期化される。 issues #267 をみるにLiarさんの提案をそのまま呑んだ仕様っぽいが、一度気になりだすとストレスなので直す。
細かい検証はしてないが、CWではおそらく以下の場合のみ初期化されるのでコメントアウトするだけではだめ。
-
「宿を出る」やセーブ後に起動し直した時(セーブはされない)
-
「冒険の再開」でパーティをロードしたタイミング(荷物袋のみ)
うーん、しばらく使ってみたけど元の挙動になれてたから違和感があるな…。
-
reporter - edited description
- marked as minor
当面性急に直すべきものはないと思われる(メッセージは実装のやり方自体は思いついたのでそのうちやりたい)ので、優先度を下げる。
また、以下は一貫性に欠けるので没にする。
カード操作ダイアログ 切り替えボタンを廃止して荷物袋・カード置き場の画像クリックで切り替えるようにする
-
reporter - カード操作ダイアログのアクティブな種別タブを左クリックした時はプッシュアニメを起こさない
- カード操作ダイアログの種別タブを右クリックした時は何もしない
一年前にやろうとして断念してたのを達成。
どういうことかと言うとカード操作ダイアログのスキル/アイテム/召喚獣のページ切り替えボタンはトグルで凹むんだけど、NEXT,Pyでは既に凹んでいるボタンを左クリックできてしまう(再度ボタンプッシュアニメが起こる)。 1.20-1.28ではそのまま。1.50はテーマ・OSによる?(Windows7では押せた気がした)
右クリックの方はボタンの上で右クリックしても何も起こらないが、Pyだと閉じられてしまう。
多分自分以外誰も気にしてないが、個人的にはずっと不満だったので解消できて満足。
-
reporter - 所持金変更のスライドバーを左クリックした時の単位は100
Rebootの課題を見て確認してみたら、 1.28/1.50の所持金操作スライダはパーティ情報でもユーティリティモードでも100単位で動くようだったのでそのようにした。
01/13追記:
Reboot側でもページが設定されたので取り込んだ上でCW準拠値に変更する。
以下、ユーティリティモードでの検証漏れ。
- 体力 10%
- 麻痺・毒 4点
- 持続時間 10ラウンド
- 能力修正 2点
-
reporter - 宿帳の父母指定でアルバム内のキャラ名は青字で表示
- 消費EPはBold
「_死亡」の検証で気づいたのでついでに修正。最初青字になる判定は「_死亡」で行われているのかと思ったが「_死亡」を消したキャストも青字で表示されているので無関係で「アルバム内のキャラ」は青字。
-
reporter - 能力変化モーションで、10を超える不正値は背景が白の能力変化アイコンとなる
-10以下のペナルティでも同様。範囲外は全て255,255,255になっている模様。
また「最大」「大」「中」「小」が絶対範囲で指定されているためか、情報ダイアログでは単にボーナス/ペナルティと表示される。が、Pyのスキン文言は「大ボーナス」「小ペナルティ」という風に個別に定義されており、単なる「ボーナス」「ペナルティ」がないので現状は保留。
2019.07.26追記:10を超える場合は、一度「最大ボーナス/ペナルティ」の文言を取得してから「最大」を削除するという処理に変更。やり方としては良くないんだろうけども、文言を一つでも増やしたくないので。
-
reporter カードワースのカラーは基本的にC++BuilderのTカラー基本色が使われている。
https://ht-deko.com/tech067.html
背景カラー変更機能のサンプル色は一応それに倣うようにする。…と思ったら金庫やカード置き場背景色はclGreenではなくG69単色、#004500なのでTカラーにはない?
-
reporter - 設定ダイアログの速度調整のレイアウトをCW準拠に近づける
PyLiteでは、Rebootの簡易設定をオミットしているが、本家CWや簡易設定ですぐ変更できる要素が前にないのはこのエンジンだけでむしろ扱いづらいのでは?と気になってきたので、1.28と1.50に倣い、「速度調整」と「背景の切り替え方式」を最前に(無理矢理)持ってきて再度全体的な調整をした。
最初「背景の表示」等にある横の「〇」は無効化したラジオボタンを飾りとして付けているのかと思ったのだが、これはただの記号文字の「〇」らしい。
パーツ単位ではこちらの方が見やすいように思うが、レイアウトがいまいちしっくり来ない。掛けた作業量を考えると元に戻すのも憚られる…
-
reporter - デバグ宿の簡易登録時、自動で既定の名前+連番を入れるようにした(途中まで)
一応Rebootにも課題を作ったが、入れるならタイプ名を入れたいということなのでPyLiteのみで実装する。
既定の名前は「冒険者」(バリアントでは「キャラ」などに置き換わっている)+連番という書式。
ひとまず"adventurer"というスキン文言を作ってデフォルトで入れ、連番を振るようにした。コンバート処理はこれから。連番の基準は「宿に在籍する全てのキャラ」の中から「冒険者」+連番で検索して、使われてない番号を使っているっぽい。たとえば、冒険者2を作って、冒険者4にリネームすると、次に簡易登録する時も2が入るし、4は飛ばされている。Pyだと他のパーティにいる名前を取得するのが結構大変なので、ひとまず現在開いているパーティ+待機メンバのみの参照にしている。
-
reporter - メッセージ表示中、スペースキーにおいても選択肢の下方向へのフォーカスが走るようにした
- カード解説ダイアログ表示中、スペースキーでダイアログを閉じるようにした
スキップキーの移植時に気づいた以前のCWで動くキーの検証&実装漏れ。
全角モードだと反応しないが、これはCWでも同じなのでそのままにした。選択肢フォーカスでは押しっぱなし移動可のようでそれも合わせた。流石にもうないと思いたいが…
-
reporter https://bitbucket.org/k4nagatsuki/cardwirthpy-reboot/issues/890/
ということなのだが、1.50でのフォルダ並び順は上記例でいうと1>A>★であり、Rebootともエクスプローラとも異なる。PyLiteでは1.50合わせにするようにした。
普通にsort()するだけで同じになる模様。なんでこんなややこしい処理をしてるんだろう…? 他の機能で使われてるかもしれないからこの時期に変えるのはちょっと嫌だな。
-
reporter - キャラクター情報ダイアログでの「Level」表示をCWに準拠
- 種族が1件もないスキンでのキャラクター情報ダイアログの文字描画位置を調整
以前も手を入れた気がするのだが、今みたら盛大にズレてるので再調整をした。次回パッチで反映。面倒なことに「Level」とレベル値(1とか2とか)はサイズが別なようだ。PyのLevelにある「:」は1.20にも1.28にも1.50にもないので消した。
なぜ種族無しスキンに限るかというと情報ダイアログの文字描画位置に依存するレイアウトのスキンがJUDGMENTの他にも結構あってCW合わせると逆にずれてしまう。今更どうしようもないので、種族があるものに限っては現状維持にした。
- Log in to comment
面倒くさいだろうなと覚悟してたけど案の定面倒だった。追加部分の配置はしっくり来てないのでまた変えるかも。