triacontane / RPGMakerMV

RPGツクールMV、MZで動作するプラグインです。
Other
282 stars 131 forks source link

MakeScreenCapture (MV) ウィンドウレイヤーを持たないシーンで署名の制御文字変換ができるよう修正 #74

Closed elleonard closed 1 year ago

elleonard commented 1 year ago

MakeScreenCaptureにおいて、Scene_Bootなどのウィンドウレイヤーを持たないシーンでキャプチャを撮影しようとするとエラーが発生するため、修正案のPRを出します。

MZ版は PluginCommonBase にコピーされた convertEscapeCharacters を使うようになっているため、ウィンドウレイヤーを持たないシーンでのキャプチャに不都合はありません。 SceneManager._sceneがnullの状態でキャプチャしようとすると落ちますが、これは通常、起動直後の一瞬だけですので問題にはなりにくいと思います。

ウィンドウレイヤーを持たないシーンでの処理

ウィンドウレイヤーを持たないため、制御文字変換のためダミーのウィンドウオブジェクトを生成します。

ゲームオブジェクト初期化前のシーン (Scene_Bootなど) での処理

$gameSystem$gameVariables が初期化されておらず、ウィンドウオブジェクトの生成や \V 制御文字の変換でエラーになってしまうこと、このシーンでのスクリーンショットは流石に需要がないだろうということから、キャプチャの保存自体を無効化します。

MZ版では制御文字の変換時に $gameVariables が初期化されていなかった場合、制御文字そのものを消す処理を行っており、この点でMZ版と仕様がズレてしまいますが、今回はコードの複雑さを避けるためこうしています。