2014-01-03 10:32:13 -08:00
CocoClass = require ' lib/CocoClass '
module.exports = class LoadingScreen extends CocoClass
progress: 0
2014-03-14 17:06:08 -07:00
2014-01-03 10:32:13 -08:00
constructor: (canvas) ->
super ( )
@width = canvas . width
@height = canvas . height
@stage = new createjs . Stage ( canvas )
subscriptions:
' level-loader:progress-changed ' : ' onLevelLoaderProgressChanged '
show: ->
@ stage . removeChild ( @ screen ) if @ screen
@screen = @ makeScreen ( )
@ stage . addChild ( @ screen )
@ updateProgressBar ( )
hide: ->
@ stage . removeChild ( @ screen ) if @ screen
@screen = null
makeScreen: ->
c = new createjs . Container ( )
c . addChild ( @ makeLoadBackground ( ) )
c . addChild ( @ makeLoadText ( ) )
c . addChild ( @ makeProgressBar ( ) )
@ makeLoadLogo ( c )
c
makeLoadBackground: ->
g = new createjs . Graphics ( )
g . beginFill ( createjs . Graphics . getRGB ( 30 , 30 , 60 ) )
g . drawRoundRect ( 0 , 0 , @ width , @ height , 0.0 )
s = new createjs . Shape ( g )
s.y = 0
s.x = 0
s
makeLoadLogo: (container) ->
logoImage = new Image ( )
$ ( logoImage ) . load =>
@logo = new createjs . Bitmap logoImage
@logo.x = @ width / 2 - logoImage . width / 2
@logo.y = 40
container . addChild @ logo
logoImage.src = " /images/loading_image.png "
makeLoadText: ->
size = @ height / 10
text = new createjs . Text ( " LOADING " , " #{ size } px Monospace " , " # ff7700 " )
text.regX = text . getMeasuredWidth ( ) / 2
text.regY = text . getMeasuredHeight ( ) / 2
text.x = @ width / 2
text.y = @ height / 2
@text = text
return text
makeProgressBar: ->
BAR_PIXEL_HEIGHT = 20
BAR_PCT_WIDTH = . 75
pixelWidth = parseInt ( @ width * BAR_PCT_WIDTH )
pixelMargin = ( @ width - ( @ width * BAR_PCT_WIDTH ) ) / 2
barY = 2 * ( @ height / 3 )
c = new createjs . Container ( )
c.x = pixelMargin
c.y = barY
g = new createjs . Graphics ( )
g . beginFill ( createjs . Graphics . getRGB ( 255 , 0 , 0 ) )
g . drawRoundRect ( 0 , 0 , pixelWidth , BAR_PIXEL_HEIGHT , 5 )
@progressBar = new createjs . Shape ( g )
c . addChild ( @ progressBar )
g = new createjs . Graphics ( )
g . setStrokeStyle ( 2 )
g . beginStroke ( createjs . Graphics . getRGB ( 230 , 230 , 230 ) )
g . drawRoundRect ( 0 , 0 , pixelWidth , BAR_PIXEL_HEIGHT , 5 )
c . addChild ( new createjs . Shape ( g ) )
c
onLevelLoaderProgressChanged: (e) ->
@progress = e . progress
@ updateProgressBar ( )
updateProgressBar: ->
newProg = parseInt ( ( @ progress or 0 ) * 100 )
newProg = ' ' + newProg while newProg . length < 4
@lastProg = newProg
@text.text = " BUILDING " if @ progress is 1
@progressBar.scaleX = @ progress
@ stage . update ( )
2014-03-14 17:06:08 -07:00
2014-02-27 16:44:11 -08:00
showReady: ->
@text.text = ' READY '
@text.regX = @ text . getMeasuredWidth ( ) / 2
@ stage . update ( )
2014-03-14 17:06:08 -07:00
2014-01-03 10:32:13 -08:00
destroy: ->
@stage.canvas = null
2014-03-14 17:06:08 -07:00
super ( )