#==============================================================================
#                   「メッセージ背景ピクチャ」(ACE) Ver.1.0
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   スクリプトの改変は自由に行って頂いて構いませんが
#   その場合も元のスクリプトの作成者として名前を載せて下さい。
#   また配布前に必ず、ブログにある利用規約を確認して下さい。
#
#------------------------------------------------------------------------------
#
#   「文章の表示」のメッセージウィンドウの背景をピクチャにします。
#   これにより、画像を用意するだけで簡単にオリジナルのメッセージが作れます。
#   
#   使い方は、まずPicturesフォルダに画像ファイルを入れます。
#   
#   次にイベントコマンドの「スクリプト」で
#   mes_back_pict("ファイル名", 番号)
#   と設定します。
#   
#   ファイル名を無し("")にすると
#   ピクチャ設定がリセットされます。
#   通常のウィンドウに戻したいときに使います。
#   
#   番号は、「文章の表示」の背景に対応しています。
#   0: 通常ウィンドウ  1: 暗くする  2:透明にする
#   これにより、複数の背景ピクチャを簡単に切り替えできます。
#   
#   設定後、「文章の表示」を行うと
#   設定した背景ピクチャを使ったメッセージが表示されます。
#
#==============================================================================
#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
#  システム周りのデータを扱うクラスです。セーブやメニューの禁止状態などを保存
# します。このクラスのインスタンスは $game_system で参照されます。
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :mes_back_pict0           # メッセージ背景ピクチャ(通常)
  attr_accessor :mes_back_pict1           # メッセージ背景ピクチャ(暗く)
  attr_accessor :mes_back_pict2           # メッセージ背景ピクチャ(透明)
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_mbp initialize
  def initialize
    initialize_mbp
    @mes_back_pict0 = ""
    @mes_back_pict1 = ""
    @mes_back_pict2 = ""
  end
end

#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  文章表示に使うメッセージウィンドウです。
#==============================================================================

class Window_Message < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_mbp initialize
  def initialize
    initialize_mbp
    create_back_picture
  end
  #--------------------------------------------------------------------------
  # ● 背景ピクチャの作成
  #--------------------------------------------------------------------------
  def create_back_picture
    @back_picture = Sprite.new
    @back_picture.bitmap = Bitmap.new(1, 1)
    @back_picture.visible = true
    @back_picture.z = z - 1
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias update_mbp update
  def update
    update_mbp
    update_back_picture
  end
  #--------------------------------------------------------------------------
  # ● 背景ピクチャの更新
  #--------------------------------------------------------------------------
  def update_back_picture
    case @background
    when 0
      if $game_system.mes_back_pict0 == ""
        @back_picture.bitmap = Bitmap.new(1, 1)
      else
        @back_picture.bitmap = Cache.picture($game_system.mes_back_pict0)
      end
    when 1
      if $game_system.mes_back_pict1 == ""
        @back_picture.bitmap = Bitmap.new(1, 1)
      else
        @back_picture.bitmap = Cache.picture($game_system.mes_back_pict1)
      end
    when 2
      if $game_system.mes_back_pict2 == ""
        @back_picture.bitmap = Bitmap.new(1, 1)
      else
        @back_picture.bitmap = Cache.picture($game_system.mes_back_pict2)
      end
    end
    @back_picture.y = y
    @back_picture.opacity = openness
    @back_picture.update
  end
  #--------------------------------------------------------------------------
  # ● 背景スプライトの更新
  #--------------------------------------------------------------------------
  def update_back_sprite
    @back_sprite.visible = (@background == 1 && $game_system.mes_back_pict1 == "")
    @back_sprite.y = y
    @back_sprite.opacity = openness
    @back_sprite.update
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ背景の更新
  #--------------------------------------------------------------------------
  def update_background
    @background = $game_message.background
    self.opacity = @background == 0 && $game_system.mes_back_pict0 == "" ? 255 : 0
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias dispose_mbp dispose
  def dispose
    dispose_mbp
    dispose_back_bitmap
  end
  #--------------------------------------------------------------------------
  # ● 背景ピクチャの解放
  #--------------------------------------------------------------------------
  def dispose_back_bitmap
    @back_picture.dispose
  end
end

#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● メッセージ背景ピクチャの設定
  #--------------------------------------------------------------------------
  def mes_back_pict(filename = "", number = 0)
    case number
    when 0
      $game_system.mes_back_pict0 = filename
    when 1
      $game_system.mes_back_pict1 = filename
    when 2
      $game_system.mes_back_pict2 = filename
    end
  end
end