制御文字使用可化

フォーラムルール
素材の利用規約を決めたいけど、どんなことを書けばいいのか分からない場合は、
素材のテンプレートをご利用下さい。
faida
記事: 205
登録日時: 2015年12月17日(木) 16:44

制御文字使用可化

投稿記事by faida » 2018年4月05日(木) 22:14

多分どこかにあっただろうシロモノを使いやすくまとめたもの(軽く検索しても出なかったので)。
何でもかんでも制御文字が使用できるようにするものです。
注意点:
①制御文字が使用できる場合は幅調節機能、中央揃え、右揃えを失います。
②色を変えた時のその後の色は誰も保証してくれません。

コード: 全て選択

=begin
◆概要
本来制御文字が使用できない場所でも制御文字が使用できるようになります。

◆機能
・上記の通り。
・下記設定項目でON/OFFしてください。
・ついでに制御文字「\n」を追加します。改行です。

◆仕様
・draw_text(制御文字が使用できない文字描画)は幅に合わせて縮小する機能がついて
いますが、draw_text_ex(制御文字が使用できる文字描画)はそれがありません。
言いたいことはお分かりですね。
・デフォルトのみ動作保証しています。

◆使用上の注意
・●……再定義 ★……エイリアス
・だいたい再定義でできているので競合の可能性は高いです。仕方ないね。

◆作者:faida @faida3983

◆更新履歴
ver1.0 : 公開

=end

FAI_DRAW_TEXT_EX = {}

# 以下のモノとか場面とかで制御文字を使用できるようにする(true/false)
FAI_DRAW_TEXT_EX[:actor_name] = false # アクターの名前
FAI_DRAW_TEXT_EX[:class_name] = false # 職業
FAI_DRAW_TEXT_EX[:nickname] = false # アクターの二つ名
FAI_DRAW_TEXT_EX[:item_name] = true # アイテム名
FAI_DRAW_TEXT_EX[:command_window] = false # コマンドウィンドウ全部
FAI_DRAW_TEXT_EX[:map_name] = false # マップ名表示(中央揃えがないので注意)
FAI_DRAW_TEXT_EX[:battle_enemy] = true # 敵キャラ選択画面

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ★ 制御文字の事前変換
  #--------------------------------------------------------------------------
  alias fai_fdtx_convert_escape_characters convert_escape_characters
  def convert_escape_characters(text)
    result = fai_fdtx_convert_escape_characters(text)
    result.gsub!(/\en/i) { "\n" }
    result
  end

  if FAI_DRAW_TEXT_EX.values.any?{|value|value}
  #--------------------------------------------------------------------------
  # ● フォント設定のリセット
  #--------------------------------------------------------------------------
  def reset_font_settings
#~     change_color(normal_color)
    contents.font.size = Font.default_size
    contents.font.bold = false
    contents.font.italic = false
  end
 
  end

  if FAI_DRAW_TEXT_EX[:actor_name]
  #--------------------------------------------------------------------------
  # ● 名前の描画
  #--------------------------------------------------------------------------
  def draw_actor_name(actor, x, y, width = 112)
    change_color(hp_color(actor))
    draw_text_ex(x, y, actor.name)
    change_color(normal_color)
  end
 
  end

  if FAI_DRAW_TEXT_EX[:class_name]
  #--------------------------------------------------------------------------
  # ● 職業の描画
  #--------------------------------------------------------------------------
  def draw_actor_class(actor, x, y, width = 112)
    change_color(normal_color)
    draw_text_ex(x, y, actor.class.name)
    change_color(normal_color)
  end
 
  end
 
  if FAI_DRAW_TEXT_EX[:nickname]
  #--------------------------------------------------------------------------
  # ● 二つ名の描画
  #--------------------------------------------------------------------------
  def draw_actor_nickname(actor, x, y, width = 180)
    change_color(normal_color)
    draw_text(x, y, actor.nickname)
    change_color(normal_color)
  end
 
  end

  if FAI_DRAW_TEXT_EX[:item_name]
  #--------------------------------------------------------------------------
  # ● アイテム名の描画
  #--------------------------------------------------------------------------
  def draw_item_name(item, x, y, enabled = true, width = 172)
    return unless item
    draw_icon(item.icon_index, x, y, enabled)
    change_color(normal_color, enabled)
    draw_text_ex(x + 24, y, item.name)
    change_color(normal_color, enabled)
  end
 
  end
 
end

if FAI_DRAW_TEXT_EX[:command_window]

class Window_Command < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    change_color(normal_color, command_enabled?(index))
    draw_text(item_rect_for_text(index), command_name(index), alignment)
  end
end

end

if FAI_DRAW_TEXT_EX[:map_name]

class Window_MapName < Window_Base
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    unless $game_map.display_name.empty?
      draw_background(contents.rect)
      rect = contents.rect
      draw_text_ex(rect.x, rect.y, $game_map.display_name)
    end
  end
end

end

if FAI_DRAW_TEXT_EX[:battle_enemy]

class Window_BattleEnemy < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    change_color(normal_color)
    name = $game_troop.alive_members[index].name
    rect = item_rect_for_text(index)
    draw_text_ex(rect.x, rect.y, name)
  end
end

end

---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。

“Ace:スクリプト素材(RGSS3)” へ戻る