河童さん

あれやそれ

RustでGUIアプリ作成

2023-05-31 20:06:14 | Rust

RustのGUIで、テーブルが無い問題。

なかなか解決しないので、ついにwin32apiに手を出してしまった。

NativeWindowsGUIというクレートがあって、win32apiを薄くラップしてるもの。

職場で使うアプリなので、Winだけで動けばいいので問題ない。

 

ちょっと試してみたら、最大化、最小化は問題なく動く(当たり前)。

テーブル(ListView)もある。

 

空き時間で少しづつ作り始めた。

そもそも、これがwin32api初なので、引数が良く分からん。

コードで書けば補完が効くが、deriveマクロで書くと補完が効かないので、ドキュメント見ながら、ちまちま実装。

 

一度pythonで作ってるアプリので、全く同じレイアウトで作る(Rustで作り直す)。

最初Gridレイアウトでいいやと思ってたら、ウィンドウサイズ変えても同期しない。

仕方なく良く分からんダイナミックレイアウトで、ウィンドウサイズ変えると、コントロールサイズが変わるようにする。

取り敢えず動いたけど、ドキュメントに記載がないので、何でこの数値で動いてるのか分からん。

 

コンボボックスx2、テキストインプット、リストビュー、テキストボックスを設置して、それぞれのイベントを実装していく。

イベントの書き方も良く分からんが適当に書いたら動いたからいいか。

最初、全ての処理を書いてたんだけど、これじゃテスト出来ないじゃんって気づいた。

(GUIは、テストコードでテスト出来ない)

 

気づいてしまったので、構造体として外出しして、テスト出来るようにする。

単体テスト通してから、実処理で使用する。

最終的には、GUIいじって動き確認になるけど、なるべくテスト動かせるように実装していく。

 

処理自体はRustなので、今まで頑張って書いてきたRustの流儀で書ける。

まぁ、いつものように所有権問題で、はまるんだけど。

 

毎日ちょっとずつ書くので、あっちで実装した関数を、こっちで使ってるけど、ここでしか使わないので、この引数いらなくね?みたいな箇所がわんさか出てくる。

最後に、全体をチェックして、いらん処理を削っていく。

そんで、なるべくRustっぽいコードにしていく。

 

GUIのコントロールにデータ設定する際に、cloneするしかなくて、各所でcloneしてしまった。

Rc使えばゼロコピー実現出来たかなぁ、と今更ながら思ったり。

すでに、出来上がったので、内部チームに動作確認依頼してる。

これで問題なければ全体周知予定。

 

どうせWinでしか使わないんだから、GUIは、win32apiでいいよね、軽いし。

他のGUIクレートは、どのOSでも動きます!みたいなのばっかりで、動けば問題ないけど、最小化したら落ちるとかクソでしょ。

今後も、GUI必要になったら、win32apiでいいか。

 

今更のようにwin32apiを使ってみたが、Rustでラップしてるので、本来のapi関数を叩いてないため、

未だにwin32apiには無知のまま。

MS嫌いなので、勉強する気もない。

 


Skyrim 6回目 シロディールのブルーマ ブルーマクエスト その3

2023-05-30 20:24:20 | ゲーム

山賊退治。

狼退治。

報告。

以前入って追い出された家へ踏み込むっ。

盗賊居た。

取り戻した。

奥の洞窟ボス。

さらに奥にトロールのボス。

報告。

盗賊招き入れたくせに、逮捕されてないのか。

報告。

MAPの下の方には、シロディールの中心地まであった。どこまでいけるんだろう?

違法だろって言ったら襲われた。

シロディールは、緑が綺麗。スカイリムは雪景色ばっかりだった。シロディールすてき。

クエスト発生。

一度スカイリムに戻って、石碑に触っておく(やるの忘れてた)。さらに魔法スキル上げて、魔法買っておく。

おっ、シロディールの配達人は女ですか。

何故か、ブルーマの町で襲われる。

報告。

クエスト発生。

クエスト発生。

セーブするとスカイリムじゃなくタムリエルと記載される。

 


Skyrim 6回目 シロディールのブルーマ ブルーマクエスト その2

2023-05-29 20:08:27 | ゲーム

衛兵隊長からクエスト。

別のクエストは進まず。

宝石なんだ。

別クエスト進捗。

クリア。

いつか切る。

吐いた。

こいつは吐かない。

めっちゃクエスト溜まった。

隊長の法的圧力をゲット。

法的圧力で吐いた。

人探し。

別クエスト発生。

威圧すれば喋る捕虜。

捕虜解放に来たストームクロークを撃破。

ピエニトゥス・オクラトゥスに引き渡し。

クリア。

町の外にスラムがあった。

東の監視塔。

進捗。

クエスト発生。

ボス。オーガだ。RPGっぽい!

報告。

 

 


Skyrim 6回目 シロディールのブルーマ ブルーマクエスト その1

2023-05-28 19:27:05 | ゲーム

ブルーマ着いた。

見たよ~。

建物がスカイリムと違う。シロディール来たんだなぁ、実感。

おぉ、サイノッドだ。

スラム街っぽい。

スカイリムの馬とは違うらしい。

クエストがめっちゃ発生。

うぜぇ、と思ったが、後でクエストに関連する場所だった。

発生したクエストを即クリア。

追加クエスト。

子爵が居た。

へ~、覚えてない。

スカイリムから逃げ出したアルトマー。

サルモールが聖マーティン礼拝堂にいちゃもん付けてる。うぜぇ。滅ぼしたい。

あぁ、マーティンって、前作で大活躍?した王か。前作やってないと面白さ半減なのか。

礼拝堂、高い~。

クエスト発生。

1つクエスト クリアー。

クエスト発生。

ん?偽情報?

風呂だ。

クエスト発生。

サイジック会は、魔法教えてくれない。

サイジックの他にも魔法系団体があるらしい。

戦士ギルド。

クエスト実行中。

サルモール、むかつくっ。

武具の名前が同じでも、絵が違う。シロディール風なのかな。

うぜぇぇ。

 


Skyrim 6回目 シロディールのブルーマ 開始

2023-05-28 19:01:09 | ゲーム

スカイリムにシロディール北部のブルーマ地方を追加するMOD。

シロディールは前作の舞台。

前作部分の歴史を読む限り、前作のが面白そうなんだよね。

という事で、めっちゃ気になるMOD。

 

このMODは、MAPに開始地点を示してくれてるので、素晴らしい。前回MODの探し回るの無駄過ぎ。

スカイリムである程度実績が必要との事だったので、国境の峠は無視して、抜け道へ。

密売人が居た。

洞窟内だけど、町っぽい抜け道。

ゴブリンだ!RPGっぽい!

出口の表示が、、、シロディール!!!

ブルーマ地方のMAP。広いっ!

出口と国境の間に宿。昔は盛況だったらしい。

最初のクエスト。

さらにクエスト発生。

出ようとして、、、シロディール来たんだなぁ。

国境間近の砦。

国境。

国境付近の洞窟に入ってみる。めっちゃ広かった。

ボス。

街道歩いてたら襲われた。

何の像?

街道の様子。スカイリムと変わらないな。

最初のクエストをクリア。

川。

何故か料理人が立ってた。クエストも発生せず。何これ?

ブルーマ東の監視塔。

クエストの山賊。

目的。

報告。

登り路。