#==============================================================================
#                        「透過文字」(ACE) Ver.1.1
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   スクリプトの改変は自由に行って頂いて構いませんが
#   その場合も元のスクリプトの作成者として名前を載せて下さい。
#   また配布前に必ず、ブログにある利用規約を確認して下さい。
#
#------------------------------------------------------------------------------
#   
#   半透明の文字を扱える制御文字を追加します。
#   
#   \CC[n, alpha]
#   
#   nは通常の\C[n]と同じで、文字色の番号を入れます。
#   alphaには0〜255の数値を入れます。(0で完全透明です。)
#   
#   また、半透明のアイコンを表示する制御文字も追加します。
#   
#   \II[n]
#   
#==============================================================================
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  ゲーム中の全てのウィンドウのスーパークラスです。
#==============================================================================
#※制御文字の指針メモ
#process_escape_characterはalias出来るので、極力ここに介入。
#制御文字の引数が複数や文字列の場合はobtain_escape_paramを拡張しても
#一括処理が難しく競合リスクが高い為、process_○○_characterで個別に引数を分解。

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 制御文字の処理
  #     code : 制御文字の本体部分(「\C[1]」なら「C」)
  #--------------------------------------------------------------------------
  alias n7_clear_character_process_escape_character process_escape_character
  def process_escape_character(code, text, pos)
    case code.upcase
    when 'CC'
      process_clear_character(text)
    when 'II'
      process_draw_icon_translucent(obtain_escape_param(text), pos)
    end
    n7_clear_character_process_escape_character(code, text, pos)
  end
  #--------------------------------------------------------------------------
  # ● 透過文字の処理
  #--------------------------------------------------------------------------
  def process_clear_character(text)
    text.slice!(/^\[(\d+)\,\s*(\d+|\-\d+)\]/)
    n = $1.to_i rescue 0
    a = $2.to_i rescue -1
    change_color_with_alpha(text_color(n), a)
  end
  #--------------------------------------------------------------------------
  # ● テキスト描画色の変更(アルファ値指定)
  #--------------------------------------------------------------------------
  def change_color_with_alpha(color, alpha = translucent_alpha)
    alpha = translucent_alpha if alpha < 0
    contents.font.color.set(color)
    contents.font.color.alpha = alpha
  end
  #--------------------------------------------------------------------------
  # ● 制御文字によるアイコン描画の処理(半透明)
  #--------------------------------------------------------------------------
  def process_draw_icon_translucent(icon_index, pos)
    draw_icon(icon_index, pos[:x], pos[:y], false)
    pos[:x] += 24
  end
end