ページ 11

【解決済み】IconDescriptionをオリジナルウィンドウにも適用させたい

Posted: 2024年6月14日(金) 12:24
by ツクシ
トリアコンタン様 ステート説明プラグイン IconDescription.js
viewtopic.php?t=833

フトコロ様 オリジナルウィンドウ表示プラグイン FTKR_OriginalSceneWindow.js
https://plugin.fungamemake.com/archives/1319

バトル中にFTKR_OriginalSceneWindowにて表示させたウィンドウのステートアイコンに、IconDescriptionによる説明ウィンドウ表示を行いたいです。

オリジナルではない通常のウィンドウですとIconDescriptionにて問題無くステート説明ウィンドウが表示できるのですが、オリジナルウィンドウ上では反応しないという状況です。

本件、解決方法や対応方法がございましたらご教示お願いいたします。

Re: IconDescriptionをオリジナルウィンドウにも適用させたい

Posted: 2024年6月14日(金) 19:54
by ecf5DTTzl6h6lJj02
こんにちは。
ツクシ さんが書きました:トリアコンタン様 ステート説明プラグイン IconDescription.js
viewtopic.php?t=833

フトコロ様 オリジナルウィンドウ表示プラグイン FTKR_OriginalSceneWindow.js
https://plugin.fungamemake.com/archives/1319

バトル中にFTKR_OriginalSceneWindowにて表示させたウィンドウのステートアイコンに、IconDescriptionによる説明ウィンドウ表示を行いたいです。

オリジナルではない通常のウィンドウですとIconDescriptionにて問題無くステート説明ウィンドウが表示できるのですが、オリジナルウィンドウ上では反応しないという状況です。

本件、解決方法や対応方法がございましたらご教示お願いいたします。
オリジナルウィンドウの、コモン(Common)ウィンドウに、
FTKR_CustomSimpleActorStatus.js を併用して、アクターのステートを描画した際に、
ステートのアイコンをクリックしても反応しないというご質問でよろしいでしょうか?

上記現象は、
FTKR_OriginalSceneWindow.js …というか、
FTKR_CustomSimpleActorStatus.js におけるアクターのステートアイコン描画のメソッドが、
IconDescription.js で想定している描画メソッドと異なっているため、
ウィンドウがどこにアイコンを描画し、どこをクリックしたときに、どのアイコンの説明を表示するのか、
といった情報が記録できないために起こっているようです。

これを、解決するには、
FTKR_OriginalSceneWindow.js を改変する必要があります。

FTKR_OriginalSceneWindow.js を JavaScript を編集できるソフトで開き、
以下の変更を行ってください。
編集を行う前に、ファイルのバックアップを取るのを忘れずに。
  1. Window_OswCommon.prototype.update というメソッドがある(恐らく 2009 行目あたり)ので、
    そのメソッドを書きコードに書き換える。

    コード: 全て選択

        Window_OswCommon.prototype.update = function() {
            Window_Base.prototype.update.call(this);
            this.updateOswShow();
            this.updateReference();
            this.updateOswRefresh();
            if ($plugins.some(plugin => plugin.name === 'IconDescription' && plugin.status) && 
                Imported.FTKR_CSS) {
                this.updateIconRect();
                this.updateIconTouch(false);
            }
        };
    
  2. Window_OswCommon.prototype.updateReference というメソッドがある(上記変更を行っていると 2065 行目あたりから始まっていると思います)ので、
    そのメソッドの後ろに、下記コードを追加する。

    コード: 全て選択

        if ($plugins.some(plugin => plugin.name === 'IconDescription' && plugin.status) &&
            Imported.FTKR_CSS) {
            Window_OswCommon.prototype.updateIconRect = function() {
                this._stateIconSprite.forEach(iconSprite => {
                    iconSprite.forEach(sprite => {
                        const iconIndex = sprite._iconIndex;
                        const x = sprite.x - this.standardPadding();
                        const y = sprite.y - this.standardPadding();
    
                        this.addIconRect(iconIndex, x, y);
                    });
                });
            };
        }
    
  3. もし、FTKR_CustomSimpleActorStatus が FTKR_OriginalSceneWindow より下に登録されている場合は、
    FTKR_CustomSimpleActorStatus が 上になるように、登録順を変更する。
以上で、オリジナルウィンドウで表示したステートアイコンの説明が表示されるようになるのではないかと思います。
しっかりと確認しているわけではないので、おかしな挙動をする場合は、ご報告ください。

以上、ご確認ください。

Re: IconDescriptionをオリジナルウィンドウにも適用させたい

Posted: 2024年6月14日(金) 20:32
by ツクシ
本件、ご提示いただいた方法にて希望通りの動作を実現することができました!
分かりやすくご丁寧にご説明いただきましてありがとうございました。
質問内容、現象について説明不足で申し訳ありませんでした。

本トピックは解決済みとさせていただきます。