X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=common.coffee;h=f57c4d4c6807800f6d520f9e5d9fb0d2c2181805;hb=e5d2d2f7c8ee13e32caebf343b6d4046ca802b11;hp=ce09f13aa469e2dbea7aab657c8a5a8fba97aae3;hpb=4ae9f3f4c527c3565fa7e82c114f025053927df3;p=peach-cgt.git diff --git a/common.coffee b/common.coffee index ce09f13..f57c4d4 100644 --- a/common.coffee +++ b/common.coffee @@ -12,7 +12,6 @@ class GameState @agent = agent @hooks = {} @cards = [] - @piles = {} on: (event, callback) -> unless @hooks[event]? @hooks[event] = [] @@ -21,16 +20,19 @@ class GameState return unless @hooks[event]? for callback in @hooks[event] callback.apply this, args - move: (agent, card, x, y) -> # FIXME add pile argument + move: (agent, card, x, y, z, pile) -> # FIXME what to do on error? - return unless @cards[card]? #?.pile? - #cur_pile = cards[card].pile - #if pile isnt cur_pile + return unless @cards[card]? @cards[card].x = x @cards[card].y = y + @cards[card].z = z + if pile? + @cards[card].pile = pile + else if @cards[card].pile? + delete @cards[card].pile - @trigger 'move', agent, card, x, y # FIXME add pile argument + @trigger 'move', agent, card, x, y, z, pile mark: (agent, card, state) -> # FIXME what to do on error? @@ -46,17 +48,23 @@ class GameState # FIXME implement set_pile(pile, card_order_array) - set_cards: (cards) -> + set_cards: (agent, cards) -> @cards = [] - @piles = {} for card in cards - card.number = @cards.length + card.number = @cards.length unless card.number + card.z = @cards.length unless card.z @cards.push card - if card.pile? - unless @piles[card.pile]? - @piles[card.pile] = [] - @piles[card.pile].push card - @trigger 'set_cards', @cards + @trigger 'set_cards', agent, @cards + + new_cards: (agent, cards) -> + for card in cards + card.number = @cards.length unless card.number + card.z = @cards.length unless card.z + @cards.push card + @trigger 'new_cards', agent, cards + + send_state: (agent) -> + @trigger 'send_state', agent process_messages: (messages) -> unless typeof messages is 'array' or typeof messages is 'object' @@ -64,7 +72,9 @@ class GameState return typeof messages for message in messages - unless message instanceof Array and message[0]? and message[0] in ['move', 'mark', 'flip', 'set_cards'] + unless message instanceof Array and message[0]? and message[0] in ['move', 'mark', 'flip', 'set_cards', 'send_state', 'new_cards'] + if console?.log? + console.log "Got unrecognized message: #{JSON.stringify message}" # FIXME what to do on error? return 2 method = message.shift()