mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-03-24 19:59:53 -04:00
Initial, basically working PlayGameDevLevelView
This commit is contained in:
parent
8c48e4fc14
commit
25e348c5ad
3 changed files with 64 additions and 1 deletions
|
@ -132,6 +132,7 @@ module.exports = class CocoRouter extends Backbone.Router
|
||||||
'play/ladder/:levelID': go('ladder/LadderView')
|
'play/ladder/:levelID': go('ladder/LadderView')
|
||||||
'play/ladder': go('ladder/MainLadderView')
|
'play/ladder': go('ladder/MainLadderView')
|
||||||
'play/level/:levelID': go('play/level/PlayLevelView')
|
'play/level/:levelID': go('play/level/PlayLevelView')
|
||||||
|
'play/game-dev-level/:levelID/:sessionID': go('play/level/PlayGameDevLevelView')
|
||||||
'play/spectate/:levelID': go('play/SpectateView')
|
'play/spectate/:levelID': go('play/SpectateView')
|
||||||
'play/:map': go('play/CampaignView')
|
'play/:map': go('play/CampaignView')
|
||||||
|
|
||||||
|
@ -192,7 +193,7 @@ module.exports = class CocoRouter extends Backbone.Router
|
||||||
@listenToOnce application.moduleLoader, 'load-complete', ->
|
@listenToOnce application.moduleLoader, 'load-complete', ->
|
||||||
@routeDirectly(path, args, options)
|
@routeDirectly(path, args, options)
|
||||||
return
|
return
|
||||||
return @openView @notFoundView() if not ViewClass
|
return go('NotFoundView') if not ViewClass
|
||||||
view = new ViewClass(options, args...) # options, then any path fragment args
|
view = new ViewClass(options, args...) # options, then any path fragment args
|
||||||
view.render()
|
view.render()
|
||||||
@openView(view)
|
@openView(view)
|
||||||
|
|
3
app/templates/play/level/play-game-dev-level-view.jade
Normal file
3
app/templates/play/level/play-game-dev-level-view.jade
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#canvas-wrapper
|
||||||
|
canvas(width=924, height=589)#webgl-surface
|
||||||
|
canvas(width=924, height=589)#normal-surface
|
59
app/views/play/level/PlayGameDevLevelView.coffee
Normal file
59
app/views/play/level/PlayGameDevLevelView.coffee
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
RootView = require 'views/core/RootView'
|
||||||
|
|
||||||
|
GameUIState = require 'models/GameUIState'
|
||||||
|
God = require 'lib/God'
|
||||||
|
LevelLoader = require 'lib/LevelLoader'
|
||||||
|
GoalManager = require 'lib/world/GoalManager'
|
||||||
|
Surface = require 'lib/surface/Surface'
|
||||||
|
ThangType = require 'models/ThangType'
|
||||||
|
|
||||||
|
module.exports = class PlayGameDevLevelView extends RootView
|
||||||
|
id: 'play-game-dev-level-view'
|
||||||
|
template: require 'templates/play/level/play-game-dev-level-view'
|
||||||
|
|
||||||
|
subscriptions:
|
||||||
|
'level:started': 'onLevelStarted'
|
||||||
|
|
||||||
|
initialize: (@options, @levelID, @sessionID) ->
|
||||||
|
@gameUIState = new GameUIState()
|
||||||
|
@god = new God({ @gameUIState })
|
||||||
|
@levelLoader = new LevelLoader({ @supermodel, @levelID, @sessionID, observing: true })
|
||||||
|
@listenToOnce @levelLoader, 'world-necessities-loaded', @onWorldNecessitiesLoaded
|
||||||
|
@listenTo @levelLoader, 'world-necessity-load-failed', @onWorldNecessityLoadFailed
|
||||||
|
|
||||||
|
onWorldNecessitiesLoaded: ->
|
||||||
|
{ @level, @session, @world, @classMap } = @levelLoader
|
||||||
|
levelObject = @level.serialize(@supermodel, @session)
|
||||||
|
@god.setLevel(levelObject)
|
||||||
|
@god.setWorldClassMap(@classMap)
|
||||||
|
@goalManager = new GoalManager(@world, @level.get('goals'), @team)
|
||||||
|
@god.setGoalManager(@goalManager)
|
||||||
|
|
||||||
|
onWorldNecessityLoadFailed: ->
|
||||||
|
# TODO: handle these and other failures with Promises
|
||||||
|
|
||||||
|
onLoaded: ->
|
||||||
|
_.defer => @onLevelLoaderLoaded()
|
||||||
|
|
||||||
|
onLevelLoaderLoaded: ->
|
||||||
|
return unless @levelLoader.progress() is 1 # double check, since closing the guide may trigger this early
|
||||||
|
@levelLoader.destroy()
|
||||||
|
@levelLoader = null
|
||||||
|
@initSurface()
|
||||||
|
|
||||||
|
initSurface: ->
|
||||||
|
webGLSurface = @$('canvas#webgl-surface')
|
||||||
|
normalSurface = @$('canvas#normal-surface')
|
||||||
|
@surface = new Surface(@world, normalSurface, webGLSurface, {
|
||||||
|
thangTypes: @supermodel.getModels(ThangType)
|
||||||
|
levelType: @level.get('type', true)
|
||||||
|
@gameUIState
|
||||||
|
})
|
||||||
|
worldBounds = @world.getBounds()
|
||||||
|
bounds = [{x: worldBounds.left, y: worldBounds.top}, {x: worldBounds.right, y: worldBounds.bottom}]
|
||||||
|
@surface.camera.setBounds(bounds)
|
||||||
|
@surface.camera.zoomTo({x: 0, y: 0}, 0.1, 0)
|
||||||
|
@surface.setWorld(@world)
|
||||||
|
|
||||||
|
onLevelStarted: ->
|
||||||
|
console.log 'level started'
|
Loading…
Add table
Reference in a new issue