diff --git a/index.html b/index.html index 427877d..c961122 100644 --- a/index.html +++ b/index.html @@ -217,6 +217,9 @@ var currentlyIterating = false; var mineChance = 0.2; var inputEnabled = true; + var clickholdMs = 200; + var timeout; //hold timer + var mouseHeld = false; $(document).ready(function() { function drawGameBoard() { @@ -309,10 +312,10 @@ }); //refresh last row to reflect new rows beneath - $('li.revealed').last().parent().children('li.revealed').mousedown(); + $('li.revealed').last().parent().children('li.revealed').mouseup(); //click blank tiles - $('li.revealed:not(.mine):empty').mousedown(); + $('li.revealed:not(.mine):empty').mouseup(); //this is a bit of a hack :( oh well $('ul:gt(' + gameBoardHeight + ')').remove(); @@ -497,16 +500,13 @@ //game over, or lose a life, or whatever //... - } else if (parseInt($(this).text()) === $(this).getAdjacentTiles().filter('.flagged').length) { + } else if (!automated && parseInt($(this).text()) === $(this).getAdjacentTiles().filter('.flagged, .revealed.mine').length) { //already clicked; use middle click reveal functionality - //$(this).middleClick(); - + //number of flags matches number of adjacent mines - if (!automated && parseInt($(this).text()) === $(this).getAdjacentTiles().filter('.flagged, .revealed.mine').length) { - $(this).getAdjacentTiles().filter(':not(.flagged)').each(function() { - $(this).mousedown(); - }); - } + $(this).getAdjacentTiles().filter(':not(.flagged, .revealed)').each(function() { + $(this).mouseup(); + }); } else { $(this).addClass("revealed"); @@ -518,7 +518,7 @@ //if no mines adjacent, cascade! if ($(this).countMinesAdjacent() == 0) { - $(this).getAdjacentTiles().filter(':not(.revealed)').mousedown(); + $(this).getAdjacentTiles().filter(':not(.revealed)').mouseup(); } } @@ -529,7 +529,7 @@ //number of flags matches number of adjacent mines if (parseInt($(this).text()) === $(this).getAdjacentTiles().filter('.flagged, .revealed.mine').length) { $(this).getAdjacentTiles().filter(':not(.flagged)').each(function() { - $(this).mousedown(); + $(this).mouseup(); }); } } @@ -541,17 +541,41 @@ } else { $(this).toggleClass("flagged"); } + + clearTimeout(timeout); } $(document).on("contextmenu", "li", function(event) { event.preventDefault(); }); + $(document).on("mousedown", "li", function(event) { + var x = $(this).getX(); + var y = $(this).getY(); + + timeout = setTimeout(function() { + $('ul:eq(' + y + ') li:eq(' + x + ')').rightClick(); + mouseHeld = true; + }, clickholdMs); + }); + + $(document).on("mouseleave", "li", function(event) { + clearTimeout(timeout); + }); + + $(document).on("mouseup", "li", function(event) { event.preventDefault(); + clearTimeout(timeout); + if (!inputEnabled) return; + if (mouseHeld) { + mouseHeld = false; + return; + } + switch (event.which) { case 3: $(this).rightClick();