Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #Must be above Yanfly Shop Options
  2.  
  3. class Window_ShopBuy < Window_Selectable
  4.  
  5.   def initialize(x, y, height, shop_goods)
  6.     super(x, y, window_width, height)
  7.     @shop_goods = shop_goods
  8.     @category = :item
  9.     @money = 0
  10.     refresh
  11.   end
  12.  
  13.   def category=(category)
  14.     return if @category == category
  15.     @category = category
  16.     refresh
  17.     self.oy = 0
  18.   end
  19.  
  20.   def make_item_list
  21.     @data = []
  22.     @price = {}
  23.     categories = { :item => 0,:weapon => 1 ,:armor => 2, :key_item => 0 }
  24.     @shop_goods.each do |goods|
  25.       next unless goods[0] == categories[@category]
  26.       case goods[0]
  27.       when 0;  item = $data_items[goods[1]]
  28.       when 1;  item = $data_weapons[goods[1]]
  29.       when 2;  item = $data_armors[goods[1]]
  30.       end
  31.       if item
  32.         next if (@category == :item && item.key_item?)
  33.         next if (@category == :key_item && !item.key_item?)
  34.         @data.push(item)
  35.         @price[item] = goods[2] == 0 ? item.price : goods[3]
  36.       end
  37.     end
  38.   end
  39.  
  40. end
  41.  
  42. class Scene_Shop < Scene_MenuBase
  43.  
  44.   def start
  45.     super
  46.     create_help_window
  47.     create_gold_window
  48.     create_command_window
  49.     create_dummy_window
  50.     create_number_window
  51.     create_buy_category_window
  52.     create_category_window
  53.     create_status_window
  54.     create_buy_window
  55.     create_sell_window
  56.   end
  57.  
  58.  
  59.   def create_buy_window
  60.     wy = @dummy_window.y+ @category_window.height
  61.     wh = @dummy_window.height - @category_window.height
  62.     @buy_window = Window_ShopBuy.new(0, wy, 200, @goods)
  63.     @buy_window.viewport = @viewport
  64.     @buy_window.help_window = @help_window
  65.     @buy_window.status_window = @status_window
  66.     @buy_window.hide
  67.     @buy_window.set_handler(:ok,     method(:on_buy_ok))
  68.     @buy_window.set_handler(:cancel, method(:on_buy_cancel))
  69.     @buy_category_window.item_window = @buy_window
  70.   end
  71.  
  72.  
  73.   def create_status_window
  74.     wx = @number_window.width
  75.     wy = @dummy_window.y + @category_window.height
  76.     ww = Graphics.width - wx
  77.     wh = @dummy_window.height - @category_window.height
  78.     @status_window = Window_ShopStatus.new(wx, wy, ww, wh)
  79.     @status_window.viewport = @viewport
  80.     @status_window.hide
  81.   end
  82.  
  83.  
  84.   def create_buy_category_window
  85.     @buy_category_window = Window_ShopCategory.new
  86.     @buy_category_window.viewport = @viewport
  87.     @buy_category_window.help_window = @help_window
  88.     @buy_category_window.y = @command_window.y
  89.     @buy_category_window.hide.deactivate
  90.     @buy_category_window.x = Graphics.width
  91.     @buy_category_window.set_handler(:ok,     method(:on_buy_category_ok))
  92.     @buy_category_window.set_handler(:cancel, method(:on_buy_category_cancel))
  93.   end
  94.  
  95.  
  96.   def command_buy
  97.     @dummy_window.hide
  98.     @buy_category_window.show
  99.     @buy_category_window.x = 0
  100.     @buy_window.x = 0
  101.     @status_window.show
  102.     @command_window.hide
  103.     @buy_window.unselect
  104.     @buy_window.refresh
  105.     @buy_category_window.show.activate
  106.     @data_window.item_window = @buy_window
  107.   end
  108.  
  109.   def on_buy_cancel
  110.     @buy_category_window.activate
  111.     @status_window.item = nil
  112.     @help_window.clear
  113.     @buy_window.refresh
  114.     @dummy_window.show
  115.     @buy_window.hide
  116.   end
  117.  
  118.   def on_buy_category_ok
  119.     activate_buy_window
  120.     @buy_window.select(0)
  121.   end
  122.  
  123.   def on_buy_category_cancel
  124.     @command_window.show
  125.     @command_window.activate
  126.     @dummy_window.show
  127.     @buy_category_window.hide
  128.     @buy_window.deactivate
  129.     @status_window.show
  130.     @status_window.item = nil
  131.     @help_window.clear
  132.     @buy_window.refresh
  133.     end  
  134.  
  135. end