codecombat/app/views/home_view.coffee

102 lines
3 KiB
CoffeeScript
Raw Normal View History

2014-01-03 13:32:13 -05:00
View = require 'views/kinds/RootView'
template = require 'templates/home'
WizardSprite = require 'lib/surface/WizardSprite'
ThangType = require 'models/ThangType'
Simulator = require 'lib/simulator/Simulator'
2014-01-03 13:32:13 -05:00
module.exports = class HomeView extends View
id: 'home-view'
template: template
events:
2014-01-06 21:12:57 -05:00
'mouseover #beginner-campaign': 'onMouseOverButton'
'mouseout #beginner-campaign': 'onMouseOutButton'
2014-01-03 13:32:13 -05:00
getRenderData: ->
c = super()
if $.browser
majorVersion = parseInt($.browser.version.split('.')[0])
c.isOldBrowser = true if $.browser.mozilla && majorVersion < 21
c.isOldBrowser = true if $.browser.chrome && majorVersion < 17
c.isOldBrowser = true if $.browser.safari && majorVersion < 536
else
console.warn 'no more jquery browser version...'
c
afterRender: ->
super()
2014-01-30 19:36:36 -05:00
@$el.find('.modal').on 'shown.bs.modal', ->
2014-01-03 13:32:13 -05:00
$('input:visible:first', @).focus()
wizOriginal = "52a00d55cf1818f2be00000b"
url = "/db/thang_type/#{wizOriginal}/version"
@wizardType = new ThangType()
@wizardType.url = -> url
@wizardType.fetch()
@wizardType.once 'sync', @initCanvas
# Try to find latest level and set "Play" link to go to that level
if localStorage?
lastLevel = localStorage["lastLevel"]
if lastLevel? and lastLevel isnt ""
playLink = @$el.find("#beginner-campaign")
if playLink?
href = playLink.attr("href").split("/")
href[href.length-1] = lastLevel if href.length isnt 0
href = href.join("/")
playLink.attr("href", href)
else
console.log("TODO: Insert here code to get latest level played from the database. If this can't be found, we just let the user play the first level.")
2014-01-03 13:32:13 -05:00
initCanvas: =>
@stage = new createjs.Stage($('#beginner-campaign canvas', @$el)[0])
2014-01-16 19:27:34 -05:00
@createWizard()
2014-01-03 13:32:13 -05:00
turnOnStageUpdates: ->
clearInterval @turnOff
2014-01-03 13:32:13 -05:00
@interval = setInterval(@updateStage, 40) unless @interval
turnOffStageUpdates: ->
turnOffFunc = =>
clearInterval @interval
clearInterval @turnOff
@interval = null
@turnOff = null
@turnOff = setInterval turnOffFunc, 2000
2014-02-18 14:48:36 -05:00
createWizard: (scale=3.7) ->
2014-01-03 13:32:13 -05:00
spriteOptions = thangID: "Beginner Wizard", resolutionFactor: scale
@wizardSprite = new WizardSprite @wizardType, spriteOptions
@wizardSprite.update()
wizardDisplayObject = @wizardSprite.displayObject
2014-02-18 14:48:36 -05:00
wizardDisplayObject.x = 70
wizardDisplayObject.y = 120
2014-01-03 13:32:13 -05:00
wizardDisplayObject.scaleX = wizardDisplayObject.scaleY = scale
wizardDisplayObject.scaleX *= -1
2014-01-03 13:32:13 -05:00
@stage.addChild wizardDisplayObject
@stage.update()
2014-01-06 21:12:57 -05:00
onMouseOverButton: ->
@turnOnStageUpdates()
2014-01-08 22:18:23 -05:00
@wizardSprite?.queueAction 'cast'
2014-01-06 21:12:57 -05:00
onMouseOutButton: ->
@turnOffStageUpdates()
2014-01-08 22:18:23 -05:00
@wizardSprite?.queueAction 'idle'
2014-01-03 13:32:13 -05:00
updateStage: =>
@stage?.update()
2014-01-03 13:32:13 -05:00
willDisappear: ->
super()
clearInterval(@interval) if @interval
@interval = null
didReappear: ->
super()
@turnOnStageUpdates()
2014-02-11 18:38:36 -05:00
destroy: ->
@wizardSprite?.destroy()
super()