IceDragon200

[EDOS]Window::Inventory

Apr 10th, 2012
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.28 KB | None | 0 0
  1. #==============================================================================#
  2. # ♥ Window::Inventory
  3. #==============================================================================#
  4. # // • Created By    : IceDragon
  5. # // • Modified By   : IceDragon
  6. # // • Data Created  : 12/11/2011
  7. # // • Data Modified : 12/11/2011
  8. # // • Version       : 1.0
  9. #==============================================================================#
  10. # ● Change Log
  11. #     ♣ 12/11/2011 V1.0
  12. #
  13. #==============================================================================#
  14. class Window::Inventory < Window::Selectable
  15.   def initialize(x,y,w=nil,h=nil)
  16.     @items = []
  17.     w ||= window_width
  18.     h ||= window_height
  19.     super(x,y,w,h)
  20.     select(0)
  21.   end
  22.   attr_reader :battler
  23.   def battler=( new_battler )
  24.     if @battler != new_battler
  25.       @battler = new_battler
  26.       refresh()
  27.     end  
  28.   end  
  29.   def actor
  30.     battler
  31.   end
  32.   def actor=( new_actor )
  33.     self.battler = new_actor
  34.   end
  35.   def set_actor(n)
  36.     set_battler(n)
  37.   end
  38.   def window_width
  39.     return ((item_width+spacing) * col_max) + standard_padding * 2
  40.   end  
  41.   def window_height
  42.     return (item_height * 3) + (standard_padding * 2)
  43.   end  
  44.   def update_pos
  45.     update_height
  46.   end  
  47.   def item_max
  48.     @items.size
  49.     #@battler.inventory.size
  50.   end
  51.   def col_max
  52.     return 4
  53.   end  
  54.   def item_width
  55.     return 28+32+4
  56.   end  
  57.   def item_height
  58.     return 28
  59.   end  
  60.   def spacing
  61.     return 2
  62.   end  
  63.   def current_item()
  64.     return @items[self.index]
  65.   end  
  66.   def item()
  67.     return current_item()
  68.   end
  69.   def inventory
  70.     @battler.inventory
  71.   end  
  72.   def item_number( item )
  73.     inventory.item_number( item )
  74.   end  
  75.   def make_item_list
  76.     @items = (@battler ? inventory.all_items : []).select{|i|include?(i)}
  77.   end  
  78.   def refresh()
  79.     make_item_list()
  80.     create_contents()
  81.     draw_all_items()
  82.     call_update_help()
  83.   end  
  84.   def draw_item( index )
  85.     art = open_artist
  86.     item        = @items[index]
  87.     enabled     = item_enabled?( item )
  88.     rect        = item_rect( index ).contract(2)
  89.     wd, hd      = 24 - 24, rect.height - 24
  90.     icon_rect   = Rect.new( rect.x, rect.y, 24, 24 )
  91.     number_rect = Rect.new( rect.x+28, rect.y+4, 32, 20 )
  92.     set         = ((@battler ? @battler._hot_keys.obj_set?(item) : false) && !item.nil?())
  93.     equip       = ((@battler ? @battler.equips.include?(item) : false) && !item.nil?())
  94.     bmp         = Cache.system("Item_Borders(Window)")
  95.     brect       = Rect.new( 0, 0, bmp.width, 24 )
  96.     brect.y     = 24 * 4 if set
  97.     brect.y     = 24 * (Ex_Database.ex?( item ) ? 1 : 2) if Ex_Database.can_ex?( item )
  98.     brect.y     = 24 * 3 if equip
  99.     drawing_sandbox() do
  100.       contents.blt( icon_rect.x, icon_rect.y, bmp, brect )
  101.       contents.font.size = Font.default_size - 4
  102.       art.draw_item_icon( item, icon_rect.x + (wd / 2), icon_rect.y + (hd / 2) )
  103.       contents.font.set_style(:simple_black)
  104.       if Ex_Database.ex_weapon?( item )
  105.         art.draw_item_small_exp(item,number_rect.x+2,number_rect.y+12,number_rect.width-4,6)
  106.         contents.font.size = Font.default_size - 8
  107.         number_rect.y -= 4
  108.         art.draw_text( number_rect, item.level_s, 1 )
  109.       elsif Ex_Database.ex_armor?( item )
  110.       else
  111.         art.draw_text( number_rect, "x#{item_number(item)}", 1 ) if item
  112.       end  
  113.     end  
  114.   end
  115.   def draw_item_help( x, y, item )
  116.     contents.font.set_style(:simple_black)
  117.     contents.font.size = Font.default_size
  118.     contents.clear_rect( x, y, contents.width, 24 )
  119.     dx = x
  120.     dy = y
  121.     draw_item_icon( item, dx, dy )
  122.     dx += 24
  123.     contents.font.size = Font.default_size - 6
  124.     draw_box( dx, dy+12, contents.width, 12 )
  125.     draw_text( dx, dy, contents.width-(dx), 12, item ? item.name : "" )
  126.     dy += 12
  127.     contents.font.size = Font.default_size - 8
  128.     draw_text( dx+4, dy, contents.width-(dx+4), 12, item ? item.description : "" )
  129.   end  
  130.   def include?(i)
  131.     true
  132.   end  
  133.   def item_enabled?( item )
  134.     return true
  135.   end
  136.   def redraw_current_item()
  137.     super()
  138.     call_update_help()
  139.   end  
  140.   #--------------------------------------------------------------------------
  141.   # ● ステータスウィンドウの設定
  142.   #--------------------------------------------------------------------------
  143.   def status_window=(status_window)
  144.     @status_window = status_window
  145.     call_update_help
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● アイテムウィンドウの設定
  149.   #--------------------------------------------------------------------------
  150.   def item_window=(item_window)
  151.     @item_window = item_window
  152.     update
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● ヘルプテキスト更新
  156.   #--------------------------------------------------------------------------
  157.   def update_help()
  158.     super()
  159.     @help_window.set_item(item) if @help_window
  160.     #@status_window.set_temp_actor(nil) if @status_window
  161.   end
  162. end  
  163. #=■==========================================================================■=#
  164. #                           // ● End of File ● //                              #
  165. #=■==========================================================================■=#
Advertisement
Add Comment
Please, Sign In to add comment