Файловый менеджер - Редактировать - /home/jogoso94/public_html/jogos/brick_out/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(n) { n = String(n); return n.charAt(0).toUpperCase() + n.slice(1) } function q(n, K) { var H = -1, G = n ? n.length : 0; if ("number" == typeof G && -1 < G && G <= w) for (; ++H < G;) K(n[H], H, n); else h(n, K) } function c(n) { n = String(n).replace(/^ +| +$/g, ""); return /^(?:webOS|i(?:OS|P))/.test(n) ? n : a(n) } function h(n, K) { for (var H in n) L.call(n, H) && K(n[H], H, n) } function l(n) { return null == n ? a(n) : D.call(n).slice(8, -1) } function p(n, K) { var H = null != n ? typeof n[K] : "number"; return !/^(?:boolean|number|string|undefined)$/.test(H) && ("object" == H ? !!n[K] : !0) } function d(n) { return String(n).replace(/([ -])(?!$)/g, "$1?") } function k(n, K) { var H = null; q(n, function(G, C) { H = K(H, G, C, n) }); return H } function g(n) { function K(Z) { return k(Z, function(Q, O) { var X = O.pattern || d(O); !Q && (Q = RegExp("\\b" + X + " *\\d+[.\\w_]*", "i").exec(n) || RegExp("\\b" + X + " *\\w+-[\\w]*", "i").exec(n) || RegExp("\\b" + X + "(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)", "i").exec(n)) && ((Q = String(O.label && !RegExp(X, "i").test(O.label) ? O.label : Q).split("/"))[1] && !/[\d.]+/.test(Q[0]) && (Q[0] += " " + Q[1]), O = O.label || O, Q = c(Q[0].replace(RegExp(X, "i"), O).replace(RegExp("; *(?:" + O + "[_-])?", "i"), " ").replace(RegExp("(" + O + ")[-_.]?(\\w)", "i"), "$1 $2"))); return Q }) } function H(Z) { return k(Z, function(Q, O) { return Q || (RegExp(O + "(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)", "i").exec(n) || 0)[1] || null }) } var G = f, C = n && "object" == typeof n && "String" != l(n); C && (G = n, n = null); var E = G.navigator || {}, y = E.userAgent || ""; n || (n = y); var da = C ? !!E.likeChrome : /\bChrome\b/.test(n) && !/internal|\n/i.test(D.toString()), Y = C ? "Object" : "ScriptBridgingProxyObject", P = C ? "Object" : "Environment", S = C && G.java ? "JavaPackage" : l(G.java), la = C ? "Object" : "RuntimeObject"; P = (S = /\bJava/.test(S) && G.java) && l(G.environment) == P; var oa = S ? "a" : "\u03b1", fa = S ? "b" : "\u03b2", F = G.document || {}, M = G.operamini || G.opera, T = J.test(T = C && M ? M["[[Class]]"] : l(M)) ? T : M = null, m, ha = n; C = []; var pa = null, ia = n == y; y = ia && M && "function" == typeof M.version && M.version(); var U = function(Z) { return k(Z, function(Q, O) { return Q || RegExp("\\b" + (O.pattern || d(O)) + "\\b", "i").exec(n) && (O.label || O) }) }([{ label: "EdgeHTML", pattern: "Edge" }, "Trident", { label: "WebKit", pattern: "AppleWebKit" }, "iCab", "Presto", "NetFront", "Tasman", "KHTML", "Gecko"]), A = function(Z) { return k(Z, function(Q, O) { return Q || RegExp("\\b" + (O.pattern || d(O)) + "\\b", "i").exec(n) && (O.label || O) }) }(["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" ]), V = K([{ 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" ]), ba = function(Z) { return k(Z, function(Q, O, X) { return Q || (O[V] || O[/^[a-z]+(?: +[a-z]+\b)*/i.exec(V)] || RegExp("\\b" + d(X) + "(?:\\b|\\w*\\d)", "i").exec(n)) && X }) }({ 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 } }), B = function(Z) { return k(Z, function(Q, O) { var X = O.pattern || d(O); if (!Q && (Q = RegExp("\\b" + X + "(?:/[\\d.]+|[ \\w.]*)", "i").exec(n))) { var ca = Q, ja = O.label || O, qa = { "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" }; X && ja && /^Win/i.test(ca) && !/^Windows Phone /i.test(ca) && (qa = qa[/[\d.]+$/.exec(ca)]) && (ca = "Windows " + qa); ca = String(ca); X && ja && (ca = ca.replace(RegExp(X, "i"), ja)); Q = ca = c(ca.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 Q }) }(["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 " ]); U && (U = [U]); ba && !V && (V = K([ba])); if (m = /\bGoogle TV\b/.exec(V)) V = m[0]; /\bSimulator\b/i.test(n) && (V = (V ? V + " " : "") + "Simulator"); "Opera Mini" == A && /\bOPiOS\b/.test(n) && C.push("running in Turbo/Uncompressed mode"); "IE" == A && /\blike iPhone OS\b/.test(n) ? (m = g(n.replace(/like iPhone OS/, "")), ba = m.manufacturer, V = m.product) : /^iP/.test(V) ? (A || (A = "Safari"), B = "iOS" + ((m = / OS ([\d_]+)/i.exec(n)) ? " " + m[1].replace(/_/g, ".") : "")) : "Konqueror" != A || /buntu/i.test(B) ? ba && "Google" != ba && (/Chrome/.test(A) && !/\bMobile Safari\b/i.test(n) || /\bVita\b/.test(V)) || /\bAndroid\b/.test(B) && /^Chrome/.test(A) && /\bVersion\//i.test(n) ? (A = "Android Browser", B = /\bAndroid\b/.test(B) ? B : "Android") : "Silk" == A ? (/\bMobi/i.test(n) || (B = "Android", C.unshift("desktop mode")), /Accelerated *= *true/i.test(n) && C.unshift("accelerated")) : "PaleMoon" == A && (m = /\bFirefox\/([\d.]+)\b/.exec(n)) ? C.push("identifying as Firefox " + m[1]) : "Firefox" == A && (m = /\b(Mobile|Tablet|TV)\b/i.exec(n)) ? (B || (B = "Firefox OS"), V || (V = m[1])) : !A || (m = !/\bMinefield\b/i.test(n) && /\b(?:Firefox|Safari)\b/.exec(A)) ? (A && !V && /[\/,]|^[^(]+?\)/.test(n.slice(n.indexOf(m + "/") + 8)) && (A = null), (m = V || ba || B) && (V || ba || /\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(B)) && (A = /[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(B) ? B : m) + " Browser")) : "Electron" == A && (m = (/\bChrome\/([\d.]+)\b/.exec(n) || 0)[1]) && C.push("Chromium " + m) : B = "Kubuntu"; y || (y = H(["(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$))", "Version", d(A), "(?:Firefox|Minefield|NetFront)" ])); if (m = "iCab" == U && 3 < parseFloat(y) && "WebKit" || /\bOpera\b/.test(A) && (/\bOPR\b/.test(n) ? "Blink" : "Presto") || /\b(?:Midori|Nook|Safari)\b/i.test(n) && !/^(?:Trident|EdgeHTML)$/.test(U) && "WebKit" || !U && /\bMSIE\b/i.test(n) && ("Mac OS" == B ? "Tasman" : "Trident") || "WebKit" == U && /\bPlayStation\b(?! Vita\b)/i.test(A) && "NetFront") U = [m]; "IE" == A && (m = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(n) || 0)[1]) ? (A += " Mobile", B = "Windows Phone " + (/\+$/.test(m) ? m : m + ".x"), C.unshift("desktop mode")) : /\bWPDesktop\b/i.test(n) ? (A = "IE Mobile", B = "Windows Phone 8.x", C.unshift("desktop mode"), y || (y = (/\brv:([\d.]+)/.exec(n) || 0)[1])) : "IE" != A && "Trident" == U && (m = /\brv:([\d.]+)/.exec(n)) && (A && C.push("identifying as " + A + (y ? " " + y : "")), A = "IE", y = m[1]); if (ia) { if (p(G, "global")) if (S && (m = S.lang.System, ha = m.getProperty("os.arch"), B = B || m.getProperty("os.name") + " " + m.getProperty("os.version")), P) { try { y = G.require("ringo/engine").version.join("."), A = "RingoJS" } catch (Z) { (m = G.system) && m.global.system == G.system && (A = "Narwhal", B || (B = m[0].os || null)) } A || (A = "Rhino") } else "object" == typeof G.process && !G.process.browser && (m = G.process) && ("object" == typeof m.versions && ("string" == typeof m.versions.electron ? (C.push("Node " + m.versions.node), A = "Electron", y = m.versions.electron) : "string" == typeof m.versions.nw && (C.push("Chromium " + y, "Node " + m.versions.node), A = "NW.js", y = m.versions.nw)), A || (A = "Node.js", ha = m.arch, B = m.platform, y = (y = /[\d.]+/.exec(m.version)) ? y[0] : null)); else l(m = G.runtime) == Y ? (A = "Adobe AIR", B = m.flash.system.Capabilities.os) : l(m = G.phantom) == la ? (A = "PhantomJS", y = (m = m.version || null) && m.major + "." + m.minor + "." + m.patch) : "number" == typeof F.documentMode && (m = /\bTrident\/(\d+)/i.exec(n)) ? (y = [y, F.documentMode], (m = +m[1] + 4) != y[1] && (C.push("IE " + y[1] + " mode"), U && (U[1] = ""), y[1] = m), y = "IE" == A ? String(y[1].toFixed(1)) : y[0]) : "number" == typeof F.documentMode && /^(?:Chrome|Firefox)\b/.test(A) && (C.push("masking as " + A + " " + y), A = "IE", y = "11.0", U = ["Trident"], B = "Windows"); B = B && c(B) } y && (m = /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(y) || /(?:alpha|beta)(?: ?\d)?/i.exec(n + ";" + (ia && E.appMinorVersion)) || /\bMinefield\b/i.test(n) && "a") && (pa = /b/i.test(m) ? "beta" : "alpha", y = y.replace(RegExp(m + "\\+?$"), "") + ("beta" == pa ? fa : oa) + (/\d+\+?/.exec(m) || "")); if ("Fennec" == A || "Firefox" == A && /\b(?:Android|Firefox OS)\b/.test(B)) A = "Firefox Mobile"; else if ("Maxthon" == A && y) y = y.replace(/\.[\d.]+/, ".x"); else if (/\bXbox\b/i.test(V)) "Xbox 360" == V && (B = null), "Xbox 360" == V && /\bIEMobile\b/.test(n) && C.unshift("mobile mode"); else if (!/^(?:Chrome|IE|Opera)$/.test(A) && (!A || V || /Browser|Mobi/.test(A)) || "Windows CE" != B && !/Mobi/i.test(n)) if ("IE" == A && ia) try { null === G.external && C.unshift("platform preview") } catch (Z) { C.unshift("embedded") } else(/\bBlackBerry\b/.test(V) || /\bBB10\b/.test(n)) && (m = (RegExp(V.replace(/ +/g, " *") + "/([.\\d]+)", "i").exec(n) || 0)[1] || y) ? (m = [m, /BB10/.test(n)], B = (m[1] ? (V = null, ba = "BlackBerry") : "Device Software") + " " + m[0], y = null) : this != h && "Wii" != V && (ia && M || /Opera/.test(A) && /\b(?:MSIE|Firefox)\b/i.test(n) || "Firefox" == A && /\bOS X (?:\d+\.){2,}/.test(B) || "IE" == A && (B && !/^Win/.test(B) && 5.5 < y || /\bWindows XP\b/.test(B) && 8 < y || 8 == y && !/\bTrident\b/.test(n))) && !J.test(m = g.call(h, n.replace(J, "") + ";")) && m.name && (m = "ing as " + m.name + ((m = m.version) ? " " + m : ""), J.test(A) ? (/\bIE\b/.test(m) && "Mac OS" == B && (B = null), m = "identify" + m) : (m = "mask" + m, A = T ? c(T.replace(/([a-z])([A-Z])/g, "$1 $2")) : "Opera", /\bIE\b/.test(m) && (B = null), ia || (y = null)), U = ["Presto"], C.push(m)); else A += " Mobile"; if (m = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(n) || 0)[1]) { m = [parseFloat(m.replace(/\.(\d)$/, ".0$1")), m]; if ("Safari" == A && "+" == m[1].slice(-1)) A = "WebKit Nightly", pa = "alpha", y = m[1].slice(0, -1); else if (y == m[1] || y == (m[2] = (/\bSafari\/([\d.]+\+?)/i.exec(n) || 0)[1])) y = null; m[1] = (/\bChrome\/([\d.]+)/i.exec(n) || 0)[1]; 537.36 == m[0] && 537.36 == m[2] && 28 <= parseFloat(m[1]) && "WebKit" == U && (U = ["Blink"]); ia && (da || m[1]) ? (U && (U[1] = "like Chrome"), m = m[1] || (m = m[0], 530 > m ? 1 : 532 > m ? 2 : 532.05 > m ? 3 : 533 > m ? 4 : 534.03 > m ? 5 : 534.07 > m ? 6 : 534.1 > m ? 7 : 534.13 > m ? 8 : 534.16 > m ? 9 : 534.24 > m ? 10 : 534.3 > m ? 11 : 535.01 > m ? 12 : 535.02 > m ? "13+" : 535.07 > m ? 15 : 535.11 > m ? 16 : 535.19 > m ? 17 : 536.05 > m ? 18 : 536.1 > m ? 19 : 537.01 > m ? 20 : 537.11 > m ? "21+" : 537.13 > m ? 23 : 537.18 > m ? 24 : 537.24 > m ? 25 : 537.36 > m ? 26 : "Blink" != U ? "27" : "28")) : (U && (U[1] = "like Safari"), m = (m = m[0], 400 > m ? 1 : 500 > m ? 2 : 526 > m ? 3 : 533 > m ? 4 : 534 > m ? "4+" : 535 > m ? 5 : 537 > m ? 6 : 538 > m ? 7 : 601 > m ? 8 : "8")); U && (U[1] += " " + (m += "number" == typeof m ? ".x" : /[.+]/.test(m) ? "" : "+")); "Safari" == A && (!y || 45 < parseInt(y)) && (y = m) } "Opera" == A && (m = /\bzbov|zvav$/.exec(B)) ? (A += " ", C.unshift("desktop mode"), "zvav" == m ? (A += "Mini", y = null) : A += "Mobile", B = B.replace(RegExp(" *" + m + "$"), "")) : "Safari" == A && /\bChrome\b/.exec(U && U[1]) && (C.unshift("desktop mode"), A = "Chrome Mobile", y = null, /\bOS X\b/.test(B) ? (ba = "Apple", B = "iOS 4.3+") : B = null); y && 0 == y.indexOf(m = /[\d.]+$/.exec(B)) && -1 < n.indexOf("/" + m + "-") && (B = String(B.replace(m, "")).replace(/^ +| +$/g, "")); U && !/\b(?:Avant|Nook)\b/.test(A) && (/Browser|Lunascape|Maxthon/.test(A) || "Safari" != A && /^iOS/.test(B) && /\bSafari\b/.test(U[1]) || /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|Web)/.test(A) && U[1]) && (m = U[U.length - 1]) && C.push(m); C.length && (C = ["(" + C.join("; ") + ")"]); ba && V && 0 > V.indexOf(ba) && C.push("on " + ba); V && C.push((/^on /.test(C[C.length - 1]) ? "" : "on ") + V); if (B) { var ra = (m = / ([\d.+]+)$/.exec(B)) && "/" == B.charAt(B.length - m[0].length - 1); B = { architecture: 32, family: m && !ra ? B.replace(m[0], "") : B, version: m ? m[1] : null, toString: function() { var Z = this.version; return this.family + (Z && !ra ? " " + Z : "") + (64 == this.architecture ? " 64-bit" : "") } } }(m = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(ha)) && !/\bi686\b/i.test(ha) ? (B && (B.architecture = 64, B.family = B.family.replace(RegExp(" *" + m), "")), A && (/\bWOW64\b/i.test(n) || ia && /\w(?:86|32)$/.test(E.cpuClass || E.platform) && !/\bWin64; x64\b/i.test(n)) && C.unshift("32-bit")) : B && /^OS X/.test(B.family) && "Chrome" == A && 39 <= parseFloat(y) && (B.architecture = 64); n || (n = null); G = {}; G.description = n; G.layout = U && U[0]; G.manufacturer = ba; G.name = A; G.prerelease = pa; G.product = V; G.ua = n; G.version = A && y; G.os = B || { architecture: null, family: null, version: null, toString: function() { return "null" } }; G.parse = g; G.toString = function() { return this.description || "" }; G.version && C.unshift(y); G.name && C.unshift(A); B && A && (B != String(B).split(" ")[0] || B != A.split(" ")[0] && !V) && C.push(V ? "(" + B + ")" : "on " + B); C.length && (G.description = C.join(" ")); return G } var b = { "function": !0, object: !0 }, f = b[typeof window] && window || this, t = b[typeof exports] && exports; b = b[typeof module] && module && !module.nodeType && module; var r = t && b && "object" == typeof global && global; !r || r.global !== r && r.window !== r && r.self !== r || (f = r); var w = Math.pow(2, 53) - 1, J = /\bOpera/; r = Object.prototype; var L = r.hasOwnProperty, D = r.toString, N = g(); "function" == typeof define && "object" == typeof define.amd && define.amd ? (f.platform = N, define(function() { return N })) : t && b ? h(N, function(n, K) { t[K] = n }) : f.platform = N }).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" }], q = 0; q < a.length; q++) { var c = document.createElement("meta"); c.name = a[q].name; c.content = a[q].content; var h = window.document.head.querySelector('meta[name="' + c.name + '"]'); h && h.parentNode.removeChild(h); window.document.head.appendChild(c) } } function hideIOSFullscreenPanel() { document.querySelector(".xxx-ios-fullscreen-message").style.display = "none"; document.querySelector(".xxx-ios-fullscreen-scroll").style.display = "none"; document.querySelector(".xxx-game-iframe-full").classList.remove("xxx-game-iframe-iphone-se") } function buildIOSFullscreenPanel() { document.body.insertAdjacentHTML("beforeend", '<div class="xxx-ios-fullscreen-message"><div class="xxx-ios-fullscreen-swipe"></div></div><div class="xxx-ios-fullscreen-scroll"></div>') } function showIOSFullscreenPanel() { document.querySelector(".xxx-ios-fullscreen-message").style.display = "none"; document.querySelector(".xxx-ios-fullscreen-scroll").style.display = "none" } 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 && document.querySelector(".xxx-game-iframe-full").classList.add("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, q = a.family.toLowerCase(); a = parseFloat(a.version); return "ios" === q && 13 > a ? !0 : !1 } document.addEventListener("DOMContentLoaded", function() { platform && "iPhone" === platform.product && "safari" === platform.name.toLowerCase() && isIOSLessThen13() && !iosInIframe() && (buildIOSFullscreenPanel(), buildIOSMeta()) }); window.addEventListener("resize", function(a) { platform && "iPhone" === platform.product && "safari" === platform.name.toLowerCase() && isIOSLessThen13() && !iosInIframe() && iosResize() }); (function() { var a = "undefined" !== typeof window && "undefined" !== typeof window.document ? window.document : {}, q = "undefined" !== typeof module && module.exports, c = function() { for (var p, d = ["requestFullscreen exitFullscreen fullscreenElement fullscreenEnabled fullscreenchange fullscreenerror".split(" "), "webkitRequestFullscreen webkitExitFullscreen webkitFullscreenElement webkitFullscreenEnabled webkitfullscreenchange webkitfullscreenerror".split(" "), "webkitRequestFullScreen webkitCancelFullScreen webkitCurrentFullScreenElement webkitCancelFullScreen webkitfullscreenchange webkitfullscreenerror".split(" "), "mozRequestFullScreen mozCancelFullScreen mozFullScreenElement mozFullScreenEnabled mozfullscreenchange mozfullscreenerror".split(" "), "msRequestFullscreen msExitFullscreen msFullscreenElement msFullscreenEnabled MSFullscreenChange MSFullscreenError".split(" ") ], k = 0, g = d.length, b = {}; k < g; k++) if ((p = d[k]) && p[1] in a) { for (k = 0; k < p.length; k++) b[d[0][k]] = p[k]; return b } return !1 }(), h = { change: c.fullscreenchange, error: c.fullscreenerror }, l = { request: function(p) { return new Promise(function(d, k) { var g = function() { this.off("change", g); d() }.bind(this); this.on("change", g); p = p || a.documentElement; Promise.resolve(p[c.requestFullscreen]())["catch"](k) }.bind(this)) }, exit: function() { return new Promise(function(p, d) { if (this.isFullscreen) { var k = function() { this.off("change", k); p() }.bind(this); this.on("change", k); Promise.resolve(a[c.exitFullscreen]())["catch"](d) } else p() }.bind(this)) }, toggle: function(p) { return this.isFullscreen ? this.exit() : this.request(p) }, onchange: function(p) { this.on("change", p) }, onerror: function(p) { this.on("error", p) }, on: function(p, d) { var k = h[p]; k && a.addEventListener(k, d, !1) }, off: function(p, d) { var k = h[p]; k && a.removeEventListener(k, d, !1) }, raw: c }; c ? (Object.defineProperties(l, { isFullscreen: { get: function() { return !!a[c.fullscreenElement] } }, element: { enumerable: !0, get: function() { return a[c.fullscreenElement] } }, isEnabled: { enumerable: !0, get: function() { return !!a[c.fullscreenEnabled] } } }), q ? module.exports = l : window.screenfull = l) : q ? module.exports = { isEnabled: !1 } : window.screenfull = { isEnabled: !1 } })(); var s_iScaleFactor = 1, s_bIsIphone = !1, s_oCanvasLeft, s_oCanvasTop, s_bFocus = !0, browserName = function(a) { switch (!0) { case -1 < a.indexOf("edge"): return "MS Edge"; case -1 < a.indexOf("edg/"): return "Edge ( chromium based)"; case -1 < a.indexOf("opr") && !!window.opr: return "Opera"; case -1 < a.indexOf("chrome") && !!window.chrome: return "Chrome"; case -1 < a.indexOf("trident"): return "MS IE"; case -1 < a.indexOf("firefox"): return "Mozilla Firefox"; case -1 < a.indexOf("safari"): return "Safari"; default: return "other" } }(window.navigator.userAgent.toLowerCase()); window.addEventListener("resize", function(a) { sizeHandler() }, !0); function trace(a) { console.log(a) } function isChrome() { return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) } 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 : navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i) ? !0 : !1 } 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 getSize(a) { var q = a.toLowerCase(), c = window.document, h = c.documentElement; if (void 0 === window["inner" + a]) a = h["client" + a]; else if (window["inner" + a] != h["client" + a]) { var l = c.createElement("body"); l.id = "vpw-test-b"; l.style.cssText = "overflow:scroll"; var p = c.createElement("div"); p.id = "vpw-test-d"; p.style.cssText = "position:absolute;top:-1000px"; p.innerHTML = "<style>@media(" + q + ":" + h["client" + a] + "px){body#vpw-test-b div#vpw-test-d{" + q + ":7px!important}}</style>"; l.appendChild(p); h.insertBefore(l, c.head); a = 7 == p["offset" + a] ? h["client" + a] : window["inner" + a]; h.removeChild(l) } 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 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 (document.querySelector("#canvas")) { var a = null !== platform.name && "safari" === platform.name.toLowerCase() ? getIOSWindowHeight() : getSize("Height"); var q = getSize("Width"); s_bFocus && _checkOrientation(q, a); var c = Math.min(a / CANVAS_HEIGHT, q / CANVAS_WIDTH), h = Math.round(CANVAS_WIDTH * c); c = Math.round(CANVAS_HEIGHT * c); if (c < a) { var l = a - c; c += l; h += CANVAS_WIDTH / CANVAS_HEIGHT * l } else h < q && (l = q - h, h += l, c += CANVAS_HEIGHT / CANVAS_WIDTH * l); l = a / 2 - c / 2; var p = q / 2 - h / 2, d = CANVAS_WIDTH / h; if (p * d < -EDGEBOARD_X || l * d < -EDGEBOARD_Y) c = Math.min(a / (CANVAS_HEIGHT - 2 * EDGEBOARD_Y), q / (CANVAS_WIDTH - 2 * EDGEBOARD_X)), h = Math.round(CANVAS_WIDTH * c), c = Math.round(CANVAS_HEIGHT * c), l = (a - c) / 2, p = (q - h) / 2, d = CANVAS_WIDTH / h; s_iOffsetX = -1 * p * d; s_iOffsetY = -1 * l * d; 0 <= l && (s_iOffsetY = 0); 0 <= p && (s_iOffsetX = 0); null !== s_oInterface && s_oInterface.refreshButtonPos(s_iOffsetX, s_iOffsetY); null !== s_oMenu && s_oMenu.refreshButtonPos(s_iOffsetX, s_iOffsetY); null !== s_oLevelMenu && s_oLevelMenu.refreshButtonPos(s_iOffsetX, s_iOffsetY); s_bIsIphone && s_oStage ? (canvas = document.getElementById("canvas"), s_oStage.canvas.width = 2 * h, s_oStage.canvas.height = 2 * c, canvas.style.width = h + "px", canvas.style.height = c + "px", s_iScaleFactor = Math.min(h / CANVAS_WIDTH, c / CANVAS_HEIGHT), s_iScaleFactor *= 2, s_oStage.scaleX = s_oStage.scaleY = s_iScaleFactor) : s_bMobile || isChrome() ? (document.querySelector("#canvas").style.width = h + "px", document.querySelector("#canvas").style.height = c + "px") : s_oStage && (s_oStage.canvas.width = h, s_oStage.canvas.height = c, s_iScaleFactor = Math.min(h / CANVAS_WIDTH, c / CANVAS_HEIGHT), s_oStage.scaleX = s_oStage.scaleY = s_iScaleFactor); 0 <= l && (l = (a - c) / 2); document.querySelector("#canvas").style.top = l + "px"; document.querySelector("#canvas").style.left = p + "px"; fullscreenHandler() } } function createBitmap(a, q, c) { var h = new createjs.Bitmap(a), l = new createjs.Shape; q && c ? l.graphics.beginFill("#fff").drawRect(0, 0, q, c) : l.graphics.beginFill("#ff0").drawRect(0, 0, a.width, a.height); h.hitArea = l; return h } function _checkOrientation(a, q) { s_bMobile && ENABLE_CHECK_ORIENTATION && (a > q ? "landscape" === document.querySelector(".orientation-msg-container").getAttribute("data-orientation") ? (document.querySelector(".orientation-msg-container").style.display = "none", s_oMain.startUpdate()) : (document.querySelector(".orientation-msg-container").style.display = "block", s_oMain.stopUpdate()) : "portrait" === document.querySelector(".orientation-msg-container").getAttribute("data-orientation") ? (document.querySelector(".orientation-msg-container").style.display = "none", s_oMain.startUpdate()) : (document.querySelector(".orientation-msg-container").style.display = "block", s_oMain.stopUpdate())) } function createSprite(a, q, c, h, l, p) { a = null !== q ? new createjs.Sprite(a, q) : new createjs.Sprite(a); q = new createjs.Shape; q.graphics.beginFill("#000000").drawRect(-c, -h, l, p); a.hitArea = q; return a } function randomFloatBetween(a, q, c) { "undefined" === typeof c && (c = 2); return parseFloat(Math.min(a + Math.random() * (q - a), q).toFixed(c)) } function formatTime(a) { a /= 1E3; var q = Math.floor(a / 60); a = Math.floor(a - 60 * q); var c = ""; c = 10 > q ? c + ("0" + q + ":") : c + (q + ":"); return 10 > a ? c + ("0" + a) : c + a } function NoClickDelay(a) { this.element = a; window.Touch && this.element.addEventListener("touchstart", this, !1) } function shuffle(a) { for (var q = a.length, c, h; 0 < q;) h = Math.floor(Math.random() * q), q--, c = a[q], a[q] = a[h], a[h] = c; 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 q = document.createEvent("MouseEvents"); q.initEvent("click", !0, !0); a.dispatchEvent(q) } } }; function toRadian(a) { return Math.PI / 180 * a } function toDegree(a) { return 180 / Math.PI * a } function ctlArcadeResume() { null !== s_oMain && s_oMain.startUpdate() } function ctlArcadePause() { null !== s_oMain && s_oMain.stopUpdate() } function getParamValue(a) { for (var q = window.location.search.substring(1).split("&"), c = 0; c < q.length; c++) { var h = q[c].split("="); if (h[0] == a) return h[1] } } function playSound(a, q, c) { return !1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile ? (s_aSounds[a].play(), s_aSounds[a].volume(q), s_aSounds[a].loop(c), s_aSounds[a]) : null } function stopSound(a) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].stop() } function setVolume(a, q) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].volume(q) } function setMute(a, q) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || s_aSounds[a].mute(q) } (function() { function a(c) { var h = { focus: "visible", focusin: "visible", pageshow: "visible", blur: "hidden", focusout: "hidden", pagehide: "hidden" }; c = c || window.event; c.type in h ? document.body.className = h[c.type] : (document.body.className = this[q] ? "hidden" : "visible", "hidden" === document.body.className ? (s_oMain.stopUpdate(), s_bFocus = !1) : (s_oMain.startUpdate(), s_bFocus = !0)) } var q = "hidden"; q in document ? document.addEventListener("visibilitychange", a) : (q = "mozHidden") in document ? document.addEventListener("mozvisibilitychange", a) : (q = "webkitHidden") in document ? document.addEventListener("webkitvisibilitychange", a) : (q = "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 fullscreenHandler() { ENABLE_FULLSCREEN && screenfull.isEnabled && (s_bFullscreen = screenfull.isFullscreen, null !== s_oInterface && s_oInterface.resetFullscreenBut(), null !== s_oMenu && s_oMenu.resetFullscreenBut()) } if (screenfull.isEnabled) screenfull.on("change", function() { s_bFullscreen = screenfull.isFullscreen; null !== s_oInterface && s_oInterface.resetFullscreenBut(); null !== s_oMenu && s_oMenu.resetFullscreenBut() }); function saveItem(a, q) { s_bStorageAvailable && localStorage.setItem(a, q) } function getItem(a) { return s_bStorageAvailable ? localStorage.getItem(a) : null } function CSpriteLibrary() { var a = {}, q, c, h, l, p, d; this.init = function(k, g, b) { q = {}; h = c = 0; l = k; p = g; d = b }; this.addSprite = function(k, g) { if (!a.hasOwnProperty(k)) { var b = new Image; a[k] = q[k] = { szPath: g, oSprite: b, bLoaded: !1 }; c++ } }; this.getSprite = function(k) { return a.hasOwnProperty(k) ? a[k].oSprite : null }; this._onSpritesLoaded = function() { c = 0; p.call(d) }; this._onSpriteLoaded = function() { l.call(d); ++h === c && this._onSpritesLoaded() }; this.loadSprites = function() { for (var k in q) q[k].oSprite.oSpriteLibrary = this, q[k].oSprite.szKey = k, q[k].oSprite.onload = function() { this.oSpriteLibrary.setLoaded(this.szKey); this.oSpriteLibrary._onSpriteLoaded(this.szKey) }, q[k].oSprite.onerror = function(g) { var b = g.currentTarget; setTimeout(function() { q[b.szKey].oSprite.src = q[b.szKey].szPath }, 500) }, q[k].oSprite.src = q[k].szPath }; this.setLoaded = function(k) { a[k].bLoaded = !0 }; this.isLoaded = function(k) { return a[k].bLoaded }; this.getNumSprites = function() { return c } } var GAME_NAME = "brick_out", CANVAS_WIDTH = 840, CANVAS_HEIGHT = 1024, EDGEBOARD_X = 100, EDGEBOARD_Y = 30, FPS = 40, FPS_TIME = 1E3 / FPS, DISABLE_SOUND_MOBILE = !1, PRIMARY_FONT = "domdiagonal_btregular", STATE_LOADING = 0, STATE_MENU = 1, STATE_HELP = 1, STATE_GAME = 3, 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_BUT_YES_DOWN = 6, MAX_BONUS_BOUNCE = 5, TYPES_OF_BRICK = 6, TYPES_OF_BONUS = 10, MAX_BRICK_FOR_ROW = 7, MAX_BALL_SPAWN = 4, MAX_VELOCITY_LIMIT = 1.5, MIN_VELOCITY_LIMIT = .5, MAX_TIME_SHOT_BONUS = 100, BONUS_MULTI_BALL = 0, TIME_BOUNCE_BALL = .01, BRICKS_LEVEL_POSITION, COLOR_TEXT_LEVEL, HEIGHT_OF_PADDLE = CANVAS_HEIGHT / 2 + 370, OFFSET_BALL_PAD_Y = 15, BONUS_OCCURRENCE_PER_LEVEL, PADDLE_DIMENSION = [80, 150, 210], SPACE_BETWEEN_BRICKS = -3, TIME_REFLECT_IRON_BRICK = 100, LAUNCH_BALL_POS = .1, EDGE_OFFSET = 102, OFFSET_BRICK_Y_POS = -16, OFFSET_HEIGHT_BRICK = 0, OFFSET_WIDTH_BRICK = 0, OFFSET_X_BRICK = -1, OFFSET_Y_BRICK = 0, OFFSET_RADIUS_BALL = 0, OFFSET_DIAGRAM_CHECK = 25, OFFSETEDGEDOWN = 83, OFFSETEDGEUP = 50, OFFSETEDGERIGHT = 106, OFFSETEDGELEFT = 106, OFFSETPOWERUPFLOOR = 20, OFFSET_PAD_Y = 15, OFFSET_PAD_MAGNETIC_Y = -1, OFFSET_CENTER_X_DIAGRAM = -35, OFFSET_CENTER_Y_DIAGRAM = -55, OFFSET_BRICK_SECTION_X = 70, OFFSET_BRICK_SECTION_Y = 15, OFFSET_DETECTION_BRICK_SECTION_X = -50, OFFSET_DETECTION_BRICK_SECTION_Y = 60, OFFSET_DIM_X_CANNONS = 32, OFFSET_CANNONS_Y_POS = 14, REG_X_OFFSET_PADDLE_MAGNETIC = 0, REG_Y_OFFSET_PADDLE_MAGNETIC = 460, SPAWN_BONUS_PROBABILITY; BRICKS_LEVEL_POSITION = []; SPAWN_BONUS_PROBABILITY = []; COLOR_TEXT_LEVEL = []; BRICKS_LEVEL_POSITION[0] = [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; BRICKS_LEVEL_POSITION[1] = [1, 1, -1, 4, -1, 1, 1, 1, 1, -1, 4, -1, 1, 1, 1, 1, -1, 4, -1, 1, 1, 1, 1, -1, 4, -1, 1, 1, 1, 1, -1, 4, -1, 1, 1, 1, 1, -1, 4, -1, 1, 1, 1, 1, -1, 4, -1, 1, 1, 1, 1, -1, 4, -1, 1, 1, 1, 1, -1, 4, -1, 1, 1]; BRICKS_LEVEL_POSITION[2] = [1, 1, 1, 1, 1, -1, -1, 0, 0, 0, 0, -1, -1, -1, 3, 3, 3, -1, -1, -1, -1, 2, 2, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, 3, 3, 3, -1, -1, -1, -1, 2, 2, 2, 2, -1, -1, -1, 1, 1, 1, 1, 1, -1, -1, 5, 5, 5, 5, 5, 5, -1]; BRICKS_LEVEL_POSITION[3] = [4, -1, -1, 3, -1, -1, 4, -1, -1, 2, 2, 2, -1, -1, -1, 1, 1, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, -1, 1, 1, 1, 1, 1, 1, -1, -1, 2, 2, 2, -1, -1, 4, -1, -1, 3, -1, -1, 4]; BRICKS_LEVEL_POSITION[4] = [4, 4, -1, -1, -1, 4, 4, 4, -1, -1, 3, -1, -1, 4, -1, -1, 3, 3, 3, -1, -1, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 5, 5, 5, 5, 5, -1, -1, 5, 5, 5, 5, 5, -1, -1, 5, 2, 5, 2, 5, -1, -1, 5, 5, 5, 5, 5, -1, -1, 5, 5, 1, 5, 5, -1, -1, 5, 5, 1, 5, 5, -1, -1, 0, 0, 0, 0, 0, -1]; BRICKS_LEVEL_POSITION[5] = [1, -1, -1, 3, -1, -1, 1, 1, -1, 3, 3, 3, -1, 1, 1, 3, 3, 3, 3, 3, 1, 1, -1, 3, 3, 3, -1, 1, 1, 1, 0, 0, 0, 1, 1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, 3, -1, -1, 1, 1, -1, 1, 1, -1, -1, 2, 2, 2, 2, 2, -1, -1, 4, 4, 4, 4, 4, -1]; BRICKS_LEVEL_POSITION[6] = [5, 5, 5, 5, 5, 5, 5, 3, -1, -1, 5, -1, -1, 3, 1, -1, -1, 5, -1, -1, 1, 0, -1, -1, 5, -1, -1, 0, 2, -1, -1, 5, -1, -1, 2, 2, -1, -1, 5, -1, -1, 2, 0, -1, -1, 5, -1, -1, 0, 1, -1, -1, 5, -1, -1, 1, 3, -1, -1, 5, -1, -1, 3, 5, 5, 5, 5, 5, 5, 5, 0, 1, 3, 2, 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 3, 3, 3, 2, 3, 3, 3]; BRICKS_LEVEL_POSITION[7] = [3, 3, 3, -1, 3, 3, 3, 3, 4, 3, -1, 3, 4, 3, 3, 3, 3, -1, 3, 3, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, 1, 1, -1, -1]; BRICKS_LEVEL_POSITION[8] = [5, 5, 5, -1, 5, 5, 5, 5, 2, 5, -1, 5, 0, 5, 5, 5, 5, -1, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5, 5, -1, 5, 5, 5, 5, 1, 5, -1, 5, 3, 5, 5, 5, 5, -1, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 4, -1, 4, -1, 4]; BRICKS_LEVEL_POSITION[9] = [1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 4, 5, 4, 2, 2, 1, 1, 4, -1, 4, 2, 2, 3, 3, 4, -1, 4, 0, 0, 3, 4, 4, -1, 4, 4, 0, 3, 4, 4, -1, 4, 4, 0, 3, 4, 4, -1, 4, 4, 0, 4, 4, 4, -1, 4, 4, 4, 4, 4, 4, -1, 4, 4, 4, 4, 4, 4, -1, 4, 4, 4]; BONUS_OCCURRENCE_PER_LEVEL = [ [20, 15, 5, 15, 1, 5, 10, 15, 14, 14], [15, 3, 10, 15, 2, 10, 15, 20, 15, 7], [20, 1, 5, 25, 2, 7, 1, 20, 23, 9], [20, 1, 10, 20, 4, 5, 1, 20, 23, 10], [10, 1, 15, 20, 6, 10, 2, 20, 20, 5], [5, 1, 15, 20, 6, 10, 5, 15, 27, 10], [10, 2, 10, 25, 2, 10, 5, 15, 25, 10], [18, 3, 15, 10, 2, 5, 4, 10, 20, 25, 9], [10, 1, 15, 20, 6, 10, 2, 20, 20, 5], [23, 1, 10, 14, 1, 2, 0, 20, 20, 23] ]; SPAWN_BONUS_PROBABILITY[0] = 15; SPAWN_BONUS_PROBABILITY[1] = 15; SPAWN_BONUS_PROBABILITY[2] = 15; SPAWN_BONUS_PROBABILITY[3] = 15; SPAWN_BONUS_PROBABILITY[4] = 15; SPAWN_BONUS_PROBABILITY[5] = 15; SPAWN_BONUS_PROBABILITY[6] = 15; SPAWN_BONUS_PROBABILITY[7] = 15; SPAWN_BONUS_PROBABILITY[8] = 10; SPAWN_BONUS_PROBABILITY[9] = 10; COLOR_TEXT_LEVEL[0] = "#00CA1B"; COLOR_TEXT_LEVEL[1] = "#EBD100"; COLOR_TEXT_LEVEL[2] = "#FF0013"; COLOR_TEXT_LEVEL[3] = "#00A1E0"; var SOUNDTRACK_VOLUME_IN_GAME = .3, ENABLE_FULLSCREEN, ENABLE_CHECK_ORIENTATION; function CPreloader() { var a, q, c, h, l, p, d, k, g; 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(); g = new createjs.Container; s_oStage.addChild(g) }; this.unload = function() { g.removeAllChildren() }; this._onImagesLoaded = function() {}; this._onAllImagesLoaded = function() { this.attachSprites(); s_oMain.preloaderReady() }; this.attachSprites = function() { var b = new createjs.Shape; b.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); g.addChild(b); b = s_oSpriteLibrary.getSprite("200x200"); d = createBitmap(b); d.regX = .5 * b.width; d.regY = .5 * b.height; d.x = CANVAS_WIDTH / 2; d.y = CANVAS_HEIGHT / 2 - 180; g.addChild(d); k = new createjs.Shape; k.graphics.beginFill("rgba(0,0,0,0.01)").drawRoundRect(d.x - 100, d.y - 100, 200, 200, 10); g.addChild(k); d.mask = k; b = s_oSpriteLibrary.getSprite("progress_bar"); h = createBitmap(b); h.x = CANVAS_WIDTH / 2 - b.width / 2; h.y = CANVAS_HEIGHT / 2 + 50; g.addChild(h); a = b.width; q = b.height; l = new createjs.Shape; l.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(h.x, h.y, 1, q); g.addChild(l); h.mask = l; c = new createjs.Text("", "30px " + PRIMARY_FONT, "#fff"); c.x = CANVAS_WIDTH / 2; c.y = CANVAS_HEIGHT / 2 + 100; c.textBaseline = "alphabetic"; c.textAlign = "center"; g.addChild(c); p = new createjs.Shape; p.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); g.addChild(p); createjs.Tween.get(p).to({ alpha: 0 }, 500).call(function() { createjs.Tween.removeTweens(p); g.removeChild(p) }) }; this.refreshLoader = function(b) { c.text = b + "%"; 100 === b && (s_oMain._onRemovePreloader(), c.visible = !1, h.visible = !1); l.graphics.clear(); b = Math.floor(b * a / 100); l.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(h.x, h.y, b, q) }; this._init() } function CMain(a) { var q, c = 0, h = 0, l = STATE_LOADING, p, d, k; this.initContainer = function() { s_oCanvas = document.getElementById("canvas"); s_oStage = new createjs.Stage(s_oCanvas); s_bMobile = isMobile(); !1 === s_bMobile ? s_oStage.enableMouseOver(20) : createjs.Touch.enable(s_oStage, !0); 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; p = new CPreloader; }; this.setLocalStorageLevel = function(b) { var f = getItem(GAME_NAME + "_level"); if (null === f || f < b) s_iLastLevel = b, saveItem(GAME_NAME + "_level", s_iLastLevel) }; this.setLocalStorageScore = function(b, f) { saveItem(GAME_NAME + "_score_level_" + f, b) }; this.clearLocalStorage = function() { s_iLastLevel = 1; if (s_bStorageAvailable) for (var b = 0; b < localStorage.length;) { var f = localStorage.key(b); - 1 !== f.indexOf(GAME_NAME) ? localStorage.removeItem(f) : b++ } }; this.getScoreTillLevel = function(b) { if (!s_bStorageAvailable) return 0; for (var f = 0, t = 0; t < b - 1; t++) f += parseInt(getItem(GAME_NAME + "_score_level_" + (t + 1))); return f }; this.getScoreLevel = function(b) { return getItem(GAME_NAME + "_score_level_" + (b + 1)) }; this.getSavedLevel = function() { if (!s_bStorageAvailable) return 1; var b = getItem(GAME_NAME + "_level"); return null === b ? 1 : b }; this.preloaderReady = function() { this._loadImages(); !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || this._initSounds(); q = !0 }; this.soundLoaded = function() { c++; p.refreshLoader(Math.floor(c / h * 100)) }; this._initSounds = function() { Howler.mute(!s_bAudioActive); s_aSoundsInfo = []; s_aSoundsInfo.push({ path: "./sounds/", filename: "game_completed", loop: !1, volume: 1, ingamename: "game_completed" }); 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: "boing", loop: !1, volume: 1, ingamename: "boing" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "ball_lose", loop: !1, volume: 1, ingamename: "ball_lose" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "fireball", loop: !0, volume: 1, ingamename: "fireball" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "brick_crack", loop: !1, volume: 1, ingamename: "brick_crack" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "brick_explosion", loop: !1, volume: 1, ingamename: "brick_explosion" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "brick_metal", loop: !1, volume: 1, ingamename: "brick_metal" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "power_up_bonus", loop: !1, volume: 1, ingamename: "power_up_bonus" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "power_up_malus", loop: !1, volume: 1, ingamename: "power_up_malus" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "stage_clear", loop: !1, volume: 1, ingamename: "stage_clear" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "bullet", loop: !1, volume: 1, ingamename: "bullet" }); s_aSoundsInfo.push({ path: "./sounds/", filename: "soundtrack", loop: !0, volume: 1, ingamename: "soundtrack" }); h += s_aSoundsInfo.length; s_aSounds = []; for (var b = 0; b < s_aSoundsInfo.length; b++) this.tryToLoadSound(s_aSoundsInfo[b], !1) }; this.tryToLoadSound = function(b, f) { setTimeout(function() { s_aSounds[b.ingamename] = new Howl({ src: [b.path + b.filename + ".mp3"], autoplay: !1, preload: !0, loop: b.loop, volume: b.volume, onload: s_oMain.soundLoaded, onloaderror: function(t, r) { for (var w = 0; w < s_aSoundsInfo.length; w++) if (t === s_aSounds[s_aSoundsInfo[w].ingamename]._sounds[0]._id) { s_oMain.tryToLoadSound(s_aSoundsInfo[w], !0); break } }, onplayerror: function(t) { for (var r = 0; r < s_aSoundsInfo.length; r++) if (t === s_aSounds[s_aSoundsInfo[r].ingamename]._sounds[0]._id) { s_aSounds[s_aSoundsInfo[r].ingamename].once("unlock", function() { s_aSounds[s_aSoundsInfo[r].ingamename].play(); "soundtrack" === s_aSoundsInfo[r].ingamename && null !== s_oGame && setVolume("soundtrack", SOUNDTRACK_VOLUME_IN_GAME) }); break } } }) }, f ? 200 : 0) }; this._loadImages = function() { s_oSpriteLibrary.init(this._onImagesLoaded, this._onAllImagesLoaded, this); s_oSpriteLibrary.addSprite("bg_menu", "./sprites/bg_menu.jpg"); s_oSpriteLibrary.addSprite("msg_box", "./sprites/msg_box.png"); s_oSpriteLibrary.addSprite("bg_level_1", "./sprites/bg_level_1.jpg"); s_oSpriteLibrary.addSprite("paddle", "./sprites/paddle.png"); s_oSpriteLibrary.addSprite("paddle_magnet", "./sprites/paddle_magnet.png"); s_oSpriteLibrary.addSprite("cannons", "./sprites/cannons.png"); s_oSpriteLibrary.addSprite("but_exit", "./sprites/but_exit.png"); s_oSpriteLibrary.addSprite("but_pause", "./sprites/but_pause.png"); s_oSpriteLibrary.addSprite("icon_audio", "./sprites/icon_audio.png"); s_oSpriteLibrary.addSprite("but_play", "./sprites/but_play.png"); s_oSpriteLibrary.addSprite("but_restart", "./sprites/but_restart.png"); s_oSpriteLibrary.addSprite("but_continue", "./sprites/but_continue.png"); s_oSpriteLibrary.addSprite("but_level", "./sprites/but_level.png"); s_oSpriteLibrary.addSprite("powerup_edge", "./sprites/powerup_edge.png"); s_oSpriteLibrary.addSprite("up_edges", "./sprites/up_edges.png"); s_oSpriteLibrary.addSprite("normal_ball", "./sprites/normal_ball.png"); s_oSpriteLibrary.addSprite("fire_ball", "./sprites/fire_ball.png"); s_oSpriteLibrary.addSprite("iron_ball", "./sprites/iron_ball.png"); s_oSpriteLibrary.addSprite("bullet", "./sprites/bullet.png"); s_oSpriteLibrary.addSprite("but_yes", "./sprites/but_yes.png"); s_oSpriteLibrary.addSprite("but_no", "./sprites/but_no.png"); s_oSpriteLibrary.addSprite("life", "./sprites/life.png"); s_oSpriteLibrary.addSprite("ctl_logo", "./sprites/ctl_logo.png"); s_oSpriteLibrary.addSprite("but_credits", "./sprites/but_credits.png"); s_oSpriteLibrary.addSprite("but_fullscreen", "./sprites/but_fullscreen.png"); s_oSpriteLibrary.addSprite("but_clear_save", "./sprites/but_clear_save.png"); for (var b = 0; b < TYPES_OF_BRICK; b++) s_oSpriteLibrary.addSprite("brick" + b, "./sprites/brick" + b + ".png"); for (b = 0; b < TYPES_OF_BONUS; b++) s_oSpriteLibrary.addSprite("bonus" + b, "./sprites/bonus" + b + ".png"); h += s_oSpriteLibrary.getNumSprites(); s_oSpriteLibrary.loadSprites() }; this._onImagesLoaded = function() { c++; p.refreshLoader(Math.floor(c / h * 100)) }; this._onAllImagesLoaded = function() {}; this._onRemovePreloader = function() { p.unload(); try { saveItem("ls_available", "ok"), s_iLastLevel = this.getSavedLevel() } catch (b) { s_bStorageAvailable = !1 } playSound("soundtrack", 1, !0); this.gotoMenu() }; this.gotoMenu = function() { new CMenu; l = STATE_MENU }; this.levelSelected = function(b) { s_iLevelSelected = b; k.unload(); b >= s_iLastLevel && (s_iLastLevel = b); s_oMain.gotoGame(b) }; this.gotoGame = function(b) { d = new CGame(g, b); l = STATE_GAME }; this.gotoLevelMenu = function() { k = new CLevelMenu(g); l = STATE_MENU }; this.stopUpdate = function() { q = !1; createjs.Ticker.paused = !0; document.querySelector("#block_game").style.display = "block"; !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || Howler.mute(!0) }; this.startUpdate = function() { s_iPrevTime = (new Date).getTime(); q = !0; createjs.Ticker.paused = !1; document.querySelector("#block_game").style.display = "none"; (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) && s_bAudioActive && Howler.mute(!1) }; this.stopUpdateNoBlock = function() { q = !1; createjs.Ticker.paused = !0 }; this.startUpdateNoBlock = function() { s_iPrevTime = (new Date).getTime(); q = !0; createjs.Ticker.paused = !1 }; this._update = function(b) { if (!1 !== q) { var f = (new Date).getTime(); s_iTimeElaps = f - s_iPrevTime; s_iCntTime += s_iTimeElaps; s_iCntFps++; s_iPrevTime = f; 1E3 <= s_iCntTime && (s_iCurFps = s_iCntFps, s_iCntTime -= 1E3, s_iCntFps = 0); l === STATE_GAME && d.update(); s_oStage.update(b) } }; s_oMain = this; var g = a; 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_iLastLevel = 1, s_oStage, s_oMain, s_oSpriteLibrary, s_oCanvas, s_bFullscreen = !1, s_aSounds, s_bStorageAvailable = !0, s_aSoundsInfo; function CTextButton(a, q, c, h, l, p, d, k) { var g, b, f, t, r, w, J, L, D, N, n, K; this._init = function(H, G, C, E, y, da, Y, P) { g = !1; t = []; r = []; K = createBitmap(C); b = C.width; f = C.height; var S = Math.ceil(Y / 20); N = new createjs.Text(E, Y + "px " + y, "#000000"); var la = N.getBounds(); N.textAlign = "center"; N.lineWidth = .9 * b; N.textBaseline = "alphabetic"; N.x = C.width / 2 + S; N.y = Math.floor(C.height / 2) + la.height / 3 + S; n = new createjs.Text(E, Y + "px " + y, da); n.textAlign = "center"; n.textBaseline = "alphabetic"; n.lineWidth = .9 * b; n.x = C.width / 2; n.y = Math.floor(C.height / 2) + la.height / 3; D = new createjs.Container; D.x = H; D.y = G; D.regX = C.width / 2; D.regY = C.height / 2; s_bMobile || (D.cursor = "pointer"); D.addChild(K, N, n); !1 !== P && s_oStage.addChild(D); this._initListener() }; this.unload = function() { D.off("mousedown", J); D.off("pressup", L); s_oStage.removeChild(D) }; this.setVisible = function(H) { D.visible = H }; this.setAlign = function(H) { n.textAlign = H; N.textAlign = H }; this.enable = function() { g = !1; K.filters = []; K.cache(0, 0, b, f) }; this.disable = function() { g = !0; var H = (new createjs.ColorMatrix).adjustSaturation(-100).adjustBrightness(40); K.filters = [new createjs.ColorMatrixFilter(H)]; K.cache(0, 0, b, f) }; this._initListener = function() { J = D.on("mousedown", this.buttonDown); L = D.on("pressup", this.buttonRelease) }; this.addEventListener = function(H, G, C) { t[H] = G; r[H] = C }; this.addEventListenerWithParams = function(H, G, C, E) { t[H] = G; r[H] = C; w = E }; this.buttonRelease = function() { g || (playSound("click", 1, !1), D.scaleX = 1, D.scaleY = 1, t[ON_MOUSE_UP] && t[ON_MOUSE_UP].call(r[ON_MOUSE_UP], w)) }; this.buttonDown = function() { g || (D.scaleX = .9, D.scaleY = .9, t[ON_MOUSE_DOWN] && t[ON_MOUSE_DOWN].call(r[ON_MOUSE_DOWN])) }; this.setPosition = function(H, G) { D.x = H; D.y = G }; this.changeText = function(H) { n.text = H; N.text = H }; this.setX = function(H) { D.x = H }; this.setY = function(H) { D.y = H }; this.getButtonImage = function() { return D }; this.getX = function() { return D.x }; this.getY = function() { return D.y }; this.getSprite = function() { return D }; this._init(a, q, c, h, l, p, d, k); return this } function CToggle(a, q, c, h) { var l, p, d, k = [], g; this._init = function(b, f, t, r) { p = []; d = []; var w = new createjs.SpriteSheet({ images: [t], frames: { width: t.width / 2, height: t.height, regX: t.width / 2 / 2, regY: t.height / 2 }, animations: { state_true: [0], state_false: [1] } }); l = r; g = createSprite(w, "state_" + l, t.width / 2 / 2, t.height / 2, t.width / 2, t.height); g.mouseEnabled = !0; g.x = b; g.y = f; g.stop(); s_bMobile || (g.cursor = "pointer"); s_oStage.addChild(g); this._initListener() }; this.unload = function() { g.off("mousedown", this.buttonDown); g.off("pressup", this.buttonRelease); g.mouseEnabled = !1; s_oStage.removeChild(g) }; this._initListener = function() { g.on("mousedown", this.buttonDown); g.on("pressup", this.buttonRelease) }; this.addEventListener = function(b, f, t) { p[b] = f; d[b] = t }; this.addEventListenerWithParams = function(b, f, t, r) { p[b] = f; d[b] = t; k = r }; this.setActive = function(b) { l = b; g.gotoAndStop("state_" + l) }; this.buttonRelease = function() { g.scaleX = 1; g.scaleY = 1; playSound("click", 1, !1); l = !l; g.gotoAndStop("state_" + l); p[ON_MOUSE_UP] && p[ON_MOUSE_UP].call(d[ON_MOUSE_UP], k) }; this.buttonDown = function() { g.scaleX = .9; g.scaleY = .9; p[ON_MOUSE_DOWN] && p[ON_MOUSE_DOWN].call(d[ON_MOUSE_DOWN], k) }; this.setPosition = function(b, f) { g.x = b; g.y = f }; this.setVisible = function(b) { g.visible = b }; this._init(a, q, c, h) } function CNumToggle(a, q, c, h) { var l, p, d, k, g, b, f, t = []; this._init = function(r, w, J, L) { p = !1; d = []; k = []; g = new createjs.Container; g.x = r; g.y = w; L.addChild(g); r = s_oSpriteLibrary.getSprite("num_button"); w = { images: [r], framerate: 5, frames: { width: r.width / 2, height: r.height, regX: r.width / 2 / 2, regY: r.height / 2 }, animations: { state_true: [0], state_false: [1] } }; w = new createjs.SpriteSheet(w); l = !1; b = createSprite(w, "state_" + l, r.width / 2 / 2, r.height / 2, r.width / 2, r.height); b.stop(); r = s_oSpriteLibrary.getSprite("ball"); w = { images: [r], frames: { width: r.width / NUM_DIFFERENT_BALLS, height: r.height, regX: r.width / NUM_DIFFERENT_BALLS / 2, regY: r.height / 2 }, animations: { red: [0], green: [1], cyan: [0], violet: [1], blue: [1] } }; w = new createjs.SpriteSheet(w); f = createSprite(w, "red", r.width / NUM_DIFFERENT_BALLS / 2, r.height / 2, r.width / NUM_DIFFERENT_BALLS, r.height); f.gotoAndStop(0); f.visible = !1; s_bMobile || (g.cursor = "pointer"); g.addChild(b, f); this._initListener() }; this.unload = function() { g.off("mousedown", this.buttonDown); g.off("pressup", this.buttonRelease); h.removeChild(g) }; this._initListener = function() { g.on("mousedown", this.buttonDown); g.on("pressup", this.buttonRelease) }; this.addEventListener = function(r, w, J) { d[r] = w; k[r] = J }; this.addEventListenerWithParams = function(r, w, J, L) { d[r] = w; k[r] = J; t = L }; this.setActive = function(r) { l = r; b.gotoAndStop("state_" + l) }; this.buttonRelease = function() { p || (playSound("click", 1, !1), l = !l, b.gotoAndStop("state_" + l), d[ON_MOUSE_UP] && d[ON_MOUSE_UP].call(k[ON_MOUSE_UP], t)) }; this.buttonDown = function() { p || d[ON_MOUSE_DOWN] && d[ON_MOUSE_DOWN].call(k[ON_MOUSE_DOWN], t) }; this.setPosition = function(r, w) { g.x = r; g.y = w }; this.getGlobalPosition = function() { return { x: g.localToGlobal(0, 0).x, y: g.localToGlobal(0, 0).y } }; this.block = function(r) { p = r }; this.setExtracted = function(r, w) { f.visible = r; f.gotoAndStop(w) }; this.highlight = function() { b.gotoAndPlay(0) }; this.stopHighlight = function() { b.gotoAndStop(1) }; this._init(a, q, c, h) } function CGfxButton(a, q, c, h) { var l, p, d, k = [], g, b, f, t; this._init = function(r, w, J) { l = 1; p = []; d = []; f = createBitmap(J); f.x = r; f.y = w; f.regX = J.width / 2; f.regY = J.height / 2; s_bMobile || (f.cursor = "pointer"); h.addChild(f); t = !1; this._initListener() }; this.unload = function() { f.off("mousedown", g); f.off("pressup", b); h.removeChild(f) }; this.setVisible = function(r) { f.visible = r }; this._initListener = function() { g = f.on("mousedown", this.buttonDown); b = f.on("pressup", this.buttonRelease) }; this.addEventListener = function(r, w, J) { p[r] = w; d[r] = J }; this.addEventListenerWithParams = function(r, w, J, L) { p[r] = w; d[r] = J; k = L }; this.buttonRelease = function() { t || (f.scaleX = l, f.scaleY = l, playSound("click", 1, !1), p[ON_MOUSE_UP] && p[ON_MOUSE_UP].call(d[ON_MOUSE_UP], k)) }; this.buttonDown = function() { t || (f.scaleX = .9 * l, f.scaleY = .9 * l, p[ON_MOUSE_DOWN] && p[ON_MOUSE_DOWN].call(d[ON_MOUSE_DOWN], k)) }; this.setScale = function(r) { l = r; f.scaleX = r; f.scaleY = r }; this.setPosition = function(r, w) { f.x = r; f.y = w }; this.setX = function(r) { f.x = r }; this.setY = function(r) { f.y = r }; this.getButtonImage = function() { return f }; this.getX = function() { return f.x }; this.getY = function() { return f.y }; this.block = function(r) { t = r }; this._init(a, q, c); return this } function CMenu() { var a, q, c, h, l, p, d, k, g, b, f, t, r, w, J, L, D = null, N = null; this._init = function() { g = createBitmap(s_oSpriteLibrary.getSprite("bg_menu")); s_oStage.addChild(g); var n = s_oSpriteLibrary.getSprite("but_play"); b = new CGfxButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2 + 250, n, s_oStage); b.addEventListener(ON_MOUSE_UP, this._onButPlayRelease, this); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) n = s_oSpriteLibrary.getSprite("icon_audio"), l = CANVAS_WIDTH - n.width / 2 + 15, p = n.height / 2 + 20, t = new CToggle(l, p, n, s_bAudioActive), t.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); n = s_oSpriteLibrary.getSprite("but_credits"); c = n.width / 2 + 20; h = n.height / 2 + 20; r = new CGfxButton(c, h, n, s_oStage); r.addEventListener(ON_MOUSE_UP, this._onCreditsBut, this); n = window.document; var K = n.documentElement; D = K.requestFullscreen || K.mozRequestFullScreen || K.webkitRequestFullScreen || K.msRequestFullscreen; N = n.exitFullscreen || n.mozCancelFullScreen || n.webkitExitFullscreen || n.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (D = !1); D && screenfull.isEnabled && (n = s_oSpriteLibrary.getSprite("but_fullscreen"), a = c + n.width / 2 + 10, q = h, w = new CToggle(a, q, n, s_bFullscreen, !0), w.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); n = s_oSpriteLibrary.getSprite("but_clear_save"); d = n.width / 2 + 20; k = CANVAS_HEIGHT - n.height / 2 - 20; J = new CGfxButton(d, k, n, s_oStage); J.addEventListener(ON_MOUSE_UP, this._onClearSave, this); L = new CAreYouSurePanel; L.addEventListener(ON_BUT_YES_DOWN, this._onConfirmClear, this); s_bStorageAvailable || new CAlertSavingBox(TEXT_ERR_LS, s_oStage); f = new createjs.Shape; f.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); s_oStage.addChild(f); createjs.Tween.get(f).to({ alpha: 0 }, 1E3).call(function() { s_oStage.removeChild(f) }); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.unload = function() { b.unload(); b = null; J.unload(); s_oStage.removeChild(g); g = null; if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) t.unload(), t = null; D && screenfull.isEnabled && w.unload(); r.unload(); s_oMenu = null }; this.refreshButtonPos = function() { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || t.setPosition(l - s_iOffsetX, p + s_iOffsetY); D && screenfull.isEnabled && w.setPosition(a + s_iOffsetX, q + s_iOffsetY); r.setPosition(c + s_iOffsetX, h + s_iOffsetY); J.setPosition(d + s_iOffsetX, k - s_iOffsetY) }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this._onButPlayRelease = function() { this.unload(); s_oMain.gotoLevelMenu() }; this._onCreditsBut = function() { new CCreditsPanel }; this.resetFullscreenBut = function() { D && screenfull.isEnabled && w.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? N.call(window.document) : D.call(window.document.documentElement); sizeHandler() }; this._onClearSave = function() { L.show(TEXT_CONFIRM_CLEAR_SAVINGS) }; this._onConfirmClear = function() { s_oMain.clearLocalStorage() }; s_oMenu = this; this._init() } var s_oMenu = null; function CGame(a, q) { var c, h, l, p, d, k, g, b, f = {}, t, r, w = 0, J, L, D, N, n, K, H, G, C, E, y, da, Y, P, S, la, oa, fa, F, M, T, m, ha, pa, ia, U, A, V, ba, B, ra, Z, Q, O, X, ca, ja, qa, ka, ta, aa, ma, za, ua, wa, na, Ja, Ka, La, Ma, Ba, xa, ya, Ca, Da, Ea, Fa, Ga, W, sa, va, Aa; this._init = function(e) { p = !1; var u = s_oSpriteLibrary.getSprite("normal_ball"); ha = 0; H = CANVAS_WIDTH / 2; d = []; k = []; m = []; pa = SPACE_BETWEEN_BRICKS; y = r = 0; var x = s_oSpriteLibrary.getSprite("brick0"); G = x.width / 2; C = x.height / 2; na = 1; t = u.height / 2 + OFFSET_RADIUS_BALL; l = e; aa = s_oMain.getScoreTillLevel(l); va = ma = 0; za = MAX_TIME_SHOT_BONUS; ta = LIFE; M = new CSettingsLevel; N = []; D = []; L = []; J = []; n = []; K = []; this.createPadding(CANVAS_WIDTH / 2); B = ja = ca = X = O = Q = Z = !1; Aa = ba = 0; e = OFFSETEDGELEFT + t; Ja = CANVAS_WIDTH + (-OFFSETEDGERIGHT - t); Ka = e; c = createBitmap(s_oSpriteLibrary.getSprite("bg_level_1")); s_oStage.addChild(c); c.addEventListener("click", this.launchBall); s_oStage.setChildIndex(c, 0); T = []; P = C + t + OFFSET_HEIGHT_BRICK; S = G + t + OFFSET_WIDTH_BRICK; la = P + OFFSET_Y_BRICK; oa = S + OFFSET_X_BRICK; F = EDGE_OFFSET + f.x; fa = CANVAS_WIDTH - EDGE_OFFSET - f.x; F = EDGE_OFFSET + f.x; La = 2 * C + OFFSET_BRICK_Y_POS; Ma = 2 * G; Ba = OFFSET_BRICK_SECTION_X + OFFSET_DETECTION_BRICK_SECTION_X; ra = TIME_REFLECT_IRON_BRICK; h = new CInterface(aa); this.createABall(0, b.x, b.y - t - f.y, u, !0); this.createLevel(); 1 === l ? h.help(l) : h.showNumLevel(l); h.numLevel(l); wa = !0; ia = !1; ua = 0; setVolume("soundtrack", SOUNDTRACK_VOLUME_IN_GAME) }; this.launchBall = function() { !1 === ia && !1 === p ? (b.x > H ? (b.x -= H, sa = -(b.x / H)) : sa = b.x / H, d[0].setPosition(null, d[0].getY() - 3), d[0].setDirection(sa, -1), d[0].setInfoData("OnPad", !1), ia = !0) : !0 === X && s_oGame.launchUnmagneticBall() }; this.createLevel = function() { this.setLevelBrick(); document.dispatchEvent(new CustomEvent("start_level", { detail: { level: l } })); T = M.createBonusOccurance(l) }; this.createABall = function(e, u, x, v, I, z, R) { d[e] = new CBall(u, x, v, z, R, na, Q, t); d[e].setInfoData("ID", e); d[e].setInfoData("OnPad", I); d[e].setInfoData("Collision", 0); d[e].changeRotation(); !0 === O && d[e].downFloor(!0); !0 === I && (ia = !1) }; this.generateABonus = function(e, u) { var x = Math.floor(Math.random() * T.length), v = s_oSpriteLibrary.getSprite("bonus" + T[x]); m.push(new CBonus(e, u, v, T[x])); m[ha].setInfoData("ID", ha); ha++ }; this.createPadding = function(e) { b && s_oStage.removeChild(); var u = s_oSpriteLibrary.getSprite("paddle"), x = new createjs.SpriteSheet({ images: [u], frames: { width: u.width / 7, height: u.height / 2, regX: u.width / 2 / 7, regY: u.height / 2 / 7 }, animations: { small: { frames: [0] }, normal: { frames: [6] }, big: { frames: [12] }, StoN: { frames: [1, 2, 3, 4, 5, 6] }, NtoB: { frames: [7, 8, 9, 10, 11, 12] }, BtoN: { frames: [11, 10, 9, 8, 7, 6] }, NtoS: { frames: [5, 4, 3, 2, 1, 0 ] } } }); b = createSprite(x, "normal", u.width / 2 / 7, u.height / 2 / 2, u.width / 7, u.height / 2); b.x = e; b.y = HEIGHT_OF_PADDLE; s_oStage.addChild(b); s_oStage.setChildIndex(b, 3); f = { x: PADDLE_DIMENSION[1] / 2, y: u.height / 2 / 2 - OFFSET_PAD_Y } }; this.setLevelBrick = function() { var e = BRICKS_LEVEL_POSITION[l - 1], u = 0, x = 0; da = e.length / MAX_BRICK_FOR_ROW; for (var v = 0; v < da; v++) for (var I = 0; I < MAX_BRICK_FOR_ROW; I++) { if (-1 !== e[u]) { var z = s_oSpriteLibrary.getSprite("brick" + e[u]); k[x] = new CBrick(CANVAS_WIDTH / 2 - 250 - pa + (Ma + pa) * I, CANVAS_HEIGHT / 2 - 310 + (La + pa) * v, z, BRICKS_RESISTANCE[e[u]], BRICKS_DESTRUCTIBLE[e[u]]); k[x].setInfoData("resistance", BRICKS_RESISTANCE[e[u]]); k[x].setInfoData("score", BRICKS_SCORE[e[u]]); k[x].setInfoData("destructible", BRICKS_DESTRUCTIBLE[e[u]]); k[x].setChildIndex(4); !0 === BRICKS_DESTRUCTIBLE[e[u]] && y++; x++ } u++ } r = k[x - 1].getY() + OFFSET_DIAGRAM_CHECK + C; this.createBricksSections() }; this.loseBall = function(e) { this.unloadBall(e); 1 > d.length && (ta--, h.refreshBallLife(ta), !0 === Z ? this.deactiveLargePad() : !0 === ja && this.deactiveSmallPad(), !0 === ca ? ba = 0 : !0 === X && this.deactiveMagnetic(), !0 === O && this.deactiveFloor(), !0 === Q && this.stopFireSound(), X = O = Q = Z = !1, na = 1, this.checkOtherActiveBonus(), 0 < ta ? (ia = !1, e = s_oSpriteLibrary.getSprite("normal_ball"), this.createABall(0, b.x, b.y - t - f.y, e, !0)) : h.gameOver(aa)); playSound("ball_lose", 1, !1) }; this.setPause = function(e) { p = e }; this.createBricksSections = function() { var e = 0, u = 0, x = 0, v = 0, I = 0, z = 0; E = 1 === da % 2 ? k[Math.floor(k.length / 2)].getY() + 2 * C + OFFSET_CENTER_Y_DIAGRAM : k[Math.floor(k.length / 2)].getY() - C + OFFSET_CENTER_Y_DIAGRAM; Y = H + P + Math.floor(pa / 2) + OFFSET_CENTER_X_DIAGRAM; xa = Y + Ba; ya = Y - Ba; Ca = Y + OFFSET_BRICK_SECTION_X; Da = Y - OFFSET_BRICK_SECTION_X; Ea = E + OFFSET_BRICK_SECTION_Y; Fa = E + OFFSET_DETECTION_BRICK_SECTION_Y; Ga = E - OFFSET_DETECTION_BRICK_SECTION_Y; for (var R = 0; R < k.length; R++) if (k[R].getX() <= Y - OFFSET_BRICK_SECTION_X && k[R].getY() < E - OFFSET_BRICK_SECTION_Y) L[u] = k[R], u++; else if (k[R].getX() >= Y + OFFSET_BRICK_SECTION_X && k[R].getY() < E - OFFSET_BRICK_SECTION_Y) J[e] = k[R], e++; else if (k[R].getX() <= Y - OFFSET_BRICK_SECTION_X && k[R].getY() > E + OFFSET_BRICK_SECTION_Y) N[v] = k[R], v++; else if (k[R].getX() >= Y + OFFSET_BRICK_SECTION_X && k[R].getY() > E + OFFSET_BRICK_SECTION_Y) D[x] = k[R], x++; else if (k[R].getX() <= Y + OFFSET_BRICK_SECTION_X && k[R].getX() >= Y - OFFSET_BRICK_SECTION_X) n[I] = k[R], I++; else if (k[R].getY() <= E + OFFSET_BRICK_SECTION_Y && k[R].getY() >= E - OFFSET_BRICK_SECTION_Y && k[R] && k[R].getX() >= Y + OFFSET_BRICK_SECTION_X || k[R].getX() <= Y - OFFSET_BRICK_SECTION_X) K[z] = k[R], z++ }; this.onExit = function() { s_oGame.unload(); s_oMain.gotoMenu(); document.dispatchEvent(new CustomEvent("end_level", { detail: { level: l } })); document.dispatchEvent(new CustomEvent("show_interlevel_ad")); document.dispatchEvent(new CustomEvent("end_session")); setVolume("soundtrack", 1) }; this.bonusLargePad = function() { ma += BONUS_SCORE.s0; aa += BONUS_SCORE.s0; h.refreshScore(aa); !0 === ja ? this.deactiveSmallPad() : (!0 === X ? this.deactiveMagnetic() : W && (ba = 0, W.gotoAndPlay("go"), W.on("animationend", function() { s_oStage.removeChild(W); W = null })), this.audioPowerUpBonus(), Z || (f.x = PADDLE_DIMENSION[2] / 2, b.gotoAndPlay("NtoB"), b.on("animationend", function() { b.gotoAndStop("big") }), Z = !0, fa = CANVAS_WIDTH - EDGE_OFFSET - f.x, F = EDGE_OFFSET + f.x)) }; this.bonusSmallPad = function() { ma += BONUS_SCORE.s9; aa += BONUS_SCORE.s9; h.refreshScore(aa); this.audioPowerUpMalus(); !0 === Z ? this.deactiveLargePad() : (!0 === X ? this.deactiveMagnetic() : W && (ba = 0, W.gotoAndPlay("go"), W.on("animationend", function() { s_oStage.removeChild(W); W = null })), ja || (f.x = PADDLE_DIMENSION[0] / 2, b.gotoAndPlay("NtoS"), b.on("animationend", function() { b.gotoAndStop("small") }), ja = !0, fa = CANVAS_WIDTH - EDGE_OFFSET - f.x, F = EDGE_OFFSET + f.x)) }; this.bonusMultiBall = function() { ma += BONUS_SCORE.s5; aa += BONUS_SCORE.s5; h.refreshScore(aa); if (!(d.length >= MAX_BALL_SPAWN)) { this.audioPowerUpBonus(); var e = 0; var u = d.length + BONUS_MULTI_BALL; var x = d.length; var v = !1 === Q && !1 === X ? s_oSpriteLibrary.getSprite("normal_ball") : !0 === Q ? s_oSpriteLibrary.getSprite("fire_ball") : s_oSpriteLibrary.getSprite("iron_ball"); for (var I = x; I < x + u; I++) 0 === e % 2 ? this.createABall(I, d[e].getX(), d[e].getY(), v, !1, 1, -1) : this.createABall(I, d[e].getX(), d[e].getY(), v, !1, -1, 1), e++ } }; this.bonusFireBall = function() { ma += BONUS_SCORE.s1; aa += BONUS_SCORE.s1; h.refreshScore(aa); U = BONUS_TIME.t1; if (!0 !== Q) { for (var e = s_oSpriteLibrary.getSprite("fire_ball"), u = 0; u < d.length; u++) d[u].changeSprite(e, "fire"); Q = !0; !0 === X && (s_oStage.removeChild(b), this.createPadding(b.x), this.launchUnmagneticBall(), X = !1); B = !0; playSound("fireball", 1, !0); this.audioPowerUpBonus() } }; this.createFloor = function() { var e = s_oSpriteLibrary.getSprite("powerup_edge"); ka = createBitmap(e); ka.x = H; ka.y = CANVAS_HEIGHT + e.height / 2; ka.regX = e.width / 2; ka.regY = e.height / 2; s_oStage.addChild(ka); s_oStage.setChildIndex(ka, s_oStage.numChildren - 1); createjs.Tween.get(ka).to({ y: 940 }, 800, createjs.Ease.backOut) }; this.bonusMagnetic = function() { ma += BONUS_SCORE.s3; aa += BONUS_SCORE.s3; h.refreshScore(aa); V = BONUS_TIME.t3; this.audioPowerUpBonus(); if (!0 !== X) { for (var e = s_oSpriteLibrary.getSprite("iron_ball"), u = 0; u < d.length; u++) d[u].changeSprite(e, "magnetic"); !0 === Z ? (b.gotoAndPlay("BtoN"), b.on("animationend", function() { s_oStage.removeChild(b); s_oGame.createMagneticPad(b.x) }), Z = !1) : !0 === ja ? (b.gotoAndPlay("StoN"), b.on("animationend", function() { s_oStage.removeChild(b); s_oGame.createMagneticPad(b.x) }), ja = !1) : W ? (ba = 0, W.gotoAndPlay("go"), W.on("animationend", function() { s_oStage.removeChild(W); W = null; s_oStage.removeChild(b); s_oGame.createMagneticPad(b.x) })) : this.createMagneticPad(b.x); !0 === Q && (Q = !1, this.stopFireSound()); B = X = !0 } }; this.createMagneticPad = function(e) { s_oStage.removeChild(b); var u = s_oSpriteLibrary.getSprite("paddle_magnet"), x = new createjs.SpriteSheet({ images: [u], frames: { width: u.width / 5, height: u.height / 2, regX: (u.width + REG_X_OFFSET_PADDLE_MAGNETIC) / 2 / 5, regY: (u.height + REG_Y_OFFSET_PADDLE_MAGNETIC) / 2 / 7 }, animations: { magnetic: [0, 9, "magnetic", .5] } }); b = createSprite(x, "magnetic", (u.width + REG_X_OFFSET_PADDLE_MAGNETIC) / 2 / 5, (u.height + REG_Y_OFFSET_PADDLE_MAGNETIC) / 2 / 2, u.width / 5, u.height / 2); b.x = e; b.y = HEIGHT_OF_PADDLE; s_oStage.addChild(b); f.x = PADDLE_DIMENSION[1] / 2; fa = CANVAS_WIDTH - EDGE_OFFSET - f.x; F = EDGE_OFFSET + f.x }; this.bonusLife = function() { ma += BONUS_SCORE.s4; aa += BONUS_SCORE.s4; h.refreshScore(aa); h.refreshBallLife(ta); ta++; this.audioPowerUpBonus() }; this.bonusSlowBall = function() { ma += BONUS_SCORE.s7; aa += BONUS_SCORE.s7; h.refreshScore(aa); for (var e = 0; e < d.length; e++) d[e].setVelocityRate(na); 1 > na ? this.audioPowerUpMalus() : this.audioPowerUpBonus(); na > MIN_VELOCITY_LIMIT && (na -= SPEED_DOWN_BALL); na < MIN_VELOCITY_LIMIT && (na = MIN_VELOCITY_LIMIT) }; this.bonusFastBall = function() { ma += BONUS_SCORE.s8; aa += BONUS_SCORE.s8; h.refreshScore(aa); if (na < MAX_VELOCITY_LIMIT) { na += SPEED_UP_BALL; for (var e = 0; e < d.length; e++) d[e].setVelocityRate(na); 1 < na ? this.audioPowerUpMalus() : this.audioPowerUpBonus() } }; this.bonusShot = function() { ma += BONUS_SCORE.s6; aa += BONUS_SCORE.s6; h.refreshScore(aa); this.audioPowerUpBonus(); ba = BONUS_TIME.t6; !1 === ca && (ca = !0, qa = s_oSpriteLibrary.getSprite("bullet"), g = [], !0 === Z ? (b.gotoAndPlay("BtoN"), b.on("animationend", function() { b.gotoAndStop("normal") }), Z = !1) : !0 === ja ? (b.gotoAndPlay("StoN"), b.on("animationend", function() { b.gotoAndStop("normal") }), ja = !1) : !0 === X && this.deactiveMagnetic(), W ? (W.gotoAndPlay("come"), W.on("animationend", function() { W.gotoAndStop(5) })) : this.createCannons()); B = !0 }; this.bonusFloor = function() { ma += BONUS_SCORE.s2; aa += BONUS_SCORE.s2; h.refreshScore(aa); A = BONUS_TIME.t2; if (!0 !== O) { ka || this.createFloor(); for (var e = 0; e < d.length; e++) d[e].downFloor(!0) } B = O = !0; this.audioPowerUpBonus() }; this.createCannons = function() { var e = s_oSpriteLibrary.getSprite("cannons"), u = new createjs.SpriteSheet({ images: [e], frames: { width: e.width / 3, height: e.height / 2, regX: e.width / 2 / 3, regY: e.height / 2 / 2 }, animations: { come: { frames: [0, 1, 2, 3, 4, 5], speed: .5 }, go: { frames: [5, 4, 3, 2, 1, 0], speed: .5 } } }); W = createSprite(u, "come", e.width / 2 / 3, e.height / 2 / 2, e.width / 3, e.height / 2); W.x = b.x; W.y = b.y + OFFSET_CANNONS_Y_POS; s_oStage.addChild(W); W.on("animationend", function() { W.gotoAndStop(5) }); s_oStage.setChildIndex(W, 5); f.x = (PADDLE_DIMENSION[1] + OFFSET_DIM_X_CANNONS) / 2; fa = CANVAS_WIDTH - EDGE_OFFSET - f.x; F = EDGE_OFFSET + f.x }; this.launchUnmagneticBall = function() { for (var e = 0; e < d.length; e++) if (!0 === d[e].getInfoData("OnPad")) { var u = d[e].getInfoData("Collision") / f.x; u = Math.sin(u); d[e].setPosition(null, d[e].getY() - 2); d[e].changeDirection(-u, -1, !1, "launch"); d[e].setInfoData("OnPad", !1); d[e].changeRotation() } }; this.unload = function() { h.unload(); for (var e = 0; e < d.length; e++) d[e].unload(); for (e = 0; e < m.length; e++) m[e].unload(); createjs.Tween.removeAllTweens(); s_oStage.removeAllChildren() }; this.__updatePhysics = function(e) { var u = 1 / createjs.Ticker.framerate / Ha; b.x = s_oStage.mouseX / s_iScaleFactor; b.x < F && (b.x = F); b.x > fa && (b.x = fa); W && (W.x = b.x); for (var x = 0; x < d.length; x++) if (!1 === d[x].getInfoData("OnPad")) { var v = d[x].getX(), I = d[x].getY(); d[x].update(e); if (v > b.x - f.x && v < b.x + f.x && I > b.y - f.y - t && I < b.y + f.y + t) { if (!1 === X) { if (0 === sa) { var z = b.x - v; z /= f.x; d[x].setPosition(null, I - 1); sa = Math.sin(z); d[x].changeDirection(-sa, -1, !0); d[x].changeRotation() } sa = 0 } else { z = b.x - d[x].getX(); d[x].setInfoData("Collision", z); !1 === d[x].getInfoData("OnPad") && (d[x].setPosition(null, b.y - f.y - t), d[x].setInfoData("OnPad", !0)); break } this.audioBoing() } if (I < r) { if (v < xa && I > Ea) for (z = 0; z < N.length; z++) { if (v > N[z].getX() - S && v < N[z].getX() + S && I > N[z].getY() - P && I < N[z].getY() + P) { var R = N[z].getX(), ea = N[z].getY(); this.gestureBricks(N, z, R, ea); this.ballBounce(x, v, I, R, ea); break } } else if (v > ya && I > Ea) for (z = 0; z < D.length; z++) { if (v > D[z].getX() - S && v < D[z].getX() + S && I > D[z].getY() - P && I < D[z].getY() + P) { R = D[z].getX(); ea = D[z].getY(); this.gestureBricks(D, z, R, ea); this.ballBounce(x, v, I, R, ea); break } } else if (v < xa && I < E) for (z = 0; z < L.length; z++) v > L[z].getX() - S && v < L[z].getX() + S && I > L[z].getY() - P && I < L[z].getY() + P && (R = L[z].getX(), ea = L[z].getY(), this.gestureBricks(L, z, R, ea), this.ballBounce(x, v, I, R, ea)); else if (v > ya && I < E) for (z = 0; z < J.length; z++) if (v > J[z].getX() - S && v < J[z].getX() + S && I > J[z].getY() - P && I < J[z].getY() + P) { R = J[z].getX(); ea = J[z].getY(); this.gestureBricks(J, z, R, ea); this.ballBounce(x, v, I, R, ea); break } if (v > Da && v < Ca) for (z = 0; z < n.length; z++) if (v > n[z].getX() - S && v < n[z].getX() + S && I > n[z].getY() - P && I < n[z].getY() + P) { R = n[z].getX(); ea = n[z].getY(); this.gestureBricks(n, z, R, ea); this.ballBounce(x, v, I, R, ea); break } if (I < Fa && I > Ga) for (z = 0; z < K.length; z++) if (v > K[z].getX() - S && v < K[z].getX() + S && I > K[z].getY() - P && I < K[z].getY() + P) { R = K[z].getX(); ea = K[z].getY(); this.gestureBricks(K, z, R, ea); this.ballBounce(x, v, I, R, ea); break } } } else d[x].setPosition(b.x - d[x].getInfoData("Collision"), null), d[x].getX() > Ja ? d[x].setInfoData("Collision", d[x].getInfoData("Collision") + 1) : d[x].getX() < Ka && d[x].setInfoData("Collision", d[x].getInfoData("Collision") - 1); this.timeBonus(u); if (0 < ra) ra -= u; else for (x = 0; x < k.length; x++) !1 === k[x].getInfoData("destructible") && (k[x].reflectBrick(), k[x].setInfoData("Reflect", !0)), ra = TIME_REFLECT_IRON_BRICK; 0 < va && (va -= u); 0 !== ha && this.bonusGesture() }; this.allBrickDestroyed = function() { 0 < y || (this.setPause(!0), h.levelComplete(l, aa), Aa++, Aa === NUM_LEVELS_FOR_ADS && (Aa = 0, document.dispatchEvent(new CustomEvent("show_interlevel_ad"))), document.dispatchEvent(new CustomEvent("end_level", { detail: { level: l } })), document.dispatchEvent(new CustomEvent("save_score", { detail: { score: aa } })), s_oMain.setLocalStorageLevel(l + 1), s_oMain.setLocalStorageScore(ma, l), !0 === Q && this.stopFireSound()) }; this.stopFireSound = function() { stopSound("fireball") }; this.timeBonus = function(e) { !0 === B && (!0 === Q ? 0 < U ? U -= e : (this.deactiveFireBall(), this.checkOtherActiveBonus()) : !0 === X && (0 < V ? V -= e : (this.deactiveMagnetic(), this.checkOtherActiveBonus())), !0 === O && (0 < A ? A -= e : (this.deactiveFloor(), this.checkOtherActiveBonus())), !0 === ca && (0 < ba && (ba -= e, --za, 0 > za && (!0 === wa ? (g.push(new CBullet(b.x - f.x, b.y - f.y, qa)), wa = !1) : (g.push(new CBullet(b.x + f.x, b.y - f.y, qa)), wa = !0), g[ua].setIndex(ua), za = MAX_TIME_SHOT_BONUS, ua++, this.audioBullet())), 1 > g.length && .1 > ba ? (this.deactiveShot(), this.checkOtherActiveBonus()) : this.detectiveCollisionBullet())) }; this.nextLevel = function() { this.unloadLevel(); l++; this.createLevel(); var e = s_oSpriteLibrary.getSprite("normal_ball"); na = 1; this.createABall(0, b.x, b.y - t - f.y, e, !0); wa = !0; ia = !1; ma = ua = 0; h.showNumLevel(l); h.numLevel(l) }; this.audioBrickExplosion = function() { playSound("brick_explosion", 1, !1) }; this.audioPowerUpBonus = function() { playSound("power_up_bonus", 1, !1) }; this.audioPowerUpMalus = function() { playSound("power_up_malus", 1, !1) }; this.audioBrickMetal = function() { playSound("brick_metal", 1, !1) }; this.audioBullet = function() { playSound("bullet", 1, !1) }; this.audioBoing = function() { playSound("boing", 1, !1) }; this.ballBounce = function(e, u, x, v, I) { !0 === Q || 0 < va || (u > v + oa || u < v - oa && x > I - la && x < I + la ? (u > v ? (d[e].changeDirection(-1, 1, !1, "side"), d[e].setPosition(d[e].getX() + 3, null)) : (d[e].changeDirection(-1, 1, !1, "side"), d[e].setPosition(d[e].getX() - 3, null)), va = TIME_BOUNCE_BALL) : u > v - S && u < v + S && x > I - P && x < I + P && (x > I ? (d[e].changeDirection(1, 1, !1, "base"), d[e].setPosition(null, d[e].getY() + 3)) : (d[e].changeDirection(1, -1, !1, "base"), d[e].setPosition(null, d[e].getY() - 3)), va = TIME_BOUNCE_BALL, d[e].changeRotation()), this.audioBoing()) }; this.gestureBricks = function(e, u, x, v) { !0 === e[u].getInfoData("destructible") || !0 === Q ? 0 === e[u].getInfoData("resistance") ? (ma += e[u].getInfoData("score"), aa += e[u].getInfoData("score"), h.refreshScore(aa), !0 === e[u].getInfoData("destructible") && (y--, this.allBrickDestroyed()), !1 === e[u].getInfoData("Effect") ? e[u].unload() : (e[u].animBrick("destroyed"), this.audioBrickExplosion()), this.randomBonus(x, v), e.splice(u, 1)) : (e[u].setInfoData("resistance", e[u].getInfoData("resistance") - 1), e[u].damageBrick(e[u].getInfoData("resistance")), playSound("brick_crack", 1, !1)) : (e[u].reflectBrick(), e[u].setInfoData("Reflect", !0), this.audioBrickMetal()) }; this.detectiveCollisionBullet = function() { for (var e = 0; e < g.length; e++) { var u = g[e].getX(), x = g[e].getY(); g[e].update(); if (x < r) { if (u < xa && x > E) for (var v = 0; v < N.length; v++) { if (u > N[v].getX() - S && u < N[v].getX() + S && x > N[v].getY() - P && x < N[v].getY() + P) { var I = N[v].getX(), z = N[v].getY(); this.gestureBricks(N, v, I, z); this.unloadBullet(g[e].getIndex()); break } } else if (u > ya && x > E) for (v = 0; v < D.length; v++) { if (u > D[v].getX() - S && u < D[v].getX() + S && x > D[v].getY() - P && x < D[v].getY() + P) { I = D[v].getX(); z = D[v].getY(); this.gestureBricks(D, v, I, z); this.unloadBullet(g[e].getIndex()); break } } else if (u < xa && x < E) for (v = 0; v < L.length; v++) u > L[v].getX() - S && u < L[v].getX() + S && x > L[v].getY() - P && x < L[v].getY() + P && (I = L[v].getX(), z = L[v].getY(), this.gestureBricks(L, v, I, z), this.unloadBullet(g[e].getIndex())); else if (u > ya && x < E) for (v = 0; v < J.length; v++) if (u > J[v].getX() - S && u < J[v].getX() + S && x > J[v].getY() - P && x < J[v].getY() + P) { I = J[v].getX(); z = J[v].getY(); this.gestureBricks(J, v, I, z); this.unloadBullet(g[e].getIndex()); break } if (u > Da && u < Ca) for (v = 0; v < n.length; v++) if (u > n[v].getX() - S && u < n[v].getX() + S && x > n[v].getY() - P && x < n[v].getY() + P) { I = n[v].getX(); z = n[v].getY(); this.gestureBricks(n, v, I, z); this.unloadBullet(g[e].getIndex()); break } if (x < Fa && x > Ga) for (v = 0; v < K.length; v++) if (u > K[v].getX() - S && u < K[v].getX() + S && x > K[v].getY() - P && x < K[v].getY() + P) { I = K[v].getX(); z = K[v].getY(); this.gestureBricks(K, v, I, z); this.unloadBullet(g[e].getIndex()); break } } } }; this.deactiveFireBall = function() { for (var e = s_oSpriteLibrary.getSprite("normal_ball"), u = 0; u < d.length; u++) d[u].changeSprite(e, "normal"); Q = !1; this.stopFireSound() }; this.deactiveLargePad = function() { b.gotoAndPlay("BtoN"); b.on("animationend", function() { b.gotoAndStop("normal") }); f.x = PADDLE_DIMENSION[1] / 2; fa = CANVAS_WIDTH - 102 - f.x; F = 102 + f.x; Z = !1 }; this.deactiveSmallPad = function() { b.gotoAndPlay("StoN"); b.on("animationend", function() { b.gotoAndStop("normal") }); f.x = PADDLE_DIMENSION[1] / 2; fa = CANVAS_WIDTH - 102 - f.x; F = 102 + f.x; ja = !1 }; this.deactiveFloor = function() { var e = s_oSpriteLibrary.getSprite("powerup_edge"); createjs.Tween.get(ka).to({ y: CANVAS_HEIGHT + e.height / 2 }, 800, createjs.Ease.backIn).call(function() { !1 === O ? (s_oStage.removeChild(ka), ka = null) : createjs.Tween.get(ka).to({ y: 940 }, 800, createjs.Ease.backOut) }); for (e = 0; e < d.length; e++) d[e].downFloor(!1); O = !1 }; this.deactiveMagnetic = function() { for (var e = s_oSpriteLibrary.getSprite("normal_ball"), u = 0; u < d.length; u++) d[u].changeSprite(e, "normal"); s_oStage.removeChild(b); this.createPadding(b.x); this.launchUnmagneticBall(); X = !1 }; this.deactiveShot = function() { qa = null; ca = !1; W && (W.gotoAndPlay("go"), W.on("animationend", function() { !1 === ca && (s_oStage.removeChild(W), W = null) })); f.x = PADDLE_DIMENSION[1] / 2; fa = CANVAS_WIDTH - EDGE_OFFSET - f.x; F = EDGE_OFFSET + f.x }; this.checkOtherActiveBonus = function() { !1 === Q && !0 === O && !1 === X && !1 === ca && (B = !1) }; this.bonusGesture = function() { for (var e = 0; e < ha; e++) if (m[e].update(), void 0 !== m[e] && m[e].getX() > b.x - f.x - m[e].getInfoData("offsetX") && m[e].getX() < b.x + f.x + m[e].getInfoData("offsetX") && m[e].getY() > b.y - f.y - m[e].getInfoData("offsetY") && m[e].getY() < b.y + f.y + m[e].getInfoData("offsetY")) { switch (m[e].getInfoData("Type")) { case 0: this.bonusLargePad(); break; case 1: this.bonusFireBall(); break; case 2: this.bonusFloor(); break; case 3: this.bonusMagnetic(); break; case 4: this.bonusLife(); break; case 5: this.bonusMultiBall(); break; case 6: this.bonusShot(); break; case 7: this.bonusSlowBall(); break; case 8: this.bonusFastBall(); break; case 9: this.bonusSmallPad() } this.unloadBonus(e); break } }; this.unloadBonus = function(e) { m[e].unload(); m.splice(e, 1); 0 < ha && ha--; for (e = 0; e < ha; e++) m[e].resetTheIndex(e) }; this.unloadBall = function(e) { d[e].unload(); d.splice(e, 1); for (e = 0; e < d.length; e++) d[e].resetTheIndex(e) }; this.unloadBullet = function(e) { g[e].unload(); g.splice(e, 1); ua--; for (e = 0; e < g.length; e++) g[e].setIndex(e) }; this.randomBonus = function(e, u) { Math.floor(100 * Math.random()) < SPAWN_BONUS_PROBABILITY[l - 1] && 0 < y && this.generateABonus(e, u) }; this.unloadLevel = function() { for (var e = 0; e < d.length; e++) d[e].unload(), d[e] = null; for (e = 0; e < m.length; e++) m[e].unload(), m[e] = null; if (void 0 !== g) for (e = 0; e < g.length; e++) g[e].unload(), g[e] = null; !0 === Z ? this.deactiveLargePad() : !0 === ja && this.deactiveSmallPad(); !0 === ca && (ba = 0, s_oStage.removeChild(W), W = null); !0 === O && (s_oStage.removeChild(ka), ka = null); !0 === X && (s_oStage.removeChild(b), this.createPadding(b.x)); B = Q = X = O = Z = ca = !1; for (e = 0; e < k.length; e++) k[e].unload(), k[e] = null; ha = 0; d = g = m = J = L = D = N = K = n = k = null; k = []; n = []; K = []; N = []; D = []; L = []; J = []; m = []; g = []; d = [] }; this.update = function() { if (!1 === p) { w += s_iTimeElaps; var e = parseInt(w / Ha); w -= Ha * e; for (var u = 0; u < e; u++) for (var x = 0; x < Ia; x++) this.__updatePhysics() } }; s_oGame = this; var Ha = 16, Ia = 10; BALL_SPEED = a.ball_speed / Ia; BRICKS_SCORE = a.bricks_score; BRICKS_RESISTANCE = a.bricks_resistance; BRICKS_DESTRUCTIBLE = a.bricks_destructible; BONUS_SPEED = a.bonus_speed / Ia; BONUS_TIME = a.bonus_time; BONUS_SCORE = a.bonus_score; BULLET_SPEED = a.bullet_speed; LIFE = a.life; SPEED_DOWN_BALL = a.speed_down_ball; SPEED_UP_BALL = a.speed_up_ball; NUM_LEVELS_FOR_ADS = a.num_levels_for_ads; this._init(q) } var s_oGame; function CSettingsLevel() { this.createBonusOccurance = function(a) { a = BONUS_OCCURRENCE_PER_LEVEL[a - 1]; for (var q = [], c = 0; c < a.length; c++) for (var h = 0; h < a[c]; h++) q.push(c); return q }; this.unload = function() { s_oAlienSettings = null }; s_oAliensSettings = this } var s_oAliensSettings; function CInterface(a) { var q, c, h, l, p, d, k, g, b, f, t, r, w, J, L, D, N, n, K, H, G, C, E, y, da, Y, P, S, la, oa = null, fa = null; this._init = function(F) { var M = s_oSpriteLibrary.getSprite("icon_audio"), T = CANVAS_WIDTH - M.width / 2 - 130; J = createBitmap(s_oSpriteLibrary.getSprite("up_edges")); s_oStage.addChild(J); !1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile ? (p = T, d = M.height / 2 + 10, b = new CToggle(p, d, M, s_bAudioActive), b.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this), q = p - M.width / 2 - 10, c = d) : (q = T, c = M.height / 2 + 10); T = window.document; M = T.documentElement; oa = M.requestFullscreen || M.mozRequestFullScreen || M.webkitRequestFullScreen || M.msRequestFullscreen; fa = T.exitFullscreen || T.mozCancelFullScreen || T.webkitExitFullscreen || T.msExitFullscreen; !1 === ENABLE_FULLSCREEN && (oa = !1); oa && screenfull.isEnabled && (M = s_oSpriteLibrary.getSprite("but_fullscreen"), la = new CToggle(q, c, M, s_bFullscreen, !0), la.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this)); N = new CTLText(s_oStage, CANVAS_WIDTH / 2 - 150, CANVAS_HEIGHT / 2 - 430, 100, 70, 50, "center", "#fff", PRIMARY_FONT, 1, 0, 0, TEXT_SCORE + "\n" + F, !0, !0, !0, !1); S = new CTLText(s_oStage, CANVAS_WIDTH / 2 - 290, CANVAS_HEIGHT / 2 - 430, 100, 70, 50, "center", "#fff", PRIMARY_FONT, 1, 0, 0, TEXT_LEVEL_UPPERCASE, !0, !0, !0, !1); F = s_oSpriteLibrary.getSprite("but_exit"); T = CANVAS_WIDTH - F.width / 2 - 100; h = T + 85; l = F.height / 2 + 10; r = new CGfxButton(h, l, F, s_oStage); r.addEventListener(ON_MOUSE_UP, this._onExit, this); F = s_oSpriteLibrary.getSprite("but_pause"); k = T = CANVAS_WIDTH - F.width / 2 - 90; g = F.height / 2 + 10; f = new CGfxButton(k, g, F, s_oStage); f.addEventListener(ON_MOUSE_UP, this._onButPauseRelease, this); F = s_oSpriteLibrary.getSprite("life"); L = createBitmap(F); L.x = .5 * CANVAS_WIDTH + 60; L.y = 120; L.regX = .5 * F.width; L.regY = .5 * F.width; s_oStage.addChild(L); D = new createjs.Text("x" + LIFE, "normal 40px " + PRIMARY_FONT, "#ffffff"); D.textAlign = "center"; D.textBaseline = "alphabetic"; D.x = .5 * CANVAS_WIDTH + 100; D.y = 125; s_oStage.addChild(D); s_oGame.setPause(!0); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.refreshButtonPos = function(F, M) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || b.setPosition(p - F, d + M); oa && screenfull.isEnabled && la.setPosition(q - F, c + M); f.setPosition(k - F, g + M); r.setPosition(h - F, l + M) }; this.rereshNumLevel = function() {}; this.refreshBallLife = function(F) { D.text = "x" + +F }; this.gameOver = function(F) { s_oGame.setPause(!0); f.block(!0); n = new createjs.Shape; n.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); n.alpha = 0; s_oStage.addChild(n); H = new CTLText(s_oStage, CANVAS_WIDTH / 2 - 300, -120, 600, 300, 100, "center", "#ffff00", PRIMARY_FONT, 1, 0, 0, TEXT_SCORE_GAMEOVER + "\n\n" + F, !0, !0, !0, !1); createjs.Tween.get(n).to({ alpha: .5 }, 1E3, createjs.Ease.backOut).call(function() { createjs.Tween.get(H.getText()).to({ y: CANVAS_HEIGHT / 2 - 200 }, 1E3, createjs.Ease.bounceOut).call(function() { var T = s_oSpriteLibrary.getSprite("but_restart"); K = new CGfxButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2 + 200, T, s_oStage); K.addEventListener(ON_MOUSE_UP, s_oInterface._onButReturnToMenuRelease, this) }) }); document.dispatchEvent(new CustomEvent("share_event", { detail: { score: F } })); document.dispatchEvent(new CustomEvent("save_score", { detail: { score: F } })); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) { var M = playSound("game_over", 1, !1); setVolume("soundtrack", 0); if (M) M.on("end", function() { setVolume("soundtrack", 1); M = null }) } }; this.levelComplete = function(F, M) { F < BRICKS_LEVEL_POSITION.length ? (n = createBitmap(s_oSpriteLibrary.getSprite("msg_box")), n.alpha = 0, s_oStage.addChild(n), s_oStage.setChildIndex(n, s_oStage.numChildren - 1), f.block(!0), E = new CTLText(s_oStage, CANVAS_WIDTH / 2 - 300, -150, 600, 300, 100, "center", "#ffff00", PRIMARY_FONT, 1, 0, 0, TEXT_LEVEL + " " + F + " " + TEXT_COMPLETE, !0, !0, !0, !1), y = new CTLText(s_oStage, CANVAS_WIDTH / 2 - 300, CANVAS_HEIGHT / 2 - 150, 600, 300, 100, "center", "#ffff00", PRIMARY_FONT, 1, 0, 0, TEXT_SCORE + "\n\n" + M, !0, !0, !0, !1), createjs.Tween.get(n).to({ alpha: 1 }, 1E3, createjs.Ease.backOut), createjs.Tween.get(y.getText()).to({ alpha: 1 }, 1E3, createjs.Ease.bounceOut).call(function() { var T = s_oSpriteLibrary.getSprite("but_continue"); C = new CGfxButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2 + 300, T, s_oStage); C.addEventListener(ON_MOUSE_UP, s_oInterface._onButNextLevelRelease, this) }), createjs.Tween.get(E.getText()).to({ y: CANVAS_HEIGHT / 2 - 300 }, 1E3, createjs.Ease.bounceOut)) : this.finishGame(M) }; this.finishGame = function(F) { s_oGame.setPause(!0); f.block(!0); n = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); n.alpha = 0; s_oStage.addChild(n); s_oStage.setChildIndex(n, s_oStage.numChildren - 1); da = new CTLText(s_oStage, CANVAS_WIDTH / 2 - 300, -170, 600, 200, 100, "center", "#ffff00", PRIMARY_FONT, 1, 0, 0, TEXT_CONGRATULATIONS, !0, !0, !0, !1); H = new CTLText(s_oStage, CANVAS_WIDTH / 2 - 300, CANVAS_HEIGHT / 2 - 100, 600, 250, 100, "center", "#ffff00", PRIMARY_FONT, 1, 0, 0, TEXT_SCORE_GAMEOVER + "\n\n" + F, !0, !0, !0, !1); createjs.Tween.get(n).to({ alpha: 1 }, 1E3, createjs.Ease.backOut); createjs.Tween.get(da.getText()).to({ y: CANVAS_HEIGHT / 2 - 370 }, 1200, createjs.Ease.bounceOut); createjs.Tween.get(H.getText()).to({ alpha: 1 }, 1E3, createjs.Ease.bounceOut).call(function() { var T = s_oSpriteLibrary.getSprite("but_restart"); K = new CGfxButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2 + 300, T, s_oStage); K.addEventListener(ON_MOUSE_UP, s_oInterface._onButReturnToMenuRelease, this) }); if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) { var M = playSound("game_completed", 1, !1); setVolume("soundtrack", 0); if (M) M.on("end", function() { setVolume("soundtrack", 1); M = null }) } document.dispatchEvent(new CustomEvent("share_event", { detail: { score: F } })); document.dispatchEvent(new CustomEvent("save_score", { detail: { score: F } })) }; this._onButNextLevelRelease = function() { y.unload(); E.unload(); s_oStage.removeChild(n); y = n = E = null; C.unload(); C = null; f.block(!1); s_oGame.nextLevel() }; this._onButReturnToMenuRelease = function() { s_oGame.onExit() }; this.refreshScore = function(F) { N.refreshText("SCORE\n" + F) }; this._onButPauseRelease = function() { playSound("click", 1, !1); s_oGame.setPause(!0); G = new createjs.Shape; G.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); G.alpha = .5; s_oStage.addChild(G); t = new createjs.Text("Pause", "normal 70px " + PRIMARY_FONT, "#ffffff"); t.textAlign = "center"; t.textBaseline = "alphabetic"; t.x = CANVAS_WIDTH / 2; t.y = CANVAS_HEIGHT / 2 - 250; s_oStage.addChild(t); f.block(!0); r.block(!0); createjs.Ticker.paused = !0; var F = s_oSpriteLibrary.getSprite("but_continue"); w = new CGfxButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2, F, s_oStage); w.addEventListener(ON_MOUSE_UP, this._onButContinueRelease, this) }; this._onButContinueRelease = function() { playSound("click", 1, !1); w.unload(); w = null; s_oStage.removeChild(t, G); G = !1; t = null; f.block(!1); r.block(!1); createjs.Ticker.paused = !1; s_oGame.setPause(!1) }; this.help = function(F) { var M = s_oSpriteLibrary.getSprite("msg_box"); Y = createBitmap(M); Y.on("click", function() { s_oInterface.unloadHelp(F) }, null, !0); s_oStage.addChild(Y); P ? !0 === s_bMobile ? P.refreshText(TEXT_HELP_PAGE_1_MOBILE) : P.refreshText(TEXT_HELP_PAGE_1_PC) : P = new CTLText(s_oStage, CANVAS_WIDTH / 2 - 300, CANVAS_HEIGHT / 2 - 120, 600, 250, 100, "center", "#ffff00", PRIMARY_FONT, 1, 0, 0, TEXT_HELP_PAGE_1_PC, !0, !0, !0, !1) }; this.unloadHelp = function(F) { createjs.Tween.get(Y).to({ alpha: 0 }, 1E3, createjs.Ease.cubicOut).call(function() { s_oStage.removeChild(Y) }); createjs.Tween.get(P.getText()).to({ alpha: 0 }, 1E3, createjs.Ease.cubicOut).call(function() { P.unload(); s_oInterface.showNumLevel(F) }) }; this.numLevel = function(F) { S.refreshText(TEXT_LEVEL_UPPERCASE + "\n" + F) }; this.showNumLevel = function(F) { var M = new createjs.Text(TEXT_LEVEL_UPPERCASE + " " + F, "normal 100px " + PRIMARY_FONT, COLOR_TEXT_LEVEL[Math.floor(Math.random() * COLOR_TEXT_LEVEL.length)]); M.textAlign = "center"; M.textBaseline = "alphabetic"; M.x = 0; M.y = 0; F = new createjs.Text(TEXT_LEVEL_UPPERCASE + " " + F, "normal 100px " + PRIMARY_FONT, "#000000"); F.textAlign = "center"; F.textBaseline = "alphabetic"; F.x = 0; F.y = 0; F.outline = 5; var T = new createjs.Container; T.addChild(F, M); T.x = -100; T.y = .5 * CANVAS_HEIGHT; s_oStage.addChild(T); createjs.Tween.get(T).to({ x: .5 * CANVAS_WIDTH }, 600, createjs.Ease.cubicOut).call(function() { createjs.Tween.get(T).wait(500).to({ x: CANVAS_WIDTH + 100 }, 600, createjs.Ease.cubicIn).call(function() { s_oStage.removeChild(T); s_oGame.setPause(!1) }) }) }; this.unload = function() { H && H.unload(); s_oStage.removeChild(K, n); n = K = H = null; if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) b.unload(), b = null; oa && screenfull.isEnabled && la.unload(); s_oInterface = null }; this._onExit = function() { s_oGame.onExit() }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this.resetFullscreenBut = function() { oa && screenfull.isEnabled && la.setActive(s_bFullscreen) }; this._onFullscreenRelease = function() { s_bFullscreen ? fa.call(window.document) : oa.call(window.document.documentElement); sizeHandler() }; s_oInterface = this; this._init(a); return this } var s_oInterface = null; function CBall(a, q, c, h, l, p, d, k) { var g, b = {}, f, t, r, w, J, L, D, N, n, K, H, G, C = 0; this._init = function() { if (d) { var E = new createjs.SpriteSheet({ images: [c], frames: { width: c.width / 8, height: c.height, regX: c.width / 2 / 8, regY: c.height / 2 }, animations: { fire: [0, 7, "fire", .5] } }); g = createSprite(E, "fire", c.width / 2 / 8, c.height / 2, c.width / 8, c.height) } else g = createBitmap(c); g.x = a; g.y = q; r = k + OFFSET_RADIUS_BALL; K = !1; f = new CVector2(h, l); t = new CVector2(0, -1); g.regX = r; g.regY = r; E = OFFSETEDGELEFT + r; var y = -OFFSETEDGEDOWN - r, da = OFFSETEDGEUP + r; w = CANVAS_WIDTH + (-OFFSETEDGERIGHT - r); J = E; D = CANVAS_HEIGHT + y - r; L = da + r; n = CANVAS_HEIGHT + r; N = CANVAS_HEIGHT + y - r + OFFSETPOWERUPFLOOR; G = p; H = BALL_SPEED * G; s_oStage.addChild(g); s_oStage.setChildIndex(g, 1) }; this.changeDirection = function(E, y, da, Y) { !0 === da ? f.set(E, f.getY() * y) : "base" === Y ? f.set(f.getX() * E, y) : "side" === Y ? f.set(f.getX() * E, f.getY() * y) : "launch" === Y && f.set(E, y) }; this.changeSprite = function(E, y) { var da = g.x, Y = g.y; if ("fire" === y) { s_oStage.removeChild(g); g = null; var P = new createjs.SpriteSheet({ images: [E], frames: { width: E.width / 8, height: E.height, regX: E.width / 2 / 8, regY: E.height / 2 }, animations: { fire: [0, 7, "fire", .5] } }); g = createSprite(P, "fire", E.width / 2 / 8, E.height / 2, E.width / 8, E.height); g.x = da; g.y = Y } else s_oStage.removeChild(g), g = createBitmap(E), g.x = da, g.y = Y, g.regX = r, g.regY = r; s_oStage.addChild(g); this.changeRotation(); s_oStage.setChildIndex(g, 1) }; this.downFloor = function(E) { K = E }; this.getDirectionY = function() { return f.getY() }; this.getX = function() { return g.x }; this.getY = function() { return g.y }; this.setDirection = function(E, y) { f.normalize(); f.set(E, y); this.changeRotation() }; this.changeRotation = function() { C = Math.round(toDegree(f.angleBetweenVectors(t))); 0 < f.getY() ? (C *= -1, 0 <= f.getX() && (C *= -1)) : 0 >= f.getX() && (C *= -1); g.rotation = C }; this.setPosition = function(E, y) { null !== E && (g.x = E); null !== y && (g.y = y) }; this.setInfoData = function(E, y) { b[E] = y }; this.getInfoData = function(E) { return b[E] }; this.resetTheIndex = function(E) { b.ID = E }; this.unload = function() { s_oStage.removeChild(g); s_oBall = null }; this.setVelocityRate = function(E) { G = E; H = BALL_SPEED * G }; this.update = function() { g.x += H * f.getX(); g.y += H * f.getY(); g.x >= w ? (f.set(-1 * f.getX(), f.getY()), this.changeRotation(), --g.x, playSound("boing", 1, !1)) : g.x <= J ? (f.set(-1 * f.getX(), f.getY()), this.changeRotation(), g.x += 1, playSound("boing", 1, !1)) : g.y >= D && !0 === K && g.y < N ? (f.set(f.getX(), -1 * f.getY()), this.changeRotation(), playSound("boing", 1, !1)) : g.y <= L ? (f.set(f.getX(), -1 * f.getY()), this.changeRotation(), playSound("boing", 1, !1)) : g.y > n ? s_oGame.loseBall(b.ID) : g.x <= J - 1 ? g.x += 2 : g.x >= w + 1 ? g.x -= 2 : g.y <= L - 1 && (g.y += 2) }; s_oBall = this; this._init() } var s_oBall; function CBrick(a, q, c, h, l) { var p, d = {}; this._init = function() { if (1 > h && !0 === l) p = createBitmap(c), p.regX = c.width / 2, p.regY = c.height / 2, d.Effect = !1; else if (!0 === l) { var k = { images: [c], frames: { width: c.width / 4, height: c.height / 2, regX: c.width / 2 / 4, regY: c.height / 2 / 2 }, animations: { normal: 1, destroyed: [2, 7, "destroyed"] } }; k = new createjs.SpriteSheet(k); p = createSprite(k, "normal", c.width / 2 / 4, c.height / 2 / 2, c.width / 4, c.height / 2); d.Effect = !0 } else k = { images: [c], frames: { width: c.width / 8, height: c.height / 2, regX: c.width / 2 / 8, regY: c.height / 2 / 2 }, animations: { start: 0, reflect: [0, 15, "start", .5] } }, k = new createjs.SpriteSheet(k), p = createSprite(k, "start", c.width / 2 / 8, c.height / 2 / 2, c.width / 8, c.height / 2), d.Effect = !1, d.Reflect = !1; p.x = a; p.y = q; s_oStage.addChild(p) }; this.getX = function() { return p.x }; this.getY = function() { return p.y }; this.setInfoData = function(k, g) { d[k] = g }; this.getInfoData = function(k) { return d[k] }; this.animBrick = function(k) { p.gotoAndPlay(k); p.on("animationend", function() { s_oStage.removeChild(p) }) }; this.reflectBrick = function() { !0 !== d.Reflect && (p.gotoAndPlay("reflect"), p.on("animationend", function() { p.gotoAndStop("reflect"); d.Reflect = !1 })) }; this.setPosition = function(k, g) { p.x = k; p.y = g }; this.setChildIndex = function(k) { s_oStage.setChildIndex(p, k) }; this.damageBrick = function(k) { p.gotoAndStop(k) }; this.unload = function() { s_oStage.removeChild(p); s_oBrick = null }; this.update = function() {}; s_oBrick = this; this._init() } var s_oBrick; function CBonus(a, q, c, h, l) { var p, d = {}, k, g; this._init = function(b, f, t, r, w) { d.Type = r; d.ID = w; 0 === r || 7 === r || 9 === r ? (r = { images: [t], frames: { width: t.width / 5, height: t.height / 2, regX: t.width / 2 / 5, regY: t.height / 2 / 2 }, animations: { normal: [0, 9, "normal", 1] } }, r = new createjs.SpriteSheet(r), p = createSprite(r, "normal", t.width / 2 / 5, t.height / 2 / 2, t.width / 5, t.height / 2), d.offsetX = t.width / 5 / 2) : 1 === r || 2 === r || 4 === r || 5 === r || 8 === r ? (r = { images: [t], frames: { width: t.width / 4, height: t.height / 2, regX: t.width / 2 / 4, regY: t.height / 2 / 2 }, animations: { normal: [0, 7, "normal", 1 ] } }, r = new createjs.SpriteSheet(r), p = createSprite(r, "normal", t.width / 2 / 4, t.height / 2 / 2, t.width / 4, t.height / 2), d.offsetX = t.width / 4 / 2) : (r = { images: [t], frames: { width: t.width / 6, height: t.height / 2, regX: t.width / 2 / 6, regY: t.height / 2 / 2 }, animations: { normal: [0, 11, "normal", 1] } }, r = new createjs.SpriteSheet(r), p = createSprite(r, "normal", t.width / 2 / 6, t.height / 2 / 2, t.width / 6, t.height / 2), d.offsetX = t.width / 6 / 2); d.offsetY = t.height / 2 / 2; k = BONUS_SPEED; p.x = b; p.y = f; s_oStage.addChild(p); g = CANVAS_HEIGHT + d.offsetX }; this.getX = function() { return p.x }; this.getY = function() { return p.y }; this.setInfoData = function(b, f) { d[b] = f }; this.getInfoData = function(b) { return d[b] }; this.resetTheIndex = function(b) { d.ID = b }; this.unload = function() { s_oStage.removeChild(p) }; this.update = function() { p.y += k; p.y < g || s_oGame.unloadBonus(d.ID) }; s_oBonus = this; this._init(a, q, c, h, l) } var s_oBonus; function CBullet(a, q, c) { var h, l, p; this._init = function() { var d = c.height / 2; h = createBitmap(c); h.x = a; h.y = q; h.regX = c.width / 2; h.regY = d; s_oStage.addChild(h); l = 30 + d + d }; this.getX = function() { return h.x }; this.getY = function() { return h.y }; this.setPosition = function(d, k) { null !== d && (h.x = d); null !== k && (h.y = k) }; this.unload = function() { s_oStage.removeChild(h); s_oBullet = null }; this.setIndex = function(d) { p = d }; this.getIndex = function() { return p }; this.update = function() { h.y -= BULLET_SPEED; h.y < l && (s_oGame.unloadBullet(p), playSound("brick_metal", 1, !1)) }; s_oBullet = this; this._init() } var s_oBullet; function CVector2(a, q) { var c, h; this._init = function(l, p) { c = l; h = p }; this.add = function(l, p) { c += l; h += p }; this.addV = function(l) { c += l.getX(); h += l.getY() }; this.scalarDivision = function(l) { c /= l; h /= l }; this.subV = function(l) { c -= l.getX(); h -= l.getY() }; this.scalarProduct = function(l) { c *= l; h *= l }; this.invert = function() { c *= -1; h *= -1 }; this.dotProduct = function(l) { return c * l.getX() + h * l.getY() }; this.set = function(l, p) { c = l; h = p }; this.setV = function(l) { c = l.getX(); h = l.getY() }; this.length = function() { return Math.sqrt(c * c + h * h) }; this.length2 = function() { return c * c + h * h }; this.normalize = function() { var l = this.length(); 0 < l && (c /= l, h /= l) }; this.angleBetweenVectors = function(l) { l = Math.acos(this.dotProduct(l) / (this.length() * l.length())); return !0 === isNaN(l) ? 0 : l }; this.getNormalize = function(l) { this.length(); l.set(c, h); l.normalize() }; this.rot90CCW = function() { var l = c; c = -h; h = l }; this.rot90CW = function() { var l = c; c = h; h = -l }; this.getRotCCW = function(l) { l.set(c, h); l.rot90CCW() }; this.getRotCW = function(l) { l.set(c, h); l.rot90CW() }; this.ceil = function() { c = Math.ceil(c); h = Math.ceil(h) }; this.round = function() { c = Math.round(c); h = Math.round(h) }; this.toString = function() { return "Vector2: " + c + ", " + h }; this.print = function() { trace("Vector2: " + c + ", " + h) }; this.getX = function() { return c }; this.getY = function() { return h }; this._init(a, q) } function CLevelMenu(a) { var q, c, h, l, p = [], d, k, g, b; this._init = function() { d = createBitmap(s_oSpriteLibrary.getSprite("bg_menu")); d.x = 0; d.y = 0; s_oStage.addChild(d); d = createBitmap(s_oSpriteLibrary.getSprite("msg_box")); s_oStage.addChild(d); new CTLText(s_oStage, CANVAS_WIDTH / 2 - 300, 360, 600, 60, 60, "center", "#fff", PRIMARY_FONT, 1, 0, 0, TEXT_SELECT_LEVEL, !0, !0, !0, !1); for (var f = .5 * CANVAS_WIDTH - 20, t = 0, r = 50, w = 0; w < BRICKS_LEVEL_POSITION.length; w++, t += 110) 440 < t && (t = 0, r += 100), w < s_iLastLevel ? (p[w] = new CLevelBut(f - 200 + t, 425 + r, s_oSpriteLibrary.getSprite("but_level"), !0, w + 1), p[w].addEventListenerWithParams(ON_MOUSE_DOWN, this._onClick, this, w)) : p[w] = new CLevelBut(f - 200 + t, 425 + r, s_oSpriteLibrary.getSprite("but_level"), !1, w + 1), s_bFirstTime = !0; if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) t = s_oSpriteLibrary.getSprite("icon_audio"), q = f = CANVAS_WIDTH - t.width / 2 - 60, c = t.height / 2 + 10, g = new CToggle(q, c, t, s_bAudioActive), g.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this); t = s_oSpriteLibrary.getSprite("but_exit"); f = CANVAS_WIDTH - t.width / 2 - 100; h = f + 85; l = t.height / 2 + 10; k = new CGfxButton(h, l, t, s_oStage); k.addEventListener(ON_MOUSE_UP, this._onExit, this); b = new createjs.Shape; b.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); s_oStage.addChild(b); createjs.Tween.get(b).to({ alpha: 0 }, 1E3).call(function() { s_oStage.removeChild(b) }); this.refreshButtonPos(s_iOffsetX, s_iOffsetY) }; this.unload = function() { for (var f = 0; f < BRICKS_LEVEL_POSITION.length; f++) p[f].unload(); s_oLevelMenu = null; s_oStage.removeAllChildren() }; this.refreshButtonPos = function(f, t) { !1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile || g.setPosition(q - f, c + t); k.setPosition(h - f, l + t) }; this._onNumModeToggle = function(f) { f === NUM_ACTIVE ? ((void 0).setActive(!1), (void 0).setActive(!0)) : ((void 0).setActive(!0), (void 0).setActive(!1)) }; this._onAudioToggle = function() { Howler.mute(s_bAudioActive); s_bAudioActive = !s_bAudioActive }; this._onClick = function(f) { p[f].ifClickable() && (document.dispatchEvent(new CustomEvent("start_session")), s_oMain.levelSelected(f + 1)) }; this._onExit = function() { s_oLevelMenu.unload(); s_oMain.gotoMenu() }; s_oLevelMenu = this; this._init() } var s_oLevelMenu = null; function CLevelBut(a, q, c, h, l) { var p, d, k, g = [], b = [], f; this._init = function(t, r, w, J) { d = []; k = []; var L = new createjs.SpriteSheet({ images: [w], frames: { width: w.width / 2, height: w.height, regX: w.width / 2 / 2, regY: w.height / 2 }, animations: { state_true: [0], state_false: [1] } }); p = J; f = createSprite(L, "state_" + p, w.width / 2 / 2, w.height / 2, w.width / 2, w.height); f.mouseEnabled = J; f.x = t; f.y = r; f.stop(); s_bMobile || (f.cursor = "pointer"); s_oStage.addChild(f); g.push(f); w = new createjs.Text(l, "50px " + PRIMARY_FONT, "#ffff00"); w.x = t; w.y = r + 15; w.textAlign = "center"; w.textBaseline = "alphabetic"; w.lineWidth = 200; s_oStage.addChild(w); this._initListener() }; this.unload = function() { f.off("mousedown", this.buttonDown); f.off("pressup", this.buttonRelease); s_oStage.removeChild(f) }; this._initListener = function() { f.on("mousedown", this.buttonDown); f.on("pressup", this.buttonRelease) }; this.viewBut = function(t) { s_oStage.addChild(t) }; this.addEventListener = function(t, r, w) { d[t] = r; k[t] = w }; this.addEventListenerWithParams = function(t, r, w, J) { d[t] = r; k[t] = w; b = J }; this.ifClickable = function() { return !0 === f.mouseEnabled ? 1 : 0 }; this.setActive = function(t, r) { p = r; g[t].gotoAndStop("state_" + p); g[t].mouseEnabled = !0 }; this.buttonRelease = function() { f.scaleX = 1; f.scaleY = 1; playSound("click", 1, !1); p = !p; f.gotoAndStop("state_" + p); d[ON_MOUSE_UP] && d[ON_MOUSE_UP].call(k[ON_MOUSE_UP], b) }; this.buttonDown = function() { f.scaleX = .9; f.scaleY = .9; d[ON_MOUSE_DOWN] && d[ON_MOUSE_DOWN].call(k[ON_MOUSE_DOWN], b) }; this.setPosition = function(t, r) { f.x = t; f.y = r }; this.setVisible = function(t) { f.visible = t }; this._init(a, q, c, h) } function CCreditsPanel() { var a, q, c, h, l, p, d, k; this._init = function() { k = new createjs.Container; s_oStage.addChild(k); var g = createBitmap(s_oSpriteLibrary.getSprite("bg_menu")); k.addChild(g); l = new createjs.Shape; l.graphics.beginFill("rgba(0,0,0,0.7)").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); k.addChild(l); g = s_oSpriteLibrary.getSprite("msg_box"); q = createBitmap(g); q.x = CANVAS_WIDTH / 2; q.y = CANVAS_HEIGHT / 2; q.regX = g.width / 2; q.regY = g.height / 2; k.addChild(q); p = new createjs.Shape; p.graphics.beginFill("#0f0f0f").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); p.alpha = .01; p.on("click", this._onLogoButRelease); k.addChild(p); g = s_oSpriteLibrary.getSprite("but_exit"); a = CANVAS_WIDTH / 2 + 264; c = new CGfxButton(a, 394, g, k); c.addEventListener(ON_MOUSE_UP, this.unload, this); h = new createjs.Text(TEXT_DEVELOPED, "46px " + PRIMARY_FONT, "#ffffff"); h.x = CANVAS_WIDTH / 2; h.y = 420; h.textAlign = "center"; k.addChild(h); g = s_oSpriteLibrary.getSprite("ctl_logo"); var b = createBitmap(g); b.regX = g.width / 2; b.regY = g.height / 2; b.x = CANVAS_WIDTH / 2; b.y = CANVAS_HEIGHT / 2; k.addChild(b); d = new createjs.Text("www.codethislab.com", "46px " + PRIMARY_FONT, "#ffffff"); d.x = CANVAS_WIDTH / 2; d.y = 570; d.textAlign = "center"; k.addChild(d) }; this.unload = function() { p.off("click", this._onLogoButRelease); c.unload(); c = null; s_oStage.removeChild(k) }; this._onLogoButRelease = function() { window.open("https://www.codethislab.com/", "_blank") }; this._init() } function CAlertSavingBox(a, q) { var c, h; this._init = function(d) { h = new createjs.Container; p.addChild(h); var k = new createjs.Shape; k.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); k.alpha = .5; k.on("click", function() {}); h.addChild(k); k = s_oSpriteLibrary.getSprite("msg_box"); var g = createBitmap(k); g.x = .5 * CANVAS_WIDTH; g.y = .5 * CANVAS_HEIGHT; g.regX = .5 * k.width; g.regY = .5 * k.height; h.addChild(g); new CTLText(h, CANVAS_WIDTH / 2 - 300, CANVAS_HEIGHT / 2 - 150, 600, 200, 50, "center", "#fff", PRIMARY_FONT, 1, 0, 0, d, !0, !0, !0, !1); c = new CGfxButton(CANVAS_WIDTH / 2, 620, s_oSpriteLibrary.getSprite("but_yes"), h); c.addEventListener(ON_MOUSE_UP, this._onButOk, this) }; this._onButOk = function() { l.unload() }; this.unload = function() { c.unload(); p.removeChild(h) }; var l = this; var p = q; this._init(a) } function CAreYouSurePanel() { var a, q, c, h, l, p, d, k, g = this; this._init = function() { a = []; q = []; d = new createjs.Container; d.visible = !1; s_oStage.addChild(d); k = new createjs.Shape; k.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); k.alpha = .5; k.on("click", function() {}); d.addChild(k); var b = s_oSpriteLibrary.getSprite("msg_box"); c = createBitmap(b); c.x = CANVAS_WIDTH / 2; c.y = CANVAS_HEIGHT / 2; c.regX = .5 * b.width; c.regY = .5 * b.height; d.addChild(c); h = new CTLText(d, CANVAS_WIDTH / 2 - 300, CANVAS_HEIGHT / 2 - 150, 600, 150, 70, "center", "#fff", PRIMARY_FONT, 1, 0, 0, TEXT_ARE_SURE, !0, !0, !0, !1); l = new CGfxButton(CANVAS_WIDTH / 2 + 150, .5 * CANVAS_HEIGHT + 70, s_oSpriteLibrary.getSprite("but_yes"), d); l.addEventListener(ON_MOUSE_UP, this._onButYes, this); p = new CGfxButton(CANVAS_WIDTH / 2 - 150, .5 * CANVAS_HEIGHT + 70, s_oSpriteLibrary.getSprite("but_no"), d); p.addEventListener(ON_MOUSE_UP, this._onButNo, this) }; this.addEventListener = function(b, f, t) { a[b] = f; q[b] = t }; this.show = function(b) { h.refreshText(b); d.alpha = 0; d.visible = !0; createjs.Tween.get(d).to({ alpha: 1 }, 300, createjs.Ease.quartOut).call(function() { s_oMain.stopUpdateNoBlock() }) }; this.hide = function() { s_oMain.startUpdateNoBlock(); createjs.Tween.get(d).to({ alpha: 0 }, 500, createjs.Ease.quartOut).call(function() { d.visible = !1 }) }; this.unload = function() { p.unload(); l.unload() }; this._onButYes = function() { g.hide(); a[ON_BUT_YES_DOWN] && a[ON_BUT_YES_DOWN].call(q[ON_BUT_YES_DOWN]) }; this._onButNo = function() { g.hide() }; this._init() } CTLText.prototype = { constructor: CTLText, __autofit: function() { if (this._bFitText) { for (var a = this._iFontSize; (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 }, setOutline: function(a) { null !== this._oText && (this._oText.outline = a) }, setShadow: function(a, q, c, h) { null !== this._oText && (this._oText.shadow = new createjs.Shadow(a, q, c, h)) }, 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 }, refreshText: function(a) { "" === a && (a = " "); null === this._oText && this.__createText(a); this._oText.text = a; this._oText.font = this._iFontSize + "px " + this._szFont; this._oText.lineHeight = Math.round(this._iFontSize * this._fLineHeightFactor); this.__autofit(); this.__updateY(); this.__verticalAlign() }, unload: function() { this._oContainer.removeChild(this._oText); this._oDebugShape && this._oContainer.removeChild(this._oDebugShape) } }; function CTLText(a, q, c, h, l, p, d, k, g, b, f, t, r, w, J, L, D) { this._oContainer = a; this._x = q; this._y = c; this._iWidth = h; this._iHeight = l; this._bMultiline = L; this._iFontSize = p; this._szAlign = d; this._szColor = k; this._szFont = g; this._iPaddingH = f; this._iPaddingV = t; this._bVerticalAlign = J; this._bFitText = w; this._bDebug = D; this._oDebugShape = null; this._fLineHeightFactor = b; this._oText = null; r && this.__createText(r) } 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 q = a.split("."), c = q.length; 2 < c && (a = q[c - 2] + "." + q[c - 1]); return a } var getClosestTop = function() { var a = window, q = !1; try { for (; a.parent.document !== a.document;) if (a.parent.document) a = a.parent; else { q = !0; break } } catch (c) { q = !0 } return { topFrame: a, err: q } }, getBestPageUrl = function(a) { var q = a.topFrame, c = ""; if (a.err) try { try { c = window.top.location.href } catch (l) { var h = window.location.ancestorOrigins; c = h[h.length - 1] } } catch (l) { c = q.document.referrer } else c = q.location.href; return c }, TOPFRAMEOBJ = getClosestTop(), PAGE_URL = getBestPageUrl(TOPFRAMEOBJ); function seekAndDestroy() { for (var a = extractRootDomain(PAGE_URL), q = [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)], c = 0; c < q.length; c++) if (q[c] === a) return !0; return !1 };
| ver. 1.4 |
Github
|
.
| PHP 8.2.29 | Генераци� �траницы: 0.01 |
proxy
|
phpinfo
|
�а�тройка