class WSLight::Set::RainSet
Creates a set with all random colors
Constants
- CLOUD
- FRAMES_PER_DROP
- VISIBLE_DROPS
Public Instance Methods
brightness(frame_distance)
click to toggle source
# File lib/ws_light/set/weather/rain_set.rb, line 48 def brightness(frame_distance) (250 * (1.0 - (frame_distance.to_f / FRAMES_PER_DROP.to_f))).to_i end
draw_drop(position, drop_frame)
click to toggle source
# File lib/ws_light/set/weather/rain_set.rb, line 39 def draw_drop(position, drop_frame) blue = brightness(drop_frame.to_f) % 250 @set[position] = Color.new(4, 4, 4 + blue) end
frame()
click to toggle source
# File lib/ws_light/set/weather/rain_set.rb, line 25 def frame next_frame @set end
generate_frame()
click to toggle source
# File lib/ws_light/set/weather/rain_set.rb, line 30 def generate_frame @set = [CLOUD] * @full_length start = (@frame_count * VISIBLE_DROPS / FRAMES_PER_DROP) % @max VISIBLE_DROPS.times do |i| drop_ratio = (FRAMES_PER_DROP.to_f / VISIBLE_DROPS.to_f) draw_drop(@drops[start + i], @frame_count - ((start - VISIBLE_DROPS + 1 + i) * drop_ratio).to_i) end end
init()
click to toggle source
# File lib/ws_light/set/weather/rain_set.rb, line 11 def init @drops = (0..(@full_length - 1)).to_a.shuffle @max = @drops.size # append the start at the end to ensure same result window when near the % @max @drops += @drops[0, VISIBLE_DROPS] generate_frame end
next_frame()
click to toggle source
# File lib/ws_light/set/weather/rain_set.rb, line 19 def next_frame @frame_count += 1 @frame_count = @frame_count % (@max * FRAMES_PER_DROP) generate_frame end
pixel(number)
click to toggle source
# File lib/ws_light/set/weather/rain_set.rb, line 44 def pixel(number) @set[number] end