#==============================================================================
# ■ Enemy_States vol.1.10
#------------------------------------------------------------------------------
# バトル中、エネミーのステートをアイコンで表示
# 08/02/08
#==============================================================================
class Bitmap
  #--------------------------------------------------------------------------
  # ■ ステータスの描画(画像描画)
  #--------------------------------------------------------------------------
  def draw_state_icons(user,x,y,max,rn = 0)
    # □userがエネミーの場合
    if user.is_a?(Game_Enemy)
      # □HPが0の場合は描画しない(競合対策)
      if user.hp == 0
        return
      end
      # □ステート配列の取得
      list = []
      for x in user.states.dup
        # □レーティング0は配列から除外
        if $data_states[x].rating != 0
          list.push(x)
        end
      end
      # □開始する配列番号(折り返し表示)の取得
      if rn > 0
        rn < list.size ? list = list[rn..list.size] : list = []
      end
    else
      p "無効なデータを代入！"
    end
    bitmap = RPG::Cache.windowskin("states")
    px = 4
    min = 0
    for i in list
      rx = i / 10
      ry = i - (rx * 10)
      # □ステートアイコンを描画
      blt(x + px,y + 8,bitmap,Rect.new(rx * 16,ry * 16,16,16))
      px += 16
      min += 1
      # □描画指定数に到達した場合、描画の終了
      if max == min
        break
      end
    end
  end
end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
  #--------------------------------------------------------------------------
  # ■ オブジェクト初期化
  #--------------------------------------------------------------------------
  if !$@;alias hidesp_enemy_states_window initialize;end
  def initialize(viewport,battler = nil)
    # □元の処理を呼び出し
    hidesp_enemy_states_window(viewport,battler)
    # □エネミーの場合
    if @battler.is_a?(Game_Enemy)
      # □ウィンドウの作成(エネミー画像と同じviewport)
      @enemy_states_window = Sprite.new(viewport)
      @enemy_states_window.bitmap = Bitmap.new(116,64)
      # □ステートを取得
      @old_states = @battler.states.dup
      @enemy_states_window.bitmap.draw_state_icons(@battler,0,0,6)
      @enemy_states_window.bitmap.draw_state_icons(@battler,0,16,6,7)
    end
  end
  #--------------------------------------------------------------------------
  # ■ フレーム更新
  #--------------------------------------------------------------------------
  if !$@;alias hidesp_enemy_states_update update;end
  def update
    # □元の処理を呼び出し
    hidesp_enemy_states_update
    # □エネミーの場合
    if @battler.is_a?(Game_Enemy)
      @enemy_states_window.visible = @battler_visible
      # □ウィンドウの座標を設定
      @enemy_states_window.x = self.x - 116 / 2
      @enemy_states_window.y = self.y - 32
      @enemy_states_window.z = self.z + 1
      # □新しいステートを取得
      @now_states = @battler.states.dup
      if @old_states != @now_states && $enemy_states_display == true
        @enemy_states_window.bitmap.clear
        @enemy_states_window.bitmap.draw_state_icons(@battler,0,0,6)
        @enemy_states_window.bitmap.draw_state_icons(@battler,0,16,6,7)
        # □新しいステートを代入
        @old_states = @now_states
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ ウィンドウの可視化
  #--------------------------------------------------------------------------
  def visible=(visible)
    # エネミーの場合
    if @battler.is_a?(Game_Enemy)
      @enemy_states_window.visible = visible
    end
    super
  end
  #--------------------------------------------------------------------------
  # ■ ウィンドウの透明度
  #--------------------------------------------------------------------------
  def opacity=(opacity)
    # エネミーの場合
    if @battler.is_a?(Game_Enemy)
      @enemy_states_window.opacity = opacity
    end
    super
  end
  #--------------------------------------------------------------------------
  # ■ ウィンドウの削除
  #--------------------------------------------------------------------------
  def dispose
    # □エネミーの場合
    if @battler.is_a?(Game_Enemy)
      @enemy_states_window.dispose
    end
    # □元の処理を呼び出し
    super
  end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ■ フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  #--------------------------------------------------------------------------
  if !$@;alias hidesp_enemy_states_p4s5 update_phase4_step5;end
  def update_phase4_step5
    # □元の処理を呼び出し
    hidesp_enemy_states_p4s5
    $enemy_states_display = true
  end
  #--------------------------------------------------------------------------
  # ■ フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
  #--------------------------------------------------------------------------
  if !$@;alias hidesp_enemy_states_p4s6 update_phase4_step6;end
  def update_phase4_step6
    # □元の処理を呼び出し
    hidesp_enemy_states_p4s6
    $enemy_states_display = false
  end
end