JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
new cards in front, moved cards in front
authorJason Woofenden <jason@jasonwoof.com>
Tue, 1 Nov 2011 01:55:30 +0000 (21:55 -0400)
committerJason Woofenden <jason@jasonwoof.com>
Tue, 1 Nov 2011 01:55:30 +0000 (21:55 -0400)
client.coffee

index 82570dd..e02df72 100644 (file)
@@ -4,6 +4,7 @@ table_height = 0
 card_height = 0
 state = null
 server_url = null
+top_card_z = 0 # css z-index of front-most card
 
 show_message = (txt) -> txt
        # FIXME implement chat box or something
@@ -32,9 +33,14 @@ transform_y = (y) ->
        return y unless state.agent is 'p2'
        return table_height - card_height - y
 
+next_card_z = -> return top_card_z += 1
+
+bring_card_to_front = (card) ->
+       card.view.css "z-index": next_card_z()
+
 instantiate_card = (card) ->
        text = card.text
-       view = $ $ "<div class=\"card\" style=\"left: #{transform_x(card.x)}px; top: #{transform_y(card.y)}px\"><span class=\"cardtext\">#{text}</span></div>"
+       view = $ $ "<div class=\"card\" style=\"left: #{transform_x(card.x)}px; top: #{transform_y(card.y)}px; z-index: #{next_card_z()}\"><span class=\"cardtext\">#{text}</span></div>"
        button_box = $ $ '<div/>'
        flip_button = new_button "flip over"
        mark_button = new_button "mark"
@@ -52,6 +58,7 @@ instantiate_card = (card) ->
        $table.append view
        view.draggable stack: '.card'
        view.bind 'dragstop', (event, ui) ->
+               top_card_z = parseInt view.css 'z-index'
                p = view.position()
                state.move state.agent, card.number, transform_x(p.left), transform_y(p.top)
        card.view = view
@@ -122,6 +129,7 @@ init = ->
                if agent is me
                        tell_server ['move', agent, card, x, y]
                else
+                       bring_card_to_front state.cards[card]
                        state.cards[card].view.animate { left: "#{transform_x x}px", top: "#{transform_y y}px"}, 800
        state.on 'mark', (agent, card, state) ->
                @cards[card].view.toggleClass 'marked', state