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

#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
#  システム周りのデータを扱うクラスです。セーブやメニューの禁止状態などを保存
# します。このクラスのインスタンスは $game_system で参照されます。
#==============================================================================

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

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

class Window_Message < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_pbm initialize
  def initialize
    initialize_pbm
    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_pbm update
  def update
    update_pbm
    update_back_picture
  end
  #--------------------------------------------------------------------------
  # ● 背景画像の更新
  #--------------------------------------------------------------------------
  def update_back_picture
    case @background
    when 0
      if $game_system.pict_back_mes0 == ""
        @back_picture.bitmap = Bitmap.new(1, 1)
      else
        @back_picture.bitmap = Cache.system($game_system.pict_back_mes0)
      end
    when 1
      if $game_system.pict_back_mes1 == ""
        @back_picture.bitmap = Bitmap.new(1, 1)
      else
        @back_picture.bitmap = Cache.system($game_system.pict_back_mes1)
      end
    when 2
      if $game_system.pict_back_mes2 == ""
        @back_picture.bitmap = Bitmap.new(1, 1)
      else
        @back_picture.bitmap = Cache.system($game_system.pict_back_mes2)
      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.pict_back_mes1 == "")
    @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.pict_back_mes0 == "" ? 255 : 0
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias dispose_pbm dispose
  def dispose
    dispose_pbm
    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 pict_back_mes(filename = "", number = 0)
    case number
    when 0
      $game_system.pict_back_mes0 = filename
    when 1
      $game_system.pict_back_mes1 = filename
    when 2
      $game_system.pict_back_mes2 = filename
    end
  end
end