Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SpriteHash
- attr_reader :x
- attr_reader :y
- attr_reader :visible
- attr_reader :opacity
- def initialize
- @hash = {}
- @x = 0
- @y = 0
- @visible = true
- @opacity = 255
- end
- def [](key)
- return @hash[key.to_sym]
- end
- def []=(key, value)
- add(key.to_sym, value)
- end
- def raw
- return @hash
- end
- def keys
- return @hash.keys
- end
- def add(key, value)
- clear_disposed
- @hash[key.to_sym] if @hash[key.to_sym] && @hash[key.to_sym].respond_to?("dispose")
- @hash[key.to_sym] = value
- clear_disposed
- end
- def delete(key)
- @hash[key.to_sym] = nil
- clear_disposed
- end
- def each
- clear_disposed
- @hash.each { |s| yield s[1] if block_given? }
- end
- def update
- clear_disposed
- for key in @hash.keys
- @hash[key].update if @hash[key].respond_to?("update")
- end
- end
- def dispose
- clear_disposed
- for key in @hash.keys
- if @hash[key].respond_to?("dispose")
- @hash[key].dispose
- end
- end
- clear_disposed
- end
- # Compatibility
- def disposed?
- return false
- end
- def x=(value)
- clear_disposed
- for key in @hash.keys
- @hash[key].x += value - @x
- end
- @x = value
- end
- def y=(value)
- clear_disposed
- for key in @hash.keys
- @hash[key].y += value - @y
- end
- @y = value
- end
- def visible=(value)
- clear_disposed
- for key in @hash.keys
- @hash[key].visible = value
- end
- end
- def opacity=(value)
- clear_disposed
- for key in @hash.keys
- @hash[key].opacity += value - @opacity
- end
- @opacity = [0,value,255].sort[1]
- end
- def hide(frames = 16)
- clear_disposed
- frames.times do
- Graphics.update
- Input.update
- for key in @hash.keys
- @hash[key].opacity -= 255 / frames.to_f
- end
- end
- @opacity = 0
- end
- def show(frames = 16)
- clear_disposed
- frames.times do
- Graphics.update
- Input.update
- for key in @hash.keys
- @hash[key].opacity += 255 / frames.to_f
- end
- end
- @opacity = 255
- end
- def clear_disposed
- for key in @hash.keys
- if (@hash[key].disposed? rescue true)
- @hash[key] = nil
- @hash.delete(key)
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment