Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 26th, 2012  |  syntax: None  |  size: 1.95 KB  |  hits: 22  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. SkyBox = (gradientSelector, hillsSelector, hillsShadowSelector) ->
  2.   @gradientSelector = gradientSelector
  3.   @hillsSelector = hillsSelector
  4.   @hillsShadowSelector = hillsShadowSelector
  5.  
  6. SkyBox::computeColour = (colourFrom, colourTo, percent) ->
  7.   colours = for idx in [0..2]
  8.     Math.floor((colourTo[idx] - colourFrom[idx]) * percent + colourFrom[idx])
  9.   'rgb(' + colours.join(', ') + ')'
  10.  
  11. SkyBox::setSkyGradient = (colourFrom, colourTo, percent) ->
  12.   # console.log colourFrom, colourTo, percent
  13.   top = @computeColour(colourFrom.top, colourTo.top, percent)
  14.   bottom = @computeColour(colourFrom.bottom, colourTo.bottom, percent)
  15.   gradientString = '(top, ' + top + ' 0%, ' + bottom + ' 100%)'
  16.   $(@gradientSelector).css(background: top)
  17.   $(@gradientSelector).css(background: "-webkit-gradient(linear, left top, left bottom, color-stop(0%,#{top}), color-stop(100%,#{bottom})")
  18.   $(@gradientSelector).css(background: "-webkit-linear-gradient#{gradientString}")
  19.   $(@gradientSelector).css(background: "-moz-linear-gradient#{gradientString}")
  20.  
  21. SkyBox::setHills = (darkPercent) ->
  22.    $(@hillsSelector).css(background: 'url(../images/hillslight.png) repeat-x bottom left');
  23.    $(@hillsShadowSelector).css(background: 'url(../images/hillsdark.png) repeat-x bottom left').css(opacity: darkPercent);
  24.  
  25. SkyBox::render = (hour) ->
  26.   if hour < 7
  27.     @setSkyGradient(@midnight, @sunrise, hour / 7)
  28.   else if hour < 12
  29.     @setSkyGradient(@sunrise, @midday, (hour - 7) / 5)
  30.   else if(hour < 19)
  31.     @setSkyGradient(@midday, @sunrise, (hour - 12) / 7)
  32.   else
  33.     @setSkyGradient(@sunrise, @midnight, (hour - 19) / 5)
  34.  
  35.   if hour < 12
  36.     @setHills(1 - (hour / 12))
  37.   else
  38.     @setHills((hour - 12) / 12)
  39.  
  40. SkyBox::midnight =
  41.   top: [0,0,0]
  42.   bottom: [0,11,119]
  43. SkyBox::sunrise =
  44.   top: [90,150,168]
  45.   bottom: [255, 222, 147]
  46. SkyBox::midday =
  47.   top: [135,224,253]
  48.   bottom: [244,252,251]
  49.  
  50.  
  51. skyBox = new SkyBox('body', '#bg1', '#bg2')
  52. now = new Date()
  53. skyBox.render(now.getHours() + now.getMinutes() / 60)