play.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. $(function() {
  2. /* socket.io */
  3. $socket.on('move', function (data) {
  4. movePiece(from=data.move.from, to=data.move.to, promotion=data.move.promotion, rcvd=true);
  5. if (typeof document.hidden === undefined) return;
  6. if (document.hidden) {
  7. var title = $('title').text();
  8. $('title').text('* ' + title);
  9. $(window).on('focus', removeAsterisk);
  10. function removeAsterisk(e) {
  11. $('title').text(title);
  12. $(window).off('focus', removeAsterisk);
  13. }
  14. }
  15. });
  16. function movePieceFromHandler(e) {
  17. var piece = $(this);
  18. if ((piece.hasClass('white') && $side !== 'w') ||
  19. (piece.hasClass('black') && $side !== 'b')) {
  20. if ($piece) {
  21. movePiece(
  22. from=$piece.parent().data('id').toLowerCase(),
  23. to=$(this).parent().data('id').toLowerCase(),
  24. promotion=$('#promotion option:selected').val()
  25. );
  26. }
  27. } else {
  28. if ($chess.turn() !== $side) {
  29. return false;
  30. }
  31. if (e && $piece && isSelected($(this).parent())) {
  32. unselectPiece($piece.parent());
  33. $piece = null;
  34. } else {
  35. if ($piece) {
  36. unselectPiece($piece.parent());
  37. $piece = null;
  38. }
  39. $piece = $(this);
  40. selectPiece($piece.parent());
  41. }
  42. }
  43. if (e) { // only on click event, not drag and drop
  44. e.stopImmediatePropagation();
  45. e.preventDefault();
  46. }
  47. }
  48. function dndSupported() {
  49. return 'draggable' in document.createElement('span');
  50. }
  51. function dragstartHandler(e) {
  52. var el = $(this);
  53. $drgSrcEl = el;
  54. $drgSrcEl.parent().addClass('moving');
  55. e.originalEvent.dataTransfer.effectAllowed = 'move';
  56. e.originalEvent.dataTransfer.setData('text/html', el.html());
  57. movePieceFromHandler.call(this, undefined);
  58. }
  59. function dropHandler(e) {
  60. e.stopPropagation();
  61. e.preventDefault();
  62. movePieceToHandler.call(this, undefined);
  63. }
  64. });