Advertisement
khanhdu

Item Sorter

Apr 21st, 2017
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.45 KB | None | 0 0
  1. # =============================================================================
  2. # TheoAllen - Item Sorter
  3. # Version : 1.0
  4. # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
  5. # (This script documentation is written in informal indonesian language)
  6. # =============================================================================
  7. ($imported ||= {})[:Theo_ItemSorter] = true
  8. # =============================================================================
  9. # Change Logs:
  10. # -----------------------------------------------------------------------------
  11. # 2013.10.18 - Finished Script
  12. # =============================================================================
  13. =begin
  14.  
  15.   Perkenalan :
  16.   Script ini membuat kamu bisa sorting item berdasar nama, id atau pricenya
  17.  
  18.   Cara penggunaan :
  19.   Pasang script ini dibawah material namun diatas main
  20.   Edit konfigurasinya kalau diperlukan. Ato kamu make settingan default ini aja
  21.   juga bisa
  22.  
  23.   Terms of use :
  24.   Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
  25.   keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
  26.   dipake buat komersil, jangan lupa, gw dibagi gratisannya.
  27.  
  28. =end
  29. # =============================================================================
  30. # Konfigurasi
  31. # =============================================================================
  32. module Theo
  33.   module Sorter
  34.    
  35.   # -----------------------------------------------------------------------
  36.     Sorter_Commands = [ # <-- Jangan dihapus
  37.   # -----------------------------------------------------------------------
  38.   # Command buat sorting. Yang kamu perbolehkan disini adalah untuk mengedit
  39.   # isi dari text yang dibungkus oleh kutip (""). Dan membolak-balik urutan
  40.   # dibawah ini. Jangan sekali-sekali ngedit symbol (text yg diawali :)
  41.   # seperti :sort_id
  42.    
  43.     [:sort_id, "Sắp Sếp Theo Id"],
  44.     [:sort_az, "Sắp Sếp Từ A-Z"],
  45.     [:sort_za, "Sắp Sếp Từ Z-A"],
  46.     [:sort_lowprice, "Giá Tiền Thấp Nhất"],
  47.     [:sort_highprice, "Giá Tiền Cao Nhất"],
  48.    
  49.     ] # <-- Jangan dihapus
  50.   # -----------------------------------------------------------------------  
  51.  
  52.     Sorter_Width  = 220
  53.     # Lebar window buat sortingnya
  54.    
  55.     Sorter_Key    = :ALT
  56.     # Key buat munculin command untuk sorting. Kamu bisa masukin key seperti
  57.     # :SHIFT, :CTRL, :ALT atau bahkan :F5 - :F9
  58.    
  59.   end
  60. end
  61. # =============================================================================
  62. # Akhir dari konfigurasi
  63. # =============================================================================
  64. class Window_Sorter < Window_Command
  65.  
  66.   def initialize(item_window)
  67.     super(0,0)
  68.     self.openness = 0
  69.     @item_window = item_window
  70.     @item_window.setup_sorter_handler(self)
  71.     update_placement
  72.     deactivate
  73.   end
  74.  
  75.   def make_command_list
  76.     Theo::Sorter::Sorter_Commands.each do |cmd|
  77.       add_command(cmd[1], cmd[0])
  78.     end
  79.   end
  80.  
  81.   def window_width
  82.     return Theo::Sorter::Sorter_Width
  83.   end
  84.  
  85.   def update
  86.     super
  87.     update_placement
  88.   end
  89.  
  90.   def update_placement
  91.     self.y = @item_window.y
  92.     if @item_window.index % 2 == 0
  93.       self.x = Graphics.width - width
  94.     else
  95.       self.x = 0
  96.     end
  97.   end
  98.  
  99. end
  100.  
  101. class Window_ItemList < Window_Selectable
  102.  
  103.   alias theo_itemsort_init initialize
  104.   def initialize(*args)
  105.     @sort_type = :sort_id
  106.     theo_itemsort_init(*args)
  107.   end
  108.  
  109.   alias theo_itemsort_make_item_list make_item_list
  110.   def make_item_list
  111.     theo_itemsort_make_item_list
  112.     case @sort_type
  113.     when :sort_az
  114.       @data.sort! {|a,b| a.name <=> b.name }
  115.     when :sort_za
  116.       @data.sort! {|a,b| b.name <=> a.name }
  117.     when :sort_id
  118.       @data.sort! {|a,b| a.id <=> b.id }
  119.     when :sort_lowprice
  120.       @data.sort! {|a,b| a.price <=> b.price }
  121.     when :sort_highprice
  122.       @data.sort!{|a,b| b.price <=> a.price }
  123.     end
  124.   end
  125.  
  126.   alias theo_itemsort_process_handling process_handling
  127.   def process_handling
  128.     theo_itemsort_process_handling
  129.     open_sorter if Input.trigger?(Theo::Sorter::Sorter_Key) && @sorter &&
  130.       active && open?
  131.   end
  132.  
  133.   def open_sorter
  134.     Sound.play_ok
  135.     Input.update
  136.     deactivate
  137.     @sorter.open
  138.     @sorter.activate
  139.   end
  140.  
  141.   def setup_sorter_handler(sorter)
  142.     @sorter = sorter
  143.     @sorter.viewport = viewport
  144.     @sorter.set_handler(:sort_az, method(:sort_by_az))
  145.     @sorter.set_handler(:sort_za, method(:sort_by_za))
  146.     @sorter.set_handler(:sort_id, method(:sort_by_id))
  147.     @sorter.set_handler(:sort_lowprice, method(:sort_lowprice))
  148.     @sorter.set_handler(:sort_highprice, method(:sort_highprice))
  149.     @sorter.set_handler(:cancel, method(:deactivate_sorter))
  150.   end
  151.  
  152.   def deactivate_sorter
  153.     Input.update
  154.     @sorter.close
  155.     @sorter.deactivate
  156.     self.activate
  157.   end
  158.  
  159.   def sort_by_az
  160.     @sort_type = :sort_az
  161.     deactivate_sorter
  162.     refresh
  163.   end
  164.  
  165.   def sort_by_za
  166.     @sort_type = :sort_za
  167.     deactivate_sorter
  168.     refresh
  169.   end
  170.  
  171.   def sort_by_id
  172.     @sort_type = :sort_id
  173.     deactivate_sorter
  174.     refresh
  175.   end
  176.  
  177.   def sort_lowprice
  178.     @sort_type = :sort_lowprice
  179.     deactivate_sorter
  180.     refresh
  181.   end
  182.  
  183.   def sort_highprice
  184.     @sort_type = :sort_highprice
  185.     deactivate_sorter
  186.     refresh
  187.   end
  188.  
  189. end
  190.  
  191. class Scene_Item < Scene_ItemBase
  192.  
  193.   alias theo_itemsort_start start
  194.   def start
  195.     theo_itemsort_start
  196.     @sorter = Window_Sorter.new(@item_window)
  197.   end
  198.  
  199. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement