This repository has been archived on 2024-04-29. You can view files and clone it, but cannot push or open issues or pull requests.
node-fftcg/client/scripts/20-comp-BigCard.coffee

87 lines
1.9 KiB
CoffeeScript

# intermediate config
bcConf = Crafty.clone CONF.bigcard
################
# BigCard
################
Crafty.c 'BigCard',
# Mouse interactivity, Tween (animation smooth)
required: '2D, Canvas, Mouse, MouseWheel, Draggable, Tween'
# always in focus layer
init: ->
@z = CONF.layer.focus
return
events:
# copy attributes of target card
Copy: (target) ->
@target = target
@attr {
x: @target._x
y: @target._y
w: @target._w
h: @target._h
alpha: 0.5
}
return
# transition into zoom version
Enlarge: ->
@tween {
x: bcConf.x
y: bcConf.y
w: bcConf.w
h: bcConf.h
alpha: 1
}, CONF.anim.time, CONF.anim.func
return
# fade out and destroy
Fade: ->
# remove this on finished animation
@one 'TweenEnd', ->
@destroy()
return
# transition back to attributes of target card
@tween {
x: @target._x
y: @target._y
w: @target._w
h: @target._h
alpha: 0.5
}, CONF.anim.time, CONF.anim.func
return
# fade on right click, reset on middle click
MouseUp: (e) ->
switch e.mouseButton
when Crafty.mouseButtons.RIGHT
@trigger 'Fade'
when Crafty.mouseButtons.MIDDLE
# reset intermediate config, then re-zoom this
bcConf = Crafty.clone CONF.bigcard
@trigger 'Enlarge'
return
# zoom in and out
MouseWheelScroll: (e) ->
if e.target == @
# new attributes
@attr {
w: @_w * (1 + e.direction * 0.1)
h: @_h * (1 + e.direction * 0.1)
}
# update intermediate config
bcConf.w = @_w
bcConf.h = @_h
return
return
StopDrag: ->
# update intermediate config
bcConf.x = @_x
bcConf.y = @_y
return