$(document).ready(function() { initialize(); }); function initialize(a) { window.rush = 1; window.lastTime = Date.now(); window.iframHasLoaded = false; window.colors = ["#e74c3c", "#f1c40f", "#3498db", "#2ecc71"]; window.hexColorsToTintedColors = { "#e74c3c": "rgb(241,163,155)", "#f1c40f": "rgb(246,223,133)", "#3498db": "rgb(151,201,235)", "#2ecc71": "rgb(150,227,183)" }; window.rgbToHex = { "rgb(231,76,60)": "#e74c3c", "rgb(241,196,15)": "#f1c40f", "rgb(52,152,219)": "#3498db", "rgb(46,204,113)": "#2ecc71" }; window.rgbColorsToTintedColors = { "rgb(231,76,60)": "rgb(241,163,155)", "rgb(241,196,15)": "rgb(246,223,133)", "rgb(52,152,219)": "rgb(151,201,235)", "rgb(46,204,113)": "rgb(150,227,183)" }; window.hexagonBackgroundColor = 'rgb(236, 240, 241)'; window.hexagonBackgroundColorClear = 'rgba(236, 240, 241, 0.5)'; window.centerBlue = 'rgb(44,62,80)'; window.angularVelocityConst = 4; window.scoreOpacity = 0; window.textOpacity = 0; window.prevGameState = undefined; window.op = 0; window.saveState = localStorage.getItem("saveState") || "{}"; if (saveState !== "{}") { op = 1; } window.textShown = false; window.requestAnimFrame = (function() { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / framerate); }; })(); $('#clickToExit').bind('click', toggleDevTools); window.settings; if (/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { $('.rrssb-email').remove(); settings = { os: "other", platform: "mobile", startDist: 227, creationDt: 60, baseScale: 1.4, scale: 1, prevScale: 1, baseHexWidth: 87, hexWidth: 87, baseBlockHeight: 20, blockHeight: 20, rows: 7, speedModifier: 0.73, speedUpKeyHeld: false, creationSpeedModifier: 0.73, comboTime: 310 }; } else { settings = { os: "other", platform: "nonmobile", baseScale: 1, startDist: 340, creationDt: 9, scale: 1, prevScale: 1, hexWidth: 65, baseHexWidth: 87, baseBlockHeight: 20, blockHeight: 15, rows: 8, speedModifier: 0.65, speedUpKeyHeld: false, creationSpeedModifier: 0.65, comboTime: 310 }; } if(/Android/i.test(navigator.userAgent)) { settings.os = "android"; } if(navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i)){ settings.os="ios"; } window.canvas = document.getElementById('canvas'); window.ctx = canvas.getContext('2d'); window.trueCanvas = { width: canvas.width, height: canvas.height }; scaleCanvas(); window.framerate = 60; window.history = {}; window.score = 0; window.scoreAdditionCoeff = 1; window.prevScore = 0; window.numHighScores = 3; highscores = []; if (localStorage.getItem('highscores')) { try { highscores = JSON.parse(localStorage.getItem('highscores')); } catch (e) { highscores = []; } } window.blocks = []; window.MainHex; window.gdx = 0; window.gdy = 0; window.devMode = 0; window.lastGen = undefined; window.prevTimeScored = undefined; window.nextGen = undefined; window.spawnLane = 0; window.importing = 0; window.importedHistory = undefined; window.startTime = undefined; window.gameState; setStartScreen(); if (a != 1) { window.canRestart = 1; window.onblur = function(e) { if (gameState == 1) { pause(); } }; $('#startBtn').off(); if (settings.platform == 'mobile') { $('#startBtn').on('touchstart', startBtnHandler); } else { $('#startBtn').on('mousedown', startBtnHandler); } document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false); $(window).resize(scaleCanvas); $(window).unload(function() { if (gameState == 1 || gameState == -1 || gameState === 0) localStorage.setItem("saveState", exportSaveState()); else localStorage.setItem("saveState", "{}"); }); addKeyListeners(); (function(i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function() { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); ga('create', 'UA-51272720-1', 'teamsnowman.github.io'); ga('send', 'pageview'); document.addEventListener("pause", handlePause, false); document.addEventListener("backbutton", handlePause, false); document.addEventListener("menubutton", handlePause, false); //menu button on android setTimeout(function() { if (settings.platform == "mobile") { try { document.body.removeEventListener('touchstart', handleTapBefore, false); } catch (e) { } try { document.body.removeEventListener('touchstart', handleTap, false); } catch (e) { } document.body.addEventListener('touchstart', handleTapBefore, false); } else { try { document.body.removeEventListener('mousedown', handleClickBefore, false); } catch (e) { } try { document.body.removeEventListener('mousedown', handleClick, false); } catch (e) { } document.body.addEventListener('mousedown', handleClickBefore, false); } }, 1); } } function startBtnHandler() { setTimeout(function() { if (settings.platform == "mobile") { try { document.body.removeEventListener('touchstart', handleTapBefore, false); } catch (e) { } try { document.body.removeEventListener('touchstart', handleTap, false); } catch (e) { } document.body.addEventListener('touchstart', handleTap, false); } else { try { document.body.removeEventListener('mousedown', handleClickBefore, false); } catch (e) { } try { document.body.removeEventListener('mousedown', handleClick, false); } catch (e) { } document.body.addEventListener('mousedown', handleClick, false); } }, 5); if (!canRestart) return false; if ($('#openSideBar').is(':visible')) { $('#openSideBar').fadeOut(150, "linear"); } if (importing == 1) { init(1); checkVisualElements(0); } else { resumeGame(); } } function handlePause() { if (gameState == 1 || gameState == 2) { pause(); } } function handleTap(e) { handleClickTap(e.changedTouches[0].clientX, e.changedTouches[0].clientY); } function handleClick(e) { handleClickTap(e.clientX, e.clientY); } function handleTapBefore(e) { var x = e.changedTouches[0].clientX; var y = e.changedTouches[0].clientY; if (x < 120 && y < 83 && $('.helpText').is(':visible')) { showHelp(); return; } } function handleClickBefore(e) { var x = e.clientX; var y = e.clientY; if (x < 120 && y < 83 && $('.helpText').is(':visible')) { showHelp(); return; } }