class Window_Sales < Window_Help
  attr_accessor :sperson
  attr_accessor :message_type
  attr_accessor :phase
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(4)
    @sperson = $shop_people[0]
    @message_type = :greeting
    @handler = {}
    @phase = :normal
    @current_face_set = 0
    @item
    @fiber = nil   
  end  


  def set_chara(chara)
    @sperson = chara || $shop_people[0]
    
  end  

  #--------------------------------------------------------------------------
  # ● 改ページ処理
  #--------------------------------------------------------------------------
  def new_page(text, pos)
    contents.clear
    face = @sperson.face_sets[@current_face_set]
    draw_face(face[0], face[1], 0, 0) 
    reset_font_settings
    pos[:x] = new_line_x
    pos[:y] = 0
    pos[:new_x] = new_line_x
    pos[:height] = calc_line_height(text)
  end
  
  def new_line_x
    @sperson.face_sets[@current_face_set][0].empty? ? 0 : 112
  end 

  
  def current_text 
    if @phase == :select
      return unless @item
      if @item.class == RPG::Item
        @sperson.explain_item(@item)
      elsif @item.class == RPG::Weapon
        @sperson.explain_weapon(@item)
      elsif @item.class == RPG::Armor 
        @sperson.explain_armor(@item)
      end  
    else
      @sperson.message(@message_type)
      
    end  
  end
  #--------------------------------------------------------------------------
  # ● 全テキストの処理
  #--------------------------------------------------------------------------
  def process_all_text
    
    text = convert_escape_characters(current_text)
    pos = {}
    new_page(text, pos)
    process_character(text.slice!(0, 1), text, pos) until text.empty?
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    process_all_text
  end 

  def draw_item
    draw_face(@sperson.face_name, @sperson.face_index, x, y) 
    
    
  end  
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    process_handling
  end  
  #--------------------------------------------------------------------------
  # ● 決定やキャンセルなどのハンドリング処理
  #--------------------------------------------------------------------------
  def process_handling
    return unless open? && active
    return process_ok       if Input.trigger?(:C)
    return process_ok       if Input.trigger?(:B)
    return process_ok       if Input.trigger?(:R)
    return process_ok       if Input.trigger?(:L)
    return process_ok       if Input.trigger?(:DOWN)
    return process_ok       if Input.trigger?(:UP)
    return process_ok       if Input.trigger?(:RIGHT)
    return process_ok       if Input.trigger?(:LEFT)    
    
  end  

  #--------------------------------------------------------------------------
  def ok_enabled?
    handle?(:ok)
  end 
  #--------------------------------------------------------------------------
  # ● 決定ボタンが押されたときの処理
  #--------------------------------------------------------------------------
  def process_ok
    Input.update
    deactivate
    call_ok_handler


  end
  
  
  #--------------------------------------------------------------------------
  # ● 動作に対応するハンドラの設定
  #     method : ハンドラとして設定するメソッド (Method オブジェクト)
  #--------------------------------------------------------------------------
  def set_handler(symbol, method)
    @handler[symbol] = method
  end    
  #--------------------------------------------------------------------------
  # ● ハンドラの存在確認
  #--------------------------------------------------------------------------
  def handle?(symbol)
    @handler.include?(symbol)
  end  
  #--------------------------------------------------------------------------
  # ● 決定ハンドラの呼び出し
  #--------------------------------------------------------------------------
  def call_ok_handler
    call_handler(:ok)
  end  
  #--------------------------------------------------------------------------
  # ● ハンドラの呼び出し
  #--------------------------------------------------------------------------
  def call_handler(symbol)
    @handler[symbol].call if handle?(symbol)
  end  

  #--------------------------------------------------------------------------
  # ● アイテム設定
  #     item : スキル、アイテム等
  #--------------------------------------------------------------------------
  def set_item(item)
    @item = item
    refresh
  end
  
    
end  