【解決済】セーブ画面のヘルプウィンドウをカスタマイズ

ぶたマスク見習い
記事: 41
登録日時: 2016年11月23日(水) 23:03

【解決済】セーブ画面のヘルプウィンドウをカスタマイズ

投稿記事by ぶたマスク見習い » 2018年1月16日(火) 00:02

こんばんは、先日といいいつもお世話になってます。

セーブ/ロード画面をもっとシンプルに作り変えたいと思い、window.jsを見ながらいろいろ作ってます。
セーブデータや文字の位置や大きさを変えることはできたのですが、
セーブ画面に出てくる"どのファイルにセーブ/ロードしますか?"のヘルプウィンドウを移動、縮小の方法が
いまいち掴めません。
Window_helpを変えればできるというのは確認できたのですが、他のヘルプウィンドウまで変わってしまうので
どうしたものかと...。

無理なお願いかもしれませんが、知恵をお貸しいただければ幸いです。
最後に編集したユーザー ぶたマスク見習い on 2018年1月16日(火) 23:45 [ 編集 2 回目 ]

アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: セーブ画面のヘルプウィンドウをカスタマイズ

投稿記事by トリアコンタン » 2018年1月16日(火) 00:33

こんばんは!
ヘルプウィンドウは同一のオブジェクトが各画面にあるので、他のウィンドウとは少し対応が異なります。
シーンクラスにてウィンドウを作成直後に位置を変更すればOKです。
以下はプラグインの作成例となります。

コード: 全て選択

(function() {
    'use strict';

    var _Scene_File_create = Scene_File.prototype.create;
    Scene_File.prototype.create = function() {
        _Scene_File_create.apply(this, arguments);
        this.remakeHelpWindow();
    };

    Scene_File.prototype.remakeHelpWindow = function() {
        var x = 100;
        var y = 100;
        var width = 300;
        var height = 200;
        this._helpWindow.move(x, y, width, height);
        // ウィンドウのサイズを変更した後、再描画したい場合は以下を有効にしてください。
        //this._helpWindow.createContents();
        //this._helpWindow.refresh();
        // 既存のウィンドウと位置が被る場合は以下を有効にしてください。
        //this._windowLayer.removeChild(this._helpWindow);
        //this._windowLayer.addChild(this._helpWindow);
    };
})();
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
ぶたマスク見習い
記事: 41
登録日時: 2016年11月23日(水) 23:03

Re: セーブ画面のヘルプウィンドウをカスタマイズ

投稿記事by ぶたマスク見習い » 2018年1月16日(火) 21:37

トリアコンタンさま、おかげで自由にカスタマイズすることができました!ありがとうございます!
いじっていて少し気になったのですが、セーブ画面のファイル選択に表示されているキャラクターたちは、
選択のボックスwidthを542にするとどんなにキャラクターのxy軸を動かしても見えなくなります。
543までは映っているので、何か限界があるのでしょうか?

コード: 全て選択

Window_SavefileList.prototype.initialize = function(x, y, width, height) {
    Window_Selectable.prototype.initialize.call(this, 135, y, 542, height);
    this.activate();
    this._mode = null;
};
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: セーブ画面のヘルプウィンドウをカスタマイズ

投稿記事by トリアコンタン » 2018年1月16日(火) 21:59

お疲れさまです。
ポイントはコアスクリプトの以下のコードかと思います。
ウィンドウ内容を描画するときに、描画幅(ウィンドウ幅から左右の余白等を引いた値)が420未満の場合は正常に描画できないと判断してキャラクター等の表示をカットします。
(ただし、こちらの環境ではウィンドウ幅の閾値は542ではなくもう少し小さい値だったので、カスタマイズの影響下もしれません)

コード: 全て選択

    Window_SavefileList.prototype.drawContents = function(info, rect, valid) {
        var bottom = rect.y + rect.height;
        if (rect.width >= 420) {
            this.drawGameTitle(info, rect.x + 192, rect.y, rect.width - 192);
            if (valid) {
                this.drawPartyCharacters(info, rect.x + 220, bottom - 4);
            }
        }
        var lineHeight = this.lineHeight();
        var y2 = bottom - lineHeight;
        if (y2 >= lineHeight) {
            this.drawPlaytime(info, rect.x, y2, rect.width);
        }
    };
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
ぶたマスク見習い
記事: 41
登録日時: 2016年11月23日(水) 23:03

Re: セーブ画面のヘルプウィンドウをカスタマイズ

投稿記事by ぶたマスク見習い » 2018年1月16日(火) 23:43

トリアコンタンさま。そういう仕組みだったのですね。分かりやすい解説でとても勉強になりました。
本当にありがとうございます!

“MV:質問” へ戻る