Added times to runtime errors. Don't load ThangTypes for Thangs that don't exist on the first frame of the world.

This commit is contained in:
Nick Winter 2014-05-15 11:27:51 -07:00
parent f653aa3375
commit c1f9d51b37
5 changed files with 18 additions and 7 deletions

View file

@ -136,7 +136,7 @@ module.exports = class LevelLoader extends CocoClass
@initWorld()
@supermodel.clearMaxProgress()
return if @headless and not @editorMode
thangsToLoad = _.uniq( (t.spriteName for t in @world.thangs) )
thangsToLoad = _.uniq( (t.spriteName for t in @world.thangs when t.exists) )
nameModelTuples = ([thangType.get('name'), thangType] for thangType in @thangNames.models)
nameModelMap = _.zipObject nameModelTuples
@spriteSheetsToBuild = []

View file

@ -425,6 +425,9 @@ module.exports = Surface = class Surface extends CocoClass
oldHeight = parseInt @canvas.attr('height'), 10
newWidth = @canvas.width()
newHeight = @canvas.height()
#if InstallTrigger? # Firefox rendering performance goes down as canvas size goes up
# newWidth = Math.min 924, newWidth
# newHeight = Math.min 589, newHeight
@canvas.attr width: newWidth, height: newHeight
@stage.scaleX *= newWidth / oldWidth
@stage.scaleY *= newHeight / oldHeight

View file

@ -26,7 +26,7 @@ module.exports = class ThangType extends CocoModel
@buildActions()
@spriteSheets = {}
@building = {}
isFullyLoaded: ->
# TODO: Come up with a better way to identify when the model doesn't have everything needed to build the sprite. ie when it's a projection without all the required data.
return @get('actions') or @get('raster') # needs one of these two things
@ -154,13 +154,13 @@ module.exports = class ThangType extends CocoModel
@builder.on 'complete', @onBuildSpriteSheetComplete, @, true, key
return true
spriteSheet = @builder.build()
console.debug "Built #{@get('name')} in #{new Date().getTime() - @t0}ms."
console.debug "Built #{@get('name')}#{if @options.portraitOnly then ' portrait' else ''} in #{new Date().getTime() - @t0}ms."
@spriteSheets[key] = spriteSheet
delete @building[key]
spriteSheet
onBuildSpriteSheetComplete: (e, key) ->
console.log "Built #{@get('name')} async in #{new Date().getTime() - @builder.t0}ms." if @builder
console.log "Built #{@get('name')}#{if @options.portraitOnly then ' portrait' else ''} async in #{new Date().getTime() - @builder.t0}ms." if @builder
buildQueue = buildQueue.slice(1)
buildQueue[0].t0 = new Date().getTime() if buildQueue[0]
buildQueue[0]?.buildAsync()

View file

@ -32,6 +32,7 @@ module.exports = class MyMatchesTabView extends CocoView
return @finishRendering() unless ids.length
success = (nameMap) =>
return if @destroyed
for session in @sessions.models
for match in session.get('matches') or []
opponent = match.opponents[0]
@ -178,10 +179,10 @@ module.exports = class MyMatchesTabView extends CocoView
@setRankingButtonText(button, 'submitting')
success = =>
@setRankingButtonText(button, 'submitted')
@setRankingButtonText(button, 'submitted') unless @destroyed
failure = (jqxhr, textStatus, errorThrown) =>
console.log jqxhr.responseText
@setRankingButtonText(button, 'failed')
@setRankingButtonText(button, 'failed') unless @destroyed
transpiledCode = @transpileSession session
ajaxData =

View file

@ -18,7 +18,14 @@ module.exports = class ProblemAlertView extends View
getRenderData: (context={}) ->
context = super context
format = (s) -> s?.replace('<', '&lt;').replace('>', '&gt;').replace("\n", "<br>")
context.message = format @problem.aetherProblem.message
message = @problem.aetherProblem.message
age = @problem.aetherProblem.userInfo.age
if age?
if /^Line \d+:/.test message
message = message.replace /^(Line \d+)/, "$1, time #{age.toFixed(1)}"
else
message = "Time #{age.toFixed(1)}: #{message}"
context.message = format message
context.hint = format @problem.aetherProblem.hint
context