class Window_Turn_Table < Window_Base
  attr_reader   :target_enemy 
  attr_accessor :debug_value

  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, window_width, window_height)
    @turnList = []
    @target_enemy = []
    @debug_value = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 標準パディングサイズの取得
  #--------------------------------------------------------------------------
  def standard_padding
    return 8
  end  
  
  def target_enemy=(target_enemy)
    @target_enemy = target_enemy
    refresh
  end  
  
  #--------------------------------------------------------------------------
  # ● ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    return 32 * 8
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ高さの取得
  #--------------------------------------------------------------------------
  def window_height
    return 36 + standard_padding * 2 + 32
  end
  #--------------------------------------------------------------------------
  # ● 表示行数の取得
  #--------------------------------------------------------------------------
  def visible_line_number
    return 1
  end
  #--------------------------------------------------------------------------
  # ● ターンリストの設定
  #--------------------------------------------------------------------------
  def turnList=(turnList)
    return if @turnList == turnList
    @turnList = turnList
    refresh
  end
  
  def clear_target_enemy
    @target_enemy = []
    refresh
  end    
  
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    @turnList.size.times {|i| draw_item(32 * i, 0, i) }
  end

  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(x, y, i)
    charadata = @turnList[i]
    return unless charadata 
    if charadata && charadata.actor?
      cname = charadata.character_name
      cindex = charadata.character_index
    else 

      if $enemy_character[charadata.enemy_id]
        charad = $enemy_character[charadata.enemy_id]      
      else
        charad = $default_enemy_character
 
      end  
      cname = charad[0]
      cindex = charad[1]  
    end   
  
    draw_character(cname, cindex , x , y + 6)
    
    if @target_enemy.include?(charadata )
      draw_character(cname, cindex , x , y + 6)
  
      draw_square(x , y + 6 )
    end
    
    if charadata.state?($prepare_skill_state_id)
      draw_icon(136, x + 6 , y + 36+ standard_padding, enabled = true)
    end  

  end
  
  #--------------------------------------------------------------------------
  # ● 歩行グラフィックの描画
  #--------------------------------------------------------------------------
  def draw_character(character_name, character_index, x, y)
    return unless character_name
    bitmap = Cache.character(character_name)
    sign = character_name[/^[\!\$]./]
    if sign && sign.include?('$')
      cw = bitmap.width / 3
      ch = bitmap.height / 4
    else
      cw = bitmap.width / 12
      ch = bitmap.height / 8
    end
    n = character_index
    src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
    
    contents.blt(x , y , bitmap, src_rect)

  end

  def draw_square(x, y )

    bitmap = Cache.system("Window.png")

    src_rect = Rect.new(32 * 2,32 * 2, 32, 32)
    contents.blt(x , y , bitmap, src_rect)
  end  
  
  #--------------------------------------------------------------------------
  # ● 能力値の名前を描画
  #--------------------------------------------------------------------------
  def draw_param_name(x, y, param_id)
    change_color(system_color)
    draw_text(x, y, 80, line_height, Vocab::param(param_id))
  end
  #--------------------------------------------------------------------------
  # ● 現在の能力値を描画
  #--------------------------------------------------------------------------
  def draw_current_param(x, y, param_id)
    change_color(normal_color)
    draw_text(x, y, 32, line_height, @actor.param(param_id), 2)
  end
  #--------------------------------------------------------------------------
  # ● 右向き矢印を描画
  #--------------------------------------------------------------------------
  def draw_right_arrow(x, y)
    change_color(system_color)
    draw_text(x, y, 22, line_height, "→", 1)
  end
  #--------------------------------------------------------------------------
  # ● 装備変更後の能力値を描画
  #--------------------------------------------------------------------------
  def draw_new_param(x, y, param_id)
    new_value = @temp_actor.param(param_id)
    change_color(param_change_color(new_value - @actor.param(param_id)))
    draw_text(x, y, 32, line_height, new_value, 2)
  end
  
  
end