X-Git-Url: https://jasonwoof.com/gitweb/?p=peach-cgt.git;a=blobdiff_plain;f=client.coffee;h=82570dd01d950e5c2e2a66b52eb758d4b98ee47f;hp=7f2267491f319c26559e7bd7aa8a8af24d4a9e78;hb=480b41bb7b13be95e5e0ed18c2a46692aedc11ad;hpb=3f89f7dbaf990e3f219c1c782fe55455eaa68cbc diff --git a/client.coffee b/client.coffee index 7f22674..82570dd 100644 --- a/client.coffee +++ b/client.coffee @@ -1,10 +1,11 @@ # globals $table = null table_height = 0 +card_height = 0 state = null server_url = null -message = (txt) -> +show_message = (txt) -> txt # FIXME implement chat box or something # timeout function with args in convenient order @@ -26,16 +27,14 @@ new_button = (text) -> $ $ "
#{text}
" # transform coordinates from client-side coords to server-side coords (or back) # this makes it so p2 view everything upside down (mirrored), but still sends coords rightside up -transform_coords = (coords) -> - ret = {left: coords.left, top: coords.top} - if state.agent is 'p2' - ret.top = table_height - ret.top - return ret +transform_x = (x) -> x +transform_y = (y) -> + return y unless state.agent is 'p2' + return table_height - card_height - y instantiate_card = (card) -> text = card.text - view_coords = transform_coords {left: card.x, top: card.y} - view = $ $ "
#{text}
" + view = $ $ "
#{text}
" button_box = $ $ '
' flip_button = new_button "flip over" mark_button = new_button "mark" @@ -53,8 +52,8 @@ instantiate_card = (card) -> $table.append view view.draggable stack: '.card' view.bind 'dragstop', (event, ui) -> - p = transform_coords view.position() - state.move state.agent, card.number, p.left, p.top + p = view.position() + state.move state.agent, card.number, transform_x(p.left), transform_y(p.top) card.view = view error_lag = 3 @@ -82,13 +81,13 @@ send_updates = -> type: 'POST' dataType: 'json' error: (xhr, status, error) -> - message "Network error while sending, you might want to refresh. Trying again in #{error_lag} seconds. (Status: #{status}, Error: #{error})" + show_message "Network error while sending, you might want to refresh. Trying again in #{error_lag} seconds. (Status: #{status}, Error: #{error})" for message in messages outgoing_messages.unshift message timeout error_lag * 1000, send_updates error_lag *= 2 success: (data, status, xhr) -> - message "update sent" + show_message "update sent" error_lag = 3 } @@ -123,8 +122,7 @@ init = -> if agent is me tell_server ['move', agent, card, x, y] else - coords = transform_coords {left: x, top: y} - state.cards[card].view.animate { left: "#{coords.left}px", top: "#{coords.top}px"}, 800 + 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 if agent is me @@ -149,5 +147,7 @@ init = -> $ -> $table = $ '#table' - table_height = $table.height() - 148 # FIXME auto-detect card height + table_height = $table.height() + card_height = $('#loading-card').outerHeight() + init()