Can now drag the mouse to move around the map.

This commit is contained in:
Scott Erickson 2014-02-24 19:49:05 -08:00
parent 01b91eb7e2
commit 242342315f
3 changed files with 25 additions and 2 deletions

View file

@ -40,6 +40,8 @@ module.exports = class Camera extends CocoClass
'camera-zoom-out': 'onZoomOut'
'surface:mouse-scrolled': 'onMouseScrolled'
'level:restarted': 'onLevelRestarted'
'sprite:mouse-down': 'onMouseDown'
'sprite:dragged': 'onMouseDragged'
# TODO: Fix tests to not use mainLayer
constructor: (@canvasWidth, @canvasHeight, angle=Math.asin(0.75), hFOV=d2r(30)) ->
@ -164,6 +166,21 @@ module.exports = class Camera extends CocoClass
target = @target
@zoomTo target, newZoom, 0
onMouseDown: (e) ->
return if @dragDisabled
@lastPos = {x: e.originalEvent.rawX, y: e.originalEvent.rawY}
onMouseDragged: (e) ->
return if @dragDisabled
target = @boundTarget(@target, @zoom)
newPos = {
x: target.x + (@lastPos.x - e.originalEvent.rawX) / @zoom
y: target.y + (@lastPos.y - e.originalEvent.rawY) / @zoom
}
@zoomTo newPos, @zoom, 0
@lastPos = {x: e.originalEvent.rawX, y: e.originalEvent.rawY}
Backbone.Mediator.publish 'camera:dragged'
onLevelRestarted: ->
@setBounds(@firstBounds, false)

View file

@ -13,7 +13,7 @@ module.exports = class SpriteBoss extends CocoClass
'bus:player-left': 'onPlayerLeft'
'level-set-debug': 'onSetDebug'
'level-highlight-sprites': 'onHighlightSprites'
'sprite:mouse-down': 'onSpriteMouseDown'
'sprite:mouse-up': 'onSpriteMouseUp'
'surface:stage-mouse-down': 'onStageMouseDown'
'level-select-sprite': 'onSelectSprite'
'level-suppress-selection-sounds': 'onSuppressSelectionSounds'
@ -21,6 +21,7 @@ module.exports = class SpriteBoss extends CocoClass
'level:restarted': 'onLevelRestarted'
'god:new-world-created': 'onNewWorld'
'tome:cast-spells': 'onCastSpells'
'camera:dragged': 'onCameraDragged'
constructor: (@options) ->
super()
@ -226,8 +227,12 @@ module.exports = class SpriteBoss extends CocoClass
onSelectSprite: (e) ->
@selectThang e.thangID, e.spellName
onSpriteMouseDown: (e) ->
onCameraDragged: ->
@dragged = true
onSpriteMouseUp: (e) ->
return if key.shift and @options.choosing
return @dragged = false if @dragged
sprite = if e.sprite?.thang?.isSelectable then e.sprite else null
@selectSprite e, sprite

View file

@ -144,6 +144,7 @@ module.exports = class ThangsTabView extends View
@surface.playing = false
@surface.setWorld @world
@surface.camera.zoomTo({x:262, y:-164}, 1.66, 0)
@surface.camera.dragDisabled = true
destroy: ->
@selectAddThangType null