1 # this file is used by the client and server.
4 constructor: (agent) ->
13 on: (event, callback) ->
16 hooks[event].push callback
17 trigger: (event, args...) ->
18 return unless hooks[event]?
19 for callback in hooks[event]
20 callback.apply this, args
21 move: (agent, card, x, y) -> # FIXME add pile argument
22 # FIXME what to do on error?
23 return unless cards[card]? #?.pile?
24 #cur_pile = cards[card].pile
25 #if pile isnt cur_pile
30 @trigger 'move', agent, card, x, y # FIXME add pile argument
32 mark: (agent, card, state) ->
33 # FIXME what to do on error?
34 return unless cards[card]?.marked? #?.pile?
36 @trigger 'mark', agent, state
38 flip: (agent, card, state) ->
39 # FIXME what to do on error?
40 return unless cards[card]?.flipped? #?.pile?
42 @trigger 'flip', agent, state
44 # FIXME implement set_pile(pile, card_order_array)
47 trigger 'delete_all_cards'
51 card.number = @cards.length
54 unless @piles[card.pile]?
55 @piles[card.pile] = []
56 @piles[card.pile].push card
57 trigger 'all_new_cards'