Merge branch 'thanish-move-wizard' of git://github.com/mnmtanish/codecombat

This commit is contained in:
Nick Winter 2014-03-03 07:22:44 -08:00
commit f2f0a993af
3 changed files with 39 additions and 9 deletions

View file

@ -42,6 +42,7 @@ module.exports = class Camera extends CocoClass
'level:restarted': 'onLevelRestarted'
'sprite:mouse-down': 'onMouseDown'
'sprite:dragged': 'onMouseDragged'
'camera-zoom-to': 'onZoomTo'
# TODO: Fix tests to not use mainLayer
constructor: (@canvasWidth, @canvasHeight, angle=Math.asin(0.75), hFOV=d2r(30)) ->
@ -169,7 +170,7 @@ module.exports = class Camera extends CocoClass
onMouseDown: (e) ->
return if @dragDisabled
@lastPos = {x: e.originalEvent.rawX, y: e.originalEvent.rawY}
onMouseDragged: (e) ->
return if @dragDisabled
target = @boundTarget(@target, @zoom)
@ -180,7 +181,7 @@ module.exports = class Camera extends CocoClass
@zoomTo newPos, @zoom, 0
@lastPos = {x: e.originalEvent.rawX, y: e.originalEvent.rawY}
Backbone.Mediator.publish 'camera:dragged'
onLevelRestarted: ->
@setBounds(@firstBounds, false)
@ -220,7 +221,7 @@ module.exports = class Camera extends CocoClass
newTarget ?= {x:0, y:0}
newTarget = (@newTarget or @target) if @locked
newZoom = Math.min((Math.max @minZoom, newZoom), MAX_ZOOM)
thangType = @target?.sprite?.thangType
if thangType
@offset = _.clone(thangType.get('positions')?.torso or {x: 0, y:0})
@ -229,7 +230,7 @@ module.exports = class Camera extends CocoClass
@offset.y *= scale
else
@offset = {x: 0, y:0}
return if @zoom is newZoom and newTarget is newTarget.x and newTarget.y is newTarget.y
@finishTween(true)
@ -247,7 +248,7 @@ module.exports = class Camera extends CocoClass
@target = newTarget
@zoom = newZoom
@updateZoom true
focusedOnSprite: ->
return @target?.name
@ -308,3 +309,6 @@ module.exports = class Camera extends CocoClass
createjs.Tween.removeTweens @
@finishTween = null
super()
onZoomTo: (pos, time) ->
@zoomTo(@worldToSurface(pos), @zoom, time)

View file

@ -21,6 +21,7 @@ module.exports = class WizardSprite extends IndieSprite
'surface:sprite-selected': 'onSpriteSelected'
'echo-self-wizard-sprite': 'onEchoSelfWizardSprite'
'echo-all-wizard-sprites': 'onEchoAllWizardSprites'
'self-wizard:move': 'moveWizard'
constructor: (thangType, options) ->
if options?.isSelf
@ -102,7 +103,7 @@ module.exports = class WizardSprite extends IndieSprite
defaultPos: -> x: 35, y: 24, z: @thang.depth / 2 + @thang.bobHeight
move: (pos, duration) -> @setTarget(pos, duration)
setTarget: (newTarget, duration) ->
setTarget: (newTarget, duration, isLinear=false) ->
# ignore targets you're already heading for
targetPos = @getPosFromTarget(newTarget)
return if @targetPos and @targetPos.x is targetPos.x and @targetPos.y is targetPos.y
@ -115,7 +116,7 @@ module.exports = class WizardSprite extends IndieSprite
@shoveOtherWizards(true) if @targetSprite
@targetSprite = if isSprite then newTarget else null
@targetPos = targetPos
@beginMoveTween(duration)
@beginMoveTween(duration, isLinear)
@shoveOtherWizards()
Backbone.Mediator.publish('self-wizard:target-changed', {sender:@}) if @isSelf
@ -127,7 +128,7 @@ module.exports = class WizardSprite extends IndieSprite
return target if target.x?
return target.thang.pos
beginMoveTween: (duration=1000) ->
beginMoveTween: (duration=1000, isLinear=false) ->
# clear the old tween
createjs.Tween.removeTweens(@)
@ -140,8 +141,11 @@ module.exports = class WizardSprite extends IndieSprite
@updatePosition()
@endMoveTween()
return
if isLinear
ease = createjs.Ease.linear
else
ease = createjs.Ease.getPowInOut(3.0)
ease = createjs.Ease.getPowInOut(3.0)
createjs.Tween
.get(@)
.to({tweenPercentage:0.0}, duration, ease)
@ -225,3 +229,10 @@ module.exports = class WizardSprite extends IndieSprite
updateMarks: ->
super() if @displayObject.visible # not if we hid the wiz
moveWizard : (x, y) =>
interval = 500
position = {x: @targetPos.x+x, y: @targetPos.y+y}
@setTarget(position, interval, true)
@updatePosition()
Backbone.Mediator.publish 'camera-zoom-to', position, interval

View file

@ -36,6 +36,10 @@ module.exports = class PlaybackView extends View
'⌘+p, p, ctrl+p': 'onTogglePlay'
'⌘+[, ctrl+[': 'onScrubBack'
'⌘+], ctrl+]': 'onScrubForward'
'up': 'onMoveKey'
'down': 'onMoveKey'
'left': 'onMoveKey'
'right': 'onMoveKey'
constructor: ->
super(arguments...)
@ -215,3 +219,14 @@ module.exports = class PlaybackView extends View
$(window).off('resize', @onWindowResize)
@onWindowResize = null
super()
onMoveKey: (e) ->
e?.preventDefault()
yMovement = 0
xMovement = 0
yMovement += 2 if key.isPressed('up')
yMovement -= 2 if key.isPressed('down')
xMovement += 2 if key.isPressed('right')
xMovement -= 2 if key.isPressed('left')
console.log 'onMoveKey', xMovement, yMovement
Backbone.Mediator.publish 'self-wizard:move', xMovement, yMovement