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();