Файловый менеджер - Редактировать - /home/jogoso94/public_html/jogos/straight_4/js/main.js
�азад
/* Platform.js <https://mths.be/platform> Copyright 2014-2018 Benjamin Tan <https://bnjmnt4n.now.sh/> Copyright 2011-2013 John-David Dalton Available under MIT license <https://mths.be/mit> */ (function() { function a(a) { a = String(a); return a.charAt(0).toUpperCase() + a.slice(1) } function c(a, d) { var e = -1, c = a ? a.length : 0; if ("number" == typeof c && -1 < c && c <= x) for (; ++e < c;) d(a[e], e, a); else f(a, d) } function b(d) { d = String(d).replace(/^ +| +$/g, ""); return /^(?:webOS|i(?:OS|P))/.test(d) ? d : a(d) } function f(a, d) { for (var e in a) z.call(a, e) && d(a[e], e, a) } function e(d) { return null == d ? a(d) : E.call(d).slice(8, -1) } function d(a, d) { var e = null != a ? typeof a[d] : "number"; return !/^(?:boolean|number|string|undefined)$/.test(e) && ("object" == e ? !!a[d] : !0) } function l(a) { return String(a).replace(/([ -])(?!$)/g, "$1?") } function g(a, d) { var e = null; c(a, function(c, b) { e = d(e, c, b, a) }); return e } function m(a) { function c(d) { return g(d, function(d, e) { var c = e.pattern || l(e); !d && (d = RegExp("\\b" + c + " *\\d+[.\\w_]*", "i").exec(a) || RegExp("\\b" + c + " *\\w+-[\\w]*", "i").exec(a) || RegExp("\\b" + c + "(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)", "i").exec(a)) && ((d = String(e.label && !RegExp(c, "i").test(e.label) ? e.label : d).split("/"))[1] && !/[\d.]+/.test(d[0]) && (d[0] += " " + d[1]), e = e.label || e, d = b(d[0].replace(RegExp(c, "i"), e).replace(RegExp("; *(?:" + e + "[_-])?", "i"), " ").replace(RegExp("(" + e + ")[-_.]?(\\w)", "i"), "$1 $2"))); return d }) } function h(d) { return g(d, function(d, e) { return d || (RegExp(e + "(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)", "i").exec(a) || 0)[1] || null }) } var w = p, n = a && "object" == typeof a && "String" != e(a); n && (w = a, a = null); var C = w.navigator || {}, u = C.userAgent || ""; a || (a = u); var t = n ? !!C.likeChrome : /\bChrome\b/.test(a) && !/internal|\n/i.test(E.toString()), x = n ? "Object" : "ScriptBridgingProxyObject", z = n ? "Object" : "Environment", y = n && w.java ? "JavaPackage" : e(w.java), P = n ? "Object" : "RuntimeObject"; z = (y = /\bJava/.test(y) && w.java) && e(w.environment) == z; var Q = y ? "a" : "\u03b1", R = y ? "b" : "\u03b2", M = w.document || {}, F = w.operamini || w.opera, I = v.test(I = n && F ? F["[[Class]]"] : e(F)) ? I : F = null, k, J = a; n = []; var K = null, G = a == u; u = G && F && "function" == typeof F.version && F.version(); var A = function(d) { return g(d, function(d, e) { return d || RegExp("\\b" + (e.pattern || l(e)) + "\\b", "i").exec(a) && (e.label || e) }) }([{ label: "EdgeHTML", pattern: "Edge" }, "Trident", { label: "WebKit", pattern: "AppleWebKit" }, "iCab", "Presto", "NetFront", "Tasman", "KHTML", "Gecko"]), q = function(d) { return g(d, function(d, e) { return d || RegExp("\\b" + (e.pattern || l(e)) + "\\b", "i").exec(a) && (e.label || e) }) }(["Adobe AIR", "Arora", "Avant Browser", "Breach", "Camino", "Electron", "Epiphany", "Fennec", "Flock", "Galeon", "GreenBrowser", "iCab", "Iceweasel", "K-Meleon", "Konqueror", "Lunascape", "Maxthon", { label: "Microsoft Edge", pattern: "Edge" }, "Midori", "Nook Browser", "PaleMoon", "PhantomJS", "Raven", "Rekonq", "RockMelt", { label: "Samsung Internet", pattern: "SamsungBrowser" }, "SeaMonkey", { label: "Silk", pattern: "(?:Cloud9|Silk-Accelerated)" }, "Sleipnir", "SlimBrowser", { label: "SRWare Iron", pattern: "Iron" }, "Sunrise", "Swiftfox", "Waterfox", "WebPositive", "Opera Mini", { label: "Opera Mini", pattern: "OPiOS" }, "Opera", { label: "Opera", pattern: "OPR" }, "Chrome", { label: "Chrome Mobile", pattern: "(?:CriOS|CrMo)" }, { label: "Firefox", pattern: "(?:Firefox|Minefield)" }, { label: "Firefox for iOS", pattern: "FxiOS" }, { label: "IE", pattern: "IEMobile" }, { label: "IE", pattern: "MSIE" }, "Safari" ]), B = c([{ label: "BlackBerry", pattern: "BB10" }, "BlackBerry", { label: "Galaxy S", pattern: "GT-I9000" }, { label: "Galaxy S2", pattern: "GT-I9100" }, { label: "Galaxy S3", pattern: "GT-I9300" }, { label: "Galaxy S4", pattern: "GT-I9500" }, { label: "Galaxy S5", pattern: "SM-G900" }, { label: "Galaxy S6", pattern: "SM-G920" }, { label: "Galaxy S6 Edge", pattern: "SM-G925" }, { label: "Galaxy S7", pattern: "SM-G930" }, { label: "Galaxy S7 Edge", pattern: "SM-G935" }, "Google TV", "Lumia", "iPad", "iPod", "iPhone", "Kindle", { label: "Kindle Fire", pattern: "(?:Cloud9|Silk-Accelerated)" }, "Nexus", "Nook", "PlayBook", "PlayStation Vita", "PlayStation", "TouchPad", "Transformer", { label: "Wii U", pattern: "WiiU" }, "Wii", "Xbox One", { label: "Xbox 360", pattern: "Xbox" }, "Xoom" ]), D = function(d) { return g(d, function(d, e, c) { return d || (e[B] || e[/^[a-z]+(?: +[a-z]+\b)*/i.exec(B)] || RegExp("\\b" + l(c) + "(?:\\b|\\w*\\d)", "i").exec(a)) && c }) }({ Apple: { iPad: 1, iPhone: 1, iPod: 1 }, Archos: {}, Amazon: { Kindle: 1, "Kindle Fire": 1 }, Asus: { Transformer: 1 }, "Barnes & Noble": { Nook: 1 }, BlackBerry: { PlayBook: 1 }, Google: { "Google TV": 1, Nexus: 1 }, HP: { TouchPad: 1 }, HTC: {}, LG: {}, Microsoft: { Xbox: 1, "Xbox One": 1 }, Motorola: { Xoom: 1 }, Nintendo: { "Wii U": 1, Wii: 1 }, Nokia: { Lumia: 1 }, Samsung: { "Galaxy S": 1, "Galaxy S2": 1, "Galaxy S3": 1, "Galaxy S4": 1 }, Sony: { PlayStation: 1, "PlayStation Vita": 1 } }), r = function(d) { return g(d, function(d, e) { var c = e.pattern || l(e); if (!d && (d = RegExp("\\b" + c + "(?:/[\\d.]+|[ \\w.]*)", "i").exec(a))) { var h = d, f = e.label || e, g = { "10.0": "10", "6.4": "10 Technical Preview", "6.3": "8.1", "6.2": "8", "6.1": "Server 2008 R2 / 7", "6.0": "Server 2008 / Vista", "5.2": "Server 2003 / XP 64-bit", "5.1": "XP", "5.01": "2000 SP1", "5.0": "2000", "4.0": "NT", "4.90": "ME" }; c && f && /^Win/i.test(h) && !/^Windows Phone /i.test(h) && (g = g[/[\d.]+$/.exec(h)]) && (h = "Windows " + g); h = String(h); c && f && (h = h.replace(RegExp(c, "i"), f)); d = h = b(h.replace(/ ce$/i, " CE").replace(/\bhpw/i, "web").replace(/\bMacintosh\b/, "Mac OS").replace(/_PowerPC\b/i, " OS").replace(/\b(OS X) [^ \d]+/i, "$1").replace(/\bMac (OS X)\b/, "$1").replace(/\/(\d)/, " $1").replace(/_/g, ".").replace(/(?: BePC|[ .]*fc[ \d.]+)$/i, "").replace(/\bx86\.64\b/gi, "x86_64").replace(/\b(Windows Phone) OS\b/, "$1").replace(/\b(Chrome OS \w+) [\d.]+\b/, "$1").split(" on ")[0]) } return d }) }(["Windows Phone", "Android", "CentOS", { label: "Chrome OS", pattern: "CrOS" }, "Debian", "Fedora", "FreeBSD", "Gentoo", "Haiku", "Kubuntu", "Linux Mint", "OpenBSD", "Red Hat", "SuSE", "Ubuntu", "Xubuntu", "Cygwin", "Symbian OS", "hpwOS", "webOS ", "webOS", "Tablet OS", "Tizen", "Linux", "Mac OS X", "Macintosh", "Mac", "Windows 98;", "Windows " ]); A && (A = [A]); D && !B && (B = c([D])); if (k = /\bGoogle TV\b/.exec(B)) B = k[0]; /\bSimulator\b/i.test(a) && (B = (B ? B + " " : "") + "Simulator"); "Opera Mini" == q && /\bOPiOS\b/.test(a) && n.push("running in Turbo/Uncompressed mode"); "IE" == q && /\blike iPhone OS\b/.test(a) ? (k = m(a.replace(/like iPhone OS/, "")), D = k.manufacturer, B = k.product) : /^iP/.test(B) ? (q || (q = "Safari"), r = "iOS" + ((k = / OS ([\d_]+)/i.exec(a)) ? " " + k[1].replace(/_/g, ".") : "")) : "Konqueror" != q || /buntu/i.test(r) ? D && "Google" != D && (/Chrome/.test(q) && !/\bMobile Safari\b/i.test(a) || /\bVita\b/.test(B)) || /\bAndroid\b/.test(r) && /^Chrome/.test(q) && /\bVersion\//i.test(a) ? (q = "Android Browser", r = /\bAndroid\b/.test(r) ? r : "Android") : "Silk" == q ? (/\bMobi/i.test(a) || (r = "Android", n.unshift("desktop mode")), /Accelerated *= *true/i.test(a) && n.unshift("accelerated")) : "PaleMoon" == q && (k = /\bFirefox\/([\d.]+)\b/.exec(a)) ? n.push("identifying as Firefox " + k[1]) : "Firefox" == q && (k = /\b(Mobile|Tablet|TV)\b/i.exec(a)) ? (r || (r = "Firefox OS"), B || (B = k[1])) : !q || (k = !/\bMinefield\b/i.test(a) && /\b(?:Firefox|Safari)\b/.exec(q)) ? (q && !B && /[\/,]|^[^(]+?\)/.test(a.slice(a.indexOf(k + "/") + 8)) && (q = null), (k = B || D || r) && (B || D || /\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(r)) && (q = /[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(r) ? r : k) + " Browser")) : "Electron" == q && (k = (/\bChrome\/([\d.]+)\b/.exec(a) || 0)[1]) && n.push("Chromium " + k) : r = "Kubuntu"; u || (u = h(["(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$))", "Version", l(q), "(?:Firefox|Minefield|NetFront)"])); if (k = "iCab" == A && 3 < parseFloat(u) && "WebKit" || /\bOpera\b/.test(q) && (/\bOPR\b/.test(a) ? "Blink" : "Presto") || /\b(?:Midori|Nook|Safari)\b/i.test(a) && !/^(?:Trident|EdgeHTML)$/.test(A) && "WebKit" || !A && /\bMSIE\b/i.test(a) && ("Mac OS" == r ? "Tasman" : "Trident") || "WebKit" == A && /\bPlayStation\b(?! Vita\b)/i.test(q) && "NetFront") A = [k]; "IE" == q && (k = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(a) || 0)[1]) ? (q += " Mobile", r = "Windows Phone " + (/\+$/.test(k) ? k : k + ".x"), n.unshift("desktop mode")) : /\bWPDesktop\b/i.test(a) ? (q = "IE Mobile", r = "Windows Phone 8.x", n.unshift("desktop mode"), u || (u = (/\brv:([\d.]+)/.exec(a) || 0)[1])) : "IE" != q && "Trident" == A && (k = /\brv:([\d.]+)/.exec(a)) && (q && n.push("identifying as " + q + (u ? " " + u : "")), q = "IE", u = k[1]); if (G) { if (d(w, "global")) if (y && (k = y.lang.System, J = k.getProperty("os.arch"), r = r || k.getProperty("os.name") + " " + k.getProperty("os.version")), z) { try { u = w.require("ringo/engine").version.join("."), q = "RingoJS" } catch (O) { (k = w.system) && k.global.system == w.system && (q = "Narwhal", r || (r = k[0].os || null)) } q || (q = "Rhino") } else "object" == typeof w.process && !w.process.browser && (k = w.process) && ("object" == typeof k.versions && ("string" == typeof k.versions.electron ? (n.push("Node " + k.versions.node), q = "Electron", u = k.versions.electron) : "string" == typeof k.versions.nw && (n.push("Chromium " + u, "Node " + k.versions.node), q = "NW.js", u = k.versions.nw)), q || (q = "Node.js", J = k.arch, r = k.platform, u = (u = /[\d.]+/.exec(k.version)) ? u[0] : null)); else e(k = w.runtime) == x ? (q = "Adobe AIR", r = k.flash.system.Capabilities.os) : e(k = w.phantom) == P ? (q = "PhantomJS", u = (k = k.version || null) && k.major + "." + k.minor + "." + k.patch) : "number" == typeof M.documentMode && (k = /\bTrident\/(\d+)/i.exec(a)) ? (u = [u, M.documentMode], (k = +k[1] + 4) != u[1] && (n.push("IE " + u[1] + " mode"), A && (A[1] = ""), u[1] = k), u = "IE" == q ? String(u[1].toFixed(1)) : u[0]) : "number" == typeof M.documentMode && /^(?:Chrome|Firefox)\b/.test(q) && (n.push("masking as " + q + " " + u), q = "IE", u = "11.0", A = ["Trident"], r = "Windows"); r = r && b(r) } u && (k = /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(u) || /(?:alpha|beta)(?: ?\d)?/i.exec(a + ";" + (G && C.appMinorVersion)) || /\bMinefield\b/i.test(a) && "a") && (K = /b/i.test(k) ? "beta" : "alpha", u = u.replace(RegExp(k + "\\+?$"), "") + ("beta" == K ? R : Q) + (/\d+\+?/.exec(k) || "")); if ("Fennec" == q || "Firefox" == q && /\b(?:Android|Firefox OS)\b/.test(r)) q = "Firefox Mobile"; else if ("Maxthon" == q && u) u = u.replace(/\.[\d.]+/, ".x"); else if (/\bXbox\b/i.test(B)) "Xbox 360" == B && (r = null), "Xbox 360" == B && /\bIEMobile\b/.test(a) && n.unshift("mobile mode"); else if (!/^(?:Chrome|IE|Opera)$/.test(q) && (!q || B || /Browser|Mobi/.test(q)) || "Windows CE" != r && !/Mobi/i.test(a)) if ("IE" == q && G) try { null === w.external && n.unshift("platform preview") } catch (O) { n.unshift("embedded") } else(/\bBlackBerry\b/.test(B) || /\bBB10\b/.test(a)) && (k = (RegExp(B.replace(/ +/g, " *") + "/([.\\d]+)", "i").exec(a) || 0)[1] || u) ? (k = [k, /BB10/.test(a)], r = (k[1] ? (B = null, D = "BlackBerry") : "Device Software") + " " + k[0], u = null) : this != f && "Wii" != B && (G && F || /Opera/.test(q) && /\b(?:MSIE|Firefox)\b/i.test(a) || "Firefox" == q && /\bOS X (?:\d+\.){2,}/.test(r) || "IE" == q && (r && !/^Win/.test(r) && 5.5 < u || /\bWindows XP\b/.test(r) && 8 < u || 8 == u && !/\bTrident\b/.test(a))) && !v.test(k = m.call(f, a.replace(v, "") + ";")) && k.name && (k = "ing as " + k.name + ((k = k.version) ? " " + k : ""), v.test(q) ? (/\bIE\b/.test(k) && "Mac OS" == r && (r = null), k = "identify" + k) : (k = "mask" + k, q = I ? b(I.replace(/([a-z])([A-Z])/g, "$1 $2")) : "Opera", /\bIE\b/.test(k) && (r = null), G || (u = null)), A = ["Presto"], n.push(k)); else q += " Mobile"; if (k = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(a) || 0)[1]) { k = [parseFloat(k.replace(/\.(\d)$/, ".0$1")), k]; if ("Safari" == q && "+" == k[1].slice(-1)) q = "WebKit Nightly", K = "alpha", u = k[1].slice(0, -1); else if (u == k[1] || u == (k[2] = (/\bSafari\/([\d.]+\+?)/i.exec(a) || 0)[1])) u = null; k[1] = (/\bChrome\/([\d.]+)/i.exec(a) || 0)[1]; 537.36 == k[0] && 537.36 == k[2] && 28 <= parseFloat(k[1]) && "WebKit" == A && (A = ["Blink"]); G && (t || k[1]) ? (A && (A[1] = "like Chrome"), k = k[1] || (k = k[0], 530 > k ? 1 : 532 > k ? 2 : 532.05 > k ? 3 : 533 > k ? 4 : 534.03 > k ? 5 : 534.07 > k ? 6 : 534.1 > k ? 7 : 534.13 > k ? 8 : 534.16 > k ? 9 : 534.24 > k ? 10 : 534.3 > k ? 11 : 535.01 > k ? 12 : 535.02 > k ? "13+" : 535.07 > k ? 15 : 535.11 > k ? 16 : 535.19 > k ? 17 : 536.05 > k ? 18 : 536.1 > k ? 19 : 537.01 > k ? 20 : 537.11 > k ? "21+" : 537.13 > k ? 23 : 537.18 > k ? 24 : 537.24 > k ? 25 : 537.36 > k ? 26 : "Blink" != A ? "27" : "28")) : (A && (A[1] = "like Safari"), k = (k = k[0], 400 > k ? 1 : 500 > k ? 2 : 526 > k ? 3 : 533 > k ? 4 : 534 > k ? "4+" : 535 > k ? 5 : 537 > k ? 6 : 538 > k ? 7 : 601 > k ? 8 : "8")); A && (A[1] += " " + (k += "number" == typeof k ? ".x" : /[.+]/.test(k) ? "" : "+")); "Safari" == q && (!u || 45 < parseInt(u)) && (u = k) } "Opera" == q && (k = /\bzbov|zvav$/.exec(r)) ? (q += " ", n.unshift("desktop mode"), "zvav" == k ? (q += "Mini", u = null) : q += "Mobile", r = r.replace(RegExp(" *" + k + "$"), "")) : "Safari" == q && /\bChrome\b/.exec(A && A[1]) && (n.unshift("desktop mode"), q = "Chrome Mobile", u = null, /\bOS X\b/.test(r) ? (D = "Apple", r = "iOS 4.3+") : r = null); u && 0 == u.indexOf(k = /[\d.]+$/.exec(r)) && -1 < a.indexOf("/" + k + "-") && (r = String(r.replace(k, "")).replace(/^ +| +$/g, "")); A && !/\b(?:Avant|Nook)\b/.test(q) && (/Browser|Lunascape|Maxthon/.test(q) || "Safari" != q && /^iOS/.test(r) && /\bSafari\b/.test(A[1]) || /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|Web)/.test(q) && A[1]) && (k = A[A.length - 1]) && n.push(k); n.length && (n = ["(" + n.join("; ") + ")"]); D && B && 0 > B.indexOf(D) && n.push("on " + D); B && n.push((/^on /.test(n[n.length - 1]) ? "" : "on ") + B); if (r) { var N = (k = / ([\d.+]+)$/.exec(r)) && "/" == r.charAt(r.length - k[0].length - 1); r = { architecture: 32, family: k && !N ? r.replace(k[0], "") : r, version: k ? k[1] : null, toString: function() { var a = this.version; return this.family + (a && !N ? " " + a : "") + (64 == this.architecture ? " 64-bit" : "") } } }(k = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(J)) && !/\bi686\b/i.test(J) ? (r && (r.architecture = 64, r.family = r.family.replace(RegExp(" *" + k), "")), q && (/\bWOW64\b/i.test(a) || G && /\w(?:86|32)$/.test(C.cpuClass || C.platform) && !/\bWin64; x64\b/i.test(a)) && n.unshift("32-bit")) : r && /^OS X/.test(r.family) && "Chrome" == q && 39 <= parseFloat(u) && (r.architecture = 64); a || (a = null); w = {}; w.description = a; w.layout = A && A[0]; w.manufacturer = D; w.name = q; w.prerelease = K; w.product = B; w.ua = a; w.version = q && u; w.os = r || { architecture: null, family: null, version: null, toString: function() { return "null" } }; w.parse = m; w.toString = function() { return this.description || "" }; w.version && n.unshift(u); w.name && n.unshift(q); r && q && (r != String(r).split(" ")[0] || r != q.split(" ")[0] && !B) && n.push(B ? "(" + r + ")" : "on " + r); n.length && (w.description = n.join(" ")); return w } var h = { "function": !0, object: !0 }, p = h[typeof window] && window || this, n = h[typeof exports] && exports; h = h[typeof module] && module && !module.nodeType && module; var t = n && h && "object" == typeof global && global; !t || t.global !== t && t.window !== t && t.self !== t || (p = t); var x = Math.pow(2, 53) - 1, v = /\bOpera/; t = Object.prototype; var z = t.hasOwnProperty, E = t.toString, y = m(); "function" == typeof define && "object" == typeof define.amd && define.amd ? (p.platform = y, define(function() { return y })) : n && h ? f(y, function(a, d) { n[d] = a }) : p.platform = y }).call(this); function buildIOSMeta() { for (var a = [{ name: "viewport", content: "width=device-width, height=device-height, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" }, { name: "apple-mobile-web-app-capable", content: "yes" }, { name: "apple-mobile-web-app-status-bar-style", content: "black" }], c = 0; c < a.length; c++) { var b = document.createElement("meta"); b.name = a[c].name; b.content = a[c].content; var f = window.document.head.querySelector('meta[name="' + b.name + '"]'); f && f.parentNode.removeChild(f); window.document.head.appendChild(b) } } function hideIOSFullscreenPanel() { jQuery(".xxx-ios-fullscreen-message").css("display", "none"); jQuery(".xxx-ios-fullscreen-scroll").css("display", "none"); jQuery(".xxx-game-iframe-full").removeClass("xxx-game-iframe-iphone-se") } function buildIOSFullscreenPanel() { jQuery("body").append('<div class="xxx-ios-fullscreen-message"><div class="xxx-ios-fullscreen-swipe"></div></div><div class="xxx-ios-fullscreen-scroll"></div>') } function showIOSFullscreenPanel() { jQuery(".xxx-ios-fullscreen-message").css("display", "block"); jQuery(".xxx-ios-fullscreen-scroll").css("display", "block") } function __iosResize() { window.scrollTo(0, 0); console.log(window.devicePixelRatio); console.log(window.innerWidth); console.log(window.innerHeight); if ("iPhone" === platform.product) switch (window.devicePixelRatio) { case 2: switch (window.innerWidth) { case 568: 320 !== window.innerHeight && jQuery(".xxx-game-iframe-full").addClass("xxx-game-iframe-iphone-se"); break; case 667: 375 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; case 808: 414 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; default: hideIOSFullscreenPanel() } break; case 3: switch (window.innerWidth) { case 736: 414 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; case 724: 375 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; case 808: 414 === window.innerHeight ? hideIOSFullscreenPanel() : showIOSFullscreenPanel(); break; default: hideIOSFullscreenPanel() } break; default: hideIOSFullscreenPanel() } } function iosResize() { __iosResize(); setTimeout(function() { __iosResize() }, 500) } function iosInIframe() { try { return window.self !== window.top } catch (a) { return !0 } } function isIOSLessThen13() { var a = platform.os, c = a.family.toLowerCase(); a = parseFloat(a.version); return "ios" === c && 13 > a ? !0 : !1 } $(document).ready(function() { platform && "iPhone" === platform.product && "safari" === platform.name.toLowerCase() && isIOSLessThen13() && !iosInIframe() && (buildIOSFullscreenPanel(), buildIOSMeta()) }); jQuery(window).resize(function() { platform && "iPhone" === platform.product && "safari" === platform.name.toLowerCase() && isIOSLessThen13() && !iosInIframe() && iosResize() }); var s_iScaleFactor = 1, s_bIsIphone = !1, s_iOffsetX, s_iOffsetY; (function(a) { (jQuery.browser = jQuery.browser || {}).mobile = /android|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(ad|hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|tablet|treo|up\.(browser|link)|vodafone|wap|webos|windows (ce|phone)|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)) })(navigator.userAgent || navigator.vendor || window.opera); $(window).resize(function() { sizeHandler() }); function trace(a) { console.log(a) } function getSize(a) { var c = a.toLowerCase(), b = window.document, f = b.documentElement; if (void 0 === window["inner" + a]) a = f["client" + a]; else if (window["inner" + a] != f["client" + a]) { var e = b.createElement("body"); e.id = "vpw-test-b"; e.style.cssText = "overflow:scroll"; var d = b.createElement("div"); d.id = "vpw-test-d"; d.style.cssText = "position:absolute;top:-1000px"; d.innerHTML = "<style>@media(" + c + ":" + f["client" + a] + "px){body#vpw-test-b div#vpw-test-d{" + c + ":7px!important}}</style>"; e.appendChild(d); f.insertBefore(e, b.head); a = 7 == d["offset" + a] ? f["client" + a] : window["inner" + a]; f.removeChild(e) } else a = window["inner" + a]; return a } window.addEventListener("orientationchange", onOrientationChange); function onOrientationChange() { window.matchMedia("(orientation: portrait)").matches && sizeHandler(); window.matchMedia("(orientation: landscape)").matches && sizeHandler() } function isIpad() { var a = -1 !== navigator.userAgent.toLowerCase().indexOf("ipad"); return !a && navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && 2 < navigator.maxTouchPoints ? !0 : a } function isMobile() { return isIpad() ? !0 : jQuery.browser.mobile } function isChrome() { return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) } function isIOS() { var a = "iPad Simulator;iPhone Simulator;iPod Simulator;iPad;iPhone;iPod".split(";"); if (-1 !== navigator.userAgent.toLowerCase().indexOf("iphone")) return s_bIsIphone = !0; for (; a.length;) if (navigator.platform === a.pop()) return !0; return s_bIsIphone = !1 } function getIOSWindowHeight() { return document.documentElement.clientWidth / window.innerWidth * window.innerHeight } function getHeightOfIOSToolbars() { var a = (0 === window.orientation ? screen.height : screen.width) - getIOSWindowHeight(); return 1 < a ? a : 0 } function sizeHandler() { window.scrollTo(0, 1); if ($("#canvas")) { var a = "safari" === platform.name.toLowerCase() ? getIOSWindowHeight() : getSize("Height"); var c = getSize("Width"); _checkOrientation(c, a); var b = Math.min(a / CANVAS_HEIGHT, c / CANVAS_WIDTH), f = Math.round(CANVAS_WIDTH * b); b = Math.round(CANVAS_HEIGHT * b); if (b < a) { var e = a - b; b += e; f += CANVAS_WIDTH / CANVAS_HEIGHT * e } else f < c && (e = c - f, f += e, b += CANVAS_HEIGHT / CANVAS_WIDTH * e); e = a / 2 - b / 2; var d = c / 2 - f / 2, l = CANVAS_WIDTH / f; if (d * l < -EDGEBOARD_X || e * l < -EDGEBOARD_Y) b = Math.min(a / (CANVAS_HEIGHT - 2 * EDGEBOARD_Y), c / (CANVAS_WIDTH - 2 * EDGEBOARD_X)), f = Math.round(CANVAS_WIDTH * b), b = Math.round(CANVAS_HEIGHT * b), e = (a - b) / 2, d = (c - f) / 2, l = CANVAS_WIDTH / f; s_iOffsetX = -1 * d * l; s_iOffsetY = -1 * e * l; 0 <= e && (s_iOffsetY = 0); 0 <= d && (s_iOffsetX = 0); null !== s_oInterface && s_oInterface.refreshButtonPos(); null !== s_oMenu && s_oMenu.refreshButtonPos(); null !== s_oModePanel && s_oModePanel.refreshButtonPos(); s_bIsIphone ? (canvas = document.getElementById("canvas"), s_oStage.canvas.width = 2 * f, s_oStage.canvas.height = 2 * b, canvas.style.width = f + "px", canvas.style.height = b + "px", s_oStage.scaleX = s_oStage.scaleY = 2 * Math.min(f / CANVAS_WIDTH, b / CANVAS_HEIGHT)) : s_bMobile || isChrome() ? ($("#canvas").css("width", f + "px"), $("#canvas").css("height", b + "px")) : (s_oStage.canvas.width = f, s_oStage.canvas.height = b, s_iScaleFactor = Math.min(f / CANVAS_WIDTH, b / CANVAS_HEIGHT), s_oStage.scaleX = s_oStage.scaleY = s_iScaleFactor); 0 > e || (e = (a - b) / 2); $("#canvas").css("top", e + "px"); $("#canvas").css("left", d + "px"); fullscreenHandler() } } function _checkOrientation(a, c) { s_bMobile && ENABLE_CHECK_ORIENTATION && (a > c ? "landscape" === $(".orientation-msg-container").attr("data-orientation") ? ($(".orientation-msg-container").css("display", "none"), s_oMain.startUpdate()) : ($(".orientation-msg-container").css("display", "block"), s_oMain.stopUpdate()) : "portrait" === $(".orientation-msg-container").attr("data-orientation") ? ($(".orientation-msg-container").css("display", "none"), s_oMain.startUpdate()) : ($(".orientation-msg-container").css("display", "block"), s_oMain.stopUpdate())) } function playSound(a, c, b) { return !1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile ? (s_aSounds[a].play(), s_aSounds[a].volume(c), s_aSounds[a].loop(b), s_aSounds[a]) : null } function stopSound(a) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].stop() } function setVolume(a, c) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].volume(c) } function setMute(a, c) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].mute(c) } function fadeVolume(a, c, b) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || (new createjs.Tween.get(a)).to({ volume: c }, b) } function createBitmap(a, c, b) { var f = new createjs.Bitmap(a), e = new createjs.Shape; c && b ? e.graphics.beginFill("#fff").drawRect(0, 0, c, b) : e.graphics.beginFill("#ff0").drawRect(0, 0, a.width, a.height); f.hitArea = e; return f } function createSprite(a, c, b, f, e, d) { a = null !== c ? new createjs.Sprite(a, c) : new createjs.Sprite(a); c = new createjs.Shape; c.graphics.beginFill("#000000").drawRect(-b, -f, e, d); a.hitArea = c; return a } function randomFloatBetween(a, c, b) { "undefined" === typeof b && (b = 2); return parseFloat(Math.min(a + Math.random() * (c - a), c).toFixed(b)) } function rotateVector2D(a, c) { var b = c.getX() * Math.cos(a) + c.getY() * Math.sin(a), f = c.getX() * -Math.sin(a) + c.getY() * Math.cos(a); c.set(b, f) } function tweenVectorsOnX(a, c, b) { return a + b * (c - a) } function shuffle(a) { for (var c = a.length, b, f; 0 !== c;) f = Math.floor(Math.random() * c), --c, b = a[c], a[c] = a[f], a[f] = b; return a } function bubbleSort(a) { do { var c = !1; for (var b = 0; b < a.length - 1; b++) a[b] > a[b + 1] && (c = a[b], a[b] = a[b + 1], a[b + 1] = c, c = !0) } while (c) } function compare(a, c) { return a.index > c.index ? -1 : a.index < c.index ? 1 : 0 } function easeLinear(a, c, b, f) { return b * a / f + c } function easeInQuad(a, c, b, f) { return b * (a /= f) * a + c } function easeInSine(a, c, b, f) { return -b * Math.cos(a / f * (Math.PI / 2)) + b + c } function easeInCubic(a, c, b, f) { return b * (a /= f) * a * a + c } function getTrajectoryPoint(a, c) { var b = new createjs.Point, f = (1 - a) * (1 - a), e = a * a; b.x = f * c.start.x + 2 * (1 - a) * a * c.traj.x + e * c.end.x; b.y = f * c.start.y + 2 * (1 - a) * a * c.traj.y + e * c.end.y; return b } function formatTime(a) { a /= 1E3; var c = Math.floor(a / 60); a = Math.floor(a - 60 * c); var b = ""; b = 10 > c ? b + ("0" + c + ":") : b + (c + ":"); return 10 > a ? b + ("0" + a) : b + a } function degreesToRadians(a) { return a * Math.PI / 180 } function distance(a, c) { return Math.sqrt((c.x - a.x) * (c.x - a.x) + (c.y - a.y) * (c.y - a.y)) } function distance2(a, c) { return (c.x - a.x) * (c.x - a.x) + (c.y - a.y) * (c.y - a.y) } function NoClickDelay(a) { this.element = a; window.Touch && this.element.addEventListener("touchstart", this, !1) } function shuffle(a) { for (var c = a.length, b, f; 0 < c;) f = Math.floor(Math.random() * c), c--, b = a[c], a[c] = a[f], a[f] = b; return a } NoClickDelay.prototype = { handleEvent: function(a) { switch (a.type) { case "touchstart": this.onTouchStart(a); break; case "touchmove": this.onTouchMove(a); break; case "touchend": this.onTouchEnd(a) } }, onTouchStart: function(a) { a.preventDefault(); this.moved = !1; this.element.addEventListener("touchmove", this, !1); this.element.addEventListener("touchend", this, !1) }, onTouchMove: function(a) { this.moved = !0 }, onTouchEnd: function(a) { this.element.removeEventListener("touchmove", this, !1); this.element.removeEventListener("touchend", this, !1); if (!this.moved) { a = document.elementFromPoint(a.changedTouches[0].clientX, a.changedTouches[0].clientY); 3 == a.nodeType && (a = a.parentNode); var c = document.createEvent("MouseEvents"); c.initEvent("click", !0, !0); a.dispatchEvent(c) } } }; (function() { function a(a) { var b = { focus: "visible", focusin: "visible", pageshow: "visible", blur: "hidden", focusout: "hidden", pagehide: "hidden" }; a = a || window.event; a.type in b ? document.body.className = b[a.type] : (document.body.className = this[c] ? "hidden" : "visible", "hidden" === document.body.className ? s_oMain.stopUpdate() : s_oMain.startUpdate()) } var c = "hidden"; c in document ? document.addEventListener("visibilitychange", a) : (c = "mozHidden") in document ? document.addEventListener("mozvisibilitychange", a) : (c = "webkitHidden") in document ? document.addEventListener("webkitvisibilitychange", a) : (c = "msHidden") in document ? document.addEventListener("msvisibilitychange", a) : "onfocusin" in document ? document.onfocusin = document.onfocusout = a : window.onpageshow = window.onpagehide = window.onfocus = window.onblur = a })(); function ctlArcadeResume() { null !== s_oMain && s_oMain.startUpdate() } function ctlArcadePause() { null !== s_oMain && s_oMain.stopUpdate() } function getParamValue(a) { for (var c = window.location.search.substring(1).split("&"), b = 0; b < c.length; b++) { var f = c[b].split("="); if (f[0] == a) return f[1] } } function fullscreenHandler() { ENABLE_FULLSCREEN && !1 !== screenfull.isEnabled && (s_bFullscreen = screenfull.isFullscreen, null !== s_oInterface && s_oInterface.resetFullscreenBut(), null !== s_oMenu && s_oMenu.resetFullscreenBut(), null !== s_oModePanel && s_oModePanel.resetFullscreenBut()) } if (screenfull.isEnabled) screenfull.on("change", function() { s_bFullscreen = screenfull.isFullscreen; null !== s_oInterface && s_oInterface.resetFullscreenBut(); null !== s_oMenu && s_oMenu.resetFullscreenBut(); null !== s_oModePanel && s_oModePanel.resetFullscreenBut() }); function CSpriteLibrary() { var a = {}, c, b, f, e, d, l; this.init = function(a, m, h) { c = {}; f = b = 0; e = a; d = m; l = h }; this.addSprite = function(d, e) { if (!a.hasOwnProperty(d)) { var h = new Image; a[d] = c[d] = { szPath: e, oSprite: h, bLoaded: !1 }; b++ } }; this.getSprite = function(d) { return a.hasOwnProperty(d) ? a[d].oSprite : null }; this._onSpritesLoaded = function() { b = 0; d.call(l) }; this._onSpriteLoaded = function() { e.call(l); ++f === b && this._onSpritesLoaded() }; this.loadSprites = function() { for (var a in c) c[a].oSprite.oSpriteLibrary = this, c[a].oSprite.szKey = a, c[a].oSprite.onload = function() { this.oSpriteLibrary.setLoaded(this.szKey); this.oSpriteLibrary._onSpriteLoaded(this.szKey) }, c[a].oSprite.onerror = function(a) { var d = a.currentTarget; setTimeout(function() { c[d.szKey].oSprite.src = c[d.szKey].szPath }, 500) }, c[a].oSprite.src = c[a].szPath }; this.setLoaded = function(d) { a[d].bLoaded = !0 }; this.isLoaded = function(d) { return a[d].bLoaded }; this.getNumSprites = function() { return b } } var CANVAS_WIDTH = 1700, CANVAS_HEIGHT = 768, EDGEBOARD_X = 300, EDGEBOARD_Y = 0, FPS = 30, FPS_TIME = 1E3 / FPS, DISABLE_SOUND_MOBILE = !1, PRIMARY_FONT = "comfortaa", STATE_LOADING = 0, STATE_MENU = 1, STATE_CHOOSE_MODE = 2, STATE_HELP = 3, STATE_GAME = 4, ON_MOUSE_DOWN = 0, ON_MOUSE_UP = 1, ON_MOUSE_OVER = 2, ON_MOUSE_OUT = 3, ON_DRAG_START = 4, ON_DRAG_END = 5, ON_RELEASE_YES = 6, ON_RELEASE_NO = 7, MODE_CPU = 0, MODE_HUMAN = 1, BOARD_ROWS = 6, BOARD_COLS = 7, DISC_YELLOW = 0, DISC_RED = 1, DISC_EMPTY = 2, DISC_GENERIC = 3, DISC_RADIUS = 39, DISC_DIAMETER = 2 * DISC_RADIUS, DISC_FOR_COMBOS = 4, TIME_FOR_DROP_PER_CELL = 200, POINTS_FOR_WIN, TIME_FOR_BONUS_SCORE, TIME_WIN_DISC = 1E3, ENABLE_FULLSCREEN, ENABLE_CHECK_ORIENTATION, SOUNDTRACK_VOLUME_IN_GAME = .3, TEXT_PRELOADER_CONTINUE = "START", TEXT_SCORE = "TOTAL SCORE", TEXT_BONUS_TIME = "BONUS TIME", TEXT_BONUS_WIN = "BONUS WIN", TEXT_YOU_LOSE = "YOU LOSE", TEXT_CONGRATS = "CONGRATULATIONS", TEXT_RED_WINS = "RED WINS", TEXT_YELLOW_WINS = "YELLOW WINS", TEXT_PLAYER_TURN = "PLAYER TURN", TEXT_CPU_TURN = "CPU TURN", TEXT_PLAYER1_TURN = "PLAYER 1 TURN", TEXT_PLAYER2_TURN = "PLAYER 2 TURN", TEXT_TIE = "IT'S A TIE!!", TEXT_CHOOSE_MODE = "CHOOSE GAME MODE", TEXT_ARE_YOU_SURE = "ARE YOU SURE?", TEXT_DEVELOPED = "developed by", TEXT_SHARE_IMAGE = "200x200.jpg", TEXT_SHARE_TITLE = "Congratulations!", TEXT_SHARE_MSG1 = "You collected <strong>", TEXT_SHARE_MSG2 = " points</strong>!<br><br>Share your score with your friends!", TEXT_SHARE_SHARE1 = "My score is ", TEXT_SHARE_SHARE2 = " points! Can you do better"; function CPreloader() { var a, c, b, f, e, d, l, g, m; this._init = function() { s_oSpriteLibrary.init(this._onImagesLoaded, this._onAllImagesLoaded, this); s_oSpriteLibrary.addSprite("progress_bar", "./sprites/progress_bar.png"); s_oSpriteLibrary.addSprite("200x200", "./sprites/200x200.jpg"); s_oSpriteLibrary.loadSprites(); m = new createjs.Container; s_oStage.addChild(m) }; this.unload = function() { m.removeAllChildren() }; this._onImagesLoaded = function() {}; this._onAllImagesLoaded = function() { this.attachSprites(); s_oMain.preloaderReady() }; this.attachSprites = function() { var h = new createjs.Shape; h.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); m.addChild(h); h = s_oSpriteLibrary.getSprite("200x200"); l = createBitmap(h); l.regX = .5 * h.width; l.regY = .5 * h.height; l.x = CANVAS_WIDTH / 2; l.y = CANVAS_HEIGHT / 2 - 180; m.addChild(l); g = new createjs.Shape; g.graphics.beginFill("rgba(0,0,0,0.01)").drawRoundRect(l.x - 100, l.y - 100, 200, 200, 10); m.addChild(g); l.mask = g; h = s_oSpriteLibrary.getSprite("progress_bar"); f = createBitmap(h); f.x = CANVAS_WIDTH / 2 - h.width / 2; f.y = CANVAS_HEIGHT / 2 + 50; m.addChild(f); a = h.width; c = h.height; e = new createjs.Shape; e.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(f.x, f.y, 1, c); m.addChild(e); f.mask = e; b = new createjs.Text("", "30px " + PRIMARY_FONT, "#fff"); b.x = CANVAS_WIDTH / 2; b.y = CANVAS_HEIGHT / 2 + 100; b.textBaseline = "alphabetic"; b.textAlign = "center"; m.addChild(b); d = new createjs.Shape; d.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); m.addChild(d); createjs.Tween.get(d).to({ alpha: 0 }, 500).call(function() { createjs.Tween.removeTweens(d); m.removeChild(d) }) }; this.refreshLoader = function(d) { b.text = d + "%"; 100 === d && (s_oMain._onRemovePreloader(), b.visible = !1, f.visible = !1); e.graphics.clear(); d = Math.floor(d * a / 100); e.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(f.x, f.y, d, c) }; this._init() } function CMain(a) { var c, b = 0, f = 0, e = STATE_LOADING, d, l; this.initContainer = function() { s_oCanvas = document.getElementById("canvas"); s_oStage = new createjs.Stage(s_oCanvas); s_oStage.preventSelection = !1; createjs.Touch.enable(s_oStage, !0); s_bMobile = isMobile(); !1 === s_bMobile && s_oStage.enableMouseOver(20); s_iPrevTime = (new Date).getTime(); createjs.Ticker.addEventListener("tick", this._update); createjs.Ticker.framerate = FPS; navigator.userAgent.match(/Windows Phone/i) && (DISABLE_SOUND_MOBILE = !0); s_oSpriteLibrary = new CSpriteLibrary; d = new CPreloader; }; this.preloaderReady = function() { s_oMain._loadImages(); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_oMain._initSounds() }; this.soundLoaded = function() { b++; d.refreshLoader(Math.floor(b / f * 100)) }; this._initSounds = function() { Howler.mute(!s_bAudioActive); s_aSoundsInfo = []; s_aSoundsInfo.push({ path: "./sounds/", filename: "drop", loop: !1, volume: 1, ingamename: "drop" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "click", loop: !1, volume: 1, ingamename: "click" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "game_over", loop: !1, volume: 1, ingamename: "game_over" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "win", loop: !1, volume: 1, ingamename: "win" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "soundtrack", loop: !0, volume: 1, ingamename: "soundtrack" }); f += s_aSoundsInfo.length; s_aSounds = []; s_aSounds = []; for (var a = 0; a < s_aSoundsInfo.length; a++) this.tryToLoadSound(s_aSoundsInfo[a], !1) }; this.tryToLoadSound = function(a, d) { setTimeout(function() { s_aSounds[a.ingamename] = new Howl({ src: [a.path + a.filename + ".mp3"], autoplay: !1, preload: !0, loop: a.loop, volume: a.volume, onload: s_oMain.soundLoaded, onloaderror: function(a, d) { for (var e = 0; e < s_aSoundsInfo.length; e++) if (a === s_aSounds[s_aSoundsInfo[e].ingamename]._sounds[0]._id) { s_oMain.tryToLoadSound(s_aSoundsInfo[e], !0); break } }, onplayerror: function(a) { for (var d = 0; d < s_aSoundsInfo.length; d++) if (a === s_aSounds[s_aSoundsInfo[d].ingamename]._sounds[0]._id) { s_aSounds[s_aSoundsInfo[d].ingamename].once("unlock", function() { s_aSounds[s_aSoundsInfo[d].ingamename].play(); "soundtrack" === s_aSoundsInfo[d].ingamename && null !== s_oGame && setVolume("soundtrack", SOUNDTRACK_VOLUME_IN_GAME) }); break } } }) }, d ? 200 : 0) }; this._loadImages = function() { s_oSpriteLibrary.init(this._onImagesLoaded, this._onAllImagesLoaded, this); s_oSpriteLibrary.addSprite("but_play", "./sprites/but_play.png"); s_oSpriteLibrary.addSprite("msg_box", "./sprites/msg_box.png"); s_oSpriteLibrary.addSprite("but_credits", "./sprites/but_credits.png"); s_oSpriteLibrary.addSprite("ctl_logo", "./sprites/ctl_logo.png"); s_oSpriteLibrary.addSprite("bg_menu", "./sprites/bg_menu.jpg"); s_oSpriteLibrary.addSprite("bg_game", "./sprites/bg_game.jpg"); s_oSpriteLibrary.addSprite("bg_selection", "./sprites/bg_selection.jpg"); s_oSpriteLibrary.addSprite("but_exit", "./sprites/but_exit.png"); s_oSpriteLibrary.addSprite("audio_icon", "./sprites/audio_icon.png"); s_oSpriteLibrary.addSprite("but_fullscreen", "./sprites/but_fullscreen.png"); s_oSpriteLibrary.addSprite("but_yes", "./sprites/but_yes.png"); s_oSpriteLibrary.addSprite("but_no", "./sprites/but_no.png"); s_oSpriteLibrary.addSprite("but_home", "./sprites/but_home.png"); s_oSpriteLibrary.addSprite("but_cpu", "./sprites/but_cpu.png"); s_oSpriteLibrary.addSprite("but_human", "./sprites/but_human.png"); s_oSpriteLibrary.addSprite("but_restart", "./sprites/but_restart.png"); s_oSpriteLibrary.addSprite("board_back", "./sprites/board_back.png"); s_oSpriteLibrary.addSprite("board_front", "./sprites/board_front.png"); s_oSpriteLibrary.addSprite("disc", "./sprites/disc.png"); s_oSpriteLibrary.addSprite("bg_turn", "./sprites/bg_turn.png"); s_oSpriteLibrary.addSprite("arrow", "./sprites/arrow.png"); s_oSpriteLibrary.addSprite("time_icon", "./sprites/time_icon.png"); s_oSpriteLibrary.addSprite("win_effect", "./sprites/win_effect.png"); f += s_oSpriteLibrary.getNumSprites(); s_oSpriteLibrary.loadSprites() }; this._onImagesLoaded = function() { b++; d.refreshLoader(Math.floor(b / f * 100)) }; this._onRemovePreloader = function() { d.unload(); s_oSoundTrack = playSound("soundtrack", 1, !0); s_oMain.gotoMenu() }; this._onAllImagesLoaded = function() {}; this.onAllPreloaderImagesLoaded = function() { this._loadImages() }; this.gotoMenu = function() { new CMenu; e = STATE_MENU }; this.gotoModePanel = function() { new CModePanel; e = STATE_CHOOSE_MODE }; this.gotoGame = function() { l = new CGame(g); e = STATE_GAME }; this.gotoHelp = function() { new CHelp; e = STATE_HELP }; this.selectMode = function(a) { s_iCurMode = a; this.gotoGame() }; this.stopUpdate = function() { c = !1; createjs.Ticker.paused = !0; $("#block_game").css("display", "block"); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || Howler.mute(!0) }; this.startUpdate = function() { s_iPrevTime = (new Date).getTime(); c = !0; createjs.Ticker.paused = !1; $("#block_game").css("display", "none"); (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) && s_bAudioActive && Howler.mute(!1) }; this._update = function(a) { if (!1 !== c) { var d = (new Date).getTime(); s_iTimeElaps = d - s_iPrevTime; s_iCntTime += s_iTimeElaps; s_iCntFps++; s_iPrevTime = d; 1E3 <= s_iCntTime && (s_iCurFps = s_iCntFps, s_iCntTime -= 1E3, s_iCntFps = 0); e === STATE_GAME && l.update(); s_oStage.update(a) } }; s_oMain = this; var g = a; NUM_IMAGES = a.num_images; ENABLE_FULLSCREEN = a.fullscreen; ENABLE_CHECK_ORIENTATION = a.check_orientation; s_bAudioActive = a.audio_enable_on_startup; this.initContainer() } var s_bMobile, s_bAudioActive = !0, s_iCntTime = 0, s_iTimeElaps = 0, s_iPrevTime = 0, s_iCntFps = 0, s_iCurFps = 0, s_oStage, s_oMain, s_oSpriteLibrary, s_oCanvas, s_bFullscreen = !1, s_iCurMode, s_oSoundTrack = null, s_iPrevTurn = -1, s_aSoundsInfo; function CTextButton(a, c, b, f, e, d, l, g) { var m, h, p, n, t, x, v, z; this._init = function(a, d, e, c, b, f, g, l) { m = []; h = []; var w = createBitmap(e), C = Math.ceil(g / 20); t = new createjs.Text(c, " " + g + "px " + b, "#000000"); t.textAlign = "center"; t.textBaseline = "alphabetic"; var L = t.getBounds(); t.x = e.width / 2 + C; t.y = Math.floor(e.height / 2) + L.height / 3 + C; n = new createjs.Text(c, " " + g + "px " + b, f); n.textAlign = "center"; n.textBaseline = "alphabetic"; L = n.getBounds(); n.x = e.width / 2; n.y = Math.floor(e.height / 2) + L.height / 3 - 9; p = new createjs.Container; p.x = a; p.y = d; p.regX = e.width / 2; p.regY = e.height / 2; p.addChild(w, t, n); l.addChild(p); this._initListener() }; this.unload = function() { p.off("mousedown", x); p.off("pressup", z); s_bMobile || p.off("mouseover", v); g.removeChild(p) }; this.setVisible = function(a) { p.visible = a }; this._initListener = function() { oParent = this; x = p.on("mousedown", this.buttonDown); z = p.on("pressup", this.buttonRelease); s_bMobile || (v = p.on("mouseover", this.buttonOver)) }; this.addEventListener = function(a, d, e) { m[a] = d; h[a] = e }; this.buttonRelease = function() { p.scaleX = 1; p.scaleY = 1; m[ON_MOUSE_UP] && m[ON_MOUSE_UP].call(h[ON_MOUSE_UP]) }; this.buttonDown = function() { p.scaleX = .9; p.scaleY = .9; m[ON_MOUSE_DOWN] && m[ON_MOUSE_DOWN].call(h[ON_MOUSE_DOWN]) }; this.buttonOver = function(a) { s_bMobile || (a.target.cursor = "pointer") }; this.setNoShadow = function() { p.removeChild(t) }; this.setTextPosition = function(a) { n.y = a; t.y = a + 2 }; this.setPosition = function(a, d) { p.x = a; p.y = d }; this.setX = function(a) { p.x = a }; this.setY = function(a) { p.y = a }; this.getButtonImage = function() { return p }; this.getX = function() { return p.x }; this.getY = function() { return p.y }; this.removeStroke = function() { t.visible = !1 }; this._init(a, c, b, f, e, d, l, g); return this } function CToggle(a, c, b, f, e) { var d, l, g, m, h, p, n; this._init = function(a, e, c, b) { l = []; g = []; var f = new createjs.SpriteSheet({ images: [c], frames: { width: c.width / 2, height: c.height, regX: c.width / 2 / 2, regY: c.height / 2 }, animations: { state_true: [0], state_false: [1] } }); d = b; m = createSprite(f, "state_" + d, c.width / 2 / 2, c.height / 2, c.width / 2, c.height); m.x = a; m.y = e; m.stop(); t.addChild(m); this._initListener() }; this.unload = function() { m.off("mousedown", h); m.off("pressup", n); s_bMobile || m.off("mouseover", p); e.removeChild(m) }; this._initListener = function() { h = m.on("mousedown", this.buttonDown); n = m.on("pressup", this.buttonRelease); s_bMobile || (p = m.on("mouseover", this.buttonOver)) }; this.addEventListener = function(a, d, e) { l[a] = d; g[a] = e }; this.setActive = function(a) { d = a; m.gotoAndStop("state_" + d) }; this.buttonRelease = function() { m.scaleX = 1; m.scaleY = 1; playSound("click", 1, 0); d = !d; m.gotoAndStop("state_" + d); l[ON_MOUSE_UP] && l[ON_MOUSE_UP].call(g[ON_MOUSE_UP], d) }; this.buttonDown = function() { m.scaleX = .9; m.scaleY = .9; l[ON_MOUSE_DOWN] && l[ON_MOUSE_DOWN].call(g[ON_MOUSE_DOWN]) }; this.buttonOver = function(a) { s_bMobile || (a.target.cursor = "pointer") }; this.setPosition = function(a, d) { m.x = a; m.y = d }; var t = e; this._init(a, c, b, f) } function CGfxButton(a, c, b, f) { var e, d, l, g, m, h, p, n, t; this._init = function(a, c, b, f) { e = !1; d = 1; g = []; m = []; h = createBitmap(b); h.x = a; h.y = c; h.scaleX = h.scaleY = d; h.regX = b.width / 2; h.regY = b.height / 2; f.addChild(h); this._initListener() }; this.unload = function() { s_bMobile ? h.off("mousedown", p) : (h.off("mousedown", p), h.off("mouseover", n)); h.off("pressup", t); f.removeChild(h) }; this.setVisible = function(a) { h.visible = a }; this.enable = function() { e = !0 }; this.disable = function() { e = !1 }; this._initListener = function() { s_bMobile ? p = h.on("mousedown", this.buttonDown) : (p = h.on("mousedown", this.buttonDown), n = h.on("mouseover", this.buttonOver)); t = h.on("pressup", this.buttonRelease) }; this.addEventListener = function(a, d, e) { g[a] = d; m[a] = e }; this.addEventListenerWithParams = function(a, d, e, c) { g[a] = d; m[a] = e; l = c }; this.buttonRelease = function() { e || (h.scaleX = d, h.scaleY = d, g[ON_MOUSE_UP] && g[ON_MOUSE_UP].call(m[ON_MOUSE_UP], l)) }; this.buttonDown = function() { e || (h.scaleX = .9 * d, h.scaleY = .9 * d, playSound("click", 1, 0), g[ON_MOUSE_DOWN] && g[ON_MOUSE_DOWN].call(m[ON_MOUSE_DOWN], l)) }; this.buttonOver = function(a) { s_bMobile || e || (a.target.cursor = "pointer") }; this.inversePulse = function() { createjs.Tween.get(h).to({ scaleX: 1.1 * d, scaleY: 1.1 * d }, 1050, createjs.Ease.quadOut).to({ scaleX: d, scaleY: d }, 850, createjs.Ease.quadIn).call(function() { x.inversePulse() }) }; this.pulseAnimation = function() { createjs.Tween.get(h).to({ scaleX: .9 * d, scaleY: .9 * d }, 850, createjs.Ease.quadOut).to({ scaleX: d, scaleY: d }, 650, createjs.Ease.quadIn).call(function() { x.pulseAnimation() }) }; this.trembleAnimation = function() { createjs.Tween.get(h).to({ rotation: 5 }, 75, createjs.Ease.quadOut).to({ rotation: -5 }, 140, createjs.Ease.quadIn).to({ rotation: 0 }, 75, createjs.Ease.quadIn).wait(750).call(function() { x.trebleAnimation() }) }; this.setPosition = function(a, d) { h.x = a; h.y = d }; this.setX = function(a) { h.x = a }; this.setY = function(a) { h.y = a }; this.getButtonImage = function() { return h }; this.getX = function() { return h.x }; this.getY = function() { return h.y }; var x = this; this._init(a, c, b, f); return this } function CMenu() { var a, c, b, f, e, d, l, g, m, h, p, n, t = null, x = null; this._init = function() { l = createBitmap(s_oSpriteLibrary.getSprite("bg_menu")); s_oStage.addChild(l); var v = s_oSpriteLibrary.getSprite("but_play"); g = new CGfxButton(CANVAS_WIDTH / 2 + 280, CANVAS_HEIGHT / 2 + 160, v, s_oStage); g.addEventListener(ON_MOUSE_UP, this._onButPlayRelease, this); g.inversePulse(); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) v = s_oSpriteLibrary.getSprite("audio_icon"), e = CANVAS_WIDTH - v.width / 4 - 10, d = v.height / 2 + 10, h = new CToggle(e, d, v, s_bAudioActive, s_oStage), h.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); v = s_oSpriteLibrary.getSprite("but_credits"); b = v.width / 2 + 10; f = v.height / 2 + 10; p = new CGfxButton(b, f, v, s_oStage); p.addEventListener(ON_MOUSE_UP, this._onButCreditRelease, this); v = window.document; var z = v.documentElement; t = z.requestFullscreen || z.mozRequestFullScreen || z.webkitRequestFullScreen || z.msRequestFullscreen; x = v.exitFullscreen || v.mozCancelFullScreen || v.webkitExitFullscreen || v.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (t = !1); t && screenfull.isEnabled && (v = s_oSpriteLibrary.getSprite("but_fullscreen"), a = b + v.width / 2 + 10, c = f, n = new CToggle(a, c, v, s_bFullscreen, s_oStage), n.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); m = new createjs.Shape; m.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); s_oStage.addChild(m); createjs.Tween.get(m).to({ alpha: 0 }, 1E3).call(function() { m.visible = !1 }); this.refreshButtonPos() }; this.unload = function() { g.unload(); g = null; p.unload(); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) h.unload(), h = null; t && screenfull.isEnabled && n.unload(); s_oStage.removeAllChildren(); s_oMenu = l = null }; this.refreshButtonPos = function() { p.setPosition(b + s_iOffsetX, s_iOffsetY + f); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || h.setPosition(e - s_iOffsetX, s_iOffsetY + d); t && screenfull.isEnabled && n.setPosition(a + s_iOffsetX, c + s_iOffsetY) }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this._onButPlayRelease = function() { this.unload(); $(s_oMain).trigger("start_session"); s_oMain.gotoModePanel() }; this._onButCreditRelease = function() { new CCreditsPanel }; this.resetFullscreenBut = function() { t && screenfull.isEnabled && n.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? x.call(window.document) : t.call(window.document.documentElement); sizeHandler() }; s_oMenu = this; this._init() } var s_oMenu = null; function CGame(a) { var c = !1, b, f, e, d, l, g, m, h, p = null; this._init = function() { d = DISC_RED; var a = createBitmap(s_oSpriteLibrary.getSprite("bg_game")); s_oStage.addChild(a); g = new createjs.Container; s_oStage.addChild(g); m = new CBoard(473, 103, g); h = new CInterface; p = new CEndPanel; s_iCurMode === MODE_CPU && (l = new CAIController, l.setEnemyCode(d)); this.reset() }; this.unload = function() { h.unload(); p.unload(); createjs.Tween.removeAllTweens(); s_oStage.removeAllChildren(); s_oGame = null }; this.reset = function() { f = 0; s_iPrevTurn = b = -1 === s_iPrevTurn ? Math.round(Math.random()) : 1 - s_iPrevTurn; e = 0; d !== b && s_iCurMode === MODE_CPU && (m.blockHitArea(), l.throwCoin(m.getLogicBoard())); this.refreshTurn(); h.enableGUI(!1); setVolume("soundtrack", SOUNDTRACK_VOLUME_IN_GAME); c = !0 }; this.restart = function() { m.reset(); this.reset(); this.refreshTurn() }; this.setUpdate = function(a) { c = a }; this.changeTurn = function() { b = 1 - b; this.refreshTurn(); b !== d && s_iCurMode === MODE_CPU ? l.throwCoin(m.getLogicBoard()) : m.playerTurn(!1) }; this.refreshTurn = function() { h.refreshTurn(b, s_iCurMode === MODE_CPU ? b === d ? TEXT_PLAYER_TURN : TEXT_CPU_TURN : 0 === b ? TEXT_PLAYER1_TURN : TEXT_PLAYER2_TURN) }; this.checkCombos = function() { m.checkWinCombo(b) ? (m.playWinAnim(), setTimeout(function() { s_oGame.endOfMatch() }, 2 * TIME_WIN_DISC)) : this.changeTurn() }; this.endOfMatch = function() { c = !1; h.enableGUI(!1); var a = 0; b === d && (a = TIME_FOR_BONUS_SCORE - f, 0 > a && (a = 0)); p.show(b, d, a) }; this.dropDisc = function(a) { s_iCurMode === MODE_CPU && l.setLastEnemyThrowCol(a) }; this.dropDiscByCpu = function(a) { m.dropDiscByCpu(a, b) }; this.disableColumn = function() { e++; e === BOARD_COLS && new CTiePanel }; this.getCurTurn = function() { return b }; this.onExit = function() { this.unload(); s_oMain.gotoMenu() }; this.update = function() { c && (f += s_iTimeElaps, h.refreshTime(formatTime(f))) }; s_oGame = this; TIME_FOR_BONUS_SCORE = 1E3 * a.bonus_time; POINTS_FOR_WIN = a.points_for_win; this._init() } var s_oGame; function CInterface() { var a, c, b, f, e, d, l, g, m, h, p, n, t, x, v, z = null, E = null; this._init = function() { var y = s_oSpriteLibrary.getSprite("but_exit"); l = CANVAS_WIDTH - y.width / 2 - 10; g = y.height / 2 + 10; h = new CGfxButton(l, g, y, s_oStage); h.addEventListener(ON_MOUSE_UP, this._onExit, this); y = s_oSpriteLibrary.getSprite("but_restart"); a = l - y.width - 10; c = g; p = new CGfxButton(a, c, y, s_oStage); p.addEventListener(ON_MOUSE_UP, this._onRestartRelease, this); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) e = a - y.width - 10, d = c, m = new CToggle(e, d, s_oSpriteLibrary.getSprite("audio_icon"), s_bAudioActive, s_oStage), m.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); y = window.document; var C = y.documentElement; z = C.requestFullscreen || C.mozRequestFullScreen || C.webkitRequestFullScreen || C.msRequestFullscreen; E = y.exitFullscreen || y.mozCancelFullScreen || y.webkitExitFullscreen || y.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (z = !1); z && screenfull.isEnabled && (y = s_oSpriteLibrary.getSprite("but_fullscreen"), b = y.width / 4 + 10, f = y.height / 2 + 10, n = new CToggle(b, f, y, s_bFullscreen, s_oStage), n.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); y = createBitmap(s_oSpriteLibrary.getSprite("time_icon")); y.x = CANVAS_WIDTH / 2 - 120; y.y = 700; s_oStage.addChild(y); t = new createjs.Text("00:00", "50px " + PRIMARY_FONT, "#007eff"); t.x = CANVAS_WIDTH / 2; t.y = 750; t.textAlign = "center"; t.textBaseline = "alphabetic"; t.lineWidth = 200; s_oStage.addChild(t); x = new CTurnPanel(1240, 510, s_oStage); v = new CAreYouSurePanel(s_oStage); this.refreshButtonPos() }; this.unload = function() { if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) m.unload(), m = null; z && screenfull.isEnabled && n.unload(); h.unload(); p.unload(); s_oInterface = null }; this.refreshButtonPos = function() { h.setPosition(l - s_iOffsetX, s_iOffsetY + g); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || m.setPosition(e - s_iOffsetX, s_iOffsetY + d); z && screenfull.isEnabled && n.setPosition(b + s_iOffsetX, f + s_iOffsetY); p.setPosition(a - s_iOffsetX, c + s_iOffsetY) }; this.enableGUI = function(a) { a ? (h.enable(), p.enable()) : (h.disable(), p.disable()) }; this.refreshTime = function(a) { t.text = a }; this.refreshTurn = function(a, d) { x.setTurn(a, d) }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this._onExit = function() { s_oGame.setUpdate(!1); v.show(TEXT_ARE_YOU_SURE); v.addEventListener(ON_RELEASE_YES, this._onReleaseYes); v.addEventListener(ON_RELEASE_NO, this._onReleaseNo) }; this._onReleaseYes = function() { $(s_oMain).trigger("end_session"); $(s_oMain).trigger("show_interlevel_ad"); s_oGame.onExit() }; this._onReleaseNo = function() { s_oGame.setUpdate(!0) }; this._onRestartRelease = function() { s_oGame.restart() }; this.resetFullscreenBut = function() { z && screenfull.isEnabled && n.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? E.call(window.document) : z.call(window.document.documentElement); sizeHandler() }; s_oInterface = this; this._init(); return this } var s_oInterface = null; function CEndPanel() { var a, c, b, f, e, d, l, g, m; this._init = function() { c = new createjs.Container; c.visible = !1; a = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); m = a.on("click", function() {}); c.addChild(a); b = new CTLText(c, CANVAS_WIDTH / 2 - 300, CANVAS_HEIGHT / 2 - 162, 600, 60, 50, "center", "#fff", PRIMARY_FONT, 1, 0, 0, " ", !0, !0, !1, !1); e = new CTLText(c, CANVAS_WIDTH / 2 - 300, CANVAS_HEIGHT / 2 - 60, 600, 30, 30, "center", "#fff", PRIMARY_FONT, 1, 0, 0, " ", !0, !0, !1, !1); d = new CTLText(c, CANVAS_WIDTH / 2 - 300, CANVAS_HEIGHT / 2 - 20, 600, 30, 30, "center", "#fff", PRIMARY_FONT, 1, 0, 0, " ", !0, !0, !1, !1); f = new CTLText(c, CANVAS_WIDTH / 2 - 300, CANVAS_HEIGHT / 2 + 20, 600, 50, 50, "center", "#fff", PRIMARY_FONT, 1, 0, 0, " ", !0, !0, !1, !1); l = new CGfxButton(CANVAS_WIDTH / 2 - 200, CANVAS_HEIGHT / 2 + 120, s_oSpriteLibrary.getSprite("but_home"), c); l.addEventListener(ON_MOUSE_UP, this._onButHome, this); g = new CGfxButton(CANVAS_WIDTH / 2 + 200, CANVAS_HEIGHT / 2 + 120, s_oSpriteLibrary.getSprite("but_restart"), c); g.addEventListener(ON_MOUSE_UP, this._onButRestart, this); s_oStage.addChild(c) }; this.unload = function() { a.on("click", m); s_oStage.removeChild(c); l.unload(); g.unload() }; this.show = function(a, h, g) { var l = 0; s_iCurMode === MODE_HUMAN ? (l += POINTS_FOR_WIN, playSound("win", 1, 0), a === DISC_RED ? b.refreshText(TEXT_RED_WINS) : b.refreshText(TEXT_YELLOW_WINS)) : a === h ? (playSound("win", 1, 0), l += POINTS_FOR_WIN, b.refreshText(TEXT_CONGRATS)) : (playSound("game_over", 1, 0), b.refreshText(TEXT_YOU_LOSE)); e.refreshText(TEXT_BONUS_TIME + ": " + g); d.refreshText(TEXT_BONUS_WIN + ": " + l); a = g + l; f.refreshText(TEXT_SCORE + " " + a); c.visible = !0; c.alpha = 0; createjs.Tween.get(c).to({ alpha: 1 }, 500, createjs.Ease.cubicOut).call(function() { $(s_oMain).trigger("show_interlevel_ad") }); 0 < a && ($(s_oMain).trigger("save_score", a), $(s_oMain).trigger("share_event", void 0)); setVolume("soundtrack", 1) }; this._onButHome = function() { h.unload(); $(s_oMain).trigger("end_session"); s_oGame.onExit() }; this._onButRestart = function() { c.visible = !1; s_oGame.restart() }; var h = this; this._init(); return this } function CCreditsPanel() { var a, c, b, f, e; this._init = function() { a = new createjs.Container; s_oStage.addChild(a); var d = s_oSpriteLibrary.getSprite("msg_box"); f = createBitmap(d); f.regX = d.width / 2; f.regY = d.height / 2; e = f.on("click", this._onLogoButRelease); a.addChild(f); a.x = CANVAS_WIDTH / 2; a.y = CANVAS_HEIGHT / 2; d = new createjs.Text(TEXT_DEVELOPED, " 60px " + PRIMARY_FONT, "#ffffff"); d.y = -90; d.textAlign = "center"; d.textBaseline = "middle"; d.lineWidth = 600; a.addChild(d); d = new createjs.Text("www.codethislab.com", " 44px " + PRIMARY_FONT, "#ffffff"); d.y = 80; d.textAlign = "center"; d.textBaseline = "middle"; d.lineWidth = 600; a.addChild(d); d = s_oSpriteLibrary.getSprite("ctl_logo"); b = createBitmap(d); b.regX = d.width / 2; b.regY = d.height / 2; a.addChild(b); d = s_oSpriteLibrary.getSprite("but_exit"); c = new CGfxButton(276, -210, d, a); c.addEventListener(ON_MOUSE_UP, this.unload, this) }; this.unload = function() { s_oStage.removeChild(void 0); s_oStage.removeChild(a); c.unload(); f.off("click", e) }; this._onLogoButRelease = function() { window.open("http://www.codethislab.com/index.php?&l=en") }; this._init() } function CAreYouSurePanel(a) { var c, b, f, e, d, l, g; this._init = function() { c = []; b = []; g = new createjs.Container; l = g.on("click", function() {}); g.visible = !1; m.addChild(g); var a = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); g.addChild(a); f = new CTLText(g, CANVAS_WIDTH / 2 - 230, 220, 460, 140, 70, "center", "#fff", PRIMARY_FONT, 1, 0, 0, " ", !0, !0, !0, !1); e = new CGfxButton(CANVAS_WIDTH / 2 + 175, 484, s_oSpriteLibrary.getSprite("but_yes"), g); e.addEventListener(ON_MOUSE_UP, this._onReleaseYes, this); d = new CGfxButton(CANVAS_WIDTH / 2 - 175, 484, s_oSpriteLibrary.getSprite("but_no"), g); d.addEventListener(ON_MOUSE_UP, this._onReleaseNo, this) }; this.addEventListener = function(a, d, e) { c[a] = d; b[a] = e }; this.unload = function() { g.off("click", l); d.unload(); e.unload() }; this.show = function(a) { f.refreshText(a); g.visible = !0; g.alpha = 0; createjs.Tween.get(g).to({ alpha: 1 }, 500, createjs.Ease.cubicOut) }; this.hide = function() { g.visible = !1 }; this._onReleaseYes = function() { c[ON_RELEASE_YES] && c[ON_RELEASE_YES].call(b[ON_RELEASE_YES]) }; this._onReleaseNo = function() { c[ON_RELEASE_NO] && c[ON_RELEASE_NO].call(b[ON_RELEASE_NO]); g.visible = !1 }; var m = a; this._init(a) } function CModePanel() { var a, c, b, f, e, d, l, g, m = null, h = null, p; this._init = function() { p = new createjs.Container; s_oStage.addChild(p); var n = createBitmap(s_oSpriteLibrary.getSprite("bg_selection")); p.addChild(n); new CTLText(p, CANVAS_WIDTH / 2 - 300, 80, 600, 160, 80, "center", "#007eff", PRIMARY_FONT, 1, 0, 0, TEXT_CHOOSE_MODE, !0, !0, !0, !1); e = new CGfxButton(CANVAS_WIDTH / 2 - 200, CANVAS_HEIGHT / 2, s_oSpriteLibrary.getSprite("but_cpu"), p); e.addEventListener(ON_MOUSE_UP, this._onChooseCpu, this); d = new CGfxButton(CANVAS_WIDTH / 2 + 200, CANVAS_HEIGHT / 2, s_oSpriteLibrary.getSprite("but_human"), p); d.addEventListener(ON_MOUSE_UP, this._onChooseHuman, this); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) n = s_oSpriteLibrary.getSprite("audio_icon"), b = CANVAS_WIDTH - n.width / 4 - 10, f = n.height / 2 + 10, l = new CToggle(b, f, n, s_bAudioActive, s_oStage), l.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); n = window.document; var t = n.documentElement; m = t.requestFullscreen || t.mozRequestFullScreen || t.webkitRequestFullScreen || t.msRequestFullscreen; h = n.exitFullscreen || n.mozCancelFullScreen || n.webkitExitFullscreen || n.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (m = !1); m && screenfull.isEnabled && (n = s_oSpriteLibrary.getSprite("but_fullscreen"), a = n.width / 4 + 10, c = n.height / 2 + 10, g = new CToggle(a, c, n, s_bFullscreen, s_oStage), g.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); var x = new createjs.Shape; x.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); p.addChild(x); createjs.Tween.get(x).to({ alpha: 0 }, 1E3).call(function() { x.visible = !1 }); this.refreshButtonPos() }; this.refreshButtonPos = function() { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || l.setPosition(b - s_iOffsetX, s_iOffsetY + f); m && screenfull.isEnabled && g.setPosition(a + s_iOffsetX, c + s_iOffsetY) }; this.unload = function() { e.unload(); d.unload(); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) l.unload(), l = null; m && screenfull.isEnabled && g.unload(); s_oStage.removeAllChildren(); s_oModePanel = null }; this._onChooseCpu = function() { s_oModePanel.unload(); s_oMain.selectMode(MODE_CPU) }; this._onChooseHuman = function() { s_oModePanel.unload(); s_oMain.selectMode(MODE_HUMAN) }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this.resetFullscreenBut = function() { m && screenfull.isEnabled && g.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? h.call(window.document) : m.call(window.document.documentElement); sizeHandler() }; s_oModePanel = this; this._init() } var s_oModePanel = null; function CBoard(a, c, b) { var f, e, d, l, g, m, h, p, n, t, x, v, z; this._init = function(a, c) { f = !1; z = new createjs.Container; z.x = a; z.y = c; y.addChild(z); var b = createBitmap(s_oSpriteLibrary.getSprite("board_back")); b.x = 32; b.y = 4; z.addChild(b); v = new createjs.Container; z.addChild(v); b = createBitmap(s_oSpriteLibrary.getSprite("board_front")); z.addChild(b); e = []; d = []; t = []; b = 113; for (var n = 531, C = 0; C < BOARD_ROWS; C++) { e[C] = []; d[C] = []; t[C] = []; for (var H = 0; H < BOARD_COLS; H++) e[C][H] = DISC_EMPTY, d[C][H] = { x: b, y: n }, t[C][H] = null, b += 92; b = 113; n -= 91.5 } m = []; l = []; g = []; for (b = 0; b < BOARD_COLS; b++) n = new createjs.Shape, n.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(d[d.length - 1][b].x - DISC_RADIUS, d[d.length - 1][b].y - DISC_RADIUS, DISC_DIAMETER, d[0][b].y + DISC_RADIUS), C = n.on("click", E.colSelected, null, !1, b), m.push({ listener: C, event: "click" }), s_bMobile || (n.cursor = "pointer", C = n.on("mouseover", E.colOver, null, !1, b), m.push({ listener: C, event: "onmouseover" })), z.addChild(n), l[b] = n, g[b] = { x: d[d.length - 1][b].x, y: d[d.length - 1][b].y - DISC_DIAMETER }; b = s_oSpriteLibrary.getSprite("arrow"); x = createBitmap(b); x.regX = b.width / 2; x.regY = b.height; x.x = g[0].x; x.y = g[0].y; x.visible = !1; z.addChild(x); h = []; h.push({ row: 2, col: 0 }); h.push({ row: 1, col: 0 }); h.push({ row: 0, col: 0 }); h.push({ row: 0, col: 1 }); h.push({ row: 0, col: 2 }); h.push({ row: 0, col: 3 }); p = []; p.push({ row: 2, col: 6 }); p.push({ row: 1, col: 6 }); p.push({ row: 0, col: 6 }); p.push({ row: 0, col: 5 }); p.push({ row: 0, col: 4 }); p.push({ row: 0, col: 3 }) }; this.unload = function() { for (var a = 0; a < m.length; a++) l[a].off(m[a].event, m[a].listener) }; this.reset = function() { e = []; for (var a = 0; a < BOARD_ROWS; a++) { e[a] = []; for (var d = 0; d < BOARD_COLS; d++) e[a][d] = DISC_EMPTY, null !== t[a][d] && (t[a][d].unload(), t[a][d] = null) } for (d = 0; d < l.length; d++) l[d].visible = !0; f = !1 }; this.blockHitArea = function() { f = !0 }; this.playerTurn = function(a) { f = a; x.visible = !0 }; this.colOver = function(a, d) { f || (x.visible = !0); createjs.Tween.get(x).to({ x: g[d].x }, 500, createjs.Ease.cubicOut) }; this.colSelected = function(a, c) { if (!f) { f = !0; x.visible = !1; var b = E._findEmptyCellInColumns(c); e[b][c] = s_oGame.getCurTurn(); var h = TIME_FOR_DROP_PER_CELL * (BOARD_ROWS - b), p = new CDisc({ x: g[c].x, y: g[c].y }, s_oGame.getCurTurn(), v); p.drop(h, { x: d[b][c].x, y: d[b][c].y }); t[b][c] = p; s_oGame.dropDisc(c); b === BOARD_ROWS - 1 && (l[c].visible = !1, s_oGame.disableColumn()) } }; this.dropDiscByCpu = function(a, d) { var e = this.getPointPerCol(a), c = e.end, b = e.row, f = TIME_FOR_DROP_PER_CELL * (BOARD_ROWS - b); e = new CDisc(e.start, d, v); e.drop(f, c); t[b][a] = e; b === BOARD_ROWS - 1 && (l[a].visible = !1, s_oGame.disableColumn()) }; this._findEmptyCellInColumns = function(a) { for (var d = 0; d < BOARD_ROWS; d++) if (e[d][a] === DISC_EMPTY) return d; return -1 }; this._checkHorizontalAdjacency = function(a, d) { for (var c = 0; c < BOARD_ROWS; c++) { for (var b = [], f = 0; f < BOARD_COLS; f++) if (0 === b.length && e[c][f] === a) b = [], b.push({ row: c, col: f }); else if (0 < b.length && e[c][f] !== a) { if (b.length >= DISC_FOR_COMBOS) for (var h = 0; h < b.length; h++) d.push(b[h]); b = [] } else 0 < b.length && e[c][f] === a && b.push({ row: c, col: f }); if (b.length >= DISC_FOR_COMBOS) for (h = 0; h < b.length; h++) d.push(b[h]) } }; this._checkVerticalAdjacency = function(a, d) { for (var c = 0; c < BOARD_COLS; c++) { for (var b = [], f = 0; f < BOARD_ROWS; f++) if (0 === b.length && e[f][c] === a) b = [], b.push({ row: f, col: c }); else if (0 < b.length && e[f][c] !== a) { if (b.length >= DISC_FOR_COMBOS) for (var h = 0; h < b.length; h++) d.push(b[h]); b = [] } else 0 < b.length && e[f][c] === a && b.push({ row: f, col: c }); if (b.length >= DISC_FOR_COMBOS) for (h = 0; h < b.length; h++) d.push(b[h]) } }; this._checkDiagonalDxAdjacency = function(a, d) { for (var c = 0; c < h.length; c++) { for (var b = [], f = 0, g = 0, l, p; h[c].row + f < BOARD_ROWS && h[c].col + g < BOARD_COLS;) { l = h[c].row + f; p = h[c].col + g; if (0 === b.length && e[l][p] === a) b = [], b.push({ row: l, col: p }); else if (0 < b.length && e[l][p] !== a) { if (b.length >= DISC_FOR_COMBOS) for (l = 0; l < b.length; l++) d.push(b[l]); b = [] } else 0 < b.length && e[l][p] === a && b.push({ row: l, col: p }); f++; g++ } if (b.length >= DISC_FOR_COMBOS) for (l = 0; l < b.length; l++) d.push(b[l]) } }; this._checkDiagonalSxAdjacency = function(a, d) { for (var c = 0; c < h.length; c++) { for (var b = [], f = 0, l = 0, g, m; p[c].row + f < BOARD_ROWS && -1 < p[c].col + l;) { g = p[c].row + f; m = p[c].col + l; if (0 === b.length && e[g][m] === a) b = [], b.push({ row: g, col: m }); else if (0 < b.length && e[g][m] !== a) { if (b.length >= DISC_FOR_COMBOS) for (g = 0; g < b.length; g++) d.push(b[g]); b = [] } else 0 < b.length && e[g][m] === a && b.push({ row: g, col: m }); f++; l-- } if (b.length >= DISC_FOR_COMBOS) for (g = 0; g < b.length; g++) d.push(b[g]) } }; this.checkWinCombo = function(a) { n = []; this._checkHorizontalAdjacency(a, n); this._checkVerticalAdjacency(a, n); this._checkDiagonalDxAdjacency(a, n); this._checkDiagonalSxAdjacency(a, n); return 0 < n.length ? !0 : !1 }; this.playWinAnim = function() { for (var a = 0; a < n.length; a++) t[n[a].row][n[a].col].playWinAnim() }; this.getLogicBoard = function() { return e }; this.getPointPerCol = function(a) { var c = E._findEmptyCellInColumns(a); e[c][a] = s_oGame.getCurTurn(); return { start: { x: g[a].x, y: g[a].y }, end: { x: d[c][a].x, y: d[c][a].y }, row: c } }; var E = this; var y = b; this._init(a, c) } function CDisc(a, c, b) { var f, e, d; this._init = function(a, c) { d = new createjs.Container; d.x = a.x; d.y = a.y; l.addChild(d); var b = s_oSpriteLibrary.getSprite("disc"), g = { images: [b], frames: { width: b.width / 2, height: b.height, regX: b.width / 2 / 2, regY: b.height / 2 }, animations: { state_0: [0], state_1: [1] } }; g = new createjs.SpriteSheet(g); e = createSprite(g, "state_" + c, b.width / 4 / 2, b.height / 2, b.width / 4, b.height); d.addChild(e); b = s_oSpriteLibrary.getSprite("win_effect"); g = { images: [b], frames: { width: 78, height: 78, regX: 39, regY: 39 }, animations: { stop: [0, 0 ], anim: [0, 27] } }; b = new createjs.SpriteSheet(g); f = createSprite(b, "stop", 39, 39, 78, 78); f.x = 0; f.y = 0; d.addChild(f) }; this.unload = function() { l.removeChild(d) }; this.drop = function(a, c) { playSound("drop", 1, 0); createjs.Tween.get(d).to({ y: c.y }, a, createjs.Ease.bounceOut).call(function() { s_oGame.checkCombos() }) }; this.playWinAnim = function() { f.gotoAndPlay("anim") }; this.setFrame = function(a) { e.gotoAndStop("state_" + a) }; var l = b; this._init(a, c) } function CTurnPanel(a, c, b) { var f, e, d; this._init = function(a, c) { d = new createjs.Container; d.x = a; d.y = c; l.addChild(d); var b = s_oSpriteLibrary.getSprite("bg_turn"), g = createBitmap(b); d.addChild(g); e = new CTLText(d, 22, 14, 138, 30, 20, "center", "#fff", PRIMARY_FONT, 1, 0, 0, s_iCurMode === MODE_CPU ? TEXT_PLAYER_TURN : TEXT_PLAYER1_TURN, !0, !0, !0, !1); f = new CDisc({ x: b.width / 2, y: b.height / 2 + 7 }, s_oGame.getCurTurn(), d) }; this.setTurn = function(a, d) { e.text = d; f.setFrame(a) }; var l = b; this._init(a, c) } function CAIController() { var a, c, b, f; this._init = function() { c = a = DISC_GENERIC; b = []; b.push(3); b.push(4); b.push(2); b.push(5); b.push(1); b.push(6); b.push(0) }; this.setLastEnemyThrowCol = function(a) {}; this.verifyIfPlayerWinsWithHorizontalLine = function(a, d, c, b, m) { var e, g = 0; var l = 0; for (e = 1; f[a][d + e] === c;) l++, e++; for (; f[a][d + e] === DISC_EMPTY;) e++, g++; for (e = -1; f[a][d + e] === c;) l++, e--; for (; f[a][d + e] === DISC_EMPTY;) e--, g++; m._iNumFreeAdiacency = g; return l > b ? !0 : !1 }; this.verifyIfPlayerWinsWithVerticalLine = function(a, d, c, b) { for (var e = 0, g = -1;;) if (-1 < a + g && f[a + g][d] === c) e++, g--; else break; return e > b ? !0 : !1 }; this.verifyIfPlayerWinsWithDiagonalDxLine = function(a, d, c, b, m) { for (var e = 0, g = 1, l = 0; a + g < BOARD_ROWS && f[a + g][d + g] === c;) e++, g++; for (; - 1 < d + g && a + g < BOARD_ROWS && f[a + g][d + g] === DISC_EMPTY;) g++, l++; for (g = -1; 0 <= a + g && f[a + g][d + g] === c;) e++, g--; for (; 0 <= a + g && 0 <= d + g && f[a + g][d + g] === DISC_EMPTY;) g--, l++; m._iNumFreeAdiacency = l; return e > b ? !0 : !1 }; this.verifyIfPlayerWinsWithDiagonalSxLine = function(a, d, c, b, m) { for (var e = 0, g = 1, l = 0; 0 <= a - g && f[a - g][d + g] === c;) e++, g++; for (; 0 <= a - g && d + g < BOARD_COLS && f[a - g][d + g] === DISC_EMPTY;) l++, g++; for (g = 1; a + g < BOARD_ROWS && f[a + g][d - g] === c;) e++, g++; for (; - 1 < d - g && a + g < BOARD_ROWS && f[a + g][d - g] === DISC_EMPTY;) l++, g++; m._iNumFreeAdiacency = l; return e > b ? !0 : !1 }; this.verifyIfPlayerWins = function(a, d, c, b) { var e = {}; return this.verifyIfPlayerWinsWithDiagonalDxLine(a, d, c, b, e) || this.verifyIfPlayerWinsWithDiagonalSxLine(a, d, c, b, e) || this.verifyIfPlayerWinsWithVerticalLine(a, d, c, b, e) || this.verifyIfPlayerWinsWithHorizontalLine(a, d, c, b, e) ? !0 : !1 }; this.verifyProbablyPlayerColWinner = function(c, d) { for (var e = [], g = 0; g < BOARD_ROWS; g++) for (var m = 0; m < BOARD_COLS; m++) { var h = b[m]; if (f[g][h] === DISC_EMPTY && (0 === g || null !== f[g - 1][h] && f[g - 1][h] !== DISC_EMPTY)) { var p = { _iNumFreeAdiacency: 0 }; this.verifyIfPlayerWinsWithDiagonalDxLine(g, h, c, d, p) && 2 < p._iNumFreeAdiacency + d && e.push(h); p._iNumFreeAdiacency = 0; this.verifyIfPlayerWinsWithDiagonalSxLine(g, h, c, d, p) && 2 < p._iNumFreeAdiacency + d && e.push(h); p._iNumFreeAdiacency = 0; this.verifyIfPlayerWinsWithHorizontalLine(g, h, c, d, p) && 2 < p._iNumFreeAdiacency + d && e.push(h); c !== a && this.verifyIfPlayerWinsWithVerticalLine(g, h, c, d) && e.push(h) } } return e }; this.verifyPlayerColWinner = function(a, d) { for (var c = [], e = 0; e < BOARD_ROWS; e++) for (var m = 0; m < BOARD_COLS; m++) { var h = b[m]; f[e][h] === DISC_EMPTY && (0 == e || null !== f[e - 1][h] && f[e - 1][h] !== DISC_EMPTY) && this.verifyIfPlayerWins(e, h, a, d) && c.push(h) } return c }; this.setEnemyCode = function(b) { a = b; c = b === DISC_RED ? DISC_YELLOW : DISC_RED }; this._getFreeRowFromCol = function(a) { for (var d = 0; d < BOARD_ROWS; d++) if (f[d][a] === DISC_EMPTY) return d; return null }; this.randomThrow = function() { for (var b, d = 0;;) if (b = Math.floor(Math.random() * BOARD_COLS), f[BOARD_ROWS - 1][b] === DISC_EMPTY) { d++; if (50 === d) return b; var l = this._getFreeRowFromCol(b); if (l + 1 < BOARD_ROWS && !1 === this.verifyIfPlayerWins(l + 1, b, a, 2) && !1 === this.verifyIfPlayerWins(l + 1, b, c, 2) || l === BOARD_ROWS - 1) return b } }; this.analyseArrayCols = function(a) { if (!a || 0 === a.length) return []; var d, c = []; for (d = 0; d < a.length; d++) { for (var b = !1, e = 0; e < c; e++) c[e].iValue === a[d] && (c[e].iCnt++, b = !0); !1 === b && c.push(Object({ iValue: a[d], iCnt: 1 })) } a = c[0].iCnt; for (d = 1; d < c.length; d++) a < c[d].iCnt && (a = c[d].iCnt); b = []; for (d = 0; d < c.length; d++) a === c[d].iCnt && b.push(c[d].iValue); return b }; this.chooseColFromList = function(b) { for (var d = 0; d < b.length; d++) { var e = this._getFreeRowFromCol(b[d]); if (e + 1 < BOARD_ROWS && !1 === this.verifyIfPlayerWins(e + 1, b[d], a, 2) && !1 === this.verifyIfPlayerWins(e + 1, b[d], c, 2)) return b[d] } return null }; this.strategicThrow = function() { var b = this.verifyProbablyPlayerColWinner(c, 0), d = this.verifyProbablyPlayerColWinner(c, 1), f = this.verifyProbablyPlayerColWinner(c, 2), g = this.verifyPlayerColWinner(c, 0), m = this.verifyPlayerColWinner(c, 1); b = this.analyseArrayCols(b); d = this.analyseArrayCols(d); f = this.analyseArrayCols(f); this.analyseArrayCols(g); this.analyseArrayCols(m); g = this.verifyProbablyPlayerColWinner(a, 1); m = this.analyseArrayCols(g); g = []; g.push(f); g.push(d); g.push(m); g.push(b); for (b = 0; b < g.length; b++) if (0 < g[b].length && (d = this.chooseColFromList(g[b]), null !== d)) return d; return this.randomThrow() }; this.throwCoin = function(b) { f = b; b = this.verifyPlayerColWinner(c, 2); 0 < b.length ? s_oGame.dropDiscByCpu(b[0]) : (b = this.verifyPlayerColWinner(a, 2), 0 < b.length ? s_oGame.dropDiscByCpu(b[0]) : (b = this.analyzelinesOfTwoCoins(a), 0 < b.length ? s_oGame.dropDiscByCpu(b[0]) : s_oGame.dropDiscByCpu(this.strategicThrow()))) }; this.analyzelinesOfTwoCoins = function(a) { for (var d = [], b = 0; b < BOARD_ROWS; b++) for (var c = 0; c < BOARD_COLS; c++) if (f[b][c] === DISC_EMPTY && (0 === b || null !== f[b - 1][c] && f[b - 1][c] !== DISC_EMPTY) && null !== this.analyzeLinesOfTwoHorizontal(b, c, a)) { for (var e = !1, h = 0; h < d.length; h++) c === d[h] && (e = !0); !1 === e && d.push(c) } return d }; this.analyzeLinesOfTwoHorizontal = function(a, b, c) { if (f[a][b + 1] === c && f[a][b + 2] === c && f[a][b + 3] === DISC_EMPTY) { if (f[a][b - 1] === DISC_EMPTY && (0 === a || f[a - 1][b - 1] !== DISC_EMPTY)) return b; if (f[a][b + 4] === DISC_EMPTY && (0 === a || f[a - 1][b + 4] !== DISC_EMPTY)) return b + 3 } return f[a][b + 1] !== c || f[a][b - 1] !== c || f[a][b + 2] !== DISC_EMPTY || f[a][b - 2] !== DISC_EMPTY || 0 !== a && (f[a - 1][b + 2] === DISC_EMPTY || 0 !== a && f[a - 1][b - 2] === DISC_EMPTY) ? null : b }; this._init() } function CTiePanel() { var a, c, b, f, e; this._init = function() { c = new createjs.Container; a = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); b = a.on("click", function() {}); c.addChild(a); new CTLText(c, CANVAS_WIDTH / 2 - 250, CANVAS_HEIGHT / 2 - 142, 500, 160, 80, "center", "#fff", PRIMARY_FONT, 1, 0, 0, TEXT_TIE, !0, !0, !0, !1); f = new CGfxButton(CANVAS_WIDTH / 2 - 200, CANVAS_HEIGHT / 2 + 120, s_oSpriteLibrary.getSprite("but_home"), c); f.addEventListener(ON_MOUSE_UP, this._onButHome, this); e = new CGfxButton(CANVAS_WIDTH / 2 + 200, CANVAS_HEIGHT / 2 + 120, s_oSpriteLibrary.getSprite("but_restart"), c); e.addEventListener(ON_MOUSE_UP, this._onButRestart, this); s_oStage.addChild(c); c.alpha = 0; createjs.Tween.get(c).to({ alpha: 1 }, 500, createjs.Ease.cubicOut).call(function() { $(s_oMain).trigger("show_interlevel_ad") }); setVolume("soundtrack", 1) }; this.unload = function() { a.on("click", b); s_oStage.removeChild(c); f.unload(); e.unload() }; this._onButHome = function() { d.unload(); $(s_oMain).trigger("end_session"); s_oGame.onExit() }; this._onButRestart = function() { d.unload(); s_oGame.restart() }; var d = this; this._init(); return this } CTLText.prototype = { constructor: CTLText, __autofit: function() { if (this._bFitText) { for (var a = this._iStartingFontSize; (this._oText.getBounds().height > this._iHeight - 2 * this._iPaddingV || this._oText.getBounds().width > this._iWidth - 2 * this._iPaddingH) && !(a--, this._oText.font = a + "px " + this._szFont, this._oText.lineHeight = Math.round(a * this._fLineHeightFactor), this.__updateY(), this.__verticalAlign(), 8 > a);); this._iFontSize = a } }, __verticalAlign: function() { if (this._bVerticalAlign) { var a = this._oText.getBounds().height; this._oText.y -= (a - this._iHeight) / 2 + this._iPaddingV } }, __updateY: function() { this._oText.y = this._y + this._iPaddingV; switch (this._oText.textBaseline) { case "middle": this._oText.y += this._oText.lineHeight / 2 + (this._iFontSize * this._fLineHeightFactor - this._iFontSize) } }, __createText: function(a) { this._bDebug && (this._oDebugShape = new createjs.Shape, this._oDebugShape.graphics.beginFill("rgba(255,0,0,0.5)").drawRect(this._x, this._y, this._iWidth, this._iHeight), this._oContainer.addChild(this._oDebugShape)); this._oText = new createjs.Text(a, this._iFontSize + "px " + this._szFont, this._szColor); this._oText.textBaseline = "middle"; this._oText.lineHeight = Math.round(this._iFontSize * this._fLineHeightFactor); this._oText.textAlign = this._szAlign; this._oText.lineWidth = this._bMultiline ? this._iWidth - 2 * this._iPaddingH : null; switch (this._szAlign) { case "center": this._oText.x = this._x + this._iWidth / 2; break; case "left": this._oText.x = this._x + this._iPaddingH; break; case "right": this._oText.x = this._x + this._iWidth - this._iPaddingH } this._oContainer.addChild(this._oText); this.refreshText(a) }, setVerticalAlign: function(a) { this._bVerticalAlign = a }, setX: function(a) { this._x = a; this._oText.x = a }, setY: function(a) { this._y = a; this._oText.y = a }, setOutline: function(a) { null !== this._oText && (this._oText.outline = a) }, setShadow: function(a, c, b, f) { null !== this._oText && (this._oText.shadow = new createjs.Shadow(a, c, b, f)) }, setColor: function(a) { this._oText.color = a }, setAlpha: function(a) { this._oText.alpha = a }, removeTweens: function() { createjs.Tween.removeTweens(this._oText) }, getText: function() { return this._oText }, getY: function() { return this._y }, getFontSize: function() { return this._iFontSize }, getBounds: function() { return this._oText.getBounds() }, refreshText: function(a) { "" === a && (a = " "); null === this._oText && this.__createText(a); this._oText.text = a; this._oText.font = this._iStartingFontSize + "px " + this._szFont; this._oText.lineHeight = Math.round(this._iStartingFontSize * this._fLineHeightFactor); this.__autofit(); this.__updateY(); this.__verticalAlign() } }; function CTLText(a, c, b, f, e, d, l, g, m, h, p, n, t, x, v, z, E) { this._oContainer = a; this._x = c; this._y = b; this._iWidth = f; this._iHeight = e; this._bMultiline = z; this._iFontSize = this._iStartingFontSize = d; this._szAlign = l; this._szColor = g; this._szFont = m; this._iPaddingH = p; this._iPaddingV = n; this._bVerticalAlign = v; this._bFitText = x; this._bDebug = E; this._oDebugShape = null; this._fLineHeightFactor = h; this._oText = null; t && this.__createText(t) } function extractHostname(a) { a = -1 < a.indexOf("://") ? a.split("/")[2] : a.split("/")[0]; a = a.split(":")[0]; return a = a.split("?")[0] } function extractRootDomain(a) { a = extractHostname(a); var c = a.split("."), b = c.length; 2 < b && (a = c[b - 2] + "." + c[b - 1]); return a } var getClosestTop = function() { var a = window, c = !1; try { for (; a.parent.document !== a.document;) if (a.parent.document) a = a.parent; else { c = !0; break } } catch (b) { c = !0 } return { topFrame: a, err: c } }, getBestPageUrl = function(a) { var c = a.topFrame, b = ""; if (a.err) try { try { b = window.top.location.href } catch (e) { var f = window.location.ancestorOrigins; b = f[f.length - 1] } } catch (e) { b = c.document.referrer } else b = c.location.href; return b }, TOPFRAMEOBJ = getClosestTop(), PAGE_URL = getBestPageUrl(TOPFRAMEOBJ); function seekAndDestroy() { for (var a = extractRootDomain(PAGE_URL), c = [String.fromCharCode(99, 111, 100, 101, 116, 104, 105, 115, 108, 97, 98, 46, 99, 111, 109), String.fromCharCode(101, 110, 118, 97, 116, 111, 46, 99, 111, 109), String.fromCharCode(99, 111, 100, 101, 99, 97, 110, 121, 111, 110, 46, 99, 111, 109), String.fromCharCode(99, 111, 100, 101, 99, 97, 110, 121, 111, 110, 46, 110, 101, 116)], b = 0; b < c.length; b++) if (c[b] === a) return !0; return !1 };
| ver. 1.4 |
Github
|
.
| PHP 8.2.29 | Генераци� �траницы: 0.01 |
proxy
|
phpinfo
|
�а�тройка