M3rein

Untitled

Oct 31st, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.34 KB | None | 0 0
  1. class SpriteHash
  2.   attr_reader :x
  3.   attr_reader :y
  4.   attr_reader :visible
  5.   attr_reader :opacity
  6.  
  7.   def initialize
  8.     @hash = {}
  9.     @x = 0
  10.     @y = 0
  11.     @visible = true
  12.     @opacity = 255
  13.   end
  14.  
  15.   def [](key)
  16.     return @hash[key.to_sym]
  17.   end
  18.  
  19.   def []=(key, value)
  20.     add(key.to_sym, value)
  21.   end
  22.  
  23.   def raw
  24.     return @hash
  25.   end
  26.  
  27.   def keys
  28.     return @hash.keys
  29.   end
  30.  
  31.   def add(key, value)
  32.     clear_disposed
  33.     @hash[key.to_sym] if @hash[key.to_sym] && @hash[key.to_sym].respond_to?("dispose")
  34.     @hash[key.to_sym] = value
  35.     clear_disposed
  36.   end
  37.  
  38.   def delete(key)
  39.     @hash[key.to_sym] = nil
  40.     clear_disposed
  41.   end
  42.  
  43.   def each
  44.     clear_disposed
  45.     @hash.each { |s| yield s[1] if block_given? }
  46.   end
  47.  
  48.   def update
  49.     clear_disposed
  50.     for key in @hash.keys
  51.       @hash[key].update if @hash[key].respond_to?("update")
  52.     end
  53.   end
  54.  
  55.   def dispose
  56.     clear_disposed
  57.     for key in @hash.keys
  58.       if @hash[key].respond_to?("dispose")
  59.         @hash[key].dispose
  60.       end
  61.     end
  62.     clear_disposed
  63.   end
  64.  
  65.   # Compatibility
  66.   def disposed?
  67.     return false
  68.   end
  69.  
  70.   def x=(value)
  71.     clear_disposed
  72.     for key in @hash.keys
  73.       @hash[key].x += value - @x
  74.     end
  75.     @x = value
  76.   end
  77.  
  78.   def y=(value)
  79.     clear_disposed
  80.     for key in @hash.keys
  81.       @hash[key].y += value - @y
  82.     end
  83.     @y = value
  84.   end
  85.  
  86.   def visible=(value)
  87.     clear_disposed
  88.     for key in @hash.keys
  89.       @hash[key].visible = value
  90.     end
  91.   end
  92.  
  93.   def opacity=(value)
  94.     clear_disposed
  95.     for key in @hash.keys
  96.       @hash[key].opacity += value - @opacity
  97.     end
  98.     @opacity = [0,value,255].sort[1]
  99.   end
  100.  
  101.   def hide(frames = 16)
  102.     clear_disposed
  103.     frames.times do
  104.       Graphics.update
  105.       Input.update
  106.       for key in @hash.keys
  107.         @hash[key].opacity -= 255 / frames.to_f
  108.       end
  109.     end
  110.     @opacity = 0
  111.   end
  112.  
  113.   def show(frames = 16)
  114.     clear_disposed
  115.     frames.times do
  116.       Graphics.update
  117.       Input.update
  118.       for key in @hash.keys
  119.         @hash[key].opacity += 255 / frames.to_f
  120.       end
  121.     end
  122.     @opacity = 255
  123.   end
  124.  
  125.   def clear_disposed
  126.     for key in @hash.keys
  127.       if (@hash[key].disposed? rescue true)
  128.         @hash[key] = nil
  129.         @hash.delete(key)
  130.       end
  131.     end
  132.   end
  133. end
Advertisement
Add Comment
Please, Sign In to add comment