セーブ画面にマップ画像を表示したい

ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

セーブ画面にマップ画像を表示したい

投稿記事by ジャングル » 2019年1月12日(土) 21:03

何度も質問すみません。

セーブ画面の各項目にマップを表示させたいのですが、
うまくいきません。

SceneManagerが撮影したスナップを流用してスプライトを作り、
それをセーブウィンドウにaddChild()したのですが、
画面左上にそれが固定表示されてしまい各項目に入ってくれません。

また、Window_BaseのdrawFace()を参考にthis.contents.blt()で追加してみましたがエラーが出ます。
(エラーはaddListener is not a functionです。Window_SavefileListに対して行いました。)

※勉強がてら、人のプラグインを使わずに出来るだけ自分でしようとしています。
分かる方がおられましたら宜しくお願いします。
または、そういうプラグインがあれば教えてください。

astral
記事: 106
登録日時: 2018年11月14日(水) 00:21
連絡を取る:

Re: セーブ画面にマップ画像を表示したい

投稿記事by astral » 2019年1月12日(土) 21:19

こんばんは。

焼きノリさんのプラグインが参考になるのではないでしょうか。
https://github.com/Yakinori0424/RPGMakerMVPlugins/tree/master/plugins/YKNR_SaveThumbnail
ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

Re: セーブ画面にマップ画像を表示したい

投稿記事by ジャングル » 2019年1月12日(土) 22:11

初めまして。ジャングルといいます。

プラグインを見せてもらいました。
BitmapにaddLoadListener()があるんですね。
このコールバック内でthis.contents.blt()で描画してました。

エラーの原因がわかって良かったです。

ありがとうございました。
このプラグインを参考にして作ってみます。
大変勉強になりました。
アバター
飯尾隼人
記事: 19
登録日時: 2018年3月05日(月) 16:57
連絡を取る:

Re: セーブ画面にマップ画像を表示したい

投稿記事by 飯尾隼人 » 2019年1月12日(土) 22:16

ジャングルさん

 こんばんは。問題把握しました。セーブリストの各セーブ事にマップ画像を表示させたいのですね。
 一番大きな問題が、マップの画像をいかに保存するのかだと思われます。
 今回の問題は、astralさんが紹介されたプラグインを参考にされると良いと思います。
 
 参考までに、各セーブデータ毎のゲームタイトル、プレイ時間、パーティーキャラクター画像の描画は下記関数にて記述してあります。

  Window_SavefileList.prototype.drawContents

 この関数の中で、this.contents.blt()にて画像を表示させてあげればセーブデータ毎に画像が表示されるはずです。

>また、Window_BaseのdrawFace()を参考にthis.contents.blt()で追加してみましたがエラーが出ます。

 おそらく引数にSpriteを指定したためと思われます。Bitmapを指定してみてください!
________________________________________
「渡り鳥の楽園」
飯尾隼人
HP: http://wataridori-rakuen.jp/Elves/
twitter: https://twitter.com/wataridori_raku
Ci-en: https://ci-en.jp/creator/2449
________________________________________
ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

Re: セーブ画面にマップ画像を表示したい

投稿記事by ジャングル » 2019年1月12日(土) 22:43

飯尾隼人様ありがとうございます。

とりあえず各項目に画像を表示するところまでは行きました。
明日、現在のセーブデータのみに画像を入れるように分岐してみます。
また、画像を文字列化させてセーブデータに入れることもやってみようと思います。

DataManager.makeSavefileInfo内で、スナップをとりあえずグローバルに入れました(便宜上)
window.bitmap = SceneManager.backgroundBitmap();

Window_SavefileList.prototype.drawContents内でリスナー登録して描画したら各項目にマップ画像が入りました。
if (window.bitmap) {
window.bitmap.addLoadListener(function() {
this.contents.blt(bitmap, 0, 0, bitmap.width, bitmap.height, rect.x, rect.y, 50, 50);
}.bind(this));
}

“MV:質問” へ戻る