$(document).ready(function() { initialize(); $('#bottombar').hide(); }); function showbottombar() { var isOffline = 'onLine' in navigator && !navigator.onLine; if (isOffline) { setTimeout(showbottombar, 1000); } else { window.iframeHasLoaded = true; if (gameState != 1) { $('#bottombar').fadeIn(150, 'linear'); } } } function hidebottombar() { $('#bottombar').fadeOut(150, 'linear'); } function initialize(a) { 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; //render.js window.op = 0; window.saveState = localStorage.getItem("saveState") || "{}"; if (saveState !== "{}") { op = 1; } //input.js //all of main.js //main.js 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 (/Mobile|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { settings = { platform: "mobile", startDist: 227, creationDt: 40, baseScale: 1.4, scale: 1, prevScale: 1, baseHexWidth: 87, hexWidth: 87, baseBlockHeight: 20, blockHeight: 20, rows: 7, speedModifier: 0.73, creationSpeedModifier: 0.73, comboTime: 240 }; } else { settings = { 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, creationSpeedModifier: 0.65, comboTime: 240 }; $("#inst_main_body").html("The goal of Hextris is to stop blocks from leaving the inside of the outer gray hexagon<br><br>Either press the right and left arrow keys or tap the left and right sides of the screen to rotate the Hexagon<br><br>Clear blocks by making 3 or more blocks of the same color touch<br><br>Get points by clearing blocks<br><br>Time left before your combo streak disappears is indicated shown by <span style='color:#f1c40f;'>the</span> <span style='color:#e74c3c'>colored<span> <span style='color:#3498db'>lines</span> <span style='color:#2ecc71'>in</span> the outer hexagon<br><br>Pause by pressing <i class = 'fa fa-pause'></i> or the letter <b>p</b><br>Restart by pressing <i class = 'fa fa-refresh'></i> or <b>enter</b><br>Bring up this menu by pressing <i class = 'fa fa-info-circle'><br><br><a href = 'https://github.com/Hextris/hextris/issues'>Found a bug? Go here</a"); } 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.isGameOver = 3; 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(); 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 ($('#helpScreen').is(':visible')) { $('#helpScreen').fadeOut(150, "linear"); } if (importing == 1) { init(1); } 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 < 50 && $('.helpText').is(':visible')) { showHelp(); return; } } function handleClickBefore(e) { var x = e.clientX; var y = e.clientY; if (x < 120 && y < 50 && $('.helpText').is(':visible')) { showHelp(); return; } }