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/game/20-comp-BigCard.coffee

107 lines
2.2 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
}
@origin 'center'
return
# transition into zoom version
Enlarge: ->
# set new origin on finished animation
@one 'TweenEnd', ->
@origin 'center'
return
# start animation
@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 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 reset zoom
bcConf = Crafty.clone CONF.bigcard
@trigger 'Enlarge'
return
# zoom in and out
MouseWheelScroll: (e) ->
if e.target == @
# save origin
origin =
x: @ox
y: @oy
# new attributes
@attr {
w: @_w * (1 + e.direction * 0.1)
h: @_h * (1 + e.direction * 0.1)
}
@origin 'center'
# restore origin
@attr {
ox: origin.x
oy: origin.y
}
# update intermediate config
bcConf.x = @_x
bcConf.y = @_y
bcConf.w = @_w
bcConf.h = @_h
return
StopDrag: ->
# update intermediate config
bcConf.x = @_x
bcConf.y = @_y
return