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