#==============================================================================
# ■ Price_Up_Down vol.1.00
#------------------------------------------------------------------------------
# ショップの売買。まとめ買いで、割り引き、まとめ売りで割高
# 08/02/08
#==============================================================================
class Window_ShopNumber < Window_Base
  #--------------------------------------------------------------------------
  # ■ アイテム、最大個数、価格の設定(再定義)
  #--------------------------------------------------------------------------
  def set(item, max, price,type = 2)
    @item = item
    @max = max
    @price = price
    @number = 1
    @type = type
    refresh
  end
  #--------------------------------------------------------------------------
  # ■ リフレッシュ(再定義)
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_item_name(@item, 4, 96)
    self.contents.font.color = normal_color
    self.contents.draw_text(272, 96, 32, 32, "×")
    self.contents.draw_text(308, 96, 24, 32, @number.to_s, 2)
    self.cursor_rect.set(304, 96, 32, 32)
    # 合計価格と通貨単位を描画
    domination = $data_system.words.gold
    cx = contents.text_size(domination).width
    #………………………………………………………………………………………………………
    # ■[購入/売却]で分岐
    #………………………………………………………………………………………………………
    case @type
    when 1 #[購入]の場合
      total_price = (@price * @number) - (@price*(@number-1)/10)
    when 2 #[売却]の場合
      total_price = ((@price) * @number) + ((@price*2)*(@number-1)/10)
    end
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 160, 328-cx-2, 32, total_price.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(332-cx, 160, cx, 32, domination, 2)
  end
end
#==============================================================================
# ■ Scene_Shop
#==============================================================================
class Scene_Shop
  #--------------------------------------------------------------------------
  # ■ フレーム更新(再定義)
  #--------------------------------------------------------------------------
  def update_buy
    # ステータスウィンドウのアイテムを設定
    @status_window.item = @buy_window.item
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # ウィンドウの状態を初期モードへ
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      # ヘルプテキストを消去
      @help_window.set_text("")
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # アイテムを取得
      @item = @buy_window.item
      # アイテムが無効の場合、または価格が所持金より上の場合
      if @item == nil or @item.price > $game_party.gold
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # アイテムの所持数を取得
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
      end
      # すでに 99 個所持している場合
      if number == 99
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      # ■最大購入可能個数を計算
      max = 99 - number
      while $game_party.gold < (@item.price * max) - (@item.price*(max-1)/10)
        max -= 1
      end
      # ウィンドウの状態を個数入力モードへ
      @buy_window.active = false
      @buy_window.visible = false
      # ■[購入]ウィンドウの判別を追加
      @number_window.set(@item, max, @item.price,1)
      @number_window.active = true
      @number_window.visible = true
    end
  end
  #--------------------------------------------------------------------------
  # ■ フレーム更新 (個数入力ウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_number
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # 個数入力ウィンドウを非アクティブ・不可視に設定
      @number_window.active = false
      @number_window.visible = false
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 0  # 購入する
        # ウィンドウの状態を購入モードへ
        @buy_window.active = true
        @buy_window.visible = true
      when 1  # 売却する
        # ウィンドウの状態を売却モードへ
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # ショップ SE を演奏
      $game_system.se_play($data_system.shop_se)
      # 個数入力ウィンドウを非アクティブ・不可視に設定
      @number_window.active = false
      @number_window.visible = false
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 0  # 購入する
        #………………………………………………………………………………………………………
        # ■購入数が多いほど安くなる
        #………………………………………………………………………………………………………
        price_down = (@item.price * @number_window.number) - (@item.price*(@number_window.number-1)/10)
        $game_party.lose_gold(price_down)
        case @item
        when RPG::Item
          $game_party.gain_item(@item.id, @number_window.number)
        when RPG::Weapon
          $game_party.gain_weapon(@item.id, @number_window.number)
        when RPG::Armor
          $game_party.gain_armor(@item.id, @number_window.number)
        end
        # 各ウィンドウをリフレッシュ
        @gold_window.refresh
        @buy_window.refresh
        @status_window.refresh
        # ウィンドウの状態を購入モードへ
        @buy_window.active = true
        @buy_window.visible = true
      when 1  # 売却する
        #………………………………………………………………………………………………………
        # ■売却数が多いほど高く売れる
        #………………………………………………………………………………………………………
        price_up = ((@item.price/2) * @number_window.number) + (@item.price*(@number_window.number-1)/10)
        $game_party.gain_gold(price_up)
        case @item
        when RPG::Item
          $game_party.lose_item(@item.id, @number_window.number)
        when RPG::Weapon
          $game_party.lose_weapon(@item.id, @number_window.number)
        when RPG::Armor
          $game_party.lose_armor(@item.id, @number_window.number)
        end
        # 各ウィンドウをリフレッシュ
        @gold_window.refresh
        @sell_window.refresh
        @status_window.refresh
        # ウィンドウの状態を売却モードへ
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
  end
end