musicFlag = false; (function(a, U) { a.SystemTypeEnum = { WebBrowser: 0, WindowsPhone: 1, Android: 2, iOS: 3 }; a.AssetResolutionEnum = { ResolutionA: 0, ResolutionB: 1, ResolutionC: 2 }; a.LayoutOrientationEnum = { Landscape: 0, Portrait: 1 }; a.DirectionEnum = { None: 0, Right: 1, Left: 2, Top: 3, Bottom: 4 }; a.GridTypeEnum = { Small: 0, Large: 1 }; a.ObjectTypeEnum = { None: 0, Object1: 1, Object2: 2, Object3: 3, Object4: 4, Object5: 5, Object6: 6, Object7: 7, Object8: 8, Object9: 9, Object10: 10, Object11: 11, Object12: 12, Object13: 13, Object14: 14, Object15: 15, Object16: 16 }; a.CellTypeEnum = { None: 0, Cell1: 1 }; a.BoosterTypeEnum = { Speed: 0, Shield: 1, Shadow: 2 }; a.EffectTypeEnum = { None: 0, BubbleEffect: 1, PebbleEffect: 2, ProjectileEffect: 3, NumberEffect: 4, SparkEffect: 5, StarEffect: 6, PangEffect: 7, CoinEffect: 8, BoosterEffect: 9, SpeedEffect: 10 }; a.GameStateEnum = { GameLogo: 1, GameIntro: 2, GameMenu: 3, GamePreLoading: 4, GameLoading: 5, GameRun: 6, GameLost: 7, GameWon: 8 }; a.GameSceneModeEnum = { None: 0, WorldSelection: 1, LevelPlay: 2, Leaderboards: 3, Achievements: 4, Shop: 5, Credits: 6 }; a.LevelStatusEnum = { None: 0, Passed: 1, Available: 2, Locked: 3 }; a.CommandEnum = { None: 0, Menu: 1, Home: 2, Refresh: 3, GoBack: 4, Play: 5, Credits: 6, Settings: 7, PreviousPage: 8, NextPage: 9, Close: 10, NextLevel: 11, ReplayLevel: 12, QuitLevel: 13, Sound: 14, Music: 15, Share: 16, PlayChallenge: 17, Leaderboards: 18, Achievements: 19 } })(window.AquaThiefGame = window.AquaThiefGame || {}); (function(a, U) { a.systemType = a.SystemTypeEnum.WebBrowser; a.userData = {}; a.preloadSounds = !1; a.devMode = !1; a.isDemo = !0; a.isMusicEnabled = !0; a.isSoundEnabled = !0; a.shopAvailable = !1; a.resetUserData = !1; a.awardGold = !0; a.language = ["en", "fr"]; a.showHouseAds = !1; a.showHouseAdsType = 0; a.soundItems = { music1: "assets/sound/music1.mp3", wee: "assets/sound/wee.mp3", pop: "assets/sound/pop.mp3", win: "assets/sound/win.mp3", fail1: "assets/sound/fail1.mp3", fail2: "assets/sound/fail2.mp3", click: "assets/sound/click.mp3", slide: "assets/sound/slide.mp3", rotate: "assets/sound/rotate.mp3", alert: "assets/sound/alert.mp3", cop: "assets/sound/cop.mp3", levelintro: "assets/sound/levelintro.mp3", pickup1: "assets/sound/pickup1.mp3", pickup2: "assets/sound/pickup2.mp3", yippee1: "assets/sound/yippee1.mp3", yippee2: "assets/sound/yippee2.mp3", coin: "assets/sound/coin.mp3", coin2: "assets/sound/coin2.mp3" }; a.cachedSounds = {}; a.shopItems = []; a.achievementItems = [{ type: 1, value: 4 }, { type: 1, value: 30 }, { type: 1, value: 60 }, { type: 0, value: 1E3 }, { type: 0, value: 5E3 }, { type: 0, value: 1E4 }, { type: 0, value: 2E4 }]; a.leaderBoardItems = []; a.initializeSystem = function() { "undefined" !== typeof window.external && "undefined" !== typeof window.external.notify && (a.systemType = a.SystemTypeEnum.WindowsPhone); switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: a.preloadSounds = !1; break; case a.SystemTypeEnum.WebBrowser: a.preloadSounds = !0 } }; a.createUserLeveldata = function(e) { a.userData.levels[e] = { stars: 0, unlocked: 1, bestScore: 0 } }; a.loadUserData = function(e) { if (e === U) switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.external.notify("commandLoadUserData"); break; case a.SystemTypeEnum.WebBrowser: window.localStorage ? (e = a.resetUserData ? '{ "ads": 1, "review": 0, "lang": 0, "musicEnabled": 1, "soundEnabled": 1, "currencyCount": 50, "levels": [], "challenge": 0, "threeStarsLevels": 0 }' : window.localStorage.getItem("userData")) && "" !== e || (e = '{ "ads": 1, "review": 0, "lang": 0, "musicEnabled": 1, "soundEnabled": 1, "currencyCount": 50, "levels": [], "challenge": 0, "threeStarsLevels": 0 }') : e = '{ "ads": 1, "review": 0, "lang": 0, "musicEnabled": 1, "soundEnabled": 1, "currencyCount": 50, "levels": [], "challenge": 0, "threeStarsLevels": 0 }', a.loadUserData(e) } else a.userData = JSON.parse(e), a.isMusicEnabled = a.userData.musicEnabled ? !0 : !1, a.isSoundEnabled = a.userData.soundEnabled ? !0 : !1, a.userData.levels[0] || a.createUserLeveldata(0) }; a.saveUserData = function() { switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.external.notify("commandSaveUserData:" + JSON.stringify(a.userData)); break; case a.SystemTypeEnum.WebBrowser: window.localStorage.setItem("userData", JSON.stringify(a.userData)) } }; a.enableMusic = function(e) { a.isMusicEnabled = e; a.userData.musicEnabled = e ? 1 : 0; e ? a.playSound("music1") : a.stopSound("music1"); a.saveUserData() }; a.enableSound = function(e) { a.isSoundEnabled = e; a.userData.soundEnabled = e ? 1 : 0; a.saveUserData() }; a.playSound = function(e) { if (!1 !== a.isMusicEnabled || "music1" !== e && "music2" !== e) if (!1 !== a.isSoundEnabled || "music1" === e || "music2" === e) switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.setTimeout(function() { window.external.notify("commandStopSound:" + e); window.external.notify("commandPlaySound:" + e) }, 10); break; case a.SystemTypeEnum.WebBrowser: "music1" === e || "music2" === e ? AudioManager.loopSound(e) : AudioManager.playSound(e) } }; a.stopSound = function(e) { switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.external.notify("commandStopSound:" + e); break; case a.SystemTypeEnum.WebBrowser: AudioManager.stopSound(e) } }; a.stopAllSounds = function() { for (var e in a.soundItems) a.soundItems.hasOwnProperty(e) && a.stopSound(e) }; a.showBannerAd = function() { if (1 === a.userData.ads) switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.external.notify("commandShowBannerAd") } }; a.hideBannerAd = function() { switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.external.notify("commandHideBannerAd") } }; a.getMoreGames = function() { switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.external.notify("commandGetMoreGames") } }; a.loadShopItems = function(e) { switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.external.notify("commandGetProductListing"); break; case a.SystemTypeEnum.WebBrowser: a.shopItems = JSON.parse('[{ "id":"11001", "name": "Disable Ads", "price": "$0.99", "description": "Disable all ads" },{ "id":"11002", "name": "10x Hints Pack", "price": "$1.99", "description": "Hints pack 10x" },{ "id":"11001", "name": "Level Pack 1", "price": "$0.99", "description": "Level Pack" },{ "id":"11001", "name": "Level Pack 2", "price": "$0.99", "description": "Level Pack" },{ "id":"11002", "name": "30x Hints Pack", "price": "$2.99", "description": "Hints pack 10x" }]'), a.shopAvailable = !1 } }; a.loadLeaderboardItems = function() { a.leaderBoardItems.push({ id: "Test1", name: "test product 1", price: "200" }) }; a.buyShopItem = function(e) { switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.external.notify("commandBuyShopItem:" + a.shopItems[e].id) } }; a.rateGame = function() { switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.external.notify("commandRateGame") } }; a.launchAdUrl = function(e) { switch (a.systemType) { case a.SystemTypeEnum.WindowsPhone: window.external.notify("commandLaunchAdUrl:" + e) } } })(window.AquaThiefGame = window.AquaThiefGame || {}); var onUserDataLoaded = function(a) { window.AquaThiefGame.loadUserData(a) }, onBackButtonPressed = function() { return window.AquaThiefGame.navigateBack() }, onProductListingLoaded = function(a) { a = JSON.parse(a); window.AquaThiefGame.shopItems = a.slice(0); 0 < window.AquaThiefGame.shopItems.length && (window.AquaThiefGame.shopAvailable = !0) }, onCoinsAdded = function(a) { a = JSON.parse(a); window.AquaThiefGame.userData.currencyCount += a.coins; window.AquaThiefGame.userData.ads = 0; window.AquaThiefGame.hideBannerAd(); window.AquaThiefGame.saveUserData() }; (function(a, U) { a.Camera = function() { if (!(this instanceof a.Camera)) throw Error("Constructor called as a function."); this.reset() }; a.Camera.prototype.reset = function() { this.y = this.x = 0; this.sy = this.sx = 1; this.angle = this.ty = this.tx = 0; this.matrix = [1, 0, 0, 1, 0, 0] }; a.Camera.prototype.update = function() { this.matrix = [1, 0, 0, 1, 0, 0]; this.translate(this.x, this.y); this.scale(this.sx, this.sy); this.rotate(this.angle) }; a.Camera.prototype.translate = function(a, k) { this.matrix[4] += this.matrix[0] * a + this.matrix[2] * k; this.matrix[5] += this.matrix[1] * a + this.matrix[3] * k }; a.Camera.prototype.scale = function(a, k) { this.matrix[0] *= a; this.matrix[1] *= a; this.matrix[2] *= k; this.matrix[3] *= k }; a.Camera.prototype.rotate = function(a) { var k = Math.cos(a); a = Math.sin(a); var f = this.matrix[1] * k + this.matrix[3] * a, p = this.matrix[0] * -a + this.matrix[2] * k, q = this.matrix[1] * -a + this.matrix[3] * k; this.matrix[0] = this.matrix[0] * k + this.matrix[2] * a; this.matrix[1] = f; this.matrix[2] = p; this.matrix[3] = q }; a.Camera.prototype.screenToCamera = function(a, k) { var f = a, p = k, q = 1 / (this.matrix[0] * this.matrix[3] - this.matrix[1] * this.matrix[2]); a = f * this.matrix[3] * q + p * -this.matrix[2] * q + q * (this.matrix[2] * this.matrix[5] - this.matrix[3] * this.matrix[4]); k = f * -this.matrix[1] * q + p * this.matrix[0] * q + q * (this.matrix[1] * this.matrix[4] - this.matrix[0] * this.matrix[5]); return { x: a, y: k } }; a.Camera.prototype.cameraToScreen = function(a, k) { var f = a, p = k; a = f * this.matrix[0] + p * this.matrix[2] + this.matrix[4]; k = f * this.matrix[1] + p * this.matrix[3] + this.matrix[5]; return { x: a, y: k } }; a.Camera.prototype.multiply = function(a) { var k = this.matrix[1] * a.matrix[0] + this.matrix[3] * a.matrix[1], f = this.matrix[0] * a.matrix[2] + this.matrix[2] * a.matrix[3], p = this.matrix[1] * a.matrix[2] + this.matrix[3] * a.matrix[3], q = this.matrix[0] * a.matrix[4] + this.matrix[2] * a.matrix[5] + this.matrix[4], t = this.matrix[1] * a.matrix[4] + this.matrix[3] * a.matrix[5] + this.matrix[5]; this.matrix[0] = this.matrix[0] * a.matrix[0] + this.matrix[2] * a.matrix[1]; this.matrix[1] = k; this.matrix[2] = f; this.matrix[3] = p; this.matrix[4] = q; this.matrix[5] = t } })(window.AquaThiefGame = window.AquaThiefGame || {}); (function(a, U) { a.Entity = function() { if (!(this instanceof a.Entity)) throw Error("Constructor called as a function."); this.vy = this.vx = 0; this.scaleFactor = 1; this.angle = 0; this.gravity = 9.78; this.mass = 1; this.heartBeats = [] }; a.Entity.prototype.update = function(a) { var k, f, p; k = 0; for (f = this.heartBeats.length; k < f; k += 1) p = this.heartBeats[k], 0 === p.direction && p.time <= p.maxTime ? (p.time = Math.min(p.time + a * p.speed1, p.maxTime), p.time === p.maxTime && (p.direction = 1)) : 1 === p.direction && 0 <= p.time && (p.time = Math.max(p.time - a * p.speed2, 0), 0 === p.time && (p.direction = 0)) }; a.ObjectEntity = function(e, k, f, p, q, t, w, v, u, z) { if (!(this instanceof a.ObjectEntity)) throw Error("Constructor called as a function."); a.Entity.call(this); this.x = k; this.y = f; this.tx = k; this.ty = f; this.radius = q; this.type = e; this.direction = t; this.speed = p; this.scaleFactor = 1; this.destroyTime = this.scaleFactorTime = 0; this.isDead = !1; this.target = null; this.altface = !1; this.spawnTime = 1; this.speedTime = this.bubbleTime = this.addedTime = 0; this.points = w; this.path = v.slice(0); this.referencePath = v.slice(0); this.loop = u; this.chaser = z; this.speedAngle = this.deathAngle = 0; this.shadowBooster = this.shieldBooster = this.speedBooster = !1; this.heartBeats = [{ time: 1.5 * Math.random(), direction: 0, maxTime: 1.5, speed1: 1, speed2: 2 }, { time: Math.random(), direction: 0, maxTime: 1, speed1: 1, speed2: 2 }, { time: Math.random(), direction: 0, maxTime: 3, speed1: 1, speed2: 15 }, { time: Math.random(), direction: 0, maxTime: 1, speed1: 1, speed2: 1 }, { time: Math.random(), direction: 0, maxTime: 1, speed1: 1, speed2: .5 }, { time: Math.random(), direction: 0, maxTime: 1, speed1: 4, speed2: 3 }] }; a.ObjectEntity.prototype = Object.create(a.Entity.prototype); a.ObjectEntity.prototype.update = function(e) { 0 < this.scaleFactorTime && (this.scaleFactorTime -= e, 0 > this.scaleFactorTime && (this.scaleFactorTime = 0)); 0 < this.destroyTime && (this.destroyTime -= e, 0 >= this.destroyTime && (this.destroyTime = 0, this.isDead = !0)); 0 < this.spawnTime && (this.spawnTime -= e, 0 >= this.spawnTime && (this.spawnTime = 0)); 0 < this.bubbleTime && (this.bubbleTime -= e, 0 >= this.bubbleTime && (this.bubbleTime = 0)); 0 < this.speedTime && (this.speedTime -= e, 0 >= this.speedTime && (this.speedTime = 0)); this.deathAngle += 3 * Math.PI * e % (2 * Math.PI); this.speedAngle += 1 * Math.PI * e % (2 * Math.PI); a.Entity.prototype.update.call(this, e) }; a.CellEntity = function(e, k, f, p, q, t, w) { if (!(this instanceof a.CellEntity)) throw Error("Constructor called as a function."); a.Entity.call(this); this.x = k; this.y = f; this.tx = k; this.ty = f; this.radius = t; this.type = e; this.direction = w; this.speed = 0; this.scaleFactor = 1; this.scaleFactorTime = 0; this.row = p; this.column = q; this.heartBeats = [{ time: 1.5 * Math.random(), direction: 0, maxTime: 1.5, speed1: 1, speed2: 2 }, { time: Math.random(), direction: 0, maxTime: 1, speed1: 1, speed2: 2 }] }; a.CellEntity.prototype = Object.create(a.Entity.prototype); a.CellEntity.prototype.update = function(e) { 0 < this.scaleFactorTime && (this.scaleFactorTime -= e, 0 > this.scaleFactorTime && (this.scaleFactorTime = 0)); a.Entity.prototype.update.call(this, e) } })(window.AquaThiefGame = window.AquaThiefGame || {}); (function(a, U) { a.Effect = function(e, k, f) { if (!(this instanceof a.Effect)) throw Error("Constructor called as a function."); this.x = e; this.y = k; this.radius = f; this.vy = this.vx = 0; this.mass = this.friction = 1; this.direction = a.DirectionEnum.None; this.angle = this.rotationSpeed = 0; this.gravity = 9.78; this.value = 0; this.type = a.EffectTypeEnum.None; this.activationCooldown = 0; this.selfDestroyTime = -1; this.startFadeTime = 1; this.restoreBaseAngle = !1; this.cooldown = 0; this.scaleFactor = 1; this.scaleTime = -1; this.scaleSpeed = 2; this.useTransform = !1 }; a.Effect.prototype.update = function(e) { 0 < this.activationCooldown && (this.activationCooldown -= e, 0 > this.activationCooldown && (this.activationCooldown = 0)); 0 < this.scaleTime && (this.scaleTime -= e * this.scaleSpeed, 0 > this.scaleTime && (this.scaleTime = 0)); 0 < this.cooldown && (this.cooldown -= e, 0 > this.cooldown && (this.cooldown = 0)); 0 < this.selfDestroyTime && (this.selfDestroyTime -= e, 0 > this.selfDestroyTime && (this.selfDestroyTime = 0)); 0 < this.vx ? (this.vx -= this.friction * e, 0 > this.vx && (this.vx = 0)) : 0 > this.vx && (this.vx += this.friction * e, 0 < this.vx && (this.vx = 0)); !this.restoreBaseAngle || this.restoreBaseAngle && 1 < Math.abs(this.rotationSpeed) ? 0 < this.rotationSpeed ? (this.rotationSpeed -= this.friction * e, 0 > this.rotationSpeed && (this.rotationSpeed = 0)) : 0 > this.rotationSpeed && (this.rotationSpeed += this.friction * e, 0 < this.rotationSpeed && (this.rotationSpeed = 0)) : this.restoreBaseAngle && (this.rotationSpeed = 0); this.restoreBaseAngle && 0 === this.rotationSpeed && 0 !== this.angle && (.1 < a.shortestArc(this.angle, 0) ? this.angle = 0 < this.angle ? this.angle + 2 * Math.PI * e : this.angle - 2 * Math.PI * e : this.angle = 0); this.angle = this.rotationSpeed ? (this.angle + 2 * this.rotationSpeed * Math.PI * e) % (2 * Math.PI) : this.angle; this.vy += this.gravity * e * this.mass; this.y += this.vy * e; this.x += this.vx * e }; a.SparkEffect = function(e, k, f) { if (!(this instanceof a.SparkEffect)) throw Error("Constructor called as a function."); a.Effect.call(this, e, k, f); this.gravity = 0; this.friction = 2; this.selfDestroyTime = this.mass = .5; this.startFadeTime = .3; this.type = a.EffectTypeEnum.SparkEffect; this.value = 0; this.angle = 2 * Math.random(); this.rotationSpeed = .2 * Math.PI; this.vy = this.vx = 0 }; a.SparkEffect.prototype = Object.create(a.Effect.prototype); a.PangEffect = function(e, k, f, p) { if (!(this instanceof a.PangEffect)) throw Error("Constructor called as a function."); a.Effect.call(this, e, k, f); this.gravity = 0; this.friction = 2; this.selfDestroyTime = this.mass = .5; this.startFadeTime = .3; this.type = a.EffectTypeEnum.PangEffect; this.value = 0; this.angle = 4 * Math.random(); this.rotationSpeed = .2 * Math.PI; this.vy = this.vx = 0; this.scaleFactor = p }; a.PangEffect.prototype = Object.create(a.Effect.prototype); a.StarEffect = function(e, k, f, p, q) { if (!(this instanceof a.StarEffect)) throw Error("Constructor called as a function."); a.Effect.call(this, e, k, f); this.gravity = 0; this.friction = 2; this.mass = .5; this.selfDestroyTime = 1.2; this.startFadeTime = .8; this.type = a.EffectTypeEnum.StarEffect; this.value = 0; this.angle = 2 * Math.random(); this.rotationSpeed = .5 * Math.PI; this.vx = (1 + Math.random()) * (.5 < Math.random()) ? 2 : -2; this.vy = (1 + Math.random()) * (.5 < Math.random()) ? 2 : -2; this.scaleFactor = p; this.subType = q }; a.StarEffect.prototype = Object.create(a.Effect.prototype); a.BubbleEffect = function(e, k, f, p) { if (!(this instanceof a.BubbleEffect)) throw Error("Constructor called as a function."); a.Effect.call(this, e, k, f); this.gravity = 0; this.mass = this.friction = 2; this.selfDestroyTime = 4; this.startFadeTime = 1; this.type = a.EffectTypeEnum.BubbleEffect; this.value = 0; this.angle = 2 * Math.random(); this.rotationSpeed = .2 * (.5 < Math.random() ? -1 : 1) * Math.PI; this.vx = .5 < Math.random() ? 2.2 : -2.2; this.vy = -(3 + Math.random()); this.scaleFactor = p ? p : .5 + .3 * Math.random() }; a.BubbleEffect.prototype = Object.create(a.Effect.prototype); a.PebbleEffect = function(e, k, f, p) { if (!(this instanceof a.PebbleEffect)) throw Error("Constructor called as a function."); a.Effect.call(this, e, k, f); this.gravity = 9.78; this.mass = this.friction = 2; this.selfDestroyTime = 4; this.startFadeTime = 1; this.type = a.EffectTypeEnum.PebbleEffect; this.value = 0; this.angle = 2 * Math.random(); this.rotationSpeed = .2 * (.5 < Math.random() ? -1 : 1) * Math.PI; this.vx = .5 < Math.random() ? 2 : -2; this.vy = -(3 + Math.random()); this.subType = p }; a.PebbleEffect.prototype = Object.create(a.Effect.prototype); a.ProjectileEffect = function(e, k, f, p, q) { if (!(this instanceof a.ProjectileEffect)) throw Error("Constructor called as a function."); a.Effect.call(this, e, k, f); this.friction = this.gravity = 0; this.mass = 5; this.selfDestroyTime = 25; this.startFadeTime = .1; this.type = a.EffectTypeEnum.ProjectileEffect; this.objectType = q; this.rotationSpeed = this.angle = this.value = 0; this.target = p; this.cooldown = .1; this.reachedTarget = !1; this.randomTarget = { x: this.target.x + 20 * (.5 < Math.random() ? 1 : -1) + 5 * Math.random() * (.5 < Math.random() ? 1 : -1), y: this.target.y + 20 * (.5 < Math.random() ? 1 : -1) + 5 * Math.random() * (.5 < Math.random() ? 1 : -1) }; e = a.distance(this.x, this.y, this.randomTarget.x, this.randomTarget.y); this.vx = (this.randomTarget.x - this.x) / e * 5; this.vy = (this.randomTarget.y - this.y) / e * 5 }; a.ProjectileEffect.prototype = Object.create(a.Effect.prototype); a.NumberEffect = function(e, k, f, p, q) { if (!(this instanceof a.NumberEffect)) throw Error("Constructor called as a function."); a.Effect.call(this, e, k, .5); this.gravity = 9.78; this.friction = 2; this.mass = .5; this.selfDestroyTime = .9; this.startFadeTime = .6; this.type = a.EffectTypeEnum.NumberEffect; this.angle = this.value = 0; this.rotationSpeed = .5 < Math.random() ? -.1 * Math.PI : .1 * Math.PI; this.vx = 0; this.vy = 2 * -Math.random(); this.number = f; this.color = p; this.hasX = q }; a.NumberEffect.prototype = Object.create(a.Effect.prototype); a.BoosterEffect = function(e, k, f) { if (!(this instanceof a.BoosterEffect)) throw Error("Constructor called as a function."); a.Effect.call(this, e, k, .5); this.gravity = 0; this.friction = 2; this.mass = .5; this.selfDestroyTime = 1; this.startFadeTime = .7; this.type = a.EffectTypeEnum.BoosterEffect; this.angle = this.value = 0; this.rotationSpeed = .5 < Math.random() ? -.1 * Math.PI : .1 * Math.PI; this.vx = 0; this.vy = -2; this.boosterType = f }; a.BoosterEffect.prototype = Object.create(a.Effect.prototype); a.SpeedEffect = function(e, k, f) { if (!(this instanceof a.SpeedEffect)) throw Error("Constructor called as a function."); a.Effect.call(this, e, k, .5); this.gravity = 0; this.friction = 2; this.mass = .5; this.startFadeTime = this.selfDestroyTime = .4; this.type = a.EffectTypeEnum.SpeedEffect; this.angle = this.value = 0; this.rotationSpeed = .5 < Math.random() ? -.1 * Math.PI : .1 * Math.PI; this.vy = this.vx = 0; this.activeObject = f }; a.SpeedEffect.prototype = Object.create(a.Effect.prototype); a.CoinEffect = function(e, k, f) { if (!(this instanceof a.CoinEffect)) throw Error("Constructor called as a function."); a.Effect.call(this, e, k, .5); this.gravity = 0; this.friction = 2; this.mass = .5; this.selfDestroyTime = 1.5; this.startFadeTime = .6; this.type = a.EffectTypeEnum.CoinEffect; this.angle = this.value = 0; this.rotationSpeed = .5 < Math.random() ? -.2 * Math.PI : .2 * Math.PI; this.vx = 3; this.vy = -5 + 5 * -Math.random() }; a.CoinEffect.prototype = Object.create(a.Effect.prototype) })(window.AquaThiefGame = window.AquaThiefGame || {}); (function(a, U) { a.levelData = []; a.initializeLevels = function() { a.addLevel0001(a.levelData); a.addLevel0002(a.levelData); a.addLevel0003(a.levelData); a.addLevel0004(a.levelData); a.addLevel0005(a.levelData); a.addLevel0006(a.levelData); a.addLevel0007(a.levelData); a.addLevel0008(a.levelData); a.addLevel0009(a.levelData); a.addLevel0010(a.levelData); a.addLevel0011(a.levelData); a.addLevel0012(a.levelData); a.addLevel0013(a.levelData); a.addLevel0014(a.levelData); a.addLevel0015(a.levelData); a.addLevel0016(a.levelData); a.addLevel0017(a.levelData); a.addLevel0018(a.levelData); a.addLevel0019(a.levelData); a.addLevel0020(a.levelData); a.addLevel0021(a.levelData); a.addLevel0022(a.levelData); a.addLevel0023(a.levelData); a.addLevel0024(a.levelData); a.addLevel0025(a.levelData); a.addLevel0026(a.levelData); a.addLevel0027(a.levelData); a.addLevel0028(a.levelData); a.addLevel0029(a.levelData); a.addLevel0030(a.levelData); a.addLevel0031(a.levelData); a.addLevel0032(a.levelData); a.addLevel0033(a.levelData); a.addLevel0034(a.levelData); a.addLevel0035(a.levelData); a.addLevel0036(a.levelData); a.addLevel0037(a.levelData); a.addLevel0038(a.levelData); a.addLevel0039(a.levelData); a.addLevel0040(a.levelData); a.addLevel0041(a.levelData); a.addLevel0042(a.levelData); a.addLevel0043(a.levelData); a.addLevel0044(a.levelData); a.addLevel0045(a.levelData); a.addLevel0046(a.levelData); a.addLevel0047(a.levelData); a.addLevel0048(a.levelData); a.addLevel0049(a.levelData); a.addLevel0050(a.levelData); a.addLevel0051(a.levelData); a.addLevel0052(a.levelData); a.addLevel0053(a.levelData); a.addLevel0054(a.levelData); a.addLevel0055(a.levelData); a.addLevel0056(a.levelData); a.addLevel0057(a.levelData); a.addLevel0058(a.levelData); a.addLevel0059(a.levelData); a.addLevel0060(a.levelData); a.addChallengeLevel(a.levelData) }; a.addLevel0001 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 1, x: 2, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 13, radius: 1, speed: 7, points: 25, path: [], loop: !1, chaser: !1 }, { type: 3, x: 5, y: 9, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0002 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 0, y: 5, radius: .5, speed: 10, points: 0, path: [{ x: 0, y: 5 }, { x: 17, y: 5 }], loop: !0, chaser: !1 }, { type: 1, x: 2, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4, y: 13, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 13, y: 13, radius: 1, speed: 7, points: 25, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0003 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 10, y: 2, radius: .5, speed: 10, points: 0, path: [{ x: 10, y: 2 }, { x: 10, y: 15 }], loop: !0, chaser: !1 }, { type: 1, x: 2, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 5, y: 9, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 4, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 13, y: 15, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0004 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 0, y: 5, radius: .5, speed: 10, points: 0, path: [{ x: 0, y: 5 }, { x: 17, y: 7 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 5, y: 9, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14, y: 4, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14, y: 15, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 1, y: 9, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0005 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 0, y: 7, radius: .5, speed: 12, points: 0, path: [{ x: 0, y: 7 }, { x: 17, y: 7 }], loop: !0, chaser: !1 }, { type: 2, x: 17, y: 13, radius: .5, speed: 12, points: 0, path: [{ x: 17, y: 13 }, { x: 0, y: 13 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 2, y: 16, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12, y: 4, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 10, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 16, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0006 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 0, y: 7, radius: .5, speed: 12, points: 0, path: [{ x: 0, y: 7 }, { x: 17, y: 7 }], loop: !0, chaser: !1 }, { type: 2, x: 2, y: 10, radius: .5, speed: 12, points: 0, path: [{ x: 2, y: 10 }, { x: 2, y: 13.5 }, { x: 15, y: 13.5 }, { x: 15, y: 10 }, { x: 15, y: 13.5 }, { x: 2, y: 13.5 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 2, y: 16, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6, y: 10, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 11, y: 10, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 16, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0007 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 0, y: 8.5, radius: .5, speed: 12, points: 0, path: [{ x: 0, y: 8.5 }, { x: 17, y: 8.5 }], loop: !0, chaser: !1 }, { type: 2, x: 8.5, y: 17, radius: .5, speed: 12, points: 0, path: [{ x: 8.5, y: 17 }, { x: 8.5, y: 2 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 5, y: 6, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 5, y: 12, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 15, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12, y: 6, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0008 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 0, y: 13, radius: .5, speed: 12, points: 0, path: [{ x: 0, y: 13 }, { x: 7.5, y: 13 }, { x: 7.5, y: 8 }, { x: 7.5, y: 13 }], loop: !0, chaser: !1 }, { type: 2, x: 17, y: 13, radius: .5, speed: 12, points: 0, path: [{ x: 17, y: 13 }, { x: 9.5, y: 13 }, { x: 9.5, y: 8 }, { x: 9.5, y: 13 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 16, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4, y: 10, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 13, y: 10, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 16, y: 16, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 4, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0009 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 0, y: 15, radius: .5, speed: 12, points: 0, path: [{ x: 0, y: 15 }, { x: 7.5, y: 10 }, { x: 3.5, y: 6 }, { x: 7.5, y: 10 }], loop: !0, chaser: !1 }, { type: 2, x: 17, y: 15, radius: .5, speed: 12, points: 0, path: [{ x: 17, y: 15 }, { x: 9.5, y: 10 }, { x: 13.5, y: 6 }, { x: 9.5, y: 10 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 16, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 9.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14, y: 10.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 8.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0010 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 11, y: 9, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 10, y: 5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3.5, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0011 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 9.5, y: 12.5, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 5, y: 6, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12, y: 15, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0012 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 0, y: 10, radius: .5, speed: 10, points: 0, path: [{ x: 0, y: 10 }, { x: 7.5, y: 10 }], loop: !0, chaser: !1 }, { type: 2, x: 8.5, y: 13.5, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 12.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 12.5, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0013 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 4, y: 5, radius: .5, speed: 10, points: 0, path: [{ x: 4, y: 5 }, { x: 12, y: 15 }], loop: !0, chaser: !1 }, { type: 2, x: 8.5, y: 8.5, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7, y: 4, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 10, y: 4, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 13, y: 4, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4, y: 13, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7, y: 13, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0014 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 17, y: 10, radius: .5, speed: 10, points: 0, path: [{ x: 17, y: 10 }, { x: 9.5, y: 10 }], loop: !0, chaser: !1 }, { type: 2, x: 0, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 0, y: 6 }, { x: 7.5, y: 6 }], loop: !0, chaser: !1 }, { type: 2, x: 6.5, y: 13.5, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7.5, y: 10.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 4, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 15, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0015 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 10, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 10, y: 6 }, { x: 10, y: 16 }], loop: !0, chaser: !1 }, { type: 2, x: 8.5, y: 8.5, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6, y: 10.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 15, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 6, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0016 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 10, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 10, y: 6 }, { x: 10, y: 16 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6, y: 10.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 10, y: 6, radius: 1, speed: 7, points: 10, path: [{ x: 10, y: 6 }, { x: 10, y: 16 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0017 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 10, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 5, y: 6 }, { x: 15, y: 15 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 8.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 7, radius: 1, speed: 7, points: 30, path: [{ x: 3, y: 7 }, { x: 3, y: 15 }], loop: !0, chaser: !1 }, { type: 3, x: 1, y: 13, radius: 1, speed: 7, points: 50, path: [{ x: 1, y: 13 }, { x: 14, y: 13 }, { x: 14, y: 4 }, { x: 14, y: 13 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0018 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 8.5, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 3.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 7, radius: 1, speed: 7, points: 30, path: [{ x: 3, y: 7 }, { x: 13, y: 15 }], loop: !0, chaser: !1 }, { type: 3, x: 1, y: 13, radius: 1, speed: 7, points: 50, path: [{ x: 1, y: 13 }, { x: 14, y: 13 }, { x: 14, y: 4 }, { x: 14, y: 13 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0019 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 10, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 2, y: 10 }, { x: 15, y: 10 }], loop: !0, chaser: !1 }, { type: 2, x: 8.5, y: 8.5, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 15, radius: 1, speed: 5, points: 50, path: [{ x: 3, y: 15 }, { x: 3, y: 6 }], loop: !0, chaser: !1 }, { type: 3, x: 7, y: 15, radius: 1, speed: 7, points: 30, path: [{ x: 7, y: 15 }, { x: 7, y: 5 }], loop: !0, chaser: !1 }, { type: 3, x: 11, y: 15, radius: 1, speed: 9, points: 50, path: [{ x: 11, y: 15 }, { x: 11, y: 4 }], loop: !0, chaser: !1 }, { type: 3, x: 15, y: 15, radius: 1, speed: 11, points: 50, path: [{ x: 15, y: 15 }, { x: 15, y: 3 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0020 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 8.5, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 6, radius: 1, speed: 7, points: 50, path: [{ x: 3, y: 6 }, { x: 15, y: 6 }], loop: !0, chaser: !1 }, { type: 3, x: 15, y: 12, radius: 1, speed: 7, points: 30, path: [{ x: 15, y: 12 }, { x: 3, y: 12 }], loop: !0, chaser: !1 }, { type: 3, x: 6, y: 3, radius: 1, speed: 7, points: 20, path: [{ x: 6, y: 3 }, { x: 6, y: 15 }], loop: !0, chaser: !1 }, { type: 3, x: 12, y: 15, radius: 1, speed: 7, points: 50, path: [{ x: 12, y: 15 }, { x: 12, y: 3 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0021 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 13.5, radius: .5, speed: 7, points: 0, path: [{ x: 8.5, y: 13.5 }, { x: 8.5, y: 4 }], loop: !0, chaser: !1 }, { type: 5, x: 6, y: 6, x2: 6, y2: 12, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 11, y: 6, x2: 11, y2: 12, speed1: 1, speed2: 1, continuous: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 8.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0022 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 8.5, radius: .5, speed: 9, points: 0, path: [{ x: 8.5, y: 8.5 }, { x: 8.5, y: 2 }], loop: !0, chaser: !1 }, { type: 5, x: 1, y: 12, x2: 6.5, y2: 8, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 16, y: 12, x2: 10.5, y2: 8, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 12.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 12.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 5.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 5.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0023 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 5, x: .5, y: 8.5, x2: 16.5, y2: 8.5, speed1: 1, speed2: 2, continuous: !1 }, { type: 5, x: 8.5, y: 2.5, x2: 8.5, y2: 16.5, speed1: 1, speed2: 2, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 12, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 12, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0024 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 1.5, y: 7.5, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 7.5 }, { x: 1.5, y: 12 }, { x: 15.5, y: 12 }, { x: 15.5, y: 7.5 }], loop: !0, chaser: !1 }, { type: 5, x: .5, y: 6, x2: 16.5, y2: 6, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 3.5, y: 10, x2: 13.5, y2: 10, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: .5, y: 14, x2: 16.5, y2: 14, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 12, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 12, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 7.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 7.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0025 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 5.5, y: 13.5, radius: .5, speed: 9, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: 5, y: 5, x2: 12, y2: 12, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 8.5, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3.5, y: 12.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0026 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 3.5, y: 7.5, radius: .5, speed: 7, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: .5, y: 8.5, x2: 9.5, y2: 9.5, speed1: 1, speed2: 2, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 15, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 15, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 4.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0027 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 11.5, y: 6.5, radius: .5, speed: 7, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: 5, y: 4, x2: 15, y2: 15, speed1: 1, speed2: 2, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3.5, y: 15, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 15, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14.5, y: 4.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 8.3, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0028 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 5.5, radius: .5, speed: 7, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: 8.5, y: 8.5, x2: 16.5, y2: 8.5, speed1: 1, speed2: 2, continuous: !1 }, { type: 5, x: 8.5, y: 8.5, x2: 8.5, y2: 16.5, speed1: 1, speed2: 2, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 8.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 4.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0029 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 13.5, y: 3.5, radius: .5, speed: 7, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: 8.5, y: 8.5, x2: 9.5, y2: 15.5, speed1: 1, speed2: 2, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3.5, y: 5, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7.5, y: 14.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14.5, y: 11, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0030 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 1.5, y: 15.5, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 15.5 }, { x: 15.5, y: 15.5 }], loop: !0, chaser: !1 }, { type: 5, x: 4, y: 4, x2: 7.5, y2: 7.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 13, y: 4, x2: 9.5, y2: 7.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 4, y: 13, x2: 7.5, y2: 9.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 13, y: 13, x2: 9.5, y2: 9.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5.5, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0031 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 8.5, radius: .5, speed: 9, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: 4, y: 4, x2: 13, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 13, y: 4, x2: 13, y2: 13, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 13, y: 13, x2: 4, y2: 13, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 4, y: 13, x2: 4, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 15, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 6, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0032 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 13.5, radius: .5, speed: 7, points: 0, path: [{ x: 8.5, y: 13.5 }, { x: 8.5, y: 4 }], loop: !0, chaser: !1 }, { type: 5, x: 6, y: 6, x2: 6, y2: 12, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 11, y: 6, x2: 11, y2: 12, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: .5, y: 8.5, x2: 16.5, y2: 8.5, speed1: 1, speed2: 2, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 6.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 6.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14, y: 6.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 10.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 10.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14, y: 10.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0033 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 13.5, radius: .5, speed: 7, points: 0, path: [{ x: 8.5, y: 13.5 }, { x: 8.5, y: 4 }], loop: !0, chaser: !1 }, { type: 5, x: 6, y: 6, x2: 6, y2: 12, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 11, y: 6, x2: 11, y2: 12, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: .5, y: 8.5, x2: 16.5, y2: 8.5, speed1: 1, speed2: 2, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 6.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 6.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14, y: 6.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 10.5, radius: 1, speed: 7, points: 50, path: [{ x: 8.5, y: 10.5 }, { x: 8.5, y: 15.5 }], loop: !0, chaser: !1 }, { type: 3, x: 3, y: 10.5, radius: 1, speed: 9, points: 50, path: [{ x: 3, y: 10.5 }, { x: 3, y: 15.5 }], loop: !0, chaser: !1 }, { type: 3, x: 14, y: 10.5, radius: 1, speed: 10, points: 50, path: [{ x: 14, y: 10.5 }, { x: 14, y: 15.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0034 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 8.5, radius: .5, speed: 7, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: 6, y: 6, x2: 3, y2: 12, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 11, y: 6, x2: 14, y2: 12, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 3.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 5.5, y: 9.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 11.5, y: 9.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 2.5, y: 15.5, radius: 1, speed: 7, points: 50, path: [{ x: 2.5, y: 15.5 }, { x: 14, y: 15.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0035 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 15.5, radius: .5, speed: 7, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: 6, y: 6, x2: 6, y2: 16.5, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 11, y: 6, x2: 11, y2: 16.5, speed1: 1, speed2: 1, continuous: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3.5, y: 6.5, radius: 1, speed: 7, points: 70, path: [{ x: 3.5, y: 6.5 }, { x: 3.5, y: 14.5 }], loop: !0, chaser: !1 }, { type: 3, x: 8.5, y: 6.5, radius: 1, speed: 7, points: 70, path: [{ x: 8.5, y: 6.5 }, { x: 8.5, y: 14.5 }], loop: !0, chaser: !1 }, { type: 3, x: 13.5, y: 6.5, radius: 1, speed: 7, points: 70, path: [{ x: 13.5, y: 6.5 }, { x: 13.5, y: 14.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0036 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 5, x: 5, y: 6, x2: 5, y2: 16.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 8, y: 6, x2: 8, y2: 16.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 11, y: 4, x2: 11, y2: 16.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 14, y: 4, x2: 14, y2: 16.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6.5, y: 5.5, radius: 1, speed: 7, points: 70, path: [{ x: 6.5, y: 5.5 }, { x: 6.5, y: 14.5 }], loop: !0, chaser: !1 }, { type: 3, x: 9.5, y: 9.5, radius: 1, speed: 7, points: 70, path: [{ x: 9.5, y: 5.5 }, { x: 9.5, y: 14.5 }], loop: !0, chaser: !1 }, { type: 3, x: 12.5, y: 2.5, radius: 1, speed: 7, points: 70, path: [{ x: 12.5, y: 5.5 }, { x: 12.5, y: 14.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0037 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 12.5, y: 15.5, radius: .5, speed: 7, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: .5, y: 6, x2: 8.5, y2: 6, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 8.5, y: 12, x2: 16.5, y2: 12, speed1: 1, speed2: 1, continuous: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3.5, y: 8.5, radius: 1, speed: 7, points: 70, path: [{ x: 3.5, y: 8.5 }, { x: 3.5, y: 14.5 }], loop: !0, chaser: !1 }, { type: 3, x: 8.5, y: 8.5, radius: 1, speed: 7, points: 70, path: [{ x: 8.5, y: 8.5 }, { x: 8.5, y: 14.5 }], loop: !0, chaser: !1 }, { type: 3, x: 13.5, y: 8.5, radius: 1, speed: 7, points: 70, path: [{ x: 13.5, y: 8.5 }, { x: 13.5, y: 14.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0038 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 12, y: 5.5, radius: .5, speed: 7, points: 0, path: [{ x: 12, y: 5.5 }, { x: 12, y: 12.5 }], loop: !0, chaser: !1 }, { type: 5, x: 5, y: 6, x2: 5, y2: 16.5, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 8, y: 6, x2: 8, y2: 13.5, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 8, y: 13.5, x2: 12, y2: 13.5, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 5, y: 16.5, x2: 12, y2: 16.5, speed1: 1, speed2: 1, continuous: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6.5, y: 14.5, radius: 1, speed: 7, points: 70, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6.5, y: 5.5, radius: 1, speed: 7, points: 70, path: [{ x: 6.5, y: 5.5 }, { x: 6.5, y: 12.5 }], loop: !0, chaser: !1 }, { type: 3, x: 9.5, y: 9.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14.5, y: 9.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0039 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 1.5, y: 7.5, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 7.5 }, { x: 1.5, y: 12 }, { x: 15.5, y: 12 }, { x: 15.5, y: 7.5 }], loop: !0, chaser: !1 }, { type: 5, x: 3.5, y: 6, x2: 13.5, y2: 6, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 3.5, y: 10, x2: 13.5, y2: 10, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 3.5, y: 14, x2: 13.5, y2: 14, speed1: 1, speed2: 1, continuous: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 1.5, y: 5, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 7.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 12, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 12, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 7.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 7.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0040 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 4, y: 10.5, radius: .5, speed: 9, points: 0, path: [{ x: 4, y: 10.5 }, { x: 12.5, y: 10.5 }], loop: !0, chaser: !1 }, { type: 5, x: 4, y: 4, x2: 8.5, y2: 8.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 13, y: 4, x2: 8.5, y2: 8.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 4, y: 13, x2: 4, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 13, y: 13, x2: 13, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 11.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 5.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5.5, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0041 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 4.5, y: 10.5, radius: .5, speed: 9, points: 0, path: [], loop: !1, chaser: !0 }, { type: 2, x: 12, y: 10.5, radius: .5, speed: 9, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: .5, y: 13, x2: 16.5, y2: 13, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 13.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5.5, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0042 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 4.5, y: 10.5, radius: .5, speed: 9, points: 0, path: [], loop: !1, chaser: !0 }, { type: 2, x: 12, y: 10.5, radius: .5, speed: 9, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: .5, y: 13, x2: 16.5, y2: 13, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 8.5, y: 5, x2: 8.5, y2: 16.5, speed1: 1, speed2: 1, continuous: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 10, y: 9.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 13.5, y: 15.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: .5, y: 7.5, radius: 1, speed: 7, points: 20, path: [{ x: .5, y: 7.5 }, { x: 7, y: 7.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0043 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 4.5, y: 10.5, radius: .5, speed: 9, points: 0, path: [], loop: !1, chaser: !0 }, { type: 2, x: 12, y: 10.5, radius: .5, speed: 9, points: 0, path: [], loop: !1, chaser: !0 }, { type: 2, x: 15, y: 3.5, radius: .5, speed: 9, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: 8.5, y: 5, x2: 8.5, y2: 10.5, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 8.5, y: 12.5, x2: 8.5, y2: 16.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 13.5, y: 15.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: .5, y: 7.5, radius: 1, speed: 7, points: 20, path: [{ x: .5, y: 7.5 }, { x: 7, y: 7.5 }], loop: !0, chaser: !1 }, { type: 3, x: 9.5, y: 7.5, radius: 1, speed: 7, points: 20, path: [{ x: 10, y: 7.5 }, { x: 16.5, y: 7.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0044 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 1.5, y: 8, radius: .5, speed: 6, points: 0, path: [{ x: 1.5, y: 8 }, { x: 6.5, y: 8 }], loop: !0, chaser: !1 }, { type: 2, x: 15.5, y: 8, radius: .5, speed: 6, points: 0, path: [{ x: 15.5, y: 8 }, { x: 10.5, y: 8 }], loop: !0, chaser: !1 }, { type: 5, x: .5, y: 12, x2: 16.5, y2: 12, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 8.5, y: 12.5, x2: 8.5, y2: 16.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: .5, y: 13.5, radius: 1, speed: 7, points: 20, path: [{ x: .5, y: 13.5 }, { x: 7, y: 7.5 }], loop: !0, chaser: !1 }, { type: 3, x: 9.5, y: 13.5, radius: 1, speed: 7, points: 20, path: [{ x: 10, y: 13.5 }, { x: 16.5, y: 7.5 }], loop: !0, chaser: !1 }, { type: 3, x: 7, y: 9.5, radius: 1, speed: 7, points: 30, path: [{ x: .5, y: 15.5 }, { x: 7, y: 9.5 }], loop: !0, chaser: !1 }, { type: 3, x: 16.5, y: 9.5, radius: 1, speed: 7, points: 30, path: [{ x: 10, y: 15.5 }, { x: 16.5, y: 9.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0045 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 1.5, y: 8, radius: .5, speed: 6, points: 0, path: [{ x: 1.5, y: 8 }, { x: 6.5, y: 15 }, { x: 6.5, y: 10 }], loop: !0, chaser: !1 }, { type: 2, x: 15.5, y: 8, radius: .5, speed: 6, points: 0, path: [{ x: 15.5, y: 8 }, { x: 10.5, y: 15 }, { x: 10.5, y: 10 }], loop: !0, chaser: !1 }, { type: 5, x: 8.5, y: 3.5, x2: 8.5, y2: 12.5, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7, y: 7.5, radius: 1, speed: 7, points: 20, path: [{ x: .5, y: 13.5 }, { x: 7, y: 7.5 }], loop: !0, chaser: !1 }, { type: 3, x: 16.5, y: 2.5, radius: 1, speed: 7, points: 20, path: [{ x: 10, y: 8.5 }, { x: 16.5, y: 2.5 }], loop: !0, chaser: !1 }, { type: 3, x: 7, y: 9.5, radius: 1, speed: 7, points: 30, path: [{ x: .5, y: 15.5 }, { x: 7, y: 9.5 }], loop: !0, chaser: !1 }, { type: 3, x: 16.5, y: 4.5, radius: 1, speed: 7, points: 30, path: [{ x: 10, y: 10.5 }, { x: 16.5, y: 4.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0046 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 8.5, radius: .5, speed: 6, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7, y: 7.5, radius: 1, speed: 5, points: 20, path: [{ x: 15.5, y: 13.5 }, { x: 7, y: 7.5 }], loop: !0, chaser: !1 }, { type: 3, x: 13.5, y: 2.5, radius: 1, speed: 7, points: 20, path: [{ x: 12, y: 8.5 }, { x: 13.5, y: 2.5 }], loop: !0, chaser: !1 }, { type: 3, x: 7, y: 5.5, radius: 1, speed: 9, points: 30, path: [{ x: 5.5, y: 11.5 }, { x: 7, y: 5.5 }], loop: !0, chaser: !1 }, { type: 3, x: 1.5, y: 4.5, radius: 1, speed: 7, points: 30, path: [{ x: 10, y: 10.5 }, { x: 1.5, y: 4.5 }], loop: !0, chaser: !1 }, { type: 3, x: 7, y: 9.5, radius: 1, speed: 6, points: 30, path: [{ x: .5, y: 15.5 }, { x: 7, y: 9.5 }], loop: !0, chaser: !1 }, { type: 3, x: 5.5, y: 15.5, radius: 1, speed: 7, points: 50, path: [{ x: 15, y: 15.5 }, { x: 5.5, y: 15.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0047 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 0, y: 15, radius: .5, speed: 12, points: 0, path: [{ x: 0, y: 15 }, { x: 7.5, y: 10 }, { x: 3.5, y: 6 }, { x: 7.5, y: 10 }], loop: !0, chaser: !1 }, { type: 2, x: 17, y: 15, radius: .5, speed: 12, points: 0, path: [{ x: 17, y: 15 }, { x: 9.5, y: 10 }, { x: 13.5, y: 6 }, { x: 9.5, y: 10 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7, y: 7.5, radius: 1, speed: 5, points: 20, path: [{ x: 15.5, y: 13.5 }, { x: 7, y: 7.5 }], loop: !0, chaser: !1 }, { type: 3, x: 13.5, y: 2.5, radius: 1, speed: 7, points: 20, path: [{ x: 12, y: 8.5 }, { x: 13.5, y: 2.5 }], loop: !0, chaser: !1 }, { type: 3, x: 7, y: 5.5, radius: 1, speed: 9, points: 30, path: [{ x: 5.5, y: 11.5 }, { x: 7, y: 5.5 }], loop: !0, chaser: !1 }, { type: 3, x: 1.5, y: 4.5, radius: 1, speed: 7, points: 30, path: [{ x: 10, y: 10.5 }, { x: 1.5, y: 4.5 }], loop: !0, chaser: !1 }, { type: 3, x: 7, y: 9.5, radius: 1, speed: 6, points: 30, path: [{ x: .5, y: 15.5 }, { x: 7, y: 9.5 }], loop: !0, chaser: !1 }, { type: 3, x: 5.5, y: 15.5, radius: 1, speed: 7, points: 50, path: [{ x: 15, y: 15.5 }, { x: 5.5, y: 15.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0048 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 8.5, y: 8.5, radius: .5, speed: 9, points: 0, path: [{ x: 8.5, y: 8.5 }, { x: 8.5, y: 2 }], loop: !0, chaser: !1 }, { type: 2, x: 6.5, y: 10.5, radius: .5, speed: 9, points: 0, path: [{ x: 6.5, y: 10.5 }, { x: 10.5, y: 10.5 }], loop: !0, chaser: !1 }, { type: 5, x: .5, y: 12, x2: 6.5, y2: 8, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 16.5, y: 12, x2: 10.5, y2: 8, speed1: 1, speed2: 1, continuous: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 12.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 12.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 11.5, y: 5.5, radius: 1, speed: 7, points: 50, path: [{ x: 11.5, y: 5.5 }, { x: 15.5, y: 5.5 }], loop: !0, chaser: !1 }, { type: 3, x: 5.5, y: 5.5, radius: 1, speed: 7, points: 50, path: [{ x: 5.5, y: 5.5 }, { x: 1.5, y: 5.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0049 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 17, y: 10, radius: .5, speed: 10, points: 0, path: [{ x: 17, y: 10 }, { x: 9.5, y: 10 }], loop: !0, chaser: !1 }, { type: 2, x: 0, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 0, y: 6 }, { x: 7.5, y: 6 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7, y: 7.5, radius: 1, speed: 5, points: 20, path: [{ x: 15.5, y: 13.5 }, { x: 7, y: 7.5 }], loop: !0, chaser: !1 }, { type: 3, x: 13.5, y: 2.5, radius: 1, speed: 7, points: 20, path: [{ x: 12, y: 8.5 }, { x: 13.5, y: 2.5 }], loop: !0, chaser: !1 }, { type: 3, x: 7, y: 5.5, radius: 1, speed: 9, points: 30, path: [{ x: 5.5, y: 11.5 }, { x: 7, y: 5.5 }], loop: !0, chaser: !1 }, { type: 3, x: 1.5, y: 4.5, radius: 1, speed: 7, points: 30, path: [{ x: 10, y: 10.5 }, { x: 1.5, y: 4.5 }], loop: !0, chaser: !1 }, { type: 4, x: 7, y: 9.5, radius: 1, speed: 6, points: 100, path: [{ x: .5, y: 15.5 }, { x: 7, y: 9.5 }], loop: !0, chaser: !1 }, { type: 4, x: 5.5, y: 15.5, radius: 1, speed: 7, points: 100, path: [{ x: 15, y: 15.5 }, { x: 5.5, y: 15.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0050 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 1.5, y: 15.5, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 15.5 }, { x: 15.5, y: 15.5 }], loop: !0, chaser: !1 }, { type: 2, x: 1.5, y: 10.5, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 10.5 }, { x: 15.5, y: 10.5 }], loop: !0, chaser: !1 }, { type: 2, x: 1.5, y: 5.5, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 5.5 }, { x: 15.5, y: 5.5 }], loop: !0, chaser: !1 }, { type: 5, x: 4, y: 4, x2: 13, y2: 13, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5.5, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0051 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 4, y: 5.5, radius: .5, speed: 9, points: 0, path: [{ x: 4, y: 5.5 }, { x: 12.5, y: 5.5 }], loop: !0, chaser: !1 }, { type: 2, x: 4, y: 10.5, radius: .5, speed: 9, points: 0, path: [{ x: 4, y: 10.5 }, { x: 12.5, y: 10.5 }], loop: !0, chaser: !1 }, { type: 2, x: 4, y: 15.5, radius: .5, speed: 9, points: 0, path: [{ x: 4, y: 15.5 }, { x: 12.5, y: 15.5 }], loop: !0, chaser: !1 }, { type: 5, x: 4, y: 13, x2: 4, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 13, y: 13, x2: 13, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 11.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 5.5, y: 8.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5.5, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4, y: 12, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 13, y: 12, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4, y: 5.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 13, y: 5.5, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0052 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 5.5, y: 5.5, radius: .5, speed: 6, points: 0, path: [], loop: !1, chaser: !0 }, { type: 2, x: 1.5, y: 5, radius: .5, speed: 6, points: 0, path: [{ x: 1.5, y: 5 }, { x: 6.5, y: 8 }], loop: !0, chaser: !1 }, { type: 2, x: 15.5, y: 5, radius: .5, speed: 6, points: 0, path: [{ x: 15.5, y: 5 }, { x: 10.5, y: 8 }], loop: !0, chaser: !1 }, { type: 5, x: .5, y: 12, x2: 16.5, y2: 12, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: .5, y: 6, x2: 16.5, y2: 6, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: .5, y: 13.5, radius: 1, speed: 7, points: 20, path: [{ x: .5, y: 13.5 }, { x: 7, y: 7.5 }], loop: !0, chaser: !1 }, { type: 3, x: 9.5, y: 13.5, radius: 1, speed: 7, points: 20, path: [{ x: 10, y: 13.5 }, { x: 16.5, y: 7.5 }], loop: !0, chaser: !1 }, { type: 3, x: 5, y: 9.5, radius: 1, speed: 7, points: 50, path: [{ x: 5, y: 15.5 }, { x: 5, y: 9.5 }], loop: !0, chaser: !1 }, { type: 3, x: 12, y: 9.5, radius: 1, speed: 7, points: 50, path: [{ x: 12, y: 15.5 }, { x: 12, y: 9.5 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0053 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 17, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 17, y: 6 }, { x: 9.5, y: 6 }], loop: !0, chaser: !1 }, { type: 2, x: 0, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 0, y: 6 }, { x: 7.5, y: 6 }], loop: !0, chaser: !1 }, { type: 2, x: 10, y: 3, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 2, x: 6.5, y: 13.5, radius: .5, speed: 10, points: 0, path: [], loop: !1, chaser: !0 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 7.5, y: 10.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 4, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 15, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0054 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 5, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 5, y: 6 }, { x: 5, y: 16 }], loop: !0, chaser: !1 }, { type: 2, x: 10, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 10, y: 6 }, { x: 10, y: 16 }], loop: !0, chaser: !1 }, { type: 2, x: 15, y: 6, radius: .5, speed: 10, points: 0, path: [{ x: 15, y: 6 }, { x: 15, y: 16 }], loop: !0, chaser: !1 }, { type: 2, x: 5.5, y: 8.5, radius: .5, speed: 8, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: .5, y: 12, x2: 16.5, y2: 12, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6, y: 10.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 6, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0055 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 5.5, y: 8.5, radius: .5, speed: 8, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: 4, y: 4, x2: 13, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 13, y: 4, x2: 13, y2: 13, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 13, y: 13, x2: 4, y2: 13, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 4, y: 13, x2: 4, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 8.5, y: 8.5, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6, y: 10.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 11, y: 10.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 2, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 6, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 2, y: 6, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0056 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 1.5, y: 15.5, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 15.5 }, { x: 15.5, y: 15.5 }], loop: !0, chaser: !1 }, { type: 2, x: 1.5, y: 2.5, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 2.5 }, { x: 15.5, y: 2.5 }], loop: !0, chaser: !1 }, { type: 2, x: 5.5, y: 8.5, radius: .5, speed: 8, points: 0, path: [], loop: !1, chaser: !0 }, { type: 5, x: 4, y: 4, x2: 13, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 13, y: 4, x2: 13, y2: 13, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: 13, y: 13, x2: 4, y2: 13, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 4, y: 13, x2: 4, y2: 4, speed1: 1, speed2: 1, continuous: !0 }, { type: 1, x: 8.5, y: 8.5, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 6, y: 10.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 11, y: 10.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 2, y: 15, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 15, y: 6, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 2, y: 6, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0057 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 1.5, y: 5.5, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 5.5 }, { x: 1.5, y: 12 }, { x: 15.5, y: 12 }, { x: 15.5, y: 5.5 }], loop: !0, chaser: !1 }, { type: 2, x: 1.5, y: 12, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 12 }, { x: 15.5, y: 12 }, { x: 15.5, y: 5.5 }, { x: 1.5, y: 5.5 }], loop: !0, chaser: !1 }, { type: 2, x: 15.5, y: 12, radius: .5, speed: 9, points: 0, path: [{ x: 15.5, y: 12 }, { x: 15.5, y: 5.5 }, { x: 1.5, y: 5.5 }, { x: 1.5, y: 12 }], loop: !0, chaser: !1 }, { type: 2, x: 15.5, y: 5.5, radius: .5, speed: 9, points: 0, path: [{ x: 15.5, y: 5.5 }, { x: 1.5, y: 5.5 }, { x: 1.5, y: 12 }, { x: 15.5, y: 12 }], loop: !0, chaser: !1 }, { type: 1, x: 8.5, y: 8.5, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 12.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 12.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0058 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 1.5, y: 5.5, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 5.5 }, { x: 1.5, y: 12 }, { x: 15.5, y: 12 }, { x: 15.5, y: 5.5 }], loop: !0, chaser: !1 }, { type: 2, x: 1.5, y: 12, radius: .5, speed: 9, points: 0, path: [{ x: 1.5, y: 12 }, { x: 15.5, y: 12 }, { x: 15.5, y: 5.5 }, { x: 1.5, y: 5.5 }], loop: !0, chaser: !1 }, { type: 2, x: 15.5, y: 12, radius: .5, speed: 9, points: 0, path: [{ x: 15.5, y: 12 }, { x: 15.5, y: 5.5 }, { x: 1.5, y: 5.5 }, { x: 1.5, y: 12 }], loop: !0, chaser: !1 }, { type: 2, x: 15.5, y: 5.5, radius: .5, speed: 9, points: 0, path: [{ x: 15.5, y: 5.5 }, { x: 1.5, y: 5.5 }, { x: 1.5, y: 12 }, { x: 15.5, y: 12 }], loop: !0, chaser: !1 }, { type: 5, x: 6, y: 14, x2: 6, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 5, x: 11, y: 14, x2: 11, y2: 4, speed1: 1, speed2: 1, continuous: !1 }, { type: 1, x: 8.5, y: 8.5, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 12.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 12.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 12.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 12.5, y: 5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 4.5, y: 5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0059 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 7.5, y: 5.5, radius: .5, speed: 9, points: 0, path: [{ x: 7.5, y: 5.5 }, { x: 15.5, y: 5.5 }], loop: !0, chaser: !1 }, { type: 2, x: 7.5, y: 12.5, radius: .5, speed: 9, points: 0, path: [{ x: 7.5, y: 12.5 }, { x: 15.5, y: 12.5 }], loop: !0, chaser: !1 }, { type: 5, x: 6, y: 6, x2: 6, y2: 12, speed1: 1, speed2: 1, continuous: !0 }, { type: 5, x: .5, y: 8.5, x2: 16.5, y2: 8.5, speed1: 1, speed2: 2, continuous: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 6.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 6.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14, y: 6.5, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 10.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 3, y: 10.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14, y: 10.5, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevel0060 = function(a) { a.push({ type: 1, maxMoves: 3, objects: [{ type: 2, x: 2, y: 14, radius: .5, speed: 10, points: 0, path: [{ x: 2, y: 14 }, { x: 7.5, y: 10 }, { x: 3.5, y: 6 }, { x: 7.5, y: 10 }], loop: !0, chaser: !1 }, { type: 2, x: 15, y: 14, radius: .5, speed: 10, points: 0, path: [{ x: 15, y: 14 }, { x: 9.5, y: 10 }, { x: 13.5, y: 6 }, { x: 9.5, y: 10 }], loop: !0, chaser: !1 }, { type: 2, x: 8.5, y: 3, radius: .5, speed: 10, points: 0, path: [{ x: 8.5, y: 3 }, { x: 8.5, y: 7.5 }], loop: !0, chaser: !1 }, { type: 2, x: 8.5, y: 14, radius: .5, speed: 10, points: 0, path: [{ x: 8.5, y: 14 }, { x: 8.5, y: 9.5 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 3, x: 8.5, y: 8.5, radius: .5, speed: 5, points: 100, path: [], loop: !1, chaser: !1 }, { type: 3, x: 2, y: 14, radius: .5, speed: 5, points: 50, path: [{ x: 2, y: 14 }, { x: 7.5, y: 10 }, { x: 3.5, y: 6 }, { x: 7.5, y: 10 }], loop: !0, chaser: !1 }, { type: 3, x: 15, y: 14, radius: .5, speed: 5, points: 50, path: [{ x: 15, y: 14 }, { x: 9.5, y: 10 }, { x: 13.5, y: 6 }, { x: 9.5, y: 10 }], loop: !0, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addChallengeLevel = function(a) { a.push({ type: 1, maxMoves: 20, objects: [{ type: 2, x: 0, y: 15, radius: .5, speed: 10, points: 0, path: [{ x: 0, y: 15 }, { x: 17, y: 7 }], loop: !0, chaser: !1 }, { type: 2, x: 10, y: 2, radius: .5, speed: 10, points: 0, path: [{ x: 10, y: 2 }, { x: 10, y: 15 }], loop: !0, chaser: !1 }, { type: 2, x: 17, y: 9, radius: .5, speed: 12, points: 0, path: [{ x: 17, y: 9 }, { x: 0, y: 9 }], loop: !0, chaser: !1 }, { type: 2, x: 0, y: 7, radius: .5, speed: 12, points: 0, path: [{ x: 0, y: 7 }, { x: 15, y: 9 }], loop: !0, chaser: !1 }, { type: 2, x: 2, y: 5, radius: .5, speed: 12, points: 0, path: [{ x: 2, y: 5 }, { x: 2, y: 13.5 }, { x: 15, y: 13.5 }, { x: 15, y: 5 }, { x: 15, y: 13.5 }, { x: 2, y: 13.5 }], loop: !0, chaser: !1 }, { type: 2, x: 0, y: 8.5, radius: .5, speed: 12, points: 0, path: [{ x: 0, y: 8.5 }, { x: 17, y: 8.5 }], loop: !0, chaser: !1 }, { type: 2, x: 8.5, y: 17, radius: .5, speed: 12, points: 0, path: [{ x: 8.5, y: 17 }, { x: 8.5, y: 2 }], loop: !0, chaser: !1 }, { type: 2, x: 0, y: 13, radius: .5, speed: 12, points: 0, path: [{ x: 0, y: 13 }, { x: 7.5, y: 13 }, { x: 7.5, y: 4 }, { x: 7.5, y: 13 }], loop: !0, chaser: !1 }, { type: 2, x: 17, y: 13, radius: .5, speed: 12, points: 0, path: [{ x: 17, y: 13 }, { x: 9.5, y: 13 }, { x: 9.5, y: 4 }, { x: 9.5, y: 13 }], loop: !0, chaser: !1 }, { type: 2, x: 0, y: 15, radius: .5, speed: 12, points: 0, path: [{ x: 0, y: 15 }, { x: 7.5, y: 10 }, { x: 3.5, y: 6 }, { x: 7.5, y: 10 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) }; a.addLevelReference = function(a) { a.push({ type: 1, maxMoves: 40, objects: [{ type: 2, x: 0, y: 5, radius: .5, speed: 10, points: 0, path: [{ x: 0, y: 5 }, { x: 17, y: 7 }], loop: !0, chaser: !1 }, { type: 2, x: 5, y: 7, radius: .5, speed: 7, points: 0, path: [{ x: 5, y: 7 }, { x: 9, y: 12 }, { x: 15, y: 9 }, { x: 9, y: 12 }], loop: !0, chaser: !1 }, { type: 1, x: 3, y: 2, radius: 1, speed: 20, points: 0, path: [], loop: !1, chaser: !1 }, { type: 4, x: 2, y: 16, radius: 1, speed: 7, points: 150, path: [], loop: !1, chaser: !1 }, { type: 3, x: 10, y: 7, radius: 1, speed: 7, points: 20, path: [], loop: !1, chaser: !1 }, { type: 3, x: 16, y: 4, radius: 1, speed: 7, points: 10, path: [], loop: !1, chaser: !1 }, { type: 3, x: 14, y: 11, radius: 1, speed: 7, points: 50, path: [], loop: !1, chaser: !1 }], cells: [ [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }], [{ type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }, { type: 1 }] ] }) } })(window.AquaThiefGame = window.AquaThiefGame || {}); (function(a, U) { a.SceneManager = function() { if (!(this instanceof a.SceneManager)) throw Error("Constructor called as a function."); this.previousMode = this.mode = a.GameSceneModeEnum.None; this.currentLeaderboardsPage = this.currentAchievementsPage = this.currentShopPage = this.currentLevelPage = this.currentLevel = 0; this.challengeLevelIndex = 200; this.pageAnimTime = this.achievementSetupTime = 0; this.pageAnimDirection = a.DirectionEnum.None; this.pageOffsetX = this.pagex = this.pagevx = this.pageFadeInTime = 0; this.pageBounce = !1; this.animationAngle = 0; this.menuExpanded = this.canDrawPath = this.canChangeMode = this.canForcePageChange = !1; this.titleNotificationTime = this.badgeNotificationTime = this.badgeNotification = this.shopMessageTime = this.menuTime = 0; this.minX = 1; this.minY = -10; this.maxX = this.minX + 15; this.maxY = this.minY + 15; this.drawScoreTime = this.drawScore = this.currentBest = this.currentStars = this.currentScore = this.scoreTime = this.movecountTime = 0; this.dataSaved = this.newBest = !1; this.boosters = []; this.effects = []; this.objects = []; this.cells = []; this.wonObjects = []; this.lostObjects = []; this.currencyCount = 0; this.activeObject = null; this.bonusTime = this.activeObjectChangedTime = 0; this.bonusFactor = 1; this.grid = {}; this.tutorialStepChangeTime = this.tutorialStep = 0; this.pickUp = this.tutorialAutoStep = !1 }; a.SceneManager.prototype.resetPage = function() { this.pageAnimTime = 0; this.pageAnimDirection = a.DirectionEnum.None; this.pageOffsetX = this.pagex = this.pagevx = this.pageFadeInTime = 0; this.pageBounce = !1 }; a.SceneManager.prototype.loadLevel = function() { a.userData.levels[this.currentLevel] || a.createUserLeveldata(this.currentLevel); this.isChallenge = this.currentLevel === this.challengeLevelIndex ? !0 : !1; this.objects = []; this.cells = []; this.activeObject = null; this.bonusTime = 0; this.bonusFactor = 1; this.currentStars = this.currentScore = 0; this.currentBest = a.userData.levels[this.currentLevel].bestScore; this.drawScoreTime = this.drawScore = 0; this.newBest = !1; this.badgeNotification = this.currentBest; this.currencyCount = a.userData.currencyCount; this.dataSaved = !1; this.tutorialStep = 0; this.tutorialStepChangeTime = .5; this.tutorialAutoStep = !1; this.grid = a.levelData[this.isChallenge ? a.levelData.length - 1 : this.currentLevel]; this.moveCount = this.grid.maxMoves; switch (this.grid.type) { case a.GridTypeEnum.Small: this.maxX = this.minX + 15; this.maxY = this.minY + 15; this.grid.rowCount = 7; this.grid.columnCount = 7; this.grid.permutationTable = a.permutationTable7x7; break; case a.GridTypeEnum.Large: this.maxX = this.minX + 17, this.maxY = this.minY + 17, this.grid.rowCount = 8, this.grid.columnCount = 8, this.grid.permutationTable = a.permutationTable8x8 } this.boosters = this.isChallenge ? [{ type: a.BoosterTypeEnum.Speed, active: !0, value: 100 }, { type: a.BoosterTypeEnum.Shield, active: !0, value: 300 }] : 3 > this.currentLevel ? [{ type: a.BoosterTypeEnum.Speed, active: !1, value: 100 }, { type: a.BoosterTypeEnum.Shadow, active: !1, value: 200 }, { type: a.BoosterTypeEnum.Shield, active: !1, value: 300 }] : 3 === this.currentLevel ? [{ type: a.BoosterTypeEnum.Speed, active: !0, value: 0 }, { type: a.BoosterTypeEnum.Shadow, active: !1, value: 200 }, { type: a.BoosterTypeEnum.Shield, active: !1, value: 300 }] : 11 > this.currentLevel ? [{ type: a.BoosterTypeEnum.Speed, active: !0, value: 100 }, { type: a.BoosterTypeEnum.Shadow, active: !1, value: 200 }, { type: a.BoosterTypeEnum.Shield, active: !1, value: 300 }] : 11 === this.currentLevel ? [{ type: a.BoosterTypeEnum.Speed, active: !0, value: 100 }, { type: a.BoosterTypeEnum.Shadow, active: !0, value: 0 }, { type: a.BoosterTypeEnum.Shield, active: !1, value: 300 }] : 21 > this.currentLevel ? [{ type: a.BoosterTypeEnum.Speed, active: !0, value: 100 }, { type: a.BoosterTypeEnum.Shadow, active: !0, value: 200 }, { type: a.BoosterTypeEnum.Shield, active: !1, value: 300 }] : 21 === this.currentLevel ? [{ type: a.BoosterTypeEnum.Speed, active: !0, value: 100 }, { type: a.BoosterTypeEnum.Shadow, active: !0, value: 200 }, { type: a.BoosterTypeEnum.Shield, active: !0, value: 0 }] : [{ type: a.BoosterTypeEnum.Speed, active: !0, value: 100 }, { type: a.BoosterTypeEnum.Shadow, active: !0, value: 200 }, { type: a.BoosterTypeEnum.Shield, active: !0, value: 300 }]; var e, k; for (e = 0; e < this.grid.rowCount; ++e) for (k = 0; k < this.grid.columnCount; ++k) this.cells.push(new a.CellEntity(this.grid.cells[e][k].type, this.minX + k + .5, this.minY - (e + 1.3 * k), e, k, 1, a.DirectionEnum.Left)); if (this.isChallenge) { var f = Math.floor(10 * Math.random()); for (e = Math.floor(10 * Math.random()); e === f;) e = Math.floor(10 * Math.random()); console.log(f + " " + e); var p = []; for (k = 0; k < this.grid.objects[f].path.length; ++k) p.push({ x: this.minX + this.grid.objects[f].path[k].x, y: this.minY + this.grid.objects[f].path[k].y }); p = new a.ObjectEntity(this.grid.objects[f].type, this.minX + this.grid.objects[f].x, this.minY + this.grid.objects[f].y, this.grid.objects[f].speed, this.grid.objects[f].radius, a.DirectionEnum.Left, this.grid.objects[f].points, p, this.grid.objects[f].loop, this.grid.objects[f].chaser); this.objects.push(p); p = []; for (k = 0; k < this.grid.objects[e].path.length; ++k) p.push({ x: this.minX + this.grid.objects[e].path[k].x, y: this.minY + this.grid.objects[e].path[k].y }); p = new a.ObjectEntity(this.grid.objects[e].type, this.minX + this.grid.objects[e].x, this.minY + this.grid.objects[e].y, this.grid.objects[e].speed, this.grid.objects[e].radius, a.DirectionEnum.Left, this.grid.objects[e].points, p, this.grid.objects[e].loop, this.grid.objects[e].chaser); this.objects.push(p); p = []; k = this.grid.objects.length - 1; p = new a.ObjectEntity(this.grid.objects[k].type, this.minX + this.grid.objects[k].x, this.minY + this.grid.objects[k].y, this.grid.objects[k].speed, this.grid.objects[k].radius, a.DirectionEnum.Left, this.grid.objects[k].points, p, this.grid.objects[k].loop, this.grid.objects[k].chaser); this.objects.push(p); this.activeObject = p; this.activeObjectChangedTime = .3 } else for (e = 0; e < this.grid.objects.length; ++e) { p = []; if (this.grid.objects[e].type === a.ObjectTypeEnum.Object5) p = new a.ObjectEntity(this.grid.objects[e].type, this.minX + this.grid.objects[e].x, this.minY + this.grid.objects[e].y, 0, 0, a.DirectionEnum.Left, 0, p, !1, !1), p.x2 = this.minX + this.grid.objects[e].x2, p.y2 = this.minY + this.grid.objects[e].y2, p.continuous = this.grid.objects[e].continuous, p.heartBeats[0].time = 0, p.heartBeats[0].maxTime = 1, p.heartBeats[0].direction = 0, p.heartBeats[0].speed1 = this.grid.objects[e].speed1, p.heartBeats[0].speed2 = this.grid.objects[e].speed2; else { for (k = 0; k < this.grid.objects[e].path.length; ++k) p.push({ x: this.minX + this.grid.objects[e].path[k].x, y: this.minY + this.grid.objects[e].path[k].y }); p = new a.ObjectEntity(this.grid.objects[e].type, this.minX + this.grid.objects[e].x, this.minY + this.grid.objects[e].y, this.grid.objects[e].speed, this.grid.objects[e].radius, a.DirectionEnum.Left, this.grid.objects[e].points, p, this.grid.objects[e].loop, this.grid.objects[e].chaser) } this.objects.push(p); this.grid.objects[e].type === a.ObjectTypeEnum.Object1 && (this.activeObject = p, this.activeObjectChangedTime = .3) } this.wonObjects = []; this.wonObjects.push(new a.ObjectEntity(1, 0, 0, 0, 1, a.DirectionEnum.Left, 0, [], !1)); this.wonObjects.push(new a.ObjectEntity(1, 0, 0, 0, 1, a.DirectionEnum.Left, 0, [], !1)); this.lostObjects = []; this.lostObjects.push(new a.ObjectEntity(2, 0, 0, 0, 1, a.DirectionEnum.Left, 0, [], !1)); this.lostObjects.push(new a.ObjectEntity(1, 0, 0, 0, 1, a.DirectionEnum.Left, 0, [], !1)); this.playedFailSound = this.busted = !1 }; a.SceneManager.prototype.update = function(e, k) { 0 < this.pageAnimTime && (this.pageAnimTime -= e, 0 > this.pageAnimTime && (this.pageAnimTime = 0, !k && this.pageBounce && (this.pagex = this.pageAnimDirection === a.DirectionEnum.Left ? .3 : -.3, this.pagevx = this.pageAnimDirection === a.DirectionEnum.Left ? -30 : 30))); 0 < this.movecountTime && (this.movecountTime -= e, 0 > this.movecountTime && (this.movecountTime = 0)); 0 < this.scoreTime && (this.scoreTime -= e, 0 > this.scoreTime && (this.scoreTime = 0)); 0 < this.tutorialStepChangeTime && (this.tutorialStepChangeTime -= e, 0 > this.tutorialStepChangeTime && (this.tutorialStepChangeTime = 0, this.tutorialAutoStep && (this.tutorialAutoStep = !1, this.tutorialStep++, this.tutorialStepChangeTime = .5))); 0 < this.pageFadeInTime && (this.pageFadeInTime -= e, 0 > this.pageFadeInTime && (this.pageFadeInTime = 0)); 0 < this.drawScoreTime && (this.drawScoreTime -= e, 0 > this.drawScoreTime && (this.drawScoreTime = 0)); 0 < this.bonusTime && (this.bonusTime -= e, 0 >= this.bonusTime && (this.bonusTime = 0, this.bonusFactor = 1)); 0 < this.menuTime && (this.menuTime -= e, 0 > this.menuTime && (this.menuTime = 0)); 0 < this.achievementSetupTime && (this.achievementSetupTime -= e, 0 > this.achievementSetupTime && (this.achievementSetupTime = 0)); 0 < this.badgeNotificationTime && (this.badgeNotificationTime -= e, 0 > this.badgeNotificationTime && (this.badgeNotificationTime = 0)); 0 < this.titleNotificationTime && (this.titleNotificationTime -= e, 0 > this.titleNotificationTime && (this.titleNotificationTime = 0)); 0 < this.activeObjectChangedTime && (this.activeObjectChangedTime -= e, 0 > this.activeObjectChangedTime && (this.activeObjectChangedTime = 0)); 0 < this.shopMessageTime && (this.shopMessageTime -= e, 0 > this.shopMessageTime && (this.shopMessageTime = 0)); this.showReviewTipTime && 0 < this.showReviewTipTime && (this.showReviewTipTime -= e, 0 > this.showReviewTipTime && (this.showReviewTipTime = 0)); 0 < this.pagex ? (this.pagevx -= 9.78 * e * 3, this.pagex += this.pagevx * e, 0 >= this.pagex && (-.5 > this.pagevx ? (this.pagevx = .3 * -this.pagevx, this.pagex = this.pagevx * e) : this.pagevx = this.pagex = 0)) : 0 > this.pagex && (this.pagevx += 9.78 * e * 3, this.pagex += this.pagevx * e, 0 <= this.pagex && (.5 < this.pagevx ? (this.pagevx = .3 * -this.pagevx, this.pagex = this.pagevx * e) : this.pagevx = this.pagex = 0)); this.animationAngle += 1.3 * Math.PI * e % (2 * Math.PI) } })(window.AquaThiefGame = window.AquaThiefGame || {}); (function(a, U) {})(window.AquaThiefGame.Resources = window.AquaThiefGame.Resources || {}); (function(a, U) { var e = {}, k = !0, f = !1, p, q = window.AudioContext || window.webkitAudioContext; if (q) p = new q; else if ("undefined" === typeof Audio) k = !1; else if (q = navigator.userAgent.toLowerCase(), -1 < q.indexOf("firefox") || -1 < q.indexOf("opera")) f = !0; else if (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)) k = !1; a.canPlaySounds = function() { return k }; a.registerSound = function(a, q, v) { if (k) if (p) { var u = new XMLHttpRequest; u.open("get", q, !0); u.responseType = "arraybuffer"; u.onload = function() { p.decodeAudioData(u.response, function(f) { e[a] = { buffer: f }; v && v() }) }; u.send() } else e[a] = new Audio, v && (e[a].preload = "auto", $(e[a]).on("loadeddata", v)), e[a].src = f ? q.replace(".mp3", ".ogg") : q; else v && v() }; a.playSound = function(f) { try { var q; k && (q = e[f]) && (p ? (a.stopSound(f), q.sourceNode = p.createBufferSource(), q.sourceNode.buffer = q.buffer, q.sourceNode.connect(p.destination), "undefined" !== typeof q.sourceNode.noteOn ? q.sourceNode.noteOn(0) : q.sourceNode.start(0)) : (q.currentTime = 0, q.play())) } catch (v) {} }; a.loopSound = function(f) { var q; k && (q = e[f]) && (p ? (a.stopSound(f), q.sourceNode = p.createBufferSource(), q.sourceNode.loop = !0, q.sourceNode.buffer = q.buffer, q.sourceNode.connect(p.destination), "undefined" !== typeof q.sourceNode.noteOn ? q.sourceNode.noteOn(0) : q.sourceNode.start(0)) : ("boolean" === typeof q.loop ? q.loop = !0 : q.addEventListener("ended", function() { this.currentTime = 0; this.play() }, !1), q.play())) }; a.stopSound = function(a) { k && (a = e[a]) && (p ? a.sourceNode && ("undefined" !== typeof a.sourceNode.noteOff ? a.sourceNode.noteOff(0) : a.sourceNode.stop(0), a.sourceNode = null) : (a.pause(), a.currentTime = 0)) } })(window.AudioManager = window.AudioManager || {}); (function(a, U) { var e = new Date, k = 0, f = 0; a.getFPS = function() { ++k; var a = new Date; 1E3 < a.getTime() - e.getTime() && (f = k, k = 0, e = a); return f }; a.clamp = function(a, e, f) { return Math.max(e, Math.min(f, a)) }; a.circleRectIntersect = function(e, f, k, w, v, u, z) { e -= a.clamp(e, w, u); f -= a.clamp(f, v, z); return e * e + f * f < k * k }; a.distance = function(a, e, f, k) { a = f - a; e = k - e; return Math.sqrt(a * a + e * e) }; a.vectorAdd = function(a, e, f, k) { return { x: a + f, y: e + k } }; a.vectorSubstract = function(a, e, f, k) { return { x: a - f, y: e - k } }; a.vectorMultiply = function(a, e, f) { return { x: a * f, y: e * f } }; a.vectorDivide = function(a, e, f) { return 0 === f ? { x: a, y: e } : { x: a / f, y: e / f } }; a.vectorDotProduct = function(a, e, f, k) { return a * f + e * k }; a.vectorLength = function(a, e) { return Math.sqrt(a * a + e * e) }; a.vectorNormalize = function(e, f) { var k = a.vectorLength(e, f); return 0 === k ? { x: e, y: f } : { x: e / k, y: f / k } }; a.vectorRotate = function(a, e, f) { var k = Math.cos(f); f = Math.sin(f); return { x: k * a - f * e, y: f * a + k * e } }; a.vectorAngle = function(a, e, f, k) { return Math.atan2(k - e, f - a) }; a.vectorFromAngle = function(a) { return { x: Math.cos(a), y: Math.sin(a) } }; a.toDegrees = function(a) { return 180 / Math.PI * a }; a.toRadians = function(a) { return Math.PI / 180 * a }; a.shortestArc = function(a, e) { var f = Math.abs(a - e); f > Math.PI && (f = 2 * Math.PI - f); return f }; a.rectIntersect = function(a, e, f, k, v, u, z, x) { return !(k < u || e > x || f < v || a > z) }; a.pointInRect = function(a, e, f, k, v, u) { return a > f && a < v && e > k && e < u }; a.circleLineIntersect = function(a, e, f, k, v, u, z) { f -= a; k -= e; var x = 2 * (f * (a - v) + k * (e - u)), N; N = v * v + u * u + (a * a + e * e); N -= 2 * (v * a + u * e); N -= z * z; return 0 > x * x - 4 * (f * f + k * k) * N ? !1 : !0 }; a.lineLineIntersect = function(a, e, f, k, v, u, z, x) { var N = { intersect: !1, x: 0, y: 0 }, c = (x - u) * (f - a) - (z - v) * (k - e); 0 !== c ? (z = ((z - v) * (e - u) - (x - u) * (a - v)) / c, v = ((f - a) * (e - u) - (k - e) * (a - v)) / c, 0 <= z && 1 >= z && 0 <= v && 1 >= v ? (N.intersect = !0, N.x = a + z * (f - a), N.y = e + z * (k - e)) : N.intersect = !1) : N.intersect = !1; return N }; a.loadResources = function(a, e, f) { var k, v, u = {}, z = 0, x, N = function() { ++z === v && e && e(u); f && f(z, v) }; k = 0; for (v = a.length; k < v; k += 1) x = a[k], "img" === x.type ? (u[x.id] = new Image, u[x.id].onload = N, u[x.id].src = x.src) : "snd" === x.type && AudioManager.registerSound(x.id, x.src, N) } })(window.AquaThiefGame = window.AquaThiefGame || {}); (function(a, U) { var e, k, f, p, q, t, w, v, u, z, x, N; a.setupTileOffsets = function() { var c = 1 / a.getScaleUnit(); e = 0; k = 1 * c; f = 2 * c; p = 3 * c; q = 4 * c; t = 5 * c; w = 6 * c; v = 7 * c; u = 8 * c; z = 9 * c; x = 10 * c; N = 3E-4 * k }; a.draw = function(c, b) { var g, h = a.getCurrentGameState(), l = a.getCanvasWidth(), p = a.getCanvasHeight(), m = a.getSceneHudItems(), n = a.getLayoutOrientation(), q = a.screenToHud({ x: l, y: p }); g = a.getGamePlayEndTime(); if (h !== a.GameStateEnum.GamePreLoading) if (h === a.GameStateEnum.GameLogo || h === a.GameStateEnum.GameLoading) a.drawLoader(c); else if (h === a.GameStateEnum.GameIntro) a.drawGameIntro(c); else if (h === a.GameStateEnum.GameMenu) a.drawGameMenu(c); else if (h === a.GameStateEnum.GameRun || h === a.GameStateEnum.GameLost || h === a.GameStateEnum.GameWon) { switch (b.currentLevelPage) { case 0: c.drawImage(a.Resources.background01Image, e + 2, e + 2, t - 2, t - 2, 0, 0, l, p); break; case 1: c.drawImage(a.Resources.background01Image, t + 2, e + 2, t - 2, t - 2, 0, 0, l, p); break; case 2: c.drawImage(a.Resources.background01Image, e + 2, t + 2, t - 2, t - 2, 0, 0, l, p); break; case 3: case 4: c.drawImage(a.Resources.background01Image, t + 2, t + 2, t - 2, t - 2, 0, 0, l, p) } a.applySceneCameras(); h = b.maxX - b.minX; a.getTitleHeartbeat1(); a.getTitleHeartbeat2(); c.save(); c.translate((b.pageAnimDirection === a.DirectionEnum.Left ? b.pageAnimTime * h * 2 : -b.pageAnimTime * h * 2) + b.pagex + b.pageOffsetX, 0); a.applyVeryFarParallaxCameras(); c.restore(); c.save(); c.translate((b.pageAnimDirection === a.DirectionEnum.Left ? b.pageAnimTime * h * 5 : -b.pageAnimTime * h * 5) + b.pagex + b.pageOffsetX, 0); a.applyFarParallaxCameras(); c.restore(); c.save(); c.translate((b.pageAnimDirection === a.DirectionEnum.Left ? b.pageAnimTime * h * 7 : -b.pageAnimTime * h * 7) + b.pagex + b.pageOffsetX, 0); a.applyNearParallaxCameras(); c.globalAlpha = 1; c.restore(); a.applyHereParallaxCameras(); c.fillStyle = "rgba(255, 255, 255, 0.3)"; switch (b.mode) { case a.GameSceneModeEnum.Shop: a.drawShop(c, b); break; case a.GameSceneModeEnum.Credits: a.drawCredits(c, b); break; case a.GameSceneModeEnum.Achievements: a.drawAchievements(c, b); break; case a.GameSceneModeEnum.Leaderboards: a.drawLeaderboards(c, b); break; case a.GameSceneModeEnum.WorldSelection: a.drawWorldSelection(c, b); break; case a.GameSceneModeEnum.LevelPlay: a.drawLevelPlay(c, b) } a.applyHudCameras(); b.mode === a.GameSceneModeEnum.LevelPlay && a.drawLevelPlayHud(c, b, q); b.mode === a.GameSceneModeEnum.WorldSelection && a.drawShopIcon(c); b.mode === a.GameSceneModeEnum.Shop && a.drawShopIcon(c, !0); !0 === b.menuExpanded && (c.globalAlpha = .5, c.fillStyle = "rgb(210, 100, 255)", c.globalAlpha = .5, c.fillStyle = "rgb(0, 0, 0)", n === a.LayoutOrientationEnum.Landscape ? c.fillRect(q.x - 1.8, 0, 1.8, q.y) : c.fillRect(0, 0, q.x, 1.8), c.globalAlpha = 1); h = -g; for (g = 0; g < m.length; g += 1) m[g].enabled && (c.save(), l = b.menuExpanded ? 5 * b.menuTime : 1 - 5 * b.menuTime, a.CommandEnum.Menu === m[g].type ? c.drawImage(a.Resources.hud01Image, e, t, 1.5 * k, 1.5 * k, m[g].x, m[g].y, 1.5, 1.5) : a.CommandEnum.Home === m[g].type ? (n === a.LayoutOrientationEnum.Landscape ? c.translate(0, 2 * l) : c.translate(2 * -l, 0), c.globalAlpha = b.menuExpanded ? 1 - 5 * b.menuTime : 5 * b.menuTime, c.drawImage(a.Resources.hud01Image, e, 6.5 * k, 1.5 * k, 1.5 * k, m[g].x, m[g].y, 1.5, 1.5)) : a.CommandEnum.GoBack === m[g].type && (n === a.LayoutOrientationEnum.Landscape ? c.translate(0, 2 * l) : c.translate(-l, 0), c.globalAlpha = b.menuExpanded ? 1 - 5 * b.menuTime : 5 * b.menuTime, c.drawImage(a.Resources.hud01Image, 1.5 * k, 6.5 * k, 1.5 * k, 1.5 * k, m[g].x, m[g].y, 1.5, 1.5)), a.CommandEnum.Close === m[g].type ? c.drawImage(a.Resources.hud01Image, u, t, 1.5 * k, 1.5 * k, m[g].x, m[g].y, 1.5, 1.5) : a.CommandEnum.Refresh === m[g].type ? (n === a.LayoutOrientationEnum.Landscape ? c.translate(0, 3 * l) : c.translate(3 * -l, 0), c.globalAlpha = b.menuExpanded ? 1 - 5 * b.menuTime : 5 * b.menuTime, c.drawImage(a.Resources.hud01Image, 1.5 * k, t, 1.5 * k, 1.5 * k, m[g].x, m[g].y, 1.5, 1.5)) : a.CommandEnum.PreviousPage !== m[g].type && a.CommandEnum.NextPage !== m[g].type && (a.CommandEnum.NextLevel === m[g].type ? c.drawImage(a.Resources.tooltips01Image, e, v, f, f, m[g].x - h, m[g].y - h, 2 + 2 * h, 2 + 2 * h) : a.CommandEnum.Share === m[g].type ? (c.drawImage(a.Resources.hud01Image, u, e, f, f, m[g].x - .25 - h, m[g].y - .25 - h, 2 + 2 * h, 2 + 2 * h), c.drawImage(a.Resources.tooltips01Image, e, z, k, k, m[g].x + .25 - h, m[g].y + .25 - h, 1 + 2 * h, 1 + 2 * h)) : a.CommandEnum.ReplayLevel === m[g].type ? a.getCurrentGameState() !== a.GameStateEnum.GameWon || b.isChallenge ? c.drawImage(a.Resources.tooltips01Image, w, v, f, f, m[g].x - h, m[g].y - h, 2 + 2 * h, 2 + 2 * h) : c.drawImage(a.Resources.hud01Image, 1.5 * k, t, 1.5 * k, 1.5 * k, m[g].x - h, m[g].y - h, 1.5 + 2 * h, 1.5 + 2 * h) : a.CommandEnum.QuitLevel === m[g].type && c.drawImage(a.Resources.tooltips01Image, f, v, f, f, m[g].x - h, m[g].y - h, 2 + 2 * h, 2 + 2 * h)), c.restore()); !0 === a.showHouseAds && (c.fillStyle = "rgba(0, 0, 0, 0.7)", c.fillRect(0, 0, q.x, q.y), c.save(), c.translate(20 * -a.getGameAdsTime(), 0), 0 === a.showHouseAdsType ? c.drawImage(a.Resources.adsImage, e, e, t, t, q.x / 2 - 2.5, q.y / 2 - 2.5, 5, 5) : 1 === a.showHouseAdsType ? c.drawImage(a.Resources.adsImage, t, e, t, t, q.x / 2 - 2.5, q.y / 2 - 2.5, 5, 5) : 2 === a.showHouseAdsType && c.drawImage(a.Resources.adsImage, t, t, t, t, q.x / 2 - 2.5, q.y / 2 - 2.5, 5, 5), c.restore(), c.drawImage(a.Resources.adsImage, e, z, t, k, q.x / 2 - 2.5, q.y - 1, 5, 1)); 0 < b.pageFadeInTime && (c.globalAlpha = b.pageFadeInTime, c.fillStyle = "rgb(210, 100, 255)", c.fillRect(0, 0, q.x, q.y), c.globalAlpha = 1) } }; a.drawLoader = function(c) { var b = a.getLogoTime(); a.getLayoutOrientation(); var g = a.screenToHud({ x: a.getCanvasWidth(), y: a.getCanvasHeight() }), h = a.getGameLoadingData(); c.drawImage(a.Resources.loadingScreenImage, e, e, x, 6.5 * k, 0, 0, a.getCanvasWidth(), a.getCanvasHeight()); c.save(); a.applyHudCameras(); b = 3 * h.current / h.total + (3 - b) / 3; c.drawImage(a.Resources.loadingScreenImage, t, v, q, k, g.x / 2 - 2, g.y / 2 + .5, 4, 1); c.save(); c.beginPath(); c.rect(g.x / 2 - 2, g.y / 2 + .5, b, 1); c.closePath(); c.clip(); c.drawImage(a.Resources.loadingScreenImage, t, u, q, k, g.x / 2 - 2, g.y / 2 + .5, 4, 1); c.restore(); c.drawImage(a.Resources.loadingScreenImage, e, v, t, f, g.x / 2 - 2.5, g.y / 2 - 1 - .5, 5, 2); c.restore() }; a.drawGameIntro = function(c) { a.getIntroTime(); c.fillStyle = "rgb(0, 0, 0)"; c.fillRect(0, 0, a.getCanvasWidth(), a.getCanvasHeight()); a.applyHudCameras() }; a.drawGameMenu = function(c) { var b, g, h, l, r, m = a.getGameMenuData(), n = a.screenToHud({ x: a.getCanvasWidth(), y: a.getCanvasHeight() }); r = a.getTitleHeartbeat1(); var A = a.getTitleHeartbeat2(); a.getTitleHeartbeat3(); g = a.getTitleHeartbeat4(); h = a.getTitleHeartbeat5(); l = n.x / 2; var D = n.y / 2, x = Math.max(n.x, n.y), F = 0, J = .3 * m.offsetY; c.drawImage(a.Resources.background01Image, e, e, t, t, 0, 0, a.getCanvasWidth(), a.getCanvasHeight()); c.save(); a.applyHudCameras(); for (b = 0; 3 > b; ++b) F = 30 * b, c.save(), c.beginPath(), c.translate(l, D), c.rotate(a.toRadians(F + m.rotationAngle)), c.translate(-l, -D), c.moveTo(l - .1, D - .1), c.lineTo(l - .8, D - x), c.lineTo(l + 1.6, D - x), c.lineTo(l + .1, D - .1), c.lineTo(l + x, D - .8), c.lineTo(l + x, D + 1.6), c.lineTo(l + .1, D + .1), c.lineTo(l + .8, D + x), c.lineTo(l - 1.6, D + x), c.lineTo(l - .1, D + .1), c.lineTo(l - x, D + .8), c.lineTo(l - x, D - 1.6), c.lineTo(l - .1, D - .1), c.closePath(), c.clip(), c.globalAlpha = .6, c.drawImage(a.Resources.background02Image, e, e, t, t, l - x, D - x, 2 * x, 2 * x), c.globalAlpha = 1, c.restore(); c.save(); c.translate(0, 2 * m.offsetY); c.drawImage(a.Resources.entities01Image, q, e, q, q, n.x / 2 - 3 - J, n.y / 2 - .9, Math.max(0, 2.5 + 2 * J), 2.5); c.restore(); c.save(); c.translate(0, 2 * m.offsetY); c.drawImage(a.Resources.entities01Image, q, e, q, q, n.x / 2 + .7 - J, n.y / 2 - .5, Math.max(0, 1.75 + 2 * J), 1.75); c.restore(); c.save(); c.translate(0, m.offsetY); c.drawImage(a.Resources.hud02Image, q, p, w, q, n.x / 2 - 3 - J, n.y / 2 - 1.6, Math.max(0, 6 + 2 * J), 4); 0 === g.direction ? g.time > g.maxTime - .5 ? (c.save(), 0 === h.direction && (c.translate(n.x / 2 * 2, 0), c.scale(-1, 1)), c.drawImage(a.Resources.hud02Image, u, v, f, k, n.x / 2 - 1 - J, n.y / 2 - .2, Math.max(0, 2 + 2 * J), 1), c.restore()) : c.drawImage(a.Resources.hud02Image, q, v, f, k, n.x / 2 - 1 - J, n.y / 2 - .2, Math.max(0, 2 + 2 * J), 1) : c.drawImage(a.Resources.hud02Image, w, v, f, k, n.x / 2 - 1 - J, n.y / 2 - .4, Math.max(0, 2 + 2 * J), 1); c.restore(); c.save(); c.translate(0, .5 * m.offsetY); c.drawImage(a.Resources.hud02Image, e, u, t, f, n.x / 2 - 2.5 - J, n.y / 2 - 3.35, Math.max(0, 5 + 2 * J), 2); c.restore(); c.save(); c.translate(0, 1.3 * m.offsetY); c.drawImage(a.Resources.hud02Image, t, u, t, f, n.x / 2 - 2.5 - J, n.y / 2 - 2.35, Math.max(0, 5 + 2 * J), 2); c.restore(); m.showButtons && (c.save(), c.translate(-3.5 + 7 * m.offsetY, -1), c.translate(n.x / 2 - 2, n.y / 2 - 2.5), l = m.buttons[0].time ? 1.15 * (1 - 3 * m.buttons[0].time) : 1 - 3 * m.buttons[0].time, c.scale(m.buttons[0].time ? 1.15 * l : l, l), c.translate(-(n.x / 2 - 2), -(n.y / 2 - 2.5)), c.restore(), c.save(), c.translate(3.5 + 7 * -m.offsetY, -1.2), c.translate(n.x / 2 - 2, n.y / 2 - 2), l = m.buttons[0].time ? 1.15 * (1 - 3 * m.buttons[0].time) : 1 - 3 * m.buttons[0].time, c.scale(m.buttons[0].time ? 1.15 * l : l, l), c.translate(-(n.x / 2 - 2), -(n.y / 2 - 2)), c.restore(), c.save(), c.translate(7 * -m.offsetY, .2), c.translate(n.x / 2 - 2, n.y / 2 - 2.5), c.translate(-(n.x / 2 - 2), -(n.y / 2 - 2.5)), c.restore()); c.save(); c.translate(0, 2 * m.offsetY); c.restore(); if (m.showButtons) for (b = 0; b < m.buttons.length; b++) if (.3 > m.buttons[b].time) { c.save(); l = m.buttons[b].time ? 1.15 * (1 - 3 * m.buttons[b].time) : 1 - 3 * m.buttons[b].time; switch (m.buttons[b].type) { case a.CommandEnum.Play: g = n.x / 2 + m.buttons[b].x - .2 * r.time; h = n.y / 2 + m.buttons[b].y - .2 * A.time; c.translate(g + 1, h + 1); c.scale(m.buttons[b].time ? 1.15 * l : l, l); c.translate(-(g + 1), -(h + 1)); c.drawImage(a.Resources.tooltips01Image, q, v, f, f, g, h, 2 + .4 * r.time, 2 + .4 * A.time); break; case a.CommandEnum.PlayChallenge: g = n.x / 2 + m.buttons[b].x - .2 * r.time; h = n.y / 2 + m.buttons[b].y - .2 * A.time; c.translate(g + 1, h + 1); c.scale(m.buttons[b].time ? 1.15 * l : l, l); c.translate(-(g + 1), -(h + 1)); c.drawImage(a.Resources.tooltips02Image, e, w, f, f, g, h, 2 + .4 * r.time, 2 + .4 * A.time); a.userData.challenge || c.drawImage(a.Resources.hud01Image, q, e, f, f, g + .3, h - .15, 1.4, 1.4); break; case a.CommandEnum.Credits: g = n.x / 2 + m.buttons[b].x - .2 * A.time; h = n.y / 2 + m.buttons[b].y - .2 * r.time; c.translate(g + 1, h + 1); c.scale(m.buttons[b].time ? 1.15 * l : l, l); c.translate(-(g + 1), -(h + 1)); c.drawImage(a.Resources.hud01Image, w, e, f, f, n.x / 2 + m.buttons[b].x - .2 * A.time, n.y / 2 + m.buttons[b].y - .2 * r.time, 2 + .4 * A.time, 2 + .4 * r.time); break; case a.CommandEnum.Leaderboards: g = n.x - m.buttons[b].x; h = n.y - m.buttons[b].y; c.translate(g + 1, h + 1); c.scale(m.buttons[b].time ? 1.15 * l : l, l); c.translate(-(g + 1), -(h + 1)); c.drawImage(a.Resources.hud03Image, f, e, f, f, n.x - m.buttons[b].x, n.y - m.buttons[b].y, 2, 2); break; case a.CommandEnum.Achievements: g = n.x - m.buttons[b].x; h = n.y - m.buttons[b].y; c.translate(g + 1, h + 1); c.scale(m.buttons[b].time ? 1.15 * l : l, l); c.translate(-(g + 1), -(h + 1)); c.drawImage(a.Resources.hud03Image, e, e, f, f, n.x - m.buttons[b].x, n.y - m.buttons[b].y, 2, 2); break; case a.CommandEnum.Settings: g = n.x / 2 + m.buttons[b].x - .2 * A.time; h = n.y / 2 + m.buttons[b].y - .2 * r.time; c.translate(g + 1, h + 1); c.scale(m.buttons[b].time ? 1.15 * l : l, l); c.translate(-(g + 1), -(h + 1)); c.drawImage(a.Resources.hud01Image, u, e, f, f, n.x / 2 + m.buttons[b].x - .2 * r.time, n.y / 2 + m.buttons[b].y - .2 * A.time, 2 + .4 * r.time, 2 + .4 * A.time); c.drawImage(a.Resources.hud01Image, u, v, k, k, n.x / 2 + .5 + m.buttons[b].x - .2 * r.time, n.y / 2 + .5 + m.buttons[b].y - .2 * A.time, 1 + .4 * r.time, 1 + .4 * A.time); break; case a.CommandEnum.Sound: a.getShowSettings() && (g = n.x / 2 + m.buttons[b].x - .2 * A.time, h = n.y / 2 + m.buttons[b].y - .2 * r.time, c.translate(g + 1, h + 1), c.scale(m.buttons[b].time ? 1.15 * l : l, l), c.translate(-(g + 1), -(h + 1)), c.drawImage(a.Resources.hud01Image, u, e, f, f, n.x / 2 + m.buttons[b].x - .2 * r.time, n.y / 2 + m.buttons[b].y - .2 * A.time, 2 + .4 * r.time, 2 + .4 * A.time), c.drawImage(a.Resources.hud01Image, v, v, k, k, n.x / 2 + .5 + m.buttons[b].x - .2 * r.time, n.y / 2 + .5 + m.buttons[b].y - .2 * A.time, 1 + .4 * r.time, 1 + .4 * A.time), a.isSoundEnabled || c.drawImage(a.Resources.hud01Image, z, v, k, k, n.x / 2 + .5 + m.buttons[b].x - .2 * r.time, n.y / 2 + .5 + m.buttons[b].y - .2 * A.time, 1 + .4 * r.time, 1 + .4 * A.time)); break; case a.CommandEnum.Music: a.getShowSettings() && (g = n.x / 2 + m.buttons[b].x - .2 * A.time, h = n.y / 2 + m.buttons[b].y - .2 * r.time, c.translate(g + 1, h + 1), c.scale(m.buttons[b].time ? 1.15 * l : l, l), c.translate(-(g + 1), -(h + 1)), c.drawImage(a.Resources.hud01Image, u, e, f, f, n.x / 2 + m.buttons[b].x - .2 * r.time, n.y / 2 + m.buttons[b].y - .2 * A.time, 2 + .4 * r.time, 2 + .4 * A.time), c.drawImage(a.Resources.hud01Image, w, v, k, k, n.x / 2 + .5 + m.buttons[b].x - .2 * r.time, n.y / 2 + .5 + m.buttons[b].y - .2 * A.time, 1 + .4 * r.time, 1 + .4 * A.time), a.isMusicEnabled || c.drawImage(a.Resources.hud01Image, z, v, k, k, n.x / 2 + .5 + m.buttons[b].x - .2 * r.time, n.y / 2 + .5 + m.buttons[b].y - .2 * A.time, 1 + .4 * r.time, 1 + .4 * A.time)) } c.restore() } for (b = 0; b < a.getGameMenuEffects().length; b += 1) r = a.getGameMenuEffects()[b], a.drawEffect(c, r); a.drawShopIcon(c); g = n.x - 2.2; h = -.03 - 10 * m.buttons[0].time; c.save(); c.translate(g + .75, h); c.rotate(-.05 + .3 * a.getTitleHeartbeat1().time); c.translate(-(g + .75), -h); c.drawImage(a.Resources.adsImage, e, t, f, q, g, h, 1.5, 3); c.restore(); a.Resources.sponsorLogo && (b = 4 * a.Resources.sponsorLogo.naturalHeight / a.Resources.sponsorLogo.naturalWidth, c.drawImage(a.Resources.sponsorLogo, 0, n.y - b - .1, 4, b)); c.restore(); 0 < m.menuTime && (c.globalAlpha = m.menuTime, c.fillStyle = "rgb(210, 100, 255)", c.fillRect(0, 0, a.getCanvasWidth(), a.getCanvasHeight()), c.globalAlpha = 1) }; a.drawCredits = function(c, b) { c.drawImage(a.Resources.creditsImage, e, e, x, x, b.minX + (b.maxX - b.minX) / 2 - 5, b.minY + (b.maxY - b.minY) / 2 - 5, 10, 10); for (var f = 0; f < b.effects.length; f += 1) { var h = b.effects[f]; h.useTransform || a.drawEffect(c, h, b) } }; a.drawShopIcon = function(c, b) { c.drawImage(a.Resources.hud01Image, p, v, f, k, .2, .25, 2, 1); a.shopAvailable && !b && c.drawImage(a.Resources.hud01Image, p, w, k, k, .2, .8, 1, 1); a.drawNumber(c, a.userData.currencyCount.toString(), 1.35, .9, .33, 3, !1) }; a.drawShop = function(c, b) { var g, h, l = b.maxX - b.minX, r = b.maxY - b.minY, m = 4 * b.currentShopPage; if (a.isDemo || !a.shopAvailable) c.drawImage(a.Resources.tooltips06Image, e, f, x, k, b.minX + l / 2 - 7.5, b.minY + r / 2 - 4, 15, 1.5); else { c.save(); c.font = "bold 0.6px Segoe WP"; c.translate((b.pageAnimDirection === a.DirectionEnum.Left ? b.pageAnimTime * l * 3 : -b.pageAnimTime * l * 3) + b.pagex + b.pageOffsetX, 0); for (g = 0; 2 > g; g++) { for (h = 0; 2 > h && (c.fillStyle = "rgba(0, 128, 255, 0.3)", c.fillRect(b.minX + h * l / 2, b.minY + g * r / 2, l / 2 - .05, r / 2 - .05), c.drawImage(a.Resources.hud03Image, p, p, p, p, b.minX + h * l / 2 + 1.5, b.minY + g * r / 2 + 1.5, 3, 3), c.fillStyle = "rgb(255, 255, 255)", c.textBaseline = "top", c.textAlign = "center", c.fillText(a.shopItems[m].name, b.minX + h * l / 2 + l / 4, b.minY + g * r / 2), c.textBaseline = "bottom", c.textAlign = "right", c.fillText(a.shopItems[m].price, b.minX + h * l / 2 + (l / 2 - .4), b.minY + g * r / 2 + r / 2 - .4), m++, m !== a.shopItems.length); h++); if (m === a.shopItems.length) break } if (b.pageAnimTime) { c.globalAlpha = 2 * b.pageAnimTime; if (b.pageAnimDirection === a.DirectionEnum.Left) for (m = 4 * b.currentShopPage - 4, 0 > m && (g = Math.floor(a.shopItems.length / 4), g += a.shopItems.length % 4 ? 1 : 0, m = 4 * (g - 1)), g = 0; 2 > g; g++) { for (h = 0; 2 > h && (c.fillStyle = "rgba(0, 128, 255, 0.3)", c.fillRect(b.minX + h * l / 2 - l, b.minY + g * r / 2, l / 2 - .05, r / 2 - .05), m++, m !== a.shopItems.length); h++); if (m === a.shopItems.length) break } else for (m = 4 * b.currentShopPage + 4, m > a.shopItems.length && (m = 0), g = 0; 2 > g; g++) { for (h = 0; 2 > h && (c.fillStyle = "rgba(0, 128, 255, 0.3)", c.fillRect(b.minX + h * l / 2 + l, b.minY + g * r / 2, l / 2 - .05, r / 2 - .05), m++, m !== a.shopItems.length); h++); if (m === a.shopItems.length) break } c.globalAlpha = 1 } c.restore() } }; a.drawAchievements = function(c, b) { var g; g = b.maxX - b.minX; var h = b.maxY - b.minY; g = b.maxX - b.minX; h = b.maxY - b.minY; a.getTitleHeartbeat1(); var l = a.getTitleHeartbeat2(); a.getTitleHeartbeat3(); c.save(); c.translate((b.pageAnimDirection === a.DirectionEnum.Left ? b.pageAnimTime * g * 3 : -b.pageAnimTime * g * 3) + b.pagex + b.pageOffsetX, 0); c.drawImage(a.Resources.tooltips07Image, e, e, p, f, b.minX - .5 * l.time, b.minY - .5 * l.time, 4.5 + l.time, 3 + l.time); c.drawImage(a.Resources.tooltips07Image, p, e, v, k, b.minX + 3.75, b.minY + .5 - .5 * l.time, 10.5, 1.5); c.drawImage(a.Resources.tooltips07Image, e, w, f, k, b.minX + .5, b.minY + 4, 3, 1.5); c.drawImage(a.Resources.tooltips07Image, p, k, v, k, b.minX + g / 2 - 3, b.minY + 4, 10.5, 1.5); var l = Math.min(60, a.threeStarsLevels), r = l * Math.max(0, 1 - b.achievementSetupTime) * 7 / 60; c.drawImage(a.Resources.tooltips07Image, e, q, x, f, b.minX, b.minY + 6, 15, 3); var m = 0 < l ? 3 : 0; c.save(); c.beginPath(); c.rect(b.minX, b.minY, 1.5 * (m + r), h); c.closePath(); c.clip(); c.drawImage(a.Resources.tooltips07Image, e, f, x, f, b.minX, b.minY + 6, 15, 3); c.restore(); l >= a.achievementItems[0].value && (h = 1.8 + 10 * Math.max(0, b.achievementSetupTime - .5), c.drawImage(a.Resources.hud01Image, e, p, f, f, b.minX + 3.3, b.minY + 5.9, h, h)); l >= a.achievementItems[1].value && (h = 1.8 + 15 * Math.max(0, b.achievementSetupTime - .5), c.drawImage(a.Resources.hud01Image, e, p, f, f, b.minX + 8.1, b.minY + 5.9, h, h)); l >= a.achievementItems[2].value && (h = 1.8 + 20 * Math.max(0, b.achievementSetupTime - .5), c.drawImage(a.Resources.hud01Image, e, p, f, f, b.minX + 13.2, b.minY + 5.9, h, h)); c.drawImage(a.Resources.tooltips07Image, f, w, u, k, b.minX + g / 2 - 6, b.minY + 10, 12, 1.5); g = 0; a.userData.levels[b.challengeLevelIndex] && (g = a.userData.levels[b.challengeLevelIndex].bestScore); h = 1.5 + 15 * Math.max(0, b.achievementSetupTime - .5); g >= a.achievementItems[3].value ? (c.drawImage(a.Resources.tooltips07Image, e, v, f, f, b.minX + .5, b.minY + 12, 2 * h, 2 * h), a.drawNumber(c, a.achievementItems[3].value.toString(), b.minX + 2, b.maxY - .3, .6, 2, !1)) : (c.drawImage(a.Resources.tooltips07Image, u, v, f, f, b.minX + .5, b.minY + 12, 2 * h, 2 * h), a.drawNumber(c, a.achievementItems[3].value.toString(), b.minX + 2, b.maxY - .3, .6, 0, !1)); h = 1.5 + 20 * Math.max(0, b.achievementSetupTime - .5); g >= a.achievementItems[4].value ? (c.drawImage(a.Resources.tooltips07Image, f, v, f, f, b.minX + 4, b.minY + 12, 2 * h, 2 * h), a.drawNumber(c, a.achievementItems[4].value.toString(), b.minX + 5.5, b.maxY - .3, .6, 2, !1)) : (c.drawImage(a.Resources.tooltips07Image, u, v, f, f, b.minX + 4, b.minY + 12, 2 * h, 2 * h), a.drawNumber(c, a.achievementItems[4].value.toString(), b.minX + 5.5, b.maxY - .3, .6, 0, !1)); h = 1.5 + 25 * Math.max(0, b.achievementSetupTime - .5); g >= a.achievementItems[5].value ? (c.drawImage(a.Resources.tooltips07Image, q, v, f, f, b.minX + 7.5, b.minY + 12, 2 * h, 2 * h), a.drawNumber(c, a.achievementItems[5].value.toString(), b.minX + 9, b.maxY - .3, .6, 2, !1)) : (c.drawImage(a.Resources.tooltips07Image, u, v, f, f, b.minX + 7.5, b.minY + 12, 2 * h, 2 * h), a.drawNumber(c, a.achievementItems[5].value.toString(), b.minX + 9, b.maxY - .3, .6, 0, !1)); h = 1.5 + 30 * Math.max(0, b.achievementSetupTime - .5); g >= a.achievementItems[6].value ? (c.drawImage(a.Resources.tooltips07Image, w, v, f, f, b.minX + 11, b.minY + 12, 2 * h, 2 * h), a.drawNumber(c, a.achievementItems[6].value.toString(), b.minX + 12.5, b.maxY - .3, .6, 2, !1)) : (c.drawImage(a.Resources.tooltips07Image, u, v, f, f, b.minX + 11, b.minY + 12, 2 * h, 2 * h), a.drawNumber(c, a.achievementItems[6].value.toString(), b.minX + 12.5, b.maxY - .3, .6, 0, !1)); c.fillStyle = "rgba(255, 255, 0, 0.2)"; c.restore(); for (g = 0; g < b.effects.length; g += 1) h = b.effects[g], h.useTransform || a.drawEffect(c, h, b) }; a.drawLeaderboards = function(c, b) { var f = b.maxX - b.minX, h = b.maxY - b.minY; c.save(); a.isDemo ? (c.drawImage(a.Resources.tooltips06Image, e, e, x, k, b.minX + f / 2 - 7.5, b.minY + h / 2 - 1.5, 15, 1.5), c.drawImage(a.Resources.tooltips06Image, e, k, x, k, b.minX + f / 2 - 7.5, b.minY + h / 2 - 4, 15, 1.5)) : c.restore() }; a.drawWorldSelection = function(c, b) { var g, h, l, r = b.maxX - b.minX, m = b.maxY - b.minY, n = a.getTitleHeartbeat1(), u = a.getTitleHeartbeat2(); a.getTitleHeartbeat3(); c.save(); c.translate((b.pageAnimDirection === a.DirectionEnum.Left ? b.pageAnimTime * r * 3 : -b.pageAnimTime * r * 3) + b.pagex + b.pageOffsetX, 0); c.globalAlpha = 1 - 3 * b.pageAnimTime; var v = 20 * b.currentLevelPage, x = 1, z = 0; for (g = v; g < Math.min(v + 20, a.levelData.length - 1); ++g) h = b.minX + r / 5 * z, l = b.minY + m / 5 * x, c.drawImage(a.Resources.hud01Image, e, e, p, p, h - .3 * u.time, l - .3 * n.time, 3 + .6 * u.time, 3 + .6 * n.time), a.drawNumber(c, (g + 1).toString(), h + r / 5 / 2, l + m / 5 / 2 - .1, .9, 0, !1), a.userData.levels[g] && a.userData.levels[g].unlocked ? 2 < a.userData.levels[g].stars ? (c.drawImage(a.Resources.hud01Image, e, p, f, f, h, l + 1.25, 1.5, 1.5), c.drawImage(a.Resources.hud01Image, e, p, f, f, h + .6, l + 1.27, 1.75, 1.75), c.drawImage(a.Resources.hud01Image, e, p, f, f, h + 1.3, l + 1.3, 2, 2)) : (1 < a.userData.levels[g].stars ? (c.drawImage(a.Resources.hud01Image, e, p, f, f, h, l + 1.25, 1.5, 1.5), c.drawImage(a.Resources.hud01Image, e, p, f, f, h + .6, l + 1.27, 1.75, 1.75)) : (0 < a.userData.levels[g].stars ? c.drawImage(a.Resources.hud01Image, e, p, f, f, h, l + 1.25, 1.5, 1.5) : c.drawImage(a.Resources.hud01Image, f, p, f, f, h, l + 1.25, 1.5, 1.5), c.drawImage(a.Resources.hud01Image, f, p, f, f, h + .6, l + 1.27, 1.75, 1.75)), c.drawImage(a.Resources.hud01Image, f, p, f, f, h + 1.3, l + 1.3, 2, 2)) : c.drawImage(a.Resources.hud01Image, q, e, f, f, h + .55, l + 1.25, 2, 2), z++, 5 === z && (z = 0, x++); c.globalAlpha = 1; if (b.pageAnimTime) { c.globalAlpha = 2 * b.pageAnimTime; n = b.pageAnimDirection === a.DirectionEnum.Left ? -r : r; x = 1; z = 0; for (g = v; g < Math.min(v + 20, a.levelData.length - 1); ++g) h = b.minX + r / 5 * z + n, l = b.minY + m / 5 * x, c.drawImage(a.Resources.hud01Image, e, e, p, p, h, l, 3, 3), z++, 5 === z && (z = 0, x++); c.globalAlpha = 1 } c.restore(); c.drawImage(a.Resources.hud01Image, q, t, f, f, b.minX + r / 2 - 6 - .5 * u.time, b.minY + m / 2 - 7 - .5 * u.time, 2 + u.time, 2 + u.time); c.drawImage(a.Resources.hud01Image, w, t, f, f, b.minX + r / 2 + 4 - .5 * u.time, b.minY + m / 2 - 7 - .5 * u.time, 2 + u.time, 2 + u.time); c.save(); c.translate((b.pageAnimDirection !== a.DirectionEnum.Left ? b.pageAnimTime * r * 5 : -b.pageAnimTime * r * 5) + b.pagex + b.pageOffsetX, 0); c.globalAlpha = 1 - 3 * b.pageAnimTime; switch (b.currentLevelPage) { case 0: c.drawImage(a.Resources.tooltips01Image, e, e, q, k, b.minX + r / 2 - 4, b.minY + m / 2 - 6.7 - u.time, 8, 2); break; case 1: c.drawImage(a.Resources.tooltips01Image, e, k, q, k, b.minX + r / 2 - 4, b.minY + m / 2 - 6.7 - u.time, 8, 2); break; case 2: c.drawImage(a.Resources.tooltips01Image, e, f, q, k, b.minX + r / 2 - 4, b.minY + m / 2 - 6.7 - u.time, 8, 2); break; case 3: case 4: c.drawImage(a.Resources.tooltips01Image, e, p, q, k, b.minX + r / 2 - 4, b.minY + m / 2 - 6.7 - u.time, 8, 2) } c.globalAlpha = 1; c.restore(); for (g = 0; g < b.effects.length; g += 1) h = b.effects[g], h.useTransform || a.drawEffect(c, h, b) }; a.drawLevelPlay = function(c, b) { var g, h, l, r = b.maxX - b.minX, m = b.maxY - b.minY, n = a.getCanvasWidth(); g = a.getCanvasHeight(); n = a.screenToHud({ x: n, y: g }); c.lineWidth = N; switch (b.currentLevelPage) { case 0: c.drawImage(a.Resources.backdrop01Image, e, e, t, t, b.minX + r / 2 - 11.75, b.minY + m / 2 - 11.75, 23.5, 23.5); break; case 1: c.drawImage(a.Resources.backdrop01Image, t, e, t, t, b.minX + r / 2 - 11.75, b.minY + m / 2 - 11.75, 23.5, 23.5); break; case 2: c.drawImage(a.Resources.backdrop01Image, e, t, t, t, b.minX + r / 2 - 11.75, b.minY + m / 2 - 11.75, 23.5, 23.5); break; case 3: case 4: c.drawImage(a.Resources.backdrop01Image, t, t, t, t, b.minX + r / 2 - 11.75, b.minY + m / 2 - 11.75, 23.5, 23.5) } c.save(); c.translate(b.minX + r / 2, b.minY + m / 2); c.rotate(.15 * (-a.getTitleHeartbeat1().maxTime / 2 + a.getTitleHeartbeat1().time)); c.translate(-(b.minX + r / 2), -(b.minY + m / 2)); switch (b.grid.type) { case a.GridTypeEnum.Small: c.drawImage(a.Resources.effectsImage, e, e, x, k, b.minX + r / 2 - 10, b.minY - .1 + .5 * a.getTitleHeartbeat3().time, 20, 2 - a.getTitleHeartbeat3().time); break; case a.GridTypeEnum.Large: c.drawImage(a.Resources.effectsImage, e, e, x, k, b.minX + r / 2 - 10, b.minY + .9 + .5 * a.getTitleHeartbeat3().time, 20, 2 - a.getTitleHeartbeat3().time) } c.drawImage(a.Resources.backdrop02Image, e, e, x, x, b.minX + r / 2 - 11.75, b.minY + m / 2 - 11.75, 23.5, 23.5); c.restore(); c.drawImage(a.Resources.effectsImage, e, f, f, t, b.minX + r / 2 - 2, b.minY - .5, 4, 10); c.globalAlpha = .7; c.drawImage(a.Resources.effectsImage, q, f, f, q, b.minX + r / 2 + 3, b.minY + 3, 4, 8); c.globalAlpha = 1; c.save(); c.globalAlpha = .16; c.translate(b.minX + r / 2, b.minY + m / 2); c.rotate(.15 * (-a.getTitleHeartbeat1().maxTime / 2 + a.getTitleHeartbeat1().time) - .1 * b.gridTime); c.translate(-(b.minX + r / 2), -(b.minY + m / 2)); switch (b.grid.type) { case a.GridTypeEnum.Small: c.drawImage(a.Resources.effectsImage, e, v, x, k, b.minX + r / 2 - 10, b.minY - .1 + .5 * a.getTitleHeartbeat3().time, 20, 4 - a.getTitleHeartbeat3().time); break; case a.GridTypeEnum.Large: c.drawImage(a.Resources.effectsImage, e, v, x, k, b.minX + r / 2 - 10, b.minY + 1 + .5 * a.getTitleHeartbeat3().time, 20, 4 - a.getTitleHeartbeat3().time) } c.restore(); c.save(); c.translate(b.minX + r / 2, b.minY + m / 2); c.rotate(b.gridAngle + b.gridAngleOffset); c.translate(-(b.minX + r / 2), -(b.minY + m / 2)); c.save(); a.applyHudCameras(); c.save(); c.globalAlpha = .5; g = 1; l = n.y - 2.5; h = n.y; c.translate(g, h); c.rotate(.2 * -a.getTitleHeartbeat6().time); c.scale(.8 - .2 * a.getTitleHeartbeat3().time, .8); c.translate(-g, -h); c.drawImage(a.Resources.entities01Image, u, e, f, p, g, l, 2, 3); c.restore(); c.save(); c.globalAlpha = .5; g = .7; l = n.y - 2.5; h = n.y; c.translate(g, h); c.rotate(-.5 + .2 * a.getTitleHeartbeat6().time); c.scale(1.3 - .2 * a.getTitleHeartbeat3().time, 1.4); c.translate(-g, -h); c.drawImage(a.Resources.entities01Image, u, e, f, p, g, l, 2, 3); c.restore(); c.save(); c.globalAlpha = .5; g = 1.3; l = n.y - 2.5; h = n.y; c.translate(g, h); c.rotate(-.3 + .1 * a.getTitleHeartbeat6().time); c.scale(1 - .2 * a.getTitleHeartbeat2().time, 1); c.translate(-g, -h); c.drawImage(a.Resources.entities01Image, u, e, f, p, g, l, 2, 3); c.restore(); c.restore(); for (g = b.cells.length - 1; 0 <= g; --g) a.drawCell(c, b.cells[g]); for (g = 0; g < b.objects.length; ++g) if (h = b.objects[g], !h.destroyTime && !h.isDead && h.type === a.ObjectTypeEnum.Object1) { l = 0 < h.path.length ? h.path : h.referencePath; var A = { x: h.x, y: h.y }; for (h = 0; h < l.length; ++h) { 0 < h && (A = l[h - 1]); var D = l[h]; A && D && (c.save(), c.translate(A.x, A.y), c.rotate(a.vectorAngle(A.x, A.y, D.x, D.y)), c.translate(-A.x, -A.y), c.drawImage(a.Resources.effectsImage, e, z, x, k, A.x, A.y - .5, a.distance(A.x, A.y, D.x, D.y), 1), c.restore(), c.drawImage(a.Resources.effectsImage, w, q, k, k, D.x - .5, D.y - .5, 1, 1)) } } for (g = 0; g < b.objects.length; ++g) h = b.objects[g], a.drawObject(c, h, b); for (g = 0; g < b.effects.length; g += 1) l = b.effects[g], a.drawEffect(c, l, b); c.restore(); c.save(); c.globalAlpha = 1; c.translate(b.minX + r / 2, b.minY + m / 2); c.rotate(.15 * (-a.getTitleHeartbeat1().maxTime / 2 + a.getTitleHeartbeat1().time)); c.translate(-(b.minX + r / 2), -(b.minY + m / 2)); switch (b.grid.type) { case a.GridTypeEnum.Small: c.drawImage(a.Resources.effectsImage, e, k, x, k, b.minX + r / 2 - 10, b.minY - .1 + .5 * a.getTitleHeartbeat3().time, 20, 2 - a.getTitleHeartbeat3().time); break; case a.GridTypeEnum.Large: c.drawImage(a.Resources.effectsImage, e, k, x, k, b.minX + r / 2 - 10, b.minY + .9 + .5 * a.getTitleHeartbeat3().time, 20, 2 - a.getTitleHeartbeat3().time) } c.restore(); b.showReviewTip && (c.save(), a.applyHudCameras(), n = a.screenToHud({ x: a.getCanvasWidth(), y: a.getCanvasHeight() }), c.fillStyle = "rgba(0, 0, 0, 0.7)", c.fillRect(0, 0, n.x, n.y), c.restore(), c.save(), c.scale(1 - 2 * b.showReviewTipTime, 1 - 2 * b.showReviewTipTime), c.translate(0, 10 * b.showReviewTipTime), c.drawImage(a.Resources.tooltips03Image, e, t, x, p, b.minX + r / 2 - 5 - .2 * a.getTitleHeartbeat1().time, b.minY + m / 2 - 1.5 - .2 * a.getTitleHeartbeat1().time, 10 + .4 * a.getTitleHeartbeat1().time, 3 + .4 * a.getTitleHeartbeat1().time), c.restore()); c.save(); a.applyHudCameras(); b.mode !== a.GameSceneModeEnum.LevelPlay || 0 !== b.currentLevel && 1 !== b.currentLevel && 2 !== b.currentLevel && 9 !== b.currentLevel && 20 !== b.currentLevel || 0 !== b.tutorialStep || (c.translate(0, 20 * b.tutorialStepChangeTime), c.globalAlpha = .3, c.fillStyle = "rgb(0, 0, 0)", c.fillRect(0, n.y / 2 - 2, n.x, 4), c.globalAlpha = 1); c.restore(); if (0 === b.currentLevel) switch (g = a.getTitleHeartbeat2(), a.getTitleHeartbeat1(), n = a.getTitleHeartbeat7(), b.tutorialStep) { case 0: c.drawImage(a.Resources.tooltips03Image, e, e, w, f, b.minX + r / 2 - 6, b.minY + m / 2 - 3.5 + .5 * g.time - 20 * b.tutorialStepChangeTime, 12, 4); c.drawImage(a.Resources.tooltips03Image, e, f, w, k, b.minX + r / 2 - 3 + .2 * g.time, b.minY + m / 2 + .5 + 20 * b.tutorialStepChangeTime, 9, 1.5); break; case 1: c.drawImage(a.Resources.tooltips03Image, e, p, t, k, b.minX + r / 2 - 6 + 40 * b.tutorialStepChangeTime, b.minY + m / 2 - 6.5 + .5 * g.time, 7.5, 1.5); c.globalAlpha = .5; c.drawImage(a.Resources.tooltips03Image, p, v, f, p, b.minX + r / 2 - 1.6 + 20 * b.tutorialStepChangeTime, b.minY + m / 2 - 5, 9, 13.5); c.globalAlpha = 1; c.drawImage(a.Resources.tooltips03Image, e, q, p, w, b.minX + r / 2 + 1 + 20 * b.tutorialStepChangeTime, b.minY + m / 2, 3 * 1.2, 6 * 1.2); c.drawImage(a.Resources.tooltips03Image, t, v, p, k, b.minX + r / 2 + 3 + 20 * b.tutorialStepChangeTime, b.minY + m / 2 - 5, 3 * 1.2, 1.2); 0 === n.direction && (c.globalAlpha = n.time < .25 * n.maxTime ? 8 * n.time : n.time > .75 * n.maxTime ? 1 - 8 * n.time : 1, g = n.time > .5 * n.maxTime ? 1.5 * (n.maxTime - n.time) : 1.5 * n.time, c.drawImage(a.Resources.tooltips03Image, w, e, p, f, b.minX + 1 + 6 * g + r / 2 + 1 + 20 * b.tutorialStepChangeTime, b.minY + m / 2 + 12 * n.time, 3 * 1.2, 2.4), c.globalAlpha = 1); c.drawImage(a.Resources.tooltips03Image, p, q, v, p, b.minX + r / 2 - 1 + 20 * b.tutorialStepChangeTime, b.minY + m / 2 - 4, 8.4, 3 * 1.2); break; case 2: c.globalAlpha = .5, c.drawImage(a.Resources.tooltips03Image, p, v, f, p, b.minX + r / 2 - 1.6 + 20 * b.tutorialStepChangeTime, b.minY + m / 2 - 5, 9, 13.5), c.globalAlpha = 1, c.drawImage(a.Resources.tooltips03Image, e, q, p, w, b.minX + r / 2 + 1 + 20 * b.tutorialStepChangeTime, b.minY + m / 2, 3 * 1.2, 6 * 1.2), c.drawImage(a.Resources.tooltips03Image, t, v, p, k, b.minX + r / 2 + 3 + 20 * b.tutorialStepChangeTime, b.minY + m / 2 - 5, 3 * 1.2, 1.2), 0 === n.direction && (c.globalAlpha = n.time < .25 * n.maxTime ? 8 * n.time : n.time > .75 * n.maxTime ? 1 - 8 * n.time : 1, g = n.time > .5 * n.maxTime ? 1.5 * (n.maxTime - n.time) : 1.5 * n.time, c.drawImage(a.Resources.tooltips03Image, w, e, p, f, b.minX + 1 + 6 * g + r / 2 + 1 + 20 * b.tutorialStepChangeTime, b.minY + m / 2 + 12 * n.time, 3 * 1.2, 2.4), c.globalAlpha = 1), c.drawImage(a.Resources.tooltips03Image, p, q, v, p, b.minX + r / 2 - 1 + 20 * b.tutorialStepChangeTime, b.minY + m / 2 - 4, 8.4, 3 * 1.2) } if (1 === b.currentLevel) switch (g = a.getTitleHeartbeat2(), a.getTitleHeartbeat1(), b.tutorialStep) { case 0: c.drawImage(a.Resources.tooltips04Image, e, p, x, p, b.minX + r / 2 - 7.5, b.minY + m / 2 - 4 + .5 * g.time - 20 * b.tutorialStepChangeTime, 15, 4.5); c.drawImage(a.Resources.tooltips03Image, e, f, w, k, b.minX + r / 2 - 3 + .2 * g.time, b.minY + m / 2 + .5 + 20 * b.tutorialStepChangeTime, 9, 1.5); break; case 1: c.drawImage(a.Resources.tooltips03Image, e, p, t, k, b.minX + r / 2 - 6 + 20 * b.tutorialStepChangeTime, b.minY + m / 2 - 6.5 + .5 * g.time, 7.5, 1.5) } if (2 === b.currentLevel) switch (g = a.getTitleHeartbeat2(), a.getTitleHeartbeat1(), b.tutorialStep) { case 0: c.drawImage(a.Resources.tooltips04Image, e, e, x, p, b.minX + r / 2 - 7.5, b.minY + m / 2 - 4 + .5 * g.time - 20 * b.tutorialStepChangeTime, 15, 4.5), c.drawImage(a.Resources.tooltips03Image, e, f, w, k, b.minX + r / 2 - 3 + .2 * g.time, b.minY + m / 2 + .5 + 20 * b.tutorialStepChangeTime, 9, 1.5) } if (3 === b.currentLevel) switch (g = a.getTitleHeartbeat2(), a.getTitleHeartbeat1(), b.tutorialStep) { case 0: c.drawImage(a.Resources.tooltips04Image, e, w, x, q, b.minX + r / 2 - 7.5, b.minY + m / 2 - 4 + .5 * g.time - 20 * b.tutorialStepChangeTime, 15, 6), c.drawImage(a.Resources.tooltips03Image, e, f, w, k, b.minX + r / 2 - 3 + .2 * g.time, b.minY + m / 2 + 2.5 + 20 * b.tutorialStepChangeTime, 9, 1.5) } if (9 === b.currentLevel) switch (g = a.getTitleHeartbeat2(), a.getTitleHeartbeat1(), b.tutorialStep) { case 0: c.drawImage(a.Resources.tooltips05Image, e, p, x, p, b.minX + r / 2 - 7.5, b.minY + m / 2 - 4 + .5 * g.time - 20 * b.tutorialStepChangeTime, 15, 4.5), c.drawImage(a.Resources.tooltips03Image, e, f, w, k, b.minX + r / 2 - 3 + .2 * g.time, b.minY + m / 2 + 1 + 20 * b.tutorialStepChangeTime, 9, 1.5) } if (11 === b.currentLevel) switch (g = a.getTitleHeartbeat2(), a.getTitleHeartbeat1(), b.tutorialStep) { case 0: c.drawImage(a.Resources.tooltips05Image, e, w, x, q, b.minX + r / 2 - 7.5, b.minY + m / 2 - 4 + .5 * g.time - 20 * b.tutorialStepChangeTime, 15, 6), c.drawImage(a.Resources.tooltips03Image, e, f, w, k, b.minX + r / 2 - 3 + .2 * g.time, b.minY + m / 2 + 2.5 + 20 * b.tutorialStepChangeTime, 9, 1.5) } if (20 === b.currentLevel) switch (g = a.getTitleHeartbeat2(), a.getTitleHeartbeat1(), b.tutorialStep) { case 0: c.drawImage(a.Resources.tooltips06Image, e, p, x, f, b.minX + r / 2 - 7.5, b.minY + m / 2 - 3 + .5 * g.time - 20 * b.tutorialStepChangeTime, 15, 3), c.drawImage(a.Resources.tooltips03Image, e, f, w, k, b.minX + r / 2 - 3 + .2 * g.time, b.minY + m / 2 + 1.5 + 20 * b.tutorialStepChangeTime, 9, 1.5) } if (21 === b.currentLevel) switch (g = a.getTitleHeartbeat2(), a.getTitleHeartbeat1(), b.tutorialStep) { case 0: c.drawImage(a.Resources.tooltips06Image, e, w, x, q, b.minX + r / 2 - 7.5, b.minY + m / 2 - 4 + .5 * g.time - 20 * b.tutorialStepChangeTime, 15, 6), c.drawImage(a.Resources.tooltips03Image, e, f, w, k, b.minX + r / 2 - 3 + .2 * g.time, b.minY + m / 2 + 2.5 + 20 * b.tutorialStepChangeTime, 9, 1.5) } if (b.isChallenge) switch (g = a.getTitleHeartbeat2(), a.getTitleHeartbeat1(), b.tutorialStep) { case 0: c.drawImage(a.Resources.tooltips05Image, e, e, x, p, b.minX + r / 2 - 7.5, b.minY + m / 2 - 4 + .5 * g.time - 20 * b.tutorialStepChangeTime, 15, 4.5), c.drawImage(a.Resources.tooltips03Image, e, f, w, k, b.minX + r / 2 - 3 + .2 * g.time, b.minY + m / 2 + 1.5 + 20 * b.tutorialStepChangeTime, 9, 1.5) } a.isDemo && 60 < b.currentLevel && !b.isChallenge && c.drawImage(a.Resources.adsImage, e, e, x, x, b.minX, b.minY, r, m) }; a.drawLevelPlayHud = function(c, b, g) { var h; if (a.getCurrentGameState() === a.GameStateEnum.GameRun) if (a.getLayoutOrientation() === a.LayoutOrientationEnum.Landscape) { if (c.drawImage(a.Resources.hud02Image, e, p, f, k, .2, .2, 2, 1), c.drawImage(a.Resources.tooltips01Image, e, z, f, k, .2, -.25, 2, 1), a.drawNumber(c, b.moveCount.toString(), 1.2, 1, .55 + b.movecountTime, 0, !1), c.drawImage(a.Resources.hud02Image, e, p, f, k, .2, 1.4, 2, 1), c.drawImage(a.Resources.tooltips01Image, f, z, f, k, .2, .95, 2, 1), a.drawNumber(c, b.currentScore.toString(), 1.2, 2.1, .4 + b.scoreTime, 2, !1), 0 < b.currentBest && (c.drawImage(a.Resources.tooltips02Image, w, t, f, k, .3, 2.15, .9, .45), a.drawNumber(c, b.currentBest.toString(), 1.6, 2.5, .25, 1, !1)), c.drawImage(a.Resources.hud02Image, f, p, f, k, 0, 2.6, 2, 1), c.drawImage(a.Resources.tooltips01Image, q, z, f, k, .2, 2.3, 2, 1), a.drawNumber(c, b.currencyCount.toString(), 1.2, 3.3, .34, 3, !1), a.shopAvailable && c.drawImage(a.Resources.hud01Image, p, w, k, k, .5, 3.2, .7, .7), b.activeObject && !a.isModalTip()) { c.drawImage(a.Resources.tooltips02Image, w, k, f, f, g.x - 1.8 + 6 * b.activeObjectChangedTime, 1.6, 1.5, 1.5); var l = 0, r = !1; for (h = 0; h < b.boosters.length; ++h) a.drawBooster(c, b.boosters[h], b, g.x - 1.5 + 12 * b.activeObjectChangedTime, 2.8 + l), l += 1.5, 0 === b.boosters[h].value && (r = !0); r && c.drawImage(a.Resources.tooltips03Image, w, f, q, k, g.x - 5.8 + 6 * b.activeObjectChangedTime, .3 - .2 * a.getTitleHeartbeat2().time, 4, 1); c.drawImage(a.Resources.tooltips02Image, w, e, p, k, g.x - 2.1 + 4 * b.activeObjectChangedTime, 1.3 - 4 * b.activeObjectChangedTime + .4 * a.getTitleHeartbeat2().time, 3 * .7, .7 + 8 * b.activeObjectChangedTime) } } else { if (c.drawImage(a.Resources.hud02Image, e, p, f, k, .2, .2, 2, 1), c.drawImage(a.Resources.tooltips01Image, e, z, f, k, .2, -.25, 2, 1), a.drawNumber(c, b.moveCount.toString(), 1.2, 1, .55 + b.movecountTime, 0, !1), c.drawImage(a.Resources.hud02Image, e, p, f, k, 2.2, .2, 2, 1), c.drawImage(a.Resources.tooltips01Image, f, z, f, k, 2.2, -.25, 2, 1), a.drawNumber(c, b.currentScore.toString(), 3.2, .9, .4 + b.scoreTime, 2, !1), 0 < b.currentBest && (c.drawImage(a.Resources.tooltips02Image, w, t, f, k, 2.2, .9, .9, .45), a.drawNumber(c, b.currentBest.toString(), 3.6, 1.26, .25, 1, !1)), c.drawImage(a.Resources.hud02Image, f, p, f, k, 4.2, .1, 2, 1), c.drawImage(a.Resources.tooltips01Image, q, z, f, k, 4.4, -.25, 2, 1), a.drawNumber(c, b.currencyCount.toString(), 5.4, .8, .34, 3, !1), a.shopAvailable && c.drawImage(a.Resources.hud01Image, p, w, k, k, 5.4, .7, .7, .7), b.activeObject && !a.isModalTip()) { c.drawImage(a.Resources.tooltips02Image, w, k, f, f, .3, g.y - 1.5 + 6 * b.activeObjectChangedTime, 1.5, 1.5); l = 0; r = !1; for (h = 0; h < b.boosters.length; ++h) a.drawBooster(c, b.boosters[h], b, 2 + l, g.y - 1.5 + 12 * b.activeObjectChangedTime), l += 1.5, 0 === b.boosters[h].value && (r = !0); r && c.drawImage(a.Resources.tooltips03Image, w, f, q, k, .3, g.y - 2.5 + 6 * b.activeObjectChangedTime - .2 * a.getTitleHeartbeat2().time, 4, 1); c.drawImage(a.Resources.tooltips02Image, w, e, p, k, 0 - 4 * b.activeObjectChangedTime, g.y - 1.7 + 4 * b.activeObjectChangedTime + .4 * a.getTitleHeartbeat2().time, 2.25 + 8 * b.activeObjectChangedTime, .75) } } else if (a.getCurrentGameState() === a.GameStateEnum.GameLost) { 1 > a.getGamePlayEndTime() && (h = Math.min(0, -(2 * (a.getGamePlayEndTime() - .6))), c.save(), c.translate(.5 * g.x, .5 * g.y), c.scale(1 + h, 1 + h), c.translate(-(.5 * g.x), -(.5 * g.y)), c.drawImage(a.Resources.tooltips02Image, e, e, w, w, g.x / 2 - 3, g.y / 2 - 3, 6, 6), c.translate(.5 * g.x, .5 * g.y), c.scale(1 + h, 1 + 3 * h), c.translate(-(.5 * g.x), -(.5 * g.y)), a.drawNumber(c, (b.currentLevel + 1).toString(), g.x / 2 - .1, g.y / 2 - .25, 1.2, 0, !1), c.restore(), h = Math.max(0, 10 * (a.getGamePlayEndTime() - .5)), c.save(), c.translate(.5 * g.x, .5 * g.y), c.scale(1 + h, 1 + h), c.rotate(-.15 + Math.max(0, a.getGamePlayEndTime() - .6)), c.translate(-(.5 * g.x), -(.5 * g.y)), b.busted ? c.drawImage(a.Resources.tooltips01Image, w, z, q, k, g.x / 2 - 2.2, g.y / 2 - 2.5, 4.8, 1.2) : c.drawImage(a.Resources.tooltips01Image, t, w, t, k, g.x / 2 - 3, g.y / 2 - 2.5, 6, 1.2), c.restore()); for (h = 0; h < b.lostObjects.length; ++h) a.drawObject(c, b.lostObjects[h], b); a.drawShopIcon(c); c.drawImage(a.Resources.tooltips02Image, w, q, p, k, g.x - 3, .3, 3, 1); c.drawImage(a.Resources.tooltips02Image, w, p, p, k, g.x - 2.45, .1, 3 * .6, .6); a.drawNumber(c, b.currentBest.toString(), g.x - 1.6, 1, .4, 1, !1); a.Resources.sponsorLogo && (h = 4, l = h * a.Resources.sponsorLogo.naturalHeight / a.Resources.sponsorLogo.naturalWidth, c.drawImage(a.Resources.sponsorLogo, 0, g.y - l - .1, h, l)) } else if (a.getCurrentGameState() === a.GameStateEnum.GameWon) { if (1.3 > a.getGamePlayEndTime()) { g = a.screenToHud({ x: a.getCanvasWidth(), y: a.getCanvasHeight() }); var l = g.x / 2, r = g.y / 2, m = Math.max(g.x, g.y), n = 0; for (h = 0; 3 > h; ++h) n = 30 * h, c.save(), c.beginPath(), c.translate(l, r), c.rotate(a.toRadians(n + b.animationAngle)), c.translate(-l, -r), c.moveTo(l - .1, r - .1), c.lineTo(l - .8, r - m), c.lineTo(l + 1.6, r - m), c.lineTo(l + .1, r - .1), c.lineTo(l + m, r - .8), c.lineTo(l + m, r + 1.6), c.lineTo(l + .1, r + .1), c.lineTo(l + .8, r + m), c.lineTo(l - 1.6, r + m), c.lineTo(l - .1, r + .1), c.lineTo(l - m, r + .8), c.lineTo(l - m, r - 1.6), c.lineTo(l - .1, r - .1), c.closePath(), c.clip(), c.globalAlpha = Math.min(.6, 1.3 - a.getGamePlayEndTime()), c.drawImage(a.Resources.background02Image, e, e, t, t, l - m, r - m, 2 * m, 2 * m), c.globalAlpha = 1, c.restore() }!b.isChallenge && 1 > a.getGamePlayEndTime() ? (h = Math.min(0, -(2 * (a.getGamePlayEndTime() - .6))), c.save(), c.translate(.5 * g.x, .5 * g.y), c.scale(1 + h, 1 + h), c.translate(-(.5 * g.x), -(.5 * g.y)), c.drawImage(a.Resources.tooltips01Image, q, e, w, w, g.x / 2 - 3, g.y / 2 - 3, 6, 6), c.drawImage(a.Resources.tooltips02Image, u, f, f, k, g.x / 2 - .8, g.y / 2 - 4, 1.6, .8), c.translate(.5 * g.x, .5 * g.y), c.scale(1 + h, 1 + 3 * h), c.translate(-(.5 * g.x), -(.5 * g.y)), h = b.drawScore === b.currentScore ? .3 * a.getTitleHeartbeat2().time : a.getTitleHeartbeat8().time, a.drawNumber(c, b.drawScore.toString(), g.x / 2 - .1, g.y / 2 - 2.7, .6 + h, 2, !1), c.restore(), h = Math.max(0, 10 * (a.getGamePlayEndTime() - .5)), c.save(), c.translate(.5 * g.x, .5 * g.y), c.scale(1 + h, 1 + h), c.rotate(-.15 + Math.max(0, a.getGamePlayEndTime() - .6)), c.translate(-(.5 * g.x), -(.5 * g.y)), c.drawImage(a.Resources.tooltips01Image, e, w, t, k, g.x / 2 - 3, g.y / 2, 6, 1.2), c.restore()) : 1 > a.getGamePlayEndTime() && (h = Math.min(0, -(2 * (a.getGamePlayEndTime() - .6))), c.save(), c.translate(.5 * g.x, .5 * g.y), c.scale(1 + h, 1 + h), c.translate(-(.5 * g.x), -(.5 * g.y)), c.drawImage(a.Resources.tooltips02Image, u, f, f, k, g.x / 2 - 1.5, g.y / 2 - 2, 3, 1.5), c.translate(.5 * g.x, .5 * g.y), c.scale(1 + h, 1 + 3 * h), c.translate(-(.5 * g.x), -(.5 * g.y)), h = b.drawScore === b.currentScore ? .3 * a.getTitleHeartbeat2().time : a.getTitleHeartbeat8().time, a.drawNumber(c, b.drawScore.toString(), g.x / 2 - .1, g.y / 2 + .2, 1 + h, 2, !1), c.restore()); !b.isChallenge && 1 > a.getGamePlayEndTime() && (h = Math.max(0, 7 * a.getGamePlayEndTime()), c.save(), c.translate(.5 * g.x, .5 * g.y), c.scale(1 + h, 1 + h), c.translate(-(.5 * g.x), -(.5 * g.y)), 0 < b.currentStars && c.drawImage(a.Resources.tooltips01Image, u, v, f, f, g.x / 2 - 2.195, g.y / 2 - 3.31, 2, 2), 1 < b.currentStars && c.drawImage(a.Resources.tooltips01Image, u, v, f, f, g.x / 2 - 1.03, g.y / 2 - 3.2, 2, 2), 2 < b.currentStars && c.drawImage(a.Resources.tooltips01Image, u, v, f, f, g.x / 2 + .08, g.y / 2 - 3.32, 2, 2), c.restore()); if (!b.isChallenge) for (h = 0; h < b.wonObjects.length; ++h) a.drawObject(c, b.wonObjects[h], b); a.drawShopIcon(c); c.drawImage(a.Resources.tooltips02Image, w, q, p, k, g.x - 3, .3, 3, 1); c.drawImage(a.Resources.tooltips02Image, w, p, p, k, g.x - 2.45, .1, 3 * .6, .6); a.drawNumber(c, b.currentBest.toString(), g.x - 1.55, 1, .4, 1, !1); b.newBest && 1 === a.getTitleHeartbeat2().direction && c.drawImage(a.Resources.tooltips02Image, u, k, f, k, g.x - 2.1, .95, 1.2, .6); a.Resources.sponsorLogo && (h = 4, l = h * a.Resources.sponsorLogo.naturalHeight / a.Resources.sponsorLogo.naturalWidth, c.drawImage(a.Resources.sponsorLogo, 0, g.y - l - .1, h, l)) } 0 < b.badgeNotificationTime && (c.save(), c.translate(0, -Math.max(0, 20 * (b.badgeNotificationTime - 2))), h = .2 * (1 - (b.badgeNotificationTime - 2)), c.globalAlpha = Math.min(1, b.badgeNotificationTime), c.drawImage(a.Resources.tooltips06Image, e, t, t, k, g.x / 2 - 2.5, 2.3 + h, 5, 1), c.drawImage(a.Resources.tooltips07Image, e, z, t, k, g.x / 2 - 2.5, 3 + h, 5, 1), c.drawImage(a.Resources.tooltips06Image, t, t, t, k, g.x / 2 - 2.5, 3.7 + h, 5, 1), c.restore()); 0 < b.titleNotificationTime && (c.save(), c.translate(0, -Math.max(0, 20 * (b.titleNotificationTime - 2))), h = .2 * (1 - (b.titleNotificationTime - 2)), c.globalAlpha = Math.min(1, b.titleNotificationTime), c.drawImage(a.Resources.tooltips06Image, e, t, t, k, g.x / 2 - 2.5, 2.3 + h, 5, 1), c.drawImage(a.Resources.tooltips07Image, t, z, t, k, g.x / 2 - 2.5, 3 + h, 5, 1), c.drawImage(a.Resources.tooltips06Image, t, t, t, k, g.x / 2 - 2.5, 3.7 + h, 5, 1), c.restore()) }; a.drawNumber = function(c, b, f, h, l, p, m, n) { var q = f - .35 * b.length - (m ? -.4 : 0), t = f + (m ? .4 : 0); f = p * k; var v = a.Resources.hud02Image; 2 < p && (f = u + (p - 3) * k, v = a.Resources.hud01Image); c.save(); c.translate(t, h); c.scale(l, l); if (n) switch (n) { case a.RotationEnum.Quarter: c.rotate(-Math.PI / 2); break; case a.RotationEnum.Half: c.rotate(-Math.PI); break; case a.RotationEnum.ThreeQuarter: c.rotate(Math.PI / 2) } c.translate(-t, -h); m && (c.drawImage(v, u, f, k, k, q, h - 1, 1, 1), q += .8); l = 0; for (p = b.length; l < p; l += 1) m = b.charAt(l), m = parseInt(m, 10) * k * .8, c.drawImage(v, e + m, f, .77 * k, k, q, h - 1, .8, 1), q += .7; c.restore() }; a.drawEffect = function(c, b, g) { var h = c.globalAlpha; c.save(); b.direction === a.DirectionEnum.Left && (c.translate(2 * b.x, 0), c.scale(-1, 1)); c.translate(b.x, b.y); 0 <= b.scaleTime ? c.scale(b.scaleFactor * Math.min(1, b.scaleTime), b.scaleFactor * Math.min(1, b.scaleTime)) : c.scale(b.scaleFactor, b.scaleFactor); c.translate(-b.x, -b.y); c.translate(b.x, b.y); c.rotate(b.angle); c.translate(-b.x, -b.y); b.selfDestroyTime < b.startFadeTime && (c.globalAlpha = b.selfDestroyTime); switch (b.type) { case a.EffectTypeEnum.BubbleEffect: c.drawImage(a.Resources.effectsImage, f, f, f, f, b.x - 1, b.y - 1, 2, 2); break; case a.EffectTypeEnum.PangEffect: c.drawImage(a.Resources.effectsImage, u, f, f, f, b.x - 1, b.y - 1, 2, 2); break; case a.EffectTypeEnum.StarEffect: switch (b.subType) { case 1: c.drawImage(a.Resources.effectsImage, w, f, f, f, b.x - 1, b.y - 1, 2, 2); break; default: c.drawImage(a.Resources.effectsImage, f, f, f, f, b.x - 1, b.y - 1, 2, 2) } break; case a.EffectTypeEnum.PebbleEffect: switch (b.subType) { case 1: c.drawImage(a.Resources.effectsImage, f, f, f, f, b.x - 1, b.y - 1, 2, 2); break; case 2: c.drawImage(a.Resources.effectsImage, f, q, f, f, b.x - 1, b.y - 1, 2, 2); break; case 3: c.drawImage(a.Resources.entities01Image, q, q, f, f, b.x - 1, b.y - 1, 2, 2) } break; case a.EffectTypeEnum.NumberEffect: a.drawNumber(c, b.number.toString(), b.x - .5, b.y - .5, 1, b.color, b.hasX, g.gridRotationTarget); break; case a.EffectTypeEnum.SpeedEffect: a.drawObject(c, b.activeObject, g, b.x, b.y, !0); break; case a.EffectTypeEnum.BoosterEffect: switch (b.boosterType) { case a.BoosterTypeEnum.Speed: c.drawImage(a.Resources.tooltips02Image, f, u, f, f, b.x - 2, b.y - 1, 4, 4); break; case a.BoosterTypeEnum.Shield: c.drawImage(a.Resources.tooltips02Image, q, u, f, f, b.x - 2, b.y - 1, 4, 4); break; case a.BoosterTypeEnum.Shadow: c.drawImage(a.Resources.tooltips02Image, w, u, f, f, b.x - 2, b.y - 1, 4, 4) } break; case a.EffectTypeEnum.ProjectileEffect: switch (b.objectType) { case a.ObjectTypeEnum.Object1: c.drawImage(a.Resources.entities01Image, q, q, f, f, b.x - 1, b.y - 1, 2, 2) } break; case a.EffectTypeEnum.CoinEffect: c.drawImage(a.Resources.entities01Image, u, w, f, f, b.x - 1, b.y - 1, 2, 2); break; default: c.drawImage(a.Resources.effectsImage, e, e, k, k, b.x - .5, b.y - .5, 1, 1) } c.globalAlpha = h; c.restore() }; a.drawCell = function(c, b) { var g = b.heartBeats[0], h = b.x - 1, k = b.y - 1; c.save(); c.translate(b.x, b.y); c.scale(b.scaleFactor + 1.5 * b.scaleFactorTime, b.scaleFactor + 1.5 * b.scaleFactorTime); c.translate(-b.x, -b.y); c.translate(b.x, b.y); c.rotate(b.angle); c.translate(-b.x, -b.y); switch (b.type) { case a.CellTypeEnum.Cell1: c.globalAlpha = Math.max(.17, .3 - .3 * g.time), c.drawImage(a.Resources.entities02Image, e, e, f, f, h, k, 2, 2) } c.restore() }; a.drawObject = function(c, b, g, h, l, r) { var m = b.heartBeats[0], n = b.heartBeats[1], A = b.heartBeats[2], D = b.heartBeats[3], N = b.heartBeats[5]; h = h ? h - 2 : b.x - 2; var F = l ? l - 2 : b.y - 2; b.type !== a.ObjectTypeEnum.Object1 && b.type !== a.ObjectTypeEnum.Object2 && (h += 1, F += 1); l = .15 * m.time; n = .15 * n.time; c.save(); var J = b.scaleFactor; b.type === a.ObjectTypeEnum.Object2 && (J *= .8); var U = b.isDead || b.destroyTime ? b.deathAngle : 0; r || (c.translate(b.x, b.y), c.scale(2.3 * b.destroyTime + Math.max(0, J + 1.5 * b.scaleFactorTime - b.spawnTime), 2.3 * b.destroyTime + Math.max(0, J + 1.5 * b.scaleFactorTime - b.spawnTime)), c.translate(-b.x, -b.y)); r || g.activeObject !== b || b.destroyTime || b.isDead || c.translate(0, .2 * -N.time); r || (c.translate(b.x, b.y), c.rotate(b.angle + U + (b.isDead ? .9 * -Math.PI : 0)), c.translate(-b.x, -b.y)); switch (b.type) { case a.ObjectTypeEnum.Object1: b.altface ? c.drawImage(a.Resources.entities02Image, w, e, q, p, h - l, F - n + .5, 4 + 2 * l, 3 + 2 * n) : (!0 === b.speedBooster && (c.drawImage(a.Resources.entities01Image, q, u, p, f, h - l - .5, F - n + .3, 3 * .7 + 2 * l, 1.4 + 2 * n), c.drawImage(a.Resources.entities01Image, v, u, p, f, h - l + 2.5, F - n + .3, 3 * .7 + 2 * l, 1.4 + 2 * n)), g.activeObject === b ? b.shadowBooster ? c.drawImage(a.Resources.entities02Image, f, q, q, q, h - l, F - n, 4 + 2 * l, 4 + 2 * n) : c.drawImage(a.Resources.entities02Image, f, e, q, q, h - l, F - n, 4 + 2 * l, 4 + 2 * n) : b.shadowBooster ? c.drawImage(a.Resources.entities02Image, w, q, q, q, h - l, F - n, 4 + 2 * l, 4 + 2 * n) : c.drawImage(a.Resources.entities01Image, e, e, q, q, h - l, F - n, 4 + 2 * l, 4 + 2 * n), !r && b.shieldBooster && (c.save(), c.globalAlpha = 1, c.translate(b.x, b.y), c.rotate(b.deathAngle), c.scale(1, 1), c.translate(-b.x, -b.y), c.drawImage(a.Resources.hud01Image, q, f, p, p, h, F, 4, 4), c.restore())); c.save(); !1 === b.altface ? (c.translate(b.x, b.y), c.scale(J + 2.5 * b.scaleFactorTime, J + 2.5 * b.scaleFactorTime), c.translate(-b.x, -b.y), 0 === A.direction ? A.time > A.maxTime - .5 ? 0 === D.direction ? c.drawImage(a.Resources.entities01Image, f, u, f, k, h + 1 - l, F + 1.75 - n, 2 + 2 * l, 1 + 2 * n) : c.drawImage(a.Resources.entities01Image, f, z, f, k, h + 1 - l, F + 1.75 - n, 2 + 2 * l, 1 + 2 * n) : c.drawImage(a.Resources.entities01Image, e, u, f, k, h + 1 - l, F + 1.75 - n, 2 + 2 * l, 1 + 2 * n) : c.drawImage(a.Resources.entities01Image, e, z, f, k, h + 1 - l, F + 1.75 - n, 2 + 2 * l, 1 + 2 * n)) : .2 > b.heartBeats[4].time || .6 < b.heartBeats[4].time ? c.drawImage(a.Resources.entities02Image, e, u, w, f, h - 1 - l, F + .25 - n, 6 + 2 * l, 2 + 2 * n) : c.drawImage(a.Resources.entities02Image, w, u, q, f, h + .1 - l, F + .7 - n, 4 + 2 * l, 2 + 2 * n); c.restore(); break; case a.ObjectTypeEnum.Object2: b.chaser ? c.drawImage(a.Resources.entities01Image, q, q, q, q, h - l, F - n, 4 + 2 * l, 4 + 2 * n) : c.drawImage(a.Resources.entities01Image, q, e, q, q, h - l, F - n, 4 + 2 * l, 4 + 2 * n); break; case a.ObjectTypeEnum.Object3: c.drawImage(a.Resources.entities01Image, u, w, f, f, h - .5 * n, F - .5 * n, 2 + n, 2 + n); a.drawNumber(c, b.points.toString(), h + .95, F + 1.32, .8, 3, !1); b.destroyTime || b.isDead || (c.drawImage(a.Resources.entities01Image, e, q, q, q, h - 1 - l, F - 1 - n, 4 + 2 * l, 4 + 2 * n), 1 < g.bonusFactor && a.drawNumber(c, g.bonusFactor.toString(), h + 1, F + 2, .8, 2, !0)); break; case a.ObjectTypeEnum.Object4: c.drawImage(a.Resources.entities01Image, u, q, f, f, h - n, F - n, 2 + 2 * n, 2 + 2 * n); b.destroyTime || b.isDead || c.drawImage(a.Resources.entities01Image, e, q, q, q, h - 1 - l, F - 1 - n, 4 + 2 * l, 4 + 2 * n); break; case a.ObjectTypeEnum.Object5: g = b.x; r = b.y; A = b.x2; D = b.y2; if (0 === m.direction || b.continuous) c.save(), c.globalAlpha = Math.min(1, .7 + 3 * a.getTitleHeartbeat8().time), c.translate(g, r), c.rotate(a.vectorAngle(g, r, A, D)), c.translate(-g, -r), c.drawImage(a.Resources.effectsImage, e, u, x, k, g, r - .5, a.distance(g, r, A, D), 1), c.restore(); 0 === m.direction || b.continuous ? (c.drawImage(a.Resources.effectsImage, u, t, f, f, g - 1 - l, r - 1 - n, 2 + 2 * l, 2 + 2 * n), c.drawImage(a.Resources.effectsImage, u, t, f, f, A - 1 - l, D - 1 - n, 2 + 2 * l, 2 + 2 * n)) : (c.drawImage(a.Resources.effectsImage, w, t, f, f, g - 1 - l, r - 1 - n, 2 + 2 * l, 2 + 2 * n), c.drawImage(a.Resources.effectsImage, w, t, f, f, A - 1 - l, D - 1 - n, 2 + 2 * l, 2 + 2 * n)); break; case a.ObjectTypeEnum.Object6: c.drawImage(a.Resources.entities03Image, e, e, f, f, h, F, 2, 2); break; case a.ObjectTypeEnum.Object7: case a.ObjectTypeEnum.Object8: case a.ObjectTypeEnum.Object9: case a.ObjectTypeEnum.Object10: case a.ObjectTypeEnum.Object11: case a.ObjectTypeEnum.Object12: case a.ObjectTypeEnum.Object13: case a.ObjectTypeEnum.Object14: case a.ObjectTypeEnum.Object16: case a.ObjectTypeEnum.Object15: c.drawImage(a.Resources.entities02Image, e, f, f, f, h - l, F - n, 2 + 2 * l, 2 + 2 * n) } c.restore(); c.restore() }; a.drawBooster = function(c, b, e, h, l) { a.getTitleHeartbeat2(); !1 === b.active && (c.globalAlpha = .5); switch (b.type) { case a.BoosterTypeEnum.Speed: c.drawImage(a.Resources.tooltips02Image, f, w, f, f, h, l, 1.5, 1.5); c.globalAlpha = 1; c.drawImage(a.Resources.tooltips02Image, f, u, f, f, h, l + 1, 1.5, 1.5); break; case a.BoosterTypeEnum.Shield: c.drawImage(a.Resources.tooltips02Image, q, w, f, f, h, l, 1.5, 1.5); c.globalAlpha = 1; c.drawImage(a.Resources.tooltips02Image, q, u, f, f, h, l + 1, 1.5, 1.5); break; case a.BoosterTypeEnum.Shadow: c.drawImage(a.Resources.tooltips02Image, w, w, f, f, h, l, 1.5, 1.5), c.globalAlpha = 1, c.drawImage(a.Resources.tooltips02Image, w, u, f, f, h, l + 1, 1.5, 1.5) } c.globalAlpha = 1; if (b.active) { if (c.drawImage(a.Resources.tooltips02Image, u, t, k, k, h + .7, l - .1, .85, .85), e.activeObject) { var r = e.currencyCount >= b.value ? !0 : !1, m = 0 < b.value ? Math.min(99, Math.floor(e.currencyCount / b.value)) : 1; switch (b.type) { case a.BoosterTypeEnum.Speed: e.activeObject.speedBooster ? c.drawImage(a.Resources.tooltips02Image, z, p, k, k, h + .6, l + .1, .7, .7) : r ? a.drawNumber(c, m.toString(), h + 1.14, l + .5, .35, 0, !1) : c.drawImage(a.Resources.tooltips02Image, z, t, k, k, h + .7, l - .1, .85, .85); break; case a.BoosterTypeEnum.Shield: e.activeObject.shieldBooster ? c.drawImage(a.Resources.tooltips02Image, z, p, k, k, h + .6, l + .1, .7, .7) : r ? a.drawNumber(c, m.toString(), h + 1.14, l + .5, .35, 0, !1) : c.drawImage(a.Resources.tooltips02Image, z, t, k, k, h + .7, l - .1, .85, .85); break; case a.BoosterTypeEnum.Shadow: e.activeObject.shadowBooster ? c.drawImage(a.Resources.tooltips02Image, z, p, k, k, h + .6, l + .1, .7, .7) : r ? a.drawNumber(c, m.toString(), h + 1.14, l + .5, .35, 0, !1) : c.drawImage(a.Resources.tooltips02Image, z, t, k, k, h + .7, l - .1, .85, .85) } } } else c.drawImage(a.Resources.tooltips02Image, z, q, k, k, h + .32, l + .25, .85, .85) } })(window.AquaThiefGame = window.AquaThiefGame || {}); (function(a, U) { function e() { ma = !0; a.stopSound("music1") } function k() { E = { menuTime: 1, rotationAngle: 0, offsetY: -10, velocityY: 10, showButtons: !1, bubbleTimes: [{ current: 0, max: 2 }, { current: .5, max: 2.3 }, { current: 1, max: 3 }], buttons: [{ type: a.CommandEnum.Play, time: .5, x: -2.25, y: 1, vx: 15, vy: 15, tx: -2.25, ty: 1.5 }, { type: a.CommandEnum.PlayChallenge, time: .5, x: .25, y: 1, vx: 15, vy: 15, tx: .25, ty: 1.5 }, { type: a.CommandEnum.Credits, time: .9, x: -3.5, y: .5, vx: 15, vy: 15, tx: -4, ty: -1.5 }, { type: a.CommandEnum.Sound, time: .3, x: 1.5, y: .5, vx: 15, vy: 15, tx: 2, ty: -3 }, { type: a.CommandEnum.Music, time: .3, x: 1.5, y: .5, vx: 15, vy: 15, tx: 2, ty: -1.5 }, { type: a.CommandEnum.Settings, time: 1, x: 1.5, y: .5, vx: 15, vy: 15, tx: 2, ty: 0 }, { type: a.CommandEnum.Achievements, time: .9, x: 1.9, y: 1.6, vx: 15, vy: 15, tx: 1.9, ty: 1.6 }] }; Z = [] } function f() { var c; B = a.GameStateEnum.GameLogo; var b = [{ type: "img", id: "backdrop1", src: "assets/img/" + M + "/backdrop1.png" }, { type: "img", id: "backdrop2", src: "assets/img/" + M + "/backdrop2.png" }, { type: "img", id: "background1", src: "assets/img/" + M + "/background1.png" }, { type: "img", id: "background2", src: "assets/img/" + M + "/background2.png" }, { type: "img", id: "credits", src: "assets/img/" + M + "/credits.png" }, { type: "img", id: "effects", src: "assets/img/" + M + "/effects.png" }, { type: "img", id: "entities1", src: "assets/img/" + M + "/entities1.png" }, { type: "img", id: "entities2", src: "assets/img/" + M + "/entities2.png" }, { type: "img", id: "entities3", src: "assets/img/" + M + "/entities3.png" }, { type: "img", id: "hud1", src: "assets/img/" + M + "/hud1.png" }, { type: "img", id: "hud2", src: "assets/img/" + M + "/hud2.png" }, { type: "img", id: "hud3", src: "assets/img/" + M + "/hud3.png" }, { type: "img", id: "ads", src: "assets/img/" + M + "/ads.png" }, { type: "img", id: "tooltips1", src: "assets/img/" + M + "/" + a.language + "/tooltips1.png" }, { type: "img", id: "tooltips2", src: "assets/img/" + M + "/" + a.language + "/tooltips2.png" }, { type: "img", id: "tooltips3", src: "assets/img/" + M + "/" + a.language + "/tooltips3.png" }, { type: "img", id: "tooltips4", src: "assets/img/" + M + "/" + a.language + "/tooltips4.png" }, { type: "img", id: "tooltips5", src: "assets/img/" + M + "/" + a.language + "/tooltips5.png" }, { type: "img", id: "tooltips6", src: "assets/img/" + M + "/" + a.language + "/tooltips6.png" }, { type: "img", id: "tooltips7", src: "assets/img/" + M + "/" + a.language + "/tooltips7.png" }]; if (a.preloadSounds) for (c in a.soundItems) a.soundItems.hasOwnProperty(c) && b.push({ type: "snd", id: c, src: a.soundItems[c] }); a.loadResources(b, q, p) } function p(a, c) { ra = { current: a, total: c } } function q(c) { a.Resources.adsImage = c.ads; a.Resources.effectsImage = c.effects; a.Resources.creditsImage = c.credits; a.Resources.hud01Image = c.hud1; a.Resources.hud02Image = c.hud2; a.Resources.hud03Image = c.hud3; a.Resources.background01Image = c.background1; a.Resources.background02Image = c.background2; a.Resources.backdrop01Image = c.backdrop1; a.Resources.backdrop02Image = c.backdrop2; a.Resources.entities01Image = c.entities1; a.Resources.entities02Image = c.entities2; a.Resources.entities03Image = c.entities3; a.Resources.tooltips01Image = c.tooltips1; a.Resources.tooltips02Image = c.tooltips2; a.Resources.tooltips03Image = c.tooltips3; a.Resources.tooltips04Image = c.tooltips4; a.Resources.tooltips05Image = c.tooltips5; a.Resources.tooltips06Image = c.tooltips6; a.Resources.tooltips07Image = c.tooltips7; a.loadShopItems(); a.loadLeaderboardItems(); sa = !0 } function t() { var c = (new Date).getTime(), b = Math.min((c - (ua || c)) / 1E3, .05); ua = c; window.requestAnimationFrame(t); P.setTransform(1, 0, 0, 1, 0, 0); P.clearRect(0, 0, C.width, C.height); z(b, b); a.draw(P, d) } function w(b) { oa = !1; d = new a.SceneManager; T = O = null; switch (b) { case a.GameSceneModeEnum.Achievements: d.mode !== a.GameSceneModeEnum.Achievements && (V = 0, K = { x: d.minX + (d.maxX - d.minX) / 2, y: d.maxY - 13.7 }, G = 1.5 * c().zoom, b = new a.Camera, b.multiply(Q), b = b.screenToCamera(C.width, C.height), H.x = b.x / 2 - K.x, H.y = b.y / 2 - K.y, y.angle = 0, y.sx = G, y.sy = G, d.previousMode = d.mode, d.resetPage(), d.pageBounce = !0, d.currentAchievementsPage = 0, d.mode = a.GameSceneModeEnum.Achievements, a.hideBannerAd(), d.achievementSetupTime = 1, d.pageAnimTime = .3, d.pageAnimDirection = a.DirectionEnum.Left, a.updateAchievements()); break; case a.GameSceneModeEnum.Credits: d.mode !== a.GameSceneModeEnum.Credits && (V = 0, K = { x: d.minX + (d.maxX - d.minX) / 2, y: d.maxY - 13.7 }, G = 1.5 * c().zoom, b = new a.Camera, b.multiply(Q), b = b.screenToCamera(C.width, C.height), H.x = b.x / 2 - K.x, H.y = b.y / 2 - K.y, y.angle = 0, y.sx = G, y.sy = G, d.previousMode = d.mode, d.resetPage(), d.pageBounce = !0, d.mode = a.GameSceneModeEnum.Credits, a.hideBannerAd()); break; case a.GameSceneModeEnum.Leaderboards: d.mode !== a.GameSceneModeEnum.Leaderboards && (V = 0, K = { x: d.minX + (d.maxX - d.minX) / 2, y: d.maxY - 13.7 }, G = 1.5 * c().zoom, b = new a.Camera, b.multiply(Q), b = b.screenToCamera(C.width, C.height), H.x = b.x / 2 - K.x, H.y = b.y / 2 - K.y, y.angle = 0, y.sx = G, y.sy = G, d.previousMode = d.mode, d.resetPage(), d.pageBounce = !0, d.currentLeaderboardsPage = 0, d.mode = a.GameSceneModeEnum.Leaderboards, a.hideBannerAd()); break; case a.GameSceneModeEnum.Shop: W(); break; case a.GameSceneModeEnum.WorldSelection: qa() } d && (I = [{ selected: !1, enabled: !0, type: a.CommandEnum.Menu, x: 0, y: 0, size: 1.5 }, { selected: !1, enabled: !0, type: a.CommandEnum.Home, x: 0, y: 0, size: 1.5 }, { selected: !1, enabled: !0, type: a.CommandEnum.Refresh, x: 0, y: 0, size: 1.5 }, { selected: !1, enabled: !0, type: a.CommandEnum.GoBack, x: 0, y: 0, size: 1.5 }, { selected: !1, enabled: !0, type: a.CommandEnum.Close, x: 0, y: 0, size: 1.5 }, { selected: !1, enabled: !0, type: a.CommandEnum.PreviousPage, x: 0, y: 0, size: 1.5 }, { selected: !1, enabled: !0, type: a.CommandEnum.NextPage, x: 0, y: 0, size: 1.5 }, { selected: !1, enabled: !0, type: a.CommandEnum.NextLevel, x: 0, y: 0, size: 2 }, { selected: !1, enabled: !0, type: a.CommandEnum.ReplayLevel, x: 0, y: 0, size: 2 }, { selected: !1, enabled: !0, type: a.CommandEnum.QuitLevel, x: 0, y: 0, size: 2 }, { selected: !1, enabled: !0, type: a.CommandEnum.Share, x: 0, y: 0, size: 1.5 }], v()); B = a.GameStateEnum.GameRun } function v() { if (d) { var c, b, e = I.length, f = a.screenToHud({ x: C.width, y: C.height }); for (b = 0; b < e; ++b) switch (c = I[b], c.type) { case a.CommandEnum.Menu: c.x = f.x - c.size; c.y = .1; break; case a.CommandEnum.Close: c.x = f.x - c.size; c.y = .1; break; case a.CommandEnum.Home: aa === a.LayoutOrientationEnum.Landscape ? (c.x = f.x - c.size, c.y = .1 + 2 * c.size) : (c.x = f.x - 3 * c.size, c.y = .1); break; case a.CommandEnum.GoBack: aa === a.LayoutOrientationEnum.Landscape ? (c.x = f.x - c.size, c.y = .1 + c.size) : (c.x = f.x - 2 * c.size, c.y = .1); break; case a.CommandEnum.Refresh: aa === a.LayoutOrientationEnum.Landscape ? (c.x = f.x - c.size, c.y = .1 + 3 * c.size) : (c.x = f.x - 4 * c.size, c.y = .1); break; case a.CommandEnum.NextLevel: c.x = f.x / 2 + 1.2; c.y = f.y / 2 + 1.5; break; case a.CommandEnum.Share: c.x = f.x / 2 - .75; c.y = f.y / 2 + 1.25; break; case a.CommandEnum.ReplayLevel: c.x = f.x / 2 + 1.2; c.y = f.y / 2 + 1.5; break; case a.CommandEnum.QuitLevel: c.x = f.x / 2 - 3.2, c.y = f.y / 2 + 1.5 } } } function u() { if (d) { var c, b, e = I.length; a.screenToHud({ x: C.width, y: C.height }); for (b = 0; b < e; ++b) switch (c = I[b], c.type) { case a.CommandEnum.Menu: c.enabled = B !== a.GameStateEnum.GameWon && B !== a.GameStateEnum.GameLost && d.mode !== a.GameSceneModeEnum.Shop && d.mode !== a.GameSceneModeEnum.Achievements && d.mode !== a.GameSceneModeEnum.Credits && d.mode !== a.GameSceneModeEnum.Leaderboards ? !0 : !1; break; case a.CommandEnum.Close: c.enabled = d.mode === a.GameSceneModeEnum.Credits || d.mode === a.GameSceneModeEnum.Shop || d.mode === a.GameSceneModeEnum.Achievements || d.mode === a.GameSceneModeEnum.Leaderboards ? !0 : !1; break; case a.CommandEnum.Home: c.enabled = d.menuExpanded || 0 < d.menuTime ? !0 : !1; break; case a.CommandEnum.GoBack: c.enabled = d.menuExpanded || 0 < d.menuTime ? !0 : !1; break; case a.CommandEnum.ReplayLevel: c.enabled = .5 > L && (B === a.GameStateEnum.GameLost || B === a.GameStateEnum.GameWon) ? !0 : !1; break; case a.CommandEnum.QuitLevel: c.enabled = .5 > L && (B === a.GameStateEnum.GameLost || B === a.GameStateEnum.GameWon) ? !0 : !1; break; case a.CommandEnum.Share: c.enabled = !1; break; case a.CommandEnum.NextLevel: c.enabled = !d.isChallenge && .5 > L && B === a.GameStateEnum.GameWon ? !0 : !1; break; case a.CommandEnum.Refresh: c.enabled = d.mode === a.GameSceneModeEnum.LevelPlay && (d.menuExpanded || 0 < d.menuTime) ? !0 : !1; break; case a.CommandEnum.PreviousPage: case a.CommandEnum.NextPage: c.enabled = !1 === d.menuExpanded && d.mode !== a.GameSceneModeEnum.LevelPlay && d.mode !== a.GameSceneModeEnum.Credits ? !0 : !1 } } } function z(c, f) { var g, m, R; if (!oa) { g = 0; for (m = S.length; g < m; g += 1) R = S[g], 0 === R.direction && R.time <= R.maxTime ? (R.time = Math.min(R.time + c * R.speed1, R.maxTime), R.time === R.maxTime && (R.direction = 1)) : 1 === R.direction && 0 <= R.time && (R.time = Math.max(R.time - c * R.speed2, 0), 0 === R.time && (R.direction = 0)); 0 < ba && (ba -= c, 0 > ba && (ba = 0)); 0 < ea && (ea -= c, 0 > ea && (ea = 0)); 0 < fa && (fa -= c, 0 >= fa && (fa = 0, B = a.GameStateEnum.GameLoading)); 0 < L && (L -= c, 0 > L && (L = 0)); 0 < ka && (ka -= c, 0 > ka && (ka = 0)); if (sa) if (B === a.GameStateEnum.GameLoading) B = ta ? a.GameStateEnum.GameIntro : a.GameStateEnum.GameMenu, ta || (X = 0, k()), a.playSound("wee"), setTimeout(function() { a.playSound("music1") }, 500), a.showBannerAd(); else if (B === a.GameStateEnum.GameIntro) 0 < X && (X -= f, 0 >= X && (B = a.GameStateEnum.GameMenu, X = 0, k())); else if (B === a.GameStateEnum.GameMenu) ma && (ma = !1, a.playSound("music1")), la && clearTimeout(la), la = setTimeout(e, 500), x(f); else if (B === a.GameStateEnum.GameRun || B === a.GameStateEnum.GameLost || B === a.GameStateEnum.GameWon) ma && (ma = !1, a.playSound("music1")), la && clearTimeout(la), la = setTimeout(e, 500), d.update(c, ca), N(c), B === a.GameStateEnum.GameRun ? b(c) : B === a.GameStateEnum.GameLost ? l(c) : B === a.GameStateEnum.GameWon && h(c), u(), r(c, f, K) } } function x(c) { var b, d, e = a.screenToHud({ x: a.getCanvasWidth(), y: a.getCanvasHeight() }); for (b = 0; b < Z.length;) d = Z[b], d.update(c), 0 === d.selfDestroyTime ? Z.splice(b, 1) : b += 1; 0 < E.menuTime && (E.menuTime -= c, 0 > E.menuTime && (E.menuTime = 0)); 0 > E.offsetY && (E.velocityY += 9.78 * c, E.offsetY += 2 * c * E.velocityY, 0 < E.offsetY && (E.offsetY = 0, .5 < E.velocityY ? (E.velocityY = .3 * -E.velocityY, E.offsetY += c * E.velocityY, E.showButtons || (E.showButtons = !0)) : E.velocityY = 0)); for (b = 0; b < E.bubbleTimes.length; ++b) E.bubbleTimes[b].current -= c, 0 >= E.bubbleTimes[b].current && (E.bubbleTimes[b].current = E.bubbleTimes[b].max, 0 === b ? Z.push(new a.BubbleEffect(e.x / 2 - 1.2, e.y, .15)) : 1 === b ? Z.push(new a.BubbleEffect(e.x / 2 + .1, e.y, .15)) : 2 === b && Z.push(new a.BubbleEffect(e.x / 2 + 1.2, e.y, .15))); if (E.showButtons) for (b = 0; b < E.buttons.length; b++) d = E.buttons[b], d.time -= c, 0 > d.time && (d.time = 0), d.x > d.tx ? (d.vx += 9.78 * c, d.x -= d.vx * c, d.x <= d.tx && (d.x = d.tx, d.vx = 0)) : d.x < d.tx && (d.vx += 9.78 * c, d.x += d.vx * c, d.x >= d.tx && (d.x = d.tx, d.vx = 0)), d.y > d.ty ? (d.vy += 9.78 * c, d.y -= d.vy * c, d.y <= d.ty && (d.y = d.ty, d.vy = 0)) : d.y < d.ty && (d.vy += 9.78 * c, d.y += d.vy * c, d.y >= d.ty && (d.y = d.ty, d.vy = 0)); E.rotationAngle += 1.3 * Math.PI * c % (2 * Math.PI) } function N(c) { var b, e, f, g, h = []; for (b = 0; b < d.effects.length;) { f = d.effects[b]; if (f.type === a.EffectTypeEnum.ProjectileEffect) { g = f.target; var k = !1; for (e = 0; e < d.objects.length; ++e) if (d.objects[e] === g) { k = !0; break } k ? (0 < f.cooldown ? (e = f.randomTarget.x, k = f.randomTarget.y) : (e = g.x, k = g.y), g = a.distance(f.x, f.y, e, k), g > f.radius || 0 < f.cooldown ? (f.vx = (e - f.x) / g * 10, f.vy = (k - f.y) / g * 10) : !1 === f.reachedTarget && (f.reachedTarget = !0, f.selfDestroyTime = .5)) : !1 === f.reachedTarget && (f.reachedTarget = !0, f.selfDestroyTime = 0) } f.update(c); 0 === f.selfDestroyTime ? d.effects.splice(b, 1) : b += 1 } for (b = 0; b < h.length; ++b) d.effects.push(h[b]) } function c() { var c, b = 1, f = 1; c = new a.Camera; var e = d.maxY - d.minY, g = d.maxX - d.minX; c.multiply(Q); c = c.screenToCamera(C.width, C.height); switch (aa) { case a.LayoutOrientationEnum.Landscape: f = c.y / (e + .1); b = c.x / (g + 5); break; case a.LayoutOrientationEnum.Portrait: f = c.y / (e + 5), b = c.x / (g + .1) } return { x: d.minX + .5 * g, y: d.minY + .5 * e, zoom: Math.min(b, f) } } function b(b) { var f; f = c(); V = 0; G = f.zoom; K = { x: f.x, y: f.y }; switch (d.mode) { case a.GameSceneModeEnum.Credits: case a.GameSceneModeEnum.Achievements: case a.GameSceneModeEnum.Leaderboards: case a.GameSceneModeEnum.Shop: case a.GameSceneModeEnum.WorldSelection: if (0 === S[6].time) { var e = d.minX + 2, h = d.maxY + 3; for (f = 0; 3 > f; ++f) { var k = .5 < Math.random() ? -2 : 2, l = .5 < Math.random() ? -2 : 2, k = new a.BubbleEffect(e + .2 * Math.random() * k, h + .2 * Math.random() * l, 2, .8 * Math.random() + .3); d.effects.push(k) } } if (0 === S[7].time) for (e = d.maxX - 3, h = d.maxY + 3, f = 0; 3 > f; ++f) k = .5 < Math.random() ? -2 : 2, l = .5 < Math.random() ? -2 : 2, k = new a.BubbleEffect(e + .2 * Math.random() * k, h + .2 * Math.random() * l, 2, .8 * Math.random() + .3), d.effects.push(k); break; case a.GameSceneModeEnum.LevelPlay: if (0 === S[6].time) for (e = d.minX + 2, h = d.maxY + 3, f = 0; 3 > f; ++f) k = .5 < Math.random() ? -1 : 1, l = .5 < Math.random() ? -1 : 1, k = new a.BubbleEffect(e + .2 * Math.random() * k, h + .2 * Math.random() * l, 2, .8 * Math.random()), d.effects.push(k); if (0 === S[7].time) for (e = d.maxX - 2, h = d.maxY + 3, f = 0; 3 > f; ++f) k = .5 < Math.random() ? -1 : 1, l = .5 < Math.random() ? -1 : 1, k = new a.BubbleEffect(e + .2 * Math.random() * k, h + .2 * Math.random() * l, 2, .8 * Math.random()), d.effects.push(k); g(b); a.userData.levels[d.currentLevel] || a.createUserLeveldata(d.currentLevel); f = !0; if (d.isChallenge) { b = !1; for (e = d.objects.length - 1; 0 <= e; --e) h = d.objects[e], h.type === a.ObjectTypeEnum.Object1 && 0 < h.path.length && (b = !0); f = b || 0 !== d.moveCount ? !1 : !0; a.updateAchievements(!0) } else for (b = !1, e = d.objects.length - 1; 0 <= e; --e) h = d.objects[e], h.type !== a.ObjectTypeEnum.Object3 && h.type !== a.ObjectTypeEnum.Object4 || 0 !== h.destroyTime || h.isDead || (f = !1), h.type === a.ObjectTypeEnum.Object1 && 0 < h.path.length && (b = !0); f && (L = 1.7, B = a.GameStateEnum.GameWon, a.playSound("wee")); B !== a.GameStateEnum.GameWon && (f = !0, 0 !== d.activeObject.destroyTime || d.activeObject.isDead || (f = !1), f && (d.isChallenge ? (L = 1.7, B = a.GameStateEnum.GameWon, a.playSound("wee")) : (d.busted = !0, L = 1.7, B = a.GameStateEnum.GameLost)), f || b || 0 !== d.moveCount || (d.busted = !1, L = 1.7, B = a.GameStateEnum.GameLost)) } } function g(c) { var b, f, e, g, h; if (d.isChallenge) { f = 0; for (b = d.objects.length - 1; 0 <= b; --b) g = d.objects[b], g.type === a.ObjectTypeEnum.Object3 && f++; for (; 5 > f;) b = 10 + 10 * Math.floor(4 * Math.random()), g = (d.maxX - d.minX - 4) * Math.random(), h = (d.maxY - d.minY - 4) * Math.random(), g = new a.ObjectEntity(a.ObjectTypeEnum.Object3, d.minX + 2 + g, d.minY + 2 + h, 7, 1, a.DirectionEnum.Left, b, [], !1, !1), d.objects.push(g), f++ } for (b = d.objects.length - 1; 0 <= b; --b) { g = d.objects[b]; g.update(c); g.target && (g.path = [], g.path.push({ x: g.target.x, y: g.target.y }), g.tx = g.x, g.ty = g.y); h = g.speedBooster ? 1.5 * g.speed : 0; g.tx === g.x && g.ty === g.y && 0 < g.path.length && (g.tx = g.path[0].x, g.ty = g.path[0].y, g.path.splice(0, 1), 0 === g.path.length && (!1 === g.loop ? (g.referencePath = [], g.speedBooster = !1, g.shieldBooster = !1, g.shadowBooster = !1) : g.path = g.referencePath.slice(0))); for (var k = c; 0 < k && (g.tx !== g.x || g.ty !== g.y);) { e = a.distance(g.x, g.y, g.tx, g.ty); g.vx = (g.tx - g.x) / e * (g.speed + h); g.vy = (g.ty - g.y) / e * (g.speed + h); g.x += g.vx * k; g.y += g.vy * k; if (0 === g.bubbleTime) for (g.bubbleTime = 1 / g.speed + .2 * Math.random(), f = 0; 1 > f; ++f) { var l = .5 < Math.random() ? -1 : 1, m = .5 < Math.random() ? -1 : 1, l = new a.BubbleEffect(g.x + .2 * Math.random() * l, g.y + .2 * Math.random() * m, 2, .2 + .3 * Math.random()); l.selfDestroyTime = 1; l.startFadeTime = .5; d.effects.push(l) }!0 === g.speedBooster && 0 === g.speedTime && (g.speedTime = .1, l = new a.SpeedEffect(g.x, g.y, g), d.effects.push(l)); a.distance(g.x, g.y, g.tx, g.ty) > e ? (k -= e / (g.speed + h), g.x = g.tx, g.y = g.ty, 0 < g.path.length && (g.tx = g.path[0].x, g.ty = g.path[0].y, g.path.splice(0, 1), 0 === g.path.length && (!1 === g.loop ? (g.referencePath = [], g.speedBooster = !1, g.shieldBooster = !1, g.shadowBooster = !1) : g.path = g.referencePath.slice(0)))) : k = 0 } if (B === a.GameStateEnum.GameRun && g.type === a.ObjectTypeEnum.Object1 && 0 === g.destroyTime && !1 === g.isDead) for (f = d.objects.length - 1; 0 <= f; --f) if (h = d.objects[f], h !== g && 0 === h.destroyTime && !1 === h.isDead) if (!1 === g.shieldBooster & h.type === a.ObjectTypeEnum.Object5) { if (0 === h.heartBeats[0].direction || h.continuous) if (l = a.distance(g.x, g.y, h.x, h.y), m = a.distance(g.x, g.y, h.x2, h.y2), e = a.distance(h.x, h.y, h.x2, h.y2), l < e && m < e && a.circleLineIntersect(h.x, h.y, h.x2, h.y2, g.x, g.y, g.radius)) { g.destroyTime = .6; g.scaleFactorTime = .3; g.path = []; l = new a.PangEffect(g.x, g.y, 2, 1); l.scaleTime = 1; l.scaleSpeed = 2; l.scaleFactor = 3.7; l.selfDestroyTime = .6; l.startFadeTime = .5; d.effects.push(l); l = new a.PangEffect(h.x, h.y, 2, .7); l.selfDestroyTime = .5; l.startFadeTime = .4; d.effects.push(l); for (e = d.objects.length - 1; 0 <= e; --e) d.objects[e].target === g && (d.objects[e].target = null); a.playSound("fail1"); break } } else if (l = h.radius + g.radius, e = a.distance(g.x, g.y, h.x, h.y), e < l) if (h.type === a.ObjectTypeEnum.Object3 || h.type === a.ObjectTypeEnum.Object4) { h.destroyTime = .5; h.scaleFactorTime = .3; h.loop = !1; h.referencePath = []; h.path = []; h.path.push({ x: h.x, y: -200 }); h.tx = h.x; h.ty = -200; g.scaleFactorTime = .3; d.bonusTime = 3; d.bonusFactor += 1; 10 < d.bonusFactor && (d.bonusFactor = 10); d.pickUp = d.pickUp ? !1 : !0; d.pickUp ? (a.playSound("pickup1"), a.playSound("yippee1")) : (a.playSound("pickup2"), a.playSound("yippee2")); for (e = m = 0; e < d.bonusFactor - 1; ++e) l = new a.NumberEffect(h.x, h.y + m, h.points, 2, !1), d.effects.push(l), m -= .7; l = new a.NumberEffect(h.x + .7, h.y + .7, d.bonusFactor - 1, 0, !0); d.effects.push(l); for (e = 0; 5 > e; ++e) l = .5 < Math.random() ? -1 : 1, m = .5 < Math.random() ? -1 : 1, l = new a.StarEffect(g.x + .2 * Math.random() * l, g.y + .2 * Math.random() * m, 1, .7 * Math.random(), .5 < Math.random() ? 0 : 1), d.effects.push(l); d.currentScore += h.points * d.bonusFactor; d.scoreTime = .4 } else if (h.type === a.ObjectTypeEnum.Object2 && (!g.speedBooster || !0 === h.chaser)) { g.destroyTime = .6; g.scaleFactorTime = .3; g.path = []; l = new a.PangEffect(g.x, g.y, 2, 1); l.scaleTime = 1; l.scaleSpeed = 2; l.scaleFactor = 3.7; l.selfDestroyTime = .6; l.startFadeTime = .5; d.effects.push(l); l = new a.PangEffect(h.x, h.y, 2, .7); l.selfDestroyTime = .5; l.startFadeTime = .4; d.effects.push(l); for (e = d.objects.length - 1; 0 <= e; --e) d.objects[e].target === g && (d.objects[e].target = null); a.playSound("fail1"); a.playSound("cop"); break } } for (b = 0; b < d.objects.length; b++) if (g = d.objects[b], g.y < d.minY) { d.objects.splice(b, 1); break } for (b = 0; b < d.objects.length; b++) if (g = d.objects[b], !0 === g.isDead) { for (e = d.objects.length - 1; 0 <= e; --e) d.objects[e].target === g && (d.objects[e].target = null); g.type === a.ObjectTypeEnum.Object1 && (g.path = [], g.path.push({ x: g.y, y: 200 })) } for (b = d.cells.length - 1; 0 <= b; --b) g = d.cells[b], g.update(c), g.tx = d.minX + .5 + g.column + 1, g.ty = d.minY + .5 + g.row + 1, g.x = d.minX + .5 + 2 * g.column + 1, g.y = d.minY + .5 + 2 * g.row + 1 } function checkForSound() { if(AquaThiefGame.isMusicEnabled) { AquaThiefGame.stopAllSounds(); musicFlag = true; }else{ musicFlag = false; } console.log('Sound checked') } function h(b) { var e, f = c(), h, k = a.screenToHud({ x: C.width, y: C.height }); for (e = 0; e < I.length; ++e) if (h = I[e], h.type === a.CommandEnum.ReplayLevel) { d.isChallenge ? (h.x = k.x / 2 + 1.25, h.y = k.y / 2 + 1.5) : (h.x = k.x / 2 - .75, h.y = k.y / 2 + 1.75); break } g(b); 0 === d.drawScoreTime && (d.drawScoreTime = .05, d.drawScore += 1 + Math.ceil(.02 * d.currentScore), d.drawScore >= d.currentScore && (d.drawScore = d.currentScore)); !1 === d.dataSaved && (d.dataSaved = !0, a.userData.currencyCount = d.currencyCount, d.tutorialStep++, a.userData.levels[d.currentLevel + 1] || a.createUserLeveldata(d.currentLevel + 1), d.moveCount === d.grid.maxMoves - 1 ? (a.awardGold && 3 !== a.userData.levels[d.currentLevel].stars && (a.userData.currencyCount += 10), a.userData.levels[d.currentLevel].stars = Math.max(a.userData.levels[d.currentLevel].stars, 3), d.currentStars = 3) : d.moveCount === d.grid.maxMoves - 2 ? (a.userData.levels[d.currentLevel].stars = Math.max(a.userData.levels[d.currentLevel].stars, 2), d.currentStars = 2) : d.moveCount === d.grid.maxMoves - 3 ? (a.userData.levels[d.currentLevel].stars = Math.max(a.userData.levels[d.currentLevel].stars, 1), d.currentStars = 1) : (a.userData.levels[d.currentLevel].stars = Math.max(a.userData.levels[d.currentLevel].stars, 0), d.currentStars = 0), d.currentBest < d.currentScore && (a.userData.levels[d.currentLevel].bestScore = d.currentScore, d.newBest = !0, d.currentBest = d.currentScore), 11 === d.currentLevel && (a.userData.challenge = 1), a.updateAchievements(), checkForSound(), SG_Hooks.levelUp(d.currentLevel, d.currentScore, function() { if(musicFlag) AquaThiefGame.playSound('music1'); }), a.saveUserData()); for (e = 0; e < d.wonObjects.length; ++e) h = d.wonObjects[e], h.update(b), 0 === h.x && (h.y = .5 * k.y + 1), h.x = .5 * k.x, 0 < h.vy && (h.vy -= h.gravity * b, 0 > h.vy && (h.vy = 0)), 0 === h.vy && (h.y += h.gravity * b), h.y -= h.vy * b, h.angle = 3 < h.vy ? h.angle + 5 * Math.PI * b : 0, h.scaleFactor = 1 - .07 * h.vy, h.y >= .5 * k.y + 1 && (h.y = .5 * k.y + 1, h.vy = 7, h.angle = 0);.6 < L && .8 > L ? (G = 1.1 * f.zoom, K = { x: f.x, y: f.y - 1 }) : .6 >= L && (G = .85 * f.zoom, K = { x: f.x, y: f.y + 2 }) } function l(b) { var e, f = c(), h, k = a.screenToHud({ x: C.width, y: C.height }); for (e = 0; e < I.length; ++e) if (h = I[e], h.type === a.CommandEnum.ReplayLevel) { h.x = k.x / 2 + 1.25; h.y = k.y / 2 + 1.5; break } g(b); !1 === d.dataSaved && (d.dataSaved = !0, d.lostObjects[0].heartBeats[4].time = .3, d.lostObjects[0].heartBeats[4].direction = 0, d.tutorialStep++, a.userData.currencyCount = d.currencyCount, checkForSound(), SG_Hooks.gameOver(d.currentLevel, 0, function() { if(musicFlag) AquaThiefGame.playSound('music1'); }), a.saveUserData()); for (e = 0; e < d.lostObjects.length; ++e) h = d.lostObjects[e], h.update(b), 0 === h.x && (h.y = .5 * k.y + 1), 1 === e ? (h.x = .5 * k.x, h.angle = .2 < L ? h.angle + 7 * Math.PI * b : .2 > h.heartBeats[4].time ? h.heartBeats[4].time : 0, 0 === L && (h.altface = !0), h.scaleFactor = Math.max(0, .8 - L)) : 0 === e && (h.x = .5 * k.x - 2, 0 < h.vy && (h.vy -= h.gravity * b, 0 > h.vy && (h.vy = 0)), 0 === h.vy && (h.y += h.gravity * b), h.y -= h.vy * b, h.angle = .2 < L && 3 < h.vy ? h.angle + 5 * Math.PI * b : 0, h.scaleFactor = Math.max(0, .8 - L), h.y >= .5 * k.y + 1 && (h.y = .5 * k.y + 1, h.vy = 6, h.angle = 0));.6 < L && .8 > L ? (G = 1.1 * f.zoom, K = { x: f.x, y: f.y - 1 }) : .6 >= L && (G = .85 * f.zoom, K = { x: f.x, y: f.y + 2 });.5 >= L && !1 === d.playedFailSound && (d.playedFailSound = !0, a.playSound("fail2")) } function r(c, b, d) { var e = H.x, g = H.y; H.x = 0; H.y = 0; H.update(); var f = new a.Camera; f.multiply(Q); f = f.screenToCamera(C.width, C.height); H.tx = f.x / 2 - d.x; H.ty = f.y / 2 - d.y; d = a.distance(e, g, H.tx, H.ty); if (.001 < Math.abs(d)) var h = (H.ty - g) / d, e = e + (H.tx - e) / d * d * 7 * c, g = g + c * d * 7 * h; else e = H.tx, g = H.ty; H.x = e; H.y = g; y.x = f.x / 2 - e; y.y = f.y / 2 - g; c = .7; 0 < ea && (G *= .7, c = .3); y.sx > G && (y.sx -= c * b, y.sx < G && (y.sx = G)); y.sx < G && (y.sx += c * b, y.sx > G && (y.sx = G)); y.sy = y.sx; 0 === ba && (y.angle > V ? (y.angle -= 5.3 * Math.PI * b, y.angle < V && (y.angle = V)) : y.angle < V && (y.angle += 5.3 * Math.PI * b, y.angle > V && (y.angle = V))); 0 < ba && (y.angle = va === a.DirectionEnum.Right ? -.05 + .25 * S[0].time : .05 - .25 * S[0].time); H.update(); y.update(); ga.update() } function m(c) { var b, e, g; e = !1; if (!wa) { ca = !0; Y = !1; b = c.pageX; var f = c.pageY; c = a.screenToHud({ x: C.width, y: C.height }); g = a.screenToScene({ x: b / ha, y: f / ia }); f = a.screenToHud({ x: b / ha, y: f / ia }); (B === a.GameStateEnum.GameLogo || B === a.GameStateEnum.GameLoading) && a.pointInRect(f.x, f.y, c.x / 2 - 2.5, c.y / 2 - 1 - .5, c.x / 2 + 2.5, c.y / 2 - 1 - .5 + 2) && SG.redirectToPortal(); //window.open("http://m.softgames.de", "_top"); if (B === a.GameStateEnum.GameIntro) B = a.GameStateEnum.GameMenu, X = Math.min(1, X), k(); else if (B === a.GameStateEnum.GameMenu) if (a.shopAvailable && a.pointInRect(f.x, f.y, 0, 0, 2.3, 1.7)) w(a.GameSceneModeEnum.Shop); else if (a.pointInRect(f.x, f.y, c.x - 2.5, 0, c.x - .9, 2.7)) SG.redirectToPortal(); //window.open("http://m.softgames.de", "_top"); else { if (E.showButtons) for (b = 0; b < E.buttons.length; b++) { g = E.buttons[b]; if (g.type !== a.CommandEnum.Leaderboards && g.type !== a.CommandEnum.Achievements) { if (a.pointInRect(f.x, f.y, c.x / 2 + g.x, c.y / 2 + g.y, c.x / 2 + g.x + 2, c.y / 2 + g.y + 2)) switch (g.type) { case a.CommandEnum.Play: w(a.GameSceneModeEnum.WorldSelection); e = !0; break; case a.CommandEnum.PlayChallenge: a.userData.challenge && (w(a.GameSceneModeEnum.LevelPlay), d.currentLevelPage = 3, d.currentLevel = d.challengeLevelIndex, ja(!0)); e = !0; break; case a.CommandEnum.Credits: w(a.GameSceneModeEnum.Credits); e = !0; break; case a.CommandEnum.Settings: na = !na; for (e = 0; e < E.buttons.length; e++) if (E.buttons[e].type === a.CommandEnum.Sound || E.buttons[e].type === a.CommandEnum.Music) E.buttons[e].time = .3; e = !0; break; case a.CommandEnum.Sound: a.getShowSettings() && (a.enableSound(!a.isSoundEnabled), e = !0); break; case a.CommandEnum.Music: a.getShowSettings() && (a.enableMusic(!a.isMusicEnabled), e = !0) } } else if (a.pointInRect(f.x, f.y, c.x - g.x, c.y - g.y, c.x - g.x + 2, c.y - g.y + 2)) switch (g.type) { case a.CommandEnum.Leaderboards: w(a.GameSceneModeEnum.Leaderboards); e = !0; break; case a.CommandEnum.Achievements: w(a.GameSceneModeEnum.Achievements), e = !0 } if (e) { a.playSound("click"); break } } } else if (B === a.GameStateEnum.GameRun) { var h = !1; !0 === a.showHouseAds ? (a.pointInRect(f.x, f.y, c.x / 2 + 1.5, c.y / 2 - 2.5, c.x / 2 + 2.5, c.y / 2 - 1.5) ? (a.showHouseAds = !1, e = !0) : a.pointInRect(f.x, f.y, c.x / 2 - 2.5, c.y / 2 - 2.5, c.x / 2 + 2.5, c.y / 2 + 2.5) && (a.showHouseAds = !1, e = !0, a.launchAdUrl(a.showHouseAdsType)), h = !0) : d.showReviewTip ? (a.pointInRect(g.x, g.y, d.minX + (d.maxX - d.minX) / 2 + 3.5, d.minY + (d.maxY - d.minY) / 2 - 1.5, d.minX + (d.maxX - d.minX) / 2 + 5, d.minY + (d.maxY - d.minY) / 2) ? (d.showReviewTip = !1, e = !0) : a.pointInRect(g.x, g.y, d.minX + (d.maxX - d.minX) / 2 - 5, d.minY + (d.maxY - d.minY) / 2 - 1.5, d.minX + (d.maxX - d.minX) / 2 + 5, d.minY + (d.maxY - d.minY) / 2 + 1.5) && (d.showReviewTip = !1, a.rateGame(), a.userData.review = 2, e = !0), h = !0) : d.mode === a.GameSceneModeEnum.LevelPlay ? a.getLayoutOrientation() === a.LayoutOrientationEnum.Landscape ? a.pointInRect(f.x, f.y, 0, 2.6, 2, 3.9) && (Y = !0) : a.pointInRect(f.x, f.y, 4.2, .1, 6.2, 1.3) && (Y = !0) : d.mode === a.GameSceneModeEnum.WorldSelection && a.pointInRect(f.x, f.y, 0, 0, 2.3, 2) && (Y = !0); if (!e && !h) for (b = 0; b < I.length; b += 1) if (I[b].enabled && a.pointInRect(f.x, f.y, I[b].x, I[b].y, I[b].x + I[b].size, I[b].y + I[b].size)) switch (I[b].type) { case a.CommandEnum.Menu: d.menuExpanded = !d.menuExpanded; d.menuTime = 0 < d.menuTime ? Math.min(d.menuTime, .2) : .2; e = !0; break; case a.CommandEnum.Home: J(!0); e = !0; break; case a.CommandEnum.Refresh: D(); ja(!0); e = !0; break; case a.CommandEnum.Close: case a.CommandEnum.GoBack: D(), F(), e = !0 } if (!e && !h) { d.mode === a.GameSceneModeEnum.LevelPlay && (d.tutorialStepChangeTime && (e = !0), a.isDemo && 60 < d.currentLevel && !d.isChallenge && (e = !0)); !e && (e = a.isModalTip()) && (d.activeObjectChangedTime = .3, d.tutorialStepChangeTime = .5, d.tutorialStep++); if (!e && d.activeObject) if (a.getLayoutOrientation() === a.LayoutOrientationEnum.Landscape) for (b = h = 0; b < d.boosters.length; ++b) { var l = d.currencyCount >= d.boosters[b].value ? !0 : !1; if (a.pointInRect(f.x, f.y, c.x - 1.5, 2.8 + h, c.x - 1.5 + 1.5, 2.8 + h + 1.5)) { if (d.boosters[b].active) switch (d.boosters[b].type) { case a.BoosterTypeEnum.Speed: !1 === d.activeObject.speedBooster ? l ? (d.activeObject.speedBooster = !0, d.currencyCount -= d.boosters[b].value, e = new a.BoosterEffect(d.activeObject.x, d.activeObject.y - .5, d.boosters[b].type), d.effects.push(e), d.activeObject.scaleFactorTime = .3, a.playSound("pickup1")) : (W(), a.playSound("click")) : (d.activeObject.speedBooster = !1, d.currencyCount += d.boosters[b].value, a.playSound("pop")); break; case a.BoosterTypeEnum.Shield: !1 === d.activeObject.shieldBooster ? l ? (d.activeObject.shieldBooster = !0, d.currencyCount -= d.boosters[b].value, e = new a.BoosterEffect(d.activeObject.x, d.activeObject.y - .5, d.boosters[b].type), d.effects.push(e), d.activeObject.scaleFactorTime = .3, a.playSound("pickup1")) : (W(), a.playSound("click")) : (d.activeObject.shieldBooster = !1, d.currencyCount += d.boosters[b].value, a.playSound("pop")); break; case a.BoosterTypeEnum.Shadow: !1 === d.activeObject.shadowBooster ? l ? (d.activeObject.shadowBooster = !0, d.currencyCount -= d.boosters[b].value, e = new a.BoosterEffect(d.activeObject.x, d.activeObject.y - .5, d.boosters[b].type), d.effects.push(e), d.activeObject.scaleFactorTime = .3, a.playSound("pickup1")) : (W(), a.playSound("click")) : (d.activeObject.shadowBooster = !1, d.currencyCount += d.boosters[b].value, a.playSound("pop")) } e = !0; break } h += 1.5 } else for (b = h = 0; b < d.boosters.length; ++b) { l = d.currencyCount >= d.boosters[b].value ? !0 : !1; if (a.pointInRect(f.x, f.y, 2 + h, c.y - 1.5, 2 + h + 1.5, c.y - 1.5 + 1.5)) { if (d.boosters[b].active) switch (d.boosters[b].type) { case a.BoosterTypeEnum.Speed: !1 === d.activeObject.speedBooster ? l ? (d.activeObject.speedBooster = !0, d.currencyCount -= d.boosters[b].value, e = new a.BoosterEffect(d.activeObject.x, d.activeObject.y - .5, d.boosters[b].type), d.effects.push(e), d.activeObject.scaleFactorTime = .3, a.playSound("pickup1")) : (W(), a.playSound("click")) : (d.activeObject.speedBooster = !1, d.currencyCount += d.boosters[b].value, a.playSound("pop")); break; case a.BoosterTypeEnum.Shield: !1 === d.activeObject.shieldBooster ? l ? (d.activeObject.shieldBooster = !0, d.currencyCount -= d.boosters[b].value, e = new a.BoosterEffect(d.activeObject.x, d.activeObject.y - .5, d.boosters[b].type), d.effects.push(e), d.activeObject.scaleFactorTime = .3, a.playSound("pickup1")) : (W(), a.playSound("click")) : (d.activeObject.shieldBooster = !1, d.currencyCount += d.boosters[b].value, a.playSound("pop")); break; case a.BoosterTypeEnum.Shadow: !1 === d.activeObject.shadowBooster ? l ? (d.activeObject.shadowBooster = !0, d.currencyCount -= d.boosters[b].value, e = new a.BoosterEffect(d.activeObject.x, d.activeObject.y - .5, d.boosters[b].type), d.effects.push(e), d.activeObject.scaleFactorTime = .3, a.playSound("pickup1")) : (W(), a.playSound("click")) : (d.activeObject.shadowBooster = !1, d.currencyCount += d.boosters[b].value, a.playSound("pop")) } e = !0; break } h += 1.5 } e || (O = { x: g.x, y: g.y }, T = { x: g.x, y: g.y }, d.canForcePageChange = !0, d.canChangeMode = !0, d.canDrawPath = !1, d.activeObject && (c = d.activeObject, 0 === c.path.length && a.distance(g.x, g.y, c.x, c.y) < 2 * c.radius && (d.canDrawPath = !0, 3 === d.currentLevel && d.tutorialStep++))) } e && (ca = !1, a.playSound("click")) } else if (B === a.GameStateEnum.GameLost || B === a.GameStateEnum.GameWon) { for (b = 0; b < I.length; b += 1) if (I[b].enabled && a.pointInRect(f.x, f.y, I[b].x, I[b].y, I[b].x + I[b].size, I[b].y + I[b].size)) switch (I[b].type) { case a.CommandEnum.QuitLevel: F(); e = !0; break; case a.CommandEnum.ReplayLevel: D(); ja(!0); e = !0; break; case a.CommandEnum.NextLevel: d.currentLevel < a.levelData.length - 1 && (d.currentLevel++, 20 === d.currentLevel || 40 === d.currentLevel ? (F(), pa(!0, !0)) : 60 === d.currentLevel ? a.userData.challenge && (w(a.GameSceneModeEnum.LevelPlay), d.currentLevelPage = 3, d.currentLevel = d.challengeLevelIndex, ja(!0)) : ja(!0)), e = !0 }!e && a.shopAvailable && a.pointInRect(f.x, f.y, 0, 0, 2.3, 1.7) && (F(), W(), e = !0); e && (ca = !1, a.playSound("click")) } } } function n(c) { var b = 0, b = c.pageX, e = c.pageY; c = a.screenToScene({ x: b / ha, y: e / ia }); e = a.screenToHud({ x: b / ha, y: e / ia }); a.screenToHud({ x: C.width, y: C.height }); ca && B === a.GameStateEnum.GameRun && (T = { x: c.x, y: c.y }, O && T && (b = Math.abs(O.x - T.x), Y && (d.mode === a.GameSceneModeEnum.LevelPlay ? a.getLayoutOrientation() === a.LayoutOrientationEnum.Landscape ? a.pointInRect(e.x, e.y, 0, 2.6, 2, 3.9) || (Y = !1, O = { x: c.x, y: c.y }) : a.pointInRect(e.x, e.y, 4.2, .1, 6.2, 1.3) || (Y = !1, O = { x: c.x, y: c.y }) : d.mode !== a.GameSceneModeEnum.WorldSelection || a.pointInRect(e.x, e.y, 0, 0, 2.3, 2) || (Y = !1, O = { x: c.x, y: c.y })), d.mode === a.GameSceneModeEnum.Credits || d.mode === a.GameSceneModeEnum.WorldSelection || d.mode === a.GameSceneModeEnum.Shop || d.mode === a.GameSceneModeEnum.Leaderboards ? 3 < b ? (O.x < T.x ? pa(!1, d.canForcePageChange) : pa(!0, d.canForcePageChange), d.canForcePageChange = !1, O = { x: c.x, y: c.y }) : d.pageOffsetX = .3 * -(O.x - T.x) : d.mode === a.GameSceneModeEnum.LevelPlay && d.activeObject && (c = T.x, b = T.y, c < d.minX + 1 && (c = d.minX + 1), c > d.maxX - 1 && (c = d.maxX - 1), b < d.minY + 2 && (b = d.minY + 2), b > d.maxY - 1 && (b = d.maxY - 1), d.canDrawPath && 100 > d.activeObject.referencePath.length && 1 < a.distance(O.x, O.y, c, b) && (O = { x: c, y: b }, T = { x: c, y: b }, d.activeObject.referencePath.push({ x: c, y: b }))))) } function A(c) { var b, e, f, g, h, k; b = !1; e = c.pageX; f = c.pageY; c = a.screenToScene({ x: e / ha, y: f / ia }); h = a.screenToHud({ x: e / ha, y: f / ia }); a.screenToHud({ x: C.width, y: C.height }); if (ca) { if (B === a.GameStateEnum.GameRun) { !b && a.shopAvailable && Y && (d.mode === a.GameSceneModeEnum.LevelPlay ? a.getLayoutOrientation() === a.LayoutOrientationEnum.Landscape ? a.pointInRect(h.x, h.y, 0, 2.6, 2, 3.9) && (b = !0, W(), a.playSound("click")) : a.pointInRect(h.x, h.y, 4.2, .1, 6.2, 1.3) && (b = !0, W(), a.playSound("click")) : d.mode === a.GameSceneModeEnum.WorldSelection && a.pointInRect(h.x, h.y, 0, 0, 2.3, 1.7) && (b = !0, W(), a.playSound("click"), D())); if (!b && (d.pageOffsetX = 0, h = d.maxX - d.minX, k = d.maxY - d.minY, O && T)) if (d.mode === a.GameSceneModeEnum.WorldSelection) { if (D(), b = a.distance(O.x, O.y, T.x, T.y), d.canChangeMode && .5 > b) { h = d.maxX - d.minX; k = d.maxY - d.minY; g = 20 * d.currentLevelPage; var l = 1, m = 0; for (b = g; b < Math.min(g + 20, a.levelData.length - 1); ++b) { e = d.minX + h / 5 * m; f = d.minY + k / 5 * l; if ((a.devMode || a.userData.levels[b] && 1 === a.userData.levels[b].unlocked) && a.pointInRect(c.x, c.y, e, f, e + h / 5, f + k / 5)) { d.currentLevel = b; ja(!0); a.playSound("click"); break } m++; 5 === m && (m = 0, l++) } } } else if (d.mode === a.GameSceneModeEnum.Shop) { if (D(), b = a.distance(O.x, O.y, T.x, T.y), d.canChangeMode && .5 > b) for (l = !1, m = 4 * d.currentShopPage, b = 0; 2 > b; b++) { for (e = 0; 2 > e; e++) if (f = d.minX + e * h / 2, g = d.minY + b * k / 2, a.pointInRect(c.x, c.y, f, g, f + h / 2, g + k / 2) && (a.playSound("click"), a.buyShopItem(m), l = !0), m++, l || m === a.shopItems.length) { l = !0; break } if (l) break } } else if (d.mode === a.GameSceneModeEnum.Credits) D(); else if (d.mode === a.GameSceneModeEnum.Achievements) D(); else if (d.mode === a.GameSceneModeEnum.Leaderboards) D(); else if (d.mode === a.GameSceneModeEnum.LevelPlay) { if (d.activeObject && 0 < d.activeObject.referencePath.length && 0 === d.activeObject.path.length) { d.activeObject.path = d.activeObject.referencePath.slice(0); if (!1 === d.activeObject.shadowBooster) for (b = d.objects.length - 1; 0 <= b; --b) c = d.objects[b], c.type === a.ObjectTypeEnum.Object2 && c.chaser && null === c.target && (c.target = d.activeObject); d.moveCount--; 0 > d.moveCount && (d.moveCount = 0); 0 === d.currentLevel && 1 === d.tutorialStep && d.tutorialStep++; 1 === d.currentLevel && 1 === d.tutorialStep && d.tutorialStep++ } D() } d.canChangeMode = !1; d.canForcePageChange = !1; d.canDrawPath = !1 } T = O = null; ca = !1 } } function D() { d && d.menuExpanded && (d.menuExpanded = !d.menuExpanded, d.menuTime = 0 < d.menuTime ? Math.min(d.menuTime, .2) : .2) } function pa(c, b) { var e; D(); !b && 0 < d.pageAnimTime || (d.canChangeMode = !1, d.pageAnimTime = .3, c ? (d.mode === a.GameSceneModeEnum.WorldSelection ? (d.currentLevelPage++, 20 * d.currentLevelPage >= a.levelData.length - 1 && (d.currentLevelPage = 0)) : d.mode === a.GameSceneModeEnum.Shop ? (d.currentShopPage++, e = Math.floor(a.shopItems.length / 4), e += a.shopItems.length % 4 ? 1 : 0, d.currentShopPage >= e && (d.currentShopPage = 0)) : d.mode === a.GameSceneModeEnum.Leaderboards && (d.currentLeaderboardsPage++, e = Math.floor(a.leaderBoardItems.length / 4), e += a.leaderBoardItems.length % 4 ? 1 : 0, d.currentLeaderboardsPage >= e && (d.currentLeaderboardsPage = 0)), d.pageAnimDirection = a.DirectionEnum.Left) : (d.mode === a.GameSceneModeEnum.WorldSelection ? (d.currentLevelPage--, 0 > 20 * d.currentLevelPage && (d.currentLevelPage = parseInt((a.levelData.length - 1) / 20) - 1)) : d.mode === a.GameSceneModeEnum.Shop ? (d.currentShopPage--, e = Math.floor(a.shopItems.length / 4), e += a.shopItems.length % 4 ? 1 : 0, 0 > d.currentShopPage && (d.currentShopPage = e - 1)) : d.mode === a.GameSceneModeEnum.Leaderboards && (d.currentLeaderboardsPage--, e = Math.floor(a.leaderBoardItems.length / 4), e += a.leaderBoardItems.length % 4 ? 1 : 0, 0 > d.currentLeaderboardsPage && (d.currentLeaderboardsPage = e - 1)), d.pageAnimDirection = a.DirectionEnum.Right), d.mode === a.GameSceneModeEnum.Shop ? a.playSound("coin") : a.playSound("slide")) } function F() { switch (d.mode) { case a.GameSceneModeEnum.WorldSelection: J(!0); break; case a.GameSceneModeEnum.LevelPlay: d.isChallenge ? J(!0) : qa(); break; case a.GameSceneModeEnum.Leaderboards: case a.GameSceneModeEnum.Achievements: case a.GameSceneModeEnum.Shop: case a.GameSceneModeEnum.Credits: switch (d.previousMode) { case a.GameSceneModeEnum.WorldSelection: qa(); break; case a.GameSceneModeEnum.LevelPlay: ja(!1); break; default: J(!1) } } } function J(c) { B = a.GameStateEnum.GameMenu; c && k(); I = []; na = !1; a.showBannerAd() } function qa() { var b; V = 0; K = { x: d.minX + (d.maxX - d.minX) / 2, y: d.maxY - 13.7 }; G = 1.5 * c().zoom; b = new a.Camera; b.multiply(Q); b = b.screenToCamera(C.width, C.height); H.x = b.x / 2 - K.x; H.y = b.y / 2 - K.y; y.angle = 0; y.sx = G; y.sy = G; B = a.GameStateEnum.GameRun; d.previousMode = d.mode; d.resetPage(); d.pageBounce = !1; d.maxX = d.minX + 15; d.maxY = d.minY + 15; d.mode = a.GameSceneModeEnum.WorldSelection; a.hideBannerAd() } function ja(b) { b ? (SG_Hooks.start(), d.loadLevel(), V = 0, K = { x: (d.maxX - d.minX) / 2, y: (d.maxY - d.minY) / 2 }, G = 1.7 * c().zoom, b = new a.Camera, b.multiply(Q), b = b.screenToCamera(C.width, C.height), H.x = b.x / 2 - K.x, H.y = b.y / 2 - K.y, y.angle = 2 * Math.PI, y.sx = G, y.sy = G, d.previousMode = d.mode, d.resetPage(), B = a.GameStateEnum.GameRun, S[5].time = 0, S[5].direction = 0) : (V = 0, K = { x: (d.maxX - d.minX) / 2, y: (d.maxY - d.minY) / 2 }, G = 1.3 * c().zoom, b = new a.Camera, b.multiply(Q), b = b.screenToCamera(C.width, C.height), H.x = b.x / 2 - K.x, H.y = b.y / 2 - K.y, y.angle = .5 * Math.PI, y.sx = G, y.sy = G); d.mode = a.GameSceneModeEnum.LevelPlay; setTimeout(function() { a.hideBannerAd() }, 200); a.playSound("levelintro") } function W() { var b; d.mode !== a.GameSceneModeEnum.Shop && (a.playSound("coin"), 1 === a.userData.ads && (d.shopMessageTime = 3), V = 0, K = { x: d.minX + (d.maxX - d.minX) / 2, y: d.maxY - 13.7 }, G = 1.5 * c().zoom, b = new a.Camera, b.multiply(Q), b = b.screenToCamera(C.width, C.height), H.x = b.x / 2 - K.x, H.y = b.y / 2 - K.y, y.angle = 0, y.sx = G, y.sy = G, d.previousMode = d.mode, d.resetPage(), d.pageBounce = !0, d.currentShopPage = 0, d.mode = a.GameSceneModeEnum.Shop, a.hideBannerAd()) } var da, M, aa, ha, ia, C, P, oa, B, ua, d, Q, H, y, ga, K, G, V, ea, ba, va, ta, sa, fa, X, ra, E, Z, ka, L, Y, na, ca, wa, O, T, ma = !1, la = 0, I, S = [{ time: 0, direction: 0, maxTime: .2, speed1: 2, speed2: 2 }, { time: 0, direction: 0, maxTime: .5, speed1: .5, speed2: .25 }, { time: 0, direction: 0, maxTime: .5, speed1: 1, speed2: .5 }, { time: 0, direction: 0, maxTime: 1, speed1: 1, speed2: 1 }, { time: 0, direction: 0, maxTime: 3, speed1: 1, speed2: 15 }, { time: 0, direction: 0, maxTime: 1, speed1: 1, speed2: 1 }, { time: 0, direction: 0, maxTime: 2, speed1: 1, speed2: 1 }, { time: 0, direction: 0, maxTime: .5, speed1: .25, speed2: 10 }, { time: 0, direction: 0, maxTime: .25, speed1: 1, speed2: 1 }]; a.getScaleUnit = function() { return da }; a.getCurrentGameState = function() { return B }; a.getCanvasWidth = function() { return C.width }; a.getCanvasHeight = function() { return C.height }; a.getLogoTime = function() { return fa }; a.getIntroTime = function() { return X }; a.getGameLoadingData = function() { return ra }; a.getGameMenuData = function() { return E }; a.getGameMenuEffects = function() { return Z }; a.getTitleHeartbeat1 = function() { return S[1] }; a.getTitleHeartbeat2 = function() { return S[2] }; a.getTitleHeartbeat3 = function() { return S[3] }; a.getTitleHeartbeat4 = function() { return S[4] }; a.getTitleHeartbeat5 = function() { return S[5] }; a.getTitleHeartbeat6 = function() { return S[6] }; a.getTitleHeartbeat7 = function() { return S[7] }; a.getTitleHeartbeat8 = function() { return S[8] }; a.getSceneHudItems = function() { return I }; a.getPointerStartPos = function() { return O }; a.getPointerEndPos = function() { return T }; a.getLayoutOrientation = function() { return aa }; a.setPaused = function(a) { oa = a }; a.getGamePlayEndTime = function() { return L }; a.getShowSettings = function() { return na }; a.getGameAdsTime = function() { return ka }; a.isModalTip = function() { var b = !1; if (d.mode === a.GameSceneModeEnum.LevelPlay) if (0 === d.currentLevel) switch (d.tutorialStep) { case 0: b = !0 } else if (1 === d.currentLevel) switch (d.tutorialStep) { case 0: b = !0 } else if (2 === d.currentLevel) switch (d.tutorialStep) { case 0: b = !0 } else if (3 === d.currentLevel) switch (d.tutorialStep) { case 0: b = !0 } else if (9 === d.currentLevel) switch (d.tutorialStep) { case 0: b = !0 } else if (11 === d.currentLevel) switch (d.tutorialStep) { case 0: b = !0 } else if (20 === d.currentLevel) switch (d.tutorialStep) { case 0: b = !0 } else if (21 === d.currentLevel) switch (d.tutorialStep) { case 0: b = !0 } else if (!0 === d.isChallenge) switch (d.tutorialStep) { case 0: b = !0 } return b }; a.applyHudCameras = function() { P.setTransform.apply(P, Q.matrix); P.transform.apply(P, ga.matrix) }; a.applySceneCameras = function() { P.setTransform.apply(P, Q.matrix); P.transform.apply(P, H.matrix); P.transform.apply(P, y.matrix) }; a.applyVeryFarParallaxCameras = function() { P.translate(.15 * -y.x, .15 * -y.y) }; a.applyFarParallaxCameras = function() { P.translate(.3 * -y.x, .3 * -y.y) }; a.applyNearParallaxCameras = function() { P.translate(.5 * -y.x, .5 * -y.y) }; a.applyVeryNearParallaxCameras = function() { P.translate(.75 * -y.x, .75 * -y.y) }; a.applyHereParallaxCameras = function() { P.translate(-y.x, -y.y) }; a.screenToHud = function(b) { var c = new a.Camera; c.multiply(Q); c.multiply(ga); return c.screenToCamera(b.x, b.y) }; a.screenToScene = function(b) { var c = new a.Camera; c.multiply(Q); c.multiply(H); c.multiply(y); c.translate(-y.x, -y.y); return c.screenToCamera(b.x, b.y) }; a.getAssetResolution = function() { return a.AssetResolutionEnum.ResolutionA }; a.initialize = function() { a.initializeSystem(); a.initializeLevels(); ba = ea = 0; va = a.DirectionEnum.Left; wa = ca = sa = oa = !1; X = 11; fa = 3; ra = { current: 0, total: 0 }; ta = !1; Z = []; L = 0; na = Y = !1; var b = Math.max($(window).width(), $(window).height()), c = a.AssetResolutionEnum.ResolutionB; 400 > b ? c = a.AssetResolutionEnum.ResolutionE : 500 > b ? c = a.AssetResolutionEnum.ResolutionD : 1300 > b && (c = a.AssetResolutionEnum.ResolutionC); /* switch (c) { case a.AssetResolutionEnum.ResolutionB: da = .02; M = "650"; break; case a.AssetResolutionEnum.ResolutionC: da = .02; M = "500"; break; case a.AssetResolutionEnum.ResolutionD: da = 1 / 38; M = "380"; break; case a.AssetResolutionEnum.ResolutionE: da = 1 / 30, M = "300" }*/ da = .02; M = 500; a.loadUserData(); a.setupTileOffsets(); C = document.getElementById("canvas"); P = C.getContext("2d"); $(document).bind("vmousedown", m); $(document).bind("vmouseup", A); $(document).bind("vmousemove", n); Q = new a.Camera; H = new a.Camera; y = new a.Camera; ga = new a.Camera; ga.sx = 1; ga.sy = 1; ga.update(); a.resetDisplay(); a.Resources.loadingScreenImage = new Image; a.Resources.loadingScreenImage.onload = f; a.Resources.loadingScreenImage.src = "assets/img/" + M + "/loadingscreen.png"; B = a.GameStateEnum.GamePreLoading; a.hideBannerAd(); t() }; a.resetDisplay = function() { var b = 1 / da; aa = $(window).width() >= $(window).height() ? a.LayoutOrientationEnum.Landscape : a.LayoutOrientationEnum.Portrait; C.width = aa === a.LayoutOrientationEnum.Landscape ? 14 * b : 8 * b; C.height = aa === a.LayoutOrientationEnum.Landscape ? 14 * b * $(window).height() / $(window).width() : 8 * b * $(window).height() / $(window).width(); ha = $(window).width() / C.width; ia = $(window).height() / C.height; C.style.width = $(window).width() + "px"; C.style.height = $(window).height() + "px"; Q && (Q.sx = 1 / da, Q.sy = 1 / da, Q.update()); v() }; a.updateAchievements = function(b) { if (!b) { for (b = a.threeStarsLevels = 0; b < a.userData.levels.length; ++b) a.userData.levels[b] && 3 === a.userData.levels[b].stars && a.threeStarsLevels++; if (a.userData.threeStarsLevels < a.threeStarsLevels) for (a.userData.threeStarsLevels = a.threeStarsLevels, b = 0; b < a.achievementItems.length; ++b) if (1 === a.achievementItems[b].type && a.achievementItems[b].value === a.threeStarsLevels) { d && (d.titleNotificationTime = 3, a.playSound("levelintro")); break } } if (d && a.userData.levels[d.challengeLevelIndex] && d.currentScore > a.userData.levels[d.challengeLevelIndex].bestScore) for (b = 0; b < a.achievementItems.length; ++b) if (0 === a.achievementItems[b].type && a.achievementItems[b].value <= d.currentScore && d.badgeNotification < a.achievementItems[b].value) { d.badgeNotification = a.achievementItems[b].value; d.badgeNotificationTime = 3; a.playSound("levelintro"); break } }; a.navigateBack = function() { if (B !== a.GameStateEnum.GameRun && B !== a.GameStateEnum.GameLost && B !== a.GameStateEnum.GameWon) return "exit"; d && (F(), a.playSound("click")); return "stay" } })(window.AquaThiefGame = window.AquaThiefGame || {});