#============================================================================== # ■ RGSS3 選択肢ウィンドウ幅最適化 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 選択肢ウィンドウ中にアイコンの描写(\I[n])や # 文字描写色変更(\C[n])が含まれている場合に # 幅の計算が正常に行われない不具合を修正します。 # (ただし、デフォルト環境しか考慮していません) #============================================================================== class Window_ChoiceList < Window_Command #-------------------------------------------------------------------------- # 最大の行の幅を取得 #-------------------------------------------------------------------------- def max_choice_width #空の配列を生成。 data = [] #選択肢別に処理。 $game_message.choices.each_with_index {|text, i| #アイコン使用回数カウント用の変数を作成。 data.push(0) if text.empty? ic_number = 0 #一応フォントリセット。 reset_font_settings #文字列を変換。 text = convert_escape_characters(text) #改行や改ページがある訳がないので #アイコンと描画色変更の描写を消去する。 #アイコンは本来の描画回数をカウントする。 text.gsub!(/\eI\[(\d+)\]/i) { ic_number += 1 ; ""} text.gsub!(/\eC\[(\d+)\]/i) { "" } #アイコンの描画回数に24をかけた値を #アイコンと描画色変更命令を除いた、選択肢の行の幅に足す。 #そして、それを配列に加える。 data.push(contents.text_size(text).width + 24 * ic_number) } #配列内の最大の値を返す。 data.max end end