main.js 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698
  1. function CSpriteLibrary() {
  2. var a, d, b, c, f, e;
  3. this.init = function (g, k, l) {
  4. b = d = 0;
  5. c = g;
  6. f = k;
  7. e = l;
  8. a = {};
  9. };
  10. this.addSprite = function (b, c) {
  11. a.hasOwnProperty(b) || ((a[b] = { szPath: c, oSprite: new Image() }), d++);
  12. };
  13. this.getSprite = function (b) {
  14. return a.hasOwnProperty(b) ? a[b].oSprite : null;
  15. };
  16. this._onSpritesLoaded = function () {
  17. f.call(e);
  18. };
  19. this._onSpriteLoaded = function () {
  20. c.call(e);
  21. ++b == d && this._onSpritesLoaded();
  22. };
  23. this.loadSprites = function () {
  24. for (var b in a)
  25. (a[b].oSprite.oSpriteLibrary = this),
  26. (a[b].oSprite.onload = function () {
  27. this.oSpriteLibrary._onSpriteLoaded();
  28. }),
  29. (a[b].oSprite.src = a[b].szPath);
  30. };
  31. this.getNumSprites = function () {
  32. return d;
  33. };
  34. }
  35. var CANVAS_WIDTH = 1024,
  36. CANVAS_HEIGHT = 768,
  37. DISABLE_SOUND_MOBILE = !1,
  38. FPS_TIME = 1e3 / 24,
  39. STATE_LOADING = 0,
  40. STATE_MENU = 1,
  41. STATE_HELP = 1,
  42. STATE_GAME = 3,
  43. ON_MOUSE_DOWN = 0,
  44. ON_MOUSE_UP = 1,
  45. ON_MOUSE_OVER = 2,
  46. ON_MOUSE_OUT = 3,
  47. ON_DRAG_START = 4,
  48. ON_DRAG_END = 5,
  49. ON_PRESS_MOVE = 6,
  50. SCOPE_ACCELERATION,
  51. SCOPE_FRICTION,
  52. MAX_SCOPE_SPEED,
  53. NUM_BULLETS,
  54. SCORE_HIT,
  55. BONUS_TIME,
  56. PLAYER_LIVES,
  57. DUCK_INCREASE_SPEED,
  58. DUCK_START_SPEED = 1;
  59. function CToggle(a, d, b, c) {
  60. var f, e, g, k;
  61. this._init = function (a, b, c, d) {
  62. e = [];
  63. g = [];
  64. var n = new createjs.SpriteSheet({
  65. images: [c],
  66. frames: { width: c.width / 2, height: c.height, regX: c.width / 2 / 2, regY: c.height / 2 },
  67. animations: { state_true: [0], state_false: [1] },
  68. });
  69. f = d;
  70. k = createSprite(n, "state_" + f, c.width / 2 / 2, c.height / 2, c.width / 2, c.height);
  71. k.x = a;
  72. k.y = b;
  73. k.stop();
  74. s_oStage.addChild(k);
  75. this._initListener();
  76. };
  77. this.unload = function () {
  78. k.off("mousedown", this.buttonDown);
  79. k.off("pressup", this.buttonRelease);
  80. s_oStage.removeChild(k);
  81. };
  82. this._initListener = function () {
  83. k.on("mousedown", this.buttonDown);
  84. k.on("pressup", this.buttonRelease);
  85. };
  86. this.addEventListener = function (a, b, c) {
  87. e[a] = b;
  88. g[a] = c;
  89. };
  90. this.setActive = function (a) {
  91. f = a;
  92. k.gotoAndStop("state_" + f);
  93. };
  94. this.buttonRelease = function () {
  95. k.scaleX = 1;
  96. k.scaleY = 1;
  97. (!1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile) || createjs.Sound.play("click");
  98. f = !f;
  99. k.gotoAndStop("state_" + f);
  100. e[ON_MOUSE_UP] && e[ON_MOUSE_UP].call(g[ON_MOUSE_UP], f);
  101. };
  102. this.buttonDown = function () {
  103. k.scaleX = 0.9;
  104. k.scaleY = 0.9;
  105. e[ON_MOUSE_DOWN] && e[ON_MOUSE_DOWN].call(g[ON_MOUSE_DOWN]);
  106. };
  107. this._init(a, d, b, c);
  108. }
  109. var s_iScaleFactor = 1,
  110. s_oCanvasLeft,
  111. s_oCanvasTop;
  112. (function (a) {
  113. (jQuery.browser = jQuery.browser || {}).mobile =
  114. /android|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(ad|hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|tablet|treo|up\.(browser|link)|vodafone|wap|webos|windows (ce|phone)|xda|xiino/i.test(
  115. a
  116. ) ||
  117. /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(
  118. a.substr(0, 4)
  119. );
  120. })(navigator.userAgent || navigator.vendor || window.opera);
  121. $(window).resize(function () {
  122. sizeHandler();
  123. });
  124. function trace(a) {
  125. console.log(a);
  126. }
  127. $(window).ready(function () {
  128. sizeHandler();
  129. });
  130. window.addEventListener("orientationchange", onOrientationChange);
  131. function onOrientationChange() {
  132. window.matchMedia("(orientation: portrait)").matches && sizeHandler();
  133. window.matchMedia("(orientation: landscape)").matches && sizeHandler();
  134. }
  135. function sizeHandler() {
  136. window.scrollTo(0, 1);
  137. if ($("#canvas")) {
  138. var a = CANVAS_WIDTH,
  139. b = CANVAS_HEIGHT,
  140. c,
  141. d;
  142. !0 === inIframe() && "ios" == getMobileOperatingSystem()
  143. ? (top.location.href = document.location.href)
  144. : ((c = window.innerWidth),
  145. (d = window.innerHeight),
  146. (multiplier = s_iScaleFactor = Math.min(d / b, c / a)),
  147. (a *= multiplier),
  148. (b *= multiplier),
  149. $("#canvas").css("width", a + "px"),
  150. $("#canvas").css("height", b + "px"),
  151. $("#canvas").css("left", c / 2 - a / 2 + "px"),
  152. (s_oCanvasLeft = $("#canvas").offset().left),
  153. (s_oCanvasTop = $("#canvas").offset().top));
  154. }
  155. }
  156. function getMobileOperatingSystem() {
  157. var a = navigator.userAgent || navigator.vendor || window.opera;
  158. return a.match(/iPad/i) || a.match(/iPhone/i) || a.match(/iPod/i) ? "ios" : a.match(/Android/i) ? "android" : "unknown";
  159. }
  160. function inIframe() {
  161. try {
  162. return window.self !== window.top;
  163. } catch (a) {
  164. return !0;
  165. }
  166. }
  167. function createBitmap(a, d, b) {
  168. var c = new createjs.Bitmap(a),
  169. f = new createjs.Shape();
  170. d && b ? f.graphics.beginFill("#fff").drawRect(0, 0, d, b) : f.graphics.beginFill("#ff0").drawRect(0, 0, a.width, a.height);
  171. c.hitArea = f;
  172. return c;
  173. }
  174. function createSprite(a, d, b, c, f, e) {
  175. a = null !== d ? new createjs.Sprite(a, d) : new createjs.Sprite(a);
  176. d = new createjs.Shape();
  177. d.graphics.beginFill("#000000").drawRect(-b, -c, f, e);
  178. a.hitArea = d;
  179. return a;
  180. }
  181. function randomFloatBetween(a, d, b) {
  182. "undefined" === typeof b && (b = 2);
  183. return parseFloat(Math.min(a + Math.random() * (d - a), d).toFixed(b));
  184. }
  185. function shuffle(a) {
  186. for (var d = a.length, b, c; 0 !== d; ) (c = Math.floor(Math.random() * d)), --d, (b = a[d]), (a[d] = a[c]), (a[c] = b);
  187. return a;
  188. }
  189. function easeLinear(a, d, b, c) {
  190. return (b * a) / c + d;
  191. }
  192. function easeInQuad(a, d, b, c) {
  193. return b * (a /= c) * a + d;
  194. }
  195. function easeInSine(a, d, b, c) {
  196. return -b * Math.cos((a / c) * (Math.PI / 2)) + b + d;
  197. }
  198. function easeInCubic(a, d, b, c) {
  199. return b * (a /= c) * a * a + d;
  200. }
  201. function getTrajectoryPoint(a, d) {
  202. var b = new createjs.Point(),
  203. c = (1 - a) * (1 - a),
  204. f = a * a;
  205. b.x = c * d.start.x + 2 * (1 - a) * a * d.traj.x + f * d.end.x;
  206. b.y = c * d.start.y + 2 * (1 - a) * a * d.traj.y + f * d.end.y;
  207. return b;
  208. }
  209. function formatTime(a) {
  210. a /= 1e3;
  211. var d = Math.floor(a / 60);
  212. a = parseFloat(a - 60 * d).toFixed(1);
  213. var b = "",
  214. b = 10 > d ? b + ("0" + d + ":") : b + (d + ":");
  215. return (b = 10 > a ? b + ("0" + a) : b + a);
  216. }
  217. function degreesToRadians(a) {
  218. return (a * Math.PI) / 180;
  219. }
  220. function checkRectCollision(a, d) {
  221. var b, c;
  222. b = getBounds(a, 0.9);
  223. c = getBounds(d, 0.98);
  224. return calculateIntersection(b, c);
  225. }
  226. function calculateIntersection(a, d) {
  227. var b, c, f, e, g, k, l, h;
  228. b = a.x + (f = a.width / 2);
  229. c = a.y + (e = a.height / 2);
  230. g = d.x + (k = d.width / 2);
  231. l = d.y + (h = d.height / 2);
  232. b = Math.abs(b - g) - (f + k);
  233. c = Math.abs(c - l) - (e + h);
  234. return 0 > b && 0 > c
  235. ? ((b = Math.min(Math.min(a.width, d.width), -b)),
  236. (c = Math.min(Math.min(a.height, d.height), -c)),
  237. { x: Math.max(a.x, d.x), y: Math.max(a.y, d.y), width: b, height: c, rect1: a, rect2: d })
  238. : null;
  239. }
  240. function getBounds(a, d) {
  241. var b = { x: Infinity, y: Infinity, width: 0, height: 0 };
  242. if (a instanceof createjs.Container) {
  243. b.x2 = -Infinity;
  244. b.y2 = -Infinity;
  245. var c = a.children,
  246. f = c.length,
  247. e,
  248. g;
  249. for (g = 0; g < f; g++)
  250. (e = getBounds(c[g], 1)),
  251. e.x < b.x && (b.x = e.x),
  252. e.y < b.y && (b.y = e.y),
  253. e.x + e.width > b.x2 && (b.x2 = e.x + e.width),
  254. e.y + e.height > b.y2 && (b.y2 = e.y + e.height);
  255. Infinity == b.x && (b.x = 0);
  256. Infinity == b.y && (b.y = 0);
  257. Infinity == b.x2 && (b.x2 = 0);
  258. Infinity == b.y2 && (b.y2 = 0);
  259. b.width = b.x2 - b.x;
  260. b.height = b.y2 - b.y;
  261. delete b.x2;
  262. delete b.y2;
  263. } else {
  264. var k, l;
  265. a instanceof createjs.Bitmap
  266. ? ((f = a.sourceRect || a.image), (g = f.width * d), (k = f.height * d))
  267. : a instanceof createjs.Sprite
  268. ? a.spriteSheet._frames && a.spriteSheet._frames[a.currentFrame] && a.spriteSheet._frames[a.currentFrame].image
  269. ? ((f = a.spriteSheet.getFrame(a.currentFrame)), (g = f.rect.width), (k = f.rect.height), (c = f.regX), (l = f.regY))
  270. : ((b.x = a.x || 0), (b.y = a.y || 0))
  271. : ((b.x = a.x || 0), (b.y = a.y || 0));
  272. c = c || 0;
  273. g = g || 0;
  274. l = l || 0;
  275. k = k || 0;
  276. b.regX = c;
  277. b.regY = l;
  278. f = a.localToGlobal(0 - c, 0 - l);
  279. e = a.localToGlobal(g - c, k - l);
  280. g = a.localToGlobal(g - c, 0 - l);
  281. c = a.localToGlobal(0 - c, k - l);
  282. b.x = Math.min(Math.min(Math.min(f.x, e.x), g.x), c.x);
  283. b.y = Math.min(Math.min(Math.min(f.y, e.y), g.y), c.y);
  284. b.width = Math.max(Math.max(Math.max(f.x, e.x), g.x), c.x) - b.x;
  285. b.height = Math.max(Math.max(Math.max(f.y, e.y), g.y), c.y) - b.y;
  286. }
  287. return b;
  288. }
  289. function NoClickDelay(a) {
  290. this.element = a;
  291. window.Touch && this.element.addEventListener("touchstart", this, !1);
  292. }
  293. function shuffle(a) {
  294. for (var d = a.length, b, c; 0 < d; ) (c = Math.floor(Math.random() * d)), d--, (b = a[d]), (a[d] = a[c]), (a[c] = b);
  295. return a;
  296. }
  297. NoClickDelay.prototype = {
  298. handleEvent: function (a) {
  299. switch (a.type) {
  300. case "touchstart":
  301. this.onTouchStart(a);
  302. break;
  303. case "touchmove":
  304. this.onTouchMove(a);
  305. break;
  306. case "touchend":
  307. this.onTouchEnd(a);
  308. }
  309. },
  310. onTouchStart: function (a) {
  311. a.preventDefault();
  312. this.moved = !1;
  313. this.element.addEventListener("touchmove", this, !1);
  314. this.element.addEventListener("touchend", this, !1);
  315. },
  316. onTouchMove: function (a) {
  317. this.moved = !0;
  318. },
  319. onTouchEnd: function (a) {
  320. this.element.removeEventListener("touchmove", this, !1);
  321. this.element.removeEventListener("touchend", this, !1);
  322. if (!this.moved) {
  323. a = document.elementFromPoint(a.changedTouches[0].clientX, a.changedTouches[0].clientY);
  324. 3 == a.nodeType && (a = a.parentNode);
  325. var d = document.createEvent("MouseEvents");
  326. d.initEvent("click", !0, !0);
  327. a.dispatchEvent(d);
  328. }
  329. },
  330. };
  331. (function () {
  332. function a(a) {
  333. var c = { focus: "visible", focusin: "visible", pageshow: "visible", blur: "hidden", focusout: "hidden", pagehide: "hidden" };
  334. a = a || window.event;
  335. a.type in c
  336. ? (document.body.className = c[a.type])
  337. : ((document.body.className = this[d] ? "hidden" : "visible"), "hidden" === document.body.className ? s_oMain.stopUpdate() : s_oMain.startUpdate());
  338. }
  339. var d = "hidden";
  340. d in document
  341. ? document.addEventListener("visibilitychange", a)
  342. : (d = "mozHidden") in document
  343. ? document.addEventListener("mozvisibilitychange", a)
  344. : (d = "webkitHidden") in document
  345. ? document.addEventListener("webkitvisibilitychange", a)
  346. : (d = "msHidden") in document
  347. ? document.addEventListener("msvisibilitychange", a)
  348. : "onfocusin" in document
  349. ? (document.onfocusin = document.onfocusout = a)
  350. : (window.onpageshow = window.onpagehide = window.onfocus = window.onblur = a);
  351. })();
  352. function CTextButton(a, d, b, c, f, e, g) {
  353. var k, l, h;
  354. this._init = function (a, b, c, d, e, f, g) {
  355. k = [];
  356. l = [];
  357. var y = createBitmap(c),
  358. q = Math.ceil(g / 20),
  359. v = new createjs.Text(d, "bold " + g + "px " + e, "#000000");
  360. v.textAlign = "center";
  361. v.textBaseline = "alphabetic";
  362. var z = v.getBounds();
  363. v.x = c.width / 2 + q;
  364. v.y = Math.floor(c.height / 2) + z.height / 3 + q;
  365. d = new createjs.Text(d, "bold " + g + "px " + e, f);
  366. d.textAlign = "center";
  367. d.textBaseline = "alphabetic";
  368. z = d.getBounds();
  369. d.x = c.width / 2;
  370. d.y = Math.floor(c.height / 2) + z.height / 3;
  371. h = new createjs.Container();
  372. h.x = a;
  373. h.y = b;
  374. h.regX = c.width / 2;
  375. h.regY = c.height / 2;
  376. h.addChild(y, v, d);
  377. s_oStage.addChild(h);
  378. this._initListener();
  379. };
  380. this.unload = function () {
  381. h.off("mousedown");
  382. h.off("pressup");
  383. s_oStage.removeChild(h);
  384. };
  385. this.setVisible = function (a) {
  386. h.visible = a;
  387. };
  388. this._initListener = function () {
  389. oParent = this;
  390. h.on("mousedown", this.buttonDown);
  391. h.on("pressup", this.buttonRelease);
  392. };
  393. this.addEventListener = function (a, b, c) {
  394. k[a] = b;
  395. l[a] = c;
  396. };
  397. this.buttonRelease = function () {
  398. h.scaleX = 1;
  399. h.scaleY = 1;
  400. k[ON_MOUSE_UP] && k[ON_MOUSE_UP].call(l[ON_MOUSE_UP]);
  401. };
  402. this.buttonDown = function () {
  403. h.scaleX = 0.9;
  404. h.scaleY = 0.9;
  405. k[ON_MOUSE_DOWN] && k[ON_MOUSE_DOWN].call(l[ON_MOUSE_DOWN]);
  406. };
  407. this.setPosition = function (a, b) {
  408. h.x = a;
  409. h.y = b;
  410. };
  411. this.setX = function (a) {
  412. h.x = a;
  413. };
  414. this.setY = function (a) {
  415. h.y = a;
  416. };
  417. this.getButtonImage = function () {
  418. return h;
  419. };
  420. this.getX = function () {
  421. return h.x;
  422. };
  423. this.getY = function () {
  424. return h.y;
  425. };
  426. this._init(a, d, b, c, f, e, g);
  427. return this;
  428. }
  429. function CScoreText(a, d, b) {
  430. var c;
  431. this._init = function (a, b, d) {
  432. c = new createjs.Text("00000", "bold 30px ComicSansMS-Bold", "#ffffff");
  433. c.textAlign = "right";
  434. c.text = a;
  435. c.x = b;
  436. c.y = d;
  437. c.alpha = 0;
  438. c.shadow = new createjs.Shadow("#000000", 2, 2, 2);
  439. s_oStage.addChild(c);
  440. var k = this;
  441. createjs.Tween.get(c)
  442. .to({ alpha: 1 }, 400, createjs.Ease.quadIn)
  443. .call(function () {
  444. k.moveUp();
  445. });
  446. };
  447. this.moveUp = function () {
  448. var a = c.y - 100,
  449. b = this;
  450. createjs.Tween.get(c)
  451. .to({ y: a }, 1e3, createjs.Ease.sineIn)
  452. .call(function () {
  453. b.unload();
  454. });
  455. };
  456. this.unload = function () {
  457. s_oStage.removeChild(c);
  458. };
  459. this._init(a, d, b);
  460. }
  461. function CScope() {
  462. var a,
  463. d,
  464. b,
  465. c,
  466. f = !1,
  467. e = !1,
  468. g = !1,
  469. k = !1,
  470. l,
  471. h,
  472. p,
  473. u;
  474. this._init = function () {
  475. a = 88;
  476. d = 87.5;
  477. h = l = 0;
  478. var e = s_oSpriteLibrary.getSprite("scope");
  479. b = createBitmap(e);
  480. b.x = CANVAS_WIDTH / 2 - a;
  481. b.y = CANVAS_HEIGHT / 2 - d;
  482. s_oStage.addChild(b);
  483. e = {
  484. images: [s_oSpriteLibrary.getSprite("tap_shot")],
  485. frames: { width: 200, height: 200, regX: 100, regY: 100 },
  486. animations: { show: [0, 19, "hide"], hide: [20, 21] },
  487. };
  488. e = new createjs.SpriteSheet(e);
  489. c = createSprite(e, "hide", 100, 100, 200, 200);
  490. c.addEventListener("animationend", this.onAnimationEnd);
  491. c.stop();
  492. c.visible = !1;
  493. s_oStage.addChild(c);
  494. };
  495. this.unload = function () {
  496. c.removeEventListener("animationend", oParent.onAnimationEnd);
  497. };
  498. this.resetAllDirection = function () {
  499. k = g = e = f = !1;
  500. };
  501. this.onAnimationEnd = function () {
  502. c.visible = !1;
  503. };
  504. this.playShot = function () {
  505. c.x = b.x + a;
  506. c.y = b.y + d;
  507. c.visible = !0;
  508. c.gotoAndPlay("show");
  509. (!1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile) || createjs.Sound.play("shot");
  510. };
  511. this._checkBoundary = function () {
  512. b.x + a > CANVAS_WIDTH && (b.x = CANVAS_WIDTH - a);
  513. 0 > b.x + a && (b.x = -a);
  514. b.y + d > CANVAS_HEIGHT && (b.y = CANVAS_HEIGHT - d);
  515. 0 > b.y + d && (b.y = -d);
  516. };
  517. this.bullsEye = function () {
  518. p = b.x + a;
  519. u = b.y + d;
  520. return { x: p, y: u };
  521. };
  522. this.upStop = function () {
  523. g = !1;
  524. };
  525. this.downStop = function () {
  526. k = !1;
  527. };
  528. this.leftStop = function () {
  529. f = !1;
  530. };
  531. this.rightStop = function () {
  532. e = !1;
  533. };
  534. this.moveLeft = function () {
  535. f = !0;
  536. };
  537. this.moveRight = function () {
  538. e = !0;
  539. };
  540. this.moveUp = function () {
  541. g = !0;
  542. };
  543. this.moveDown = function () {
  544. k = !0;
  545. };
  546. this.getSprite = function () {
  547. return b;
  548. };
  549. this.update = function () {
  550. e && g
  551. ? ((l += SCOPE_ACCELERATION), (h -= SCOPE_ACCELERATION))
  552. : e && k
  553. ? ((l += SCOPE_ACCELERATION), (h += SCOPE_ACCELERATION))
  554. : f && k
  555. ? ((l -= SCOPE_ACCELERATION), (h += SCOPE_ACCELERATION))
  556. : f && g
  557. ? ((l -= SCOPE_ACCELERATION), (h -= SCOPE_ACCELERATION))
  558. : f
  559. ? (l -= SCOPE_ACCELERATION)
  560. : e
  561. ? (l += SCOPE_ACCELERATION)
  562. : g
  563. ? (h -= SCOPE_ACCELERATION)
  564. : k && (h += SCOPE_ACCELERATION);
  565. b.x += l;
  566. b.y += h;
  567. l *= SCOPE_FRICTION;
  568. h *= SCOPE_FRICTION;
  569. l > MAX_SCOPE_SPEED && (l = MAX_SCOPE_SPEED);
  570. l < -MAX_SCOPE_SPEED && (l = -MAX_SCOPE_SPEED);
  571. h > MAX_SCOPE_SPEED && (h = MAX_SCOPE_SPEED);
  572. h < -MAX_SCOPE_SPEED && (h = -MAX_SCOPE_SPEED);
  573. 0.2 > Math.abs(l) && (l = 0);
  574. 0.2 > Math.abs(h) && (h = 0);
  575. this._checkBoundary();
  576. };
  577. this._init();
  578. }
  579. function CPreloader() {
  580. var a;
  581. this._init = function () {
  582. this._onAllPreloaderImagesLoaded();
  583. };
  584. this._onPreloaderImagesLoaded = function () {};
  585. this._onAllPreloaderImagesLoaded = function () {
  586. a = new createjs.Text("", "bold 22px Arial center", "#ffffff");
  587. a.x = CANVAS_WIDTH / 2 - 40;
  588. a.y = CANVAS_HEIGHT / 2;
  589. s_oStage.addChild(a);
  590. };
  591. this.unload = function () {
  592. s_oStage.removeChild(a);
  593. };
  594. this.refreshLoader = function (d) {
  595. a.text = d + "%";
  596. };
  597. this._init();
  598. }
  599. function CMenu() {
  600. var a, d, b, c;
  601. this._init = function () {
  602. a = createBitmap(s_oSpriteLibrary.getSprite("bg_menu"));
  603. s_oStage.addChild(a);
  604. var f = s_oSpriteLibrary.getSprite("but_play");
  605. d = new CTextButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT - 80, f, TEXT_PLAY, "walibi0615bold", "#ffffff", 40);
  606. d.addEventListener(ON_MOUSE_UP, this._onButPlayRelease, this);
  607. var e,
  608. f = s_oSpriteLibrary.getSprite("but_exit");
  609. // _oButExit = new CGfxButton(CANVAS_WIDTH - f.height / 2 - 10, f.height / 2 + 10, f, !0);
  610. // _oButExit.addEventListener(ON_MOUSE_UP, this._onExit, this);
  611. e = CANVAS_WIDTH - f.width / 2 - 80;
  612. if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile)
  613. (f = s_oSpriteLibrary.getSprite("audio_icon")),
  614. (c = new CToggle(e, 10 + f.height / 2, f, s_bAudioActive)),
  615. c.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this),
  616. s_oSoundTrack.setVolume(1);
  617. b = new createjs.Shape();
  618. b.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
  619. s_oStage.addChild(b);
  620. createjs.Tween.get(b)
  621. .to({ alpha: 0 }, 1e3)
  622. .call(function () {
  623. b.visible = !1;
  624. });
  625. };
  626. this.unload = function () {
  627. d.unload();
  628. d = null;
  629. if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) c.unload(), (c = null);
  630. s_oStage.removeChild(a);
  631. a = null;
  632. };
  633. this._onAudioToggle = function () {
  634. createjs.Sound.setMute(s_bAudioActive);
  635. s_bAudioActive = !s_bAudioActive;
  636. };
  637. this._onButPlayRelease = function () {
  638. this.unload();
  639. (!1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile) || createjs.Sound.play("click");
  640. s_oMain.gotoGame();
  641. };
  642. this._init();
  643. }
  644. function CMain(a) {
  645. var d,
  646. b = 0,
  647. c = 0,
  648. f = STATE_LOADING,
  649. e,
  650. g,
  651. k;
  652. this.initContainer = function () {
  653. s_oCanvas = document.getElementById("canvas");
  654. s_oStage = new createjs.Stage(s_oCanvas);
  655. s_oStage.preventSelection = false;
  656. createjs.Touch.enable(s_oStage);
  657. s_bMobile = jQuery.browser.mobile;
  658. !1 === s_bMobile &&
  659. (s_oStage.enableMouseOver(20),
  660. $("body").on("contextmenu", "#canvas", function (a) {
  661. return !1;
  662. }));
  663. s_iPrevTime = new Date().getTime();
  664. createjs.Ticker.addEventListener("tick", this._update);
  665. createjs.Ticker.setFPS(30);
  666. navigator.userAgent.match(/Windows Phone/i) && (DISABLE_SOUND_MOBILE = !0);
  667. (!1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile) || this._initSounds();
  668. s_oSpriteLibrary = new CSpriteLibrary();
  669. g = new CPreloader();
  670. this._loadImages();
  671. d = !0;
  672. };
  673. this.soundLoaded = function () {
  674. b++;
  675. if (b === c) {
  676. g.unload();
  677. if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) s_oSoundTrack = createjs.Sound.play("soundtrack", { loop: 100 });
  678. this.gotoMenu();
  679. }
  680. };
  681. this._initSounds = function () {
  682. createjs.Sound.initializeDefaultPlugins() &&
  683. (0 < navigator.userAgent.indexOf("Opera") || 0 < navigator.userAgent.indexOf("OPR")
  684. ? ((createjs.Sound.alternateExtensions = ["m4a"]),
  685. createjs.Sound.addEventListener("fileload", createjs.proxy(this.soundLoaded, this)),
  686. createjs.Sound.registerSound("./sounds/ds_duck_hit.ogg", "duck_hit", 5),
  687. createjs.Sound.registerSound("./sounds/ds_duck_intro.ogg", "duck_intro", 5),
  688. createjs.Sound.registerSound("./sounds/ds_game_over.ogg", "game_over", 5),
  689. createjs.Sound.registerSound("./sounds/ds_no_bullets.ogg", "click"),
  690. createjs.Sound.registerSound("./sounds/ds_shot.ogg", "shot"),
  691. createjs.Sound.registerSound("./sounds/ds_soundtrack.ogg", "soundtrack"))
  692. : ((createjs.Sound.alternateExtensions = ["ogg"]),
  693. createjs.Sound.addEventListener("fileload", createjs.proxy(this.soundLoaded, this)),
  694. createjs.Sound.registerSound("./sounds/ds_duck_hit.m4a", "duck_hit", 5),
  695. createjs.Sound.registerSound("./sounds/ds_duck_intro.m4a", "duck_intro", 5),
  696. createjs.Sound.registerSound("./sounds/ds_game_over.m4a", "game_over", 5),
  697. createjs.Sound.registerSound("./sounds/ds_no_bullets.m4a", "click"),
  698. createjs.Sound.registerSound("./sounds/ds_shot.m4a", "shot"),
  699. createjs.Sound.registerSound("./sounds/ds_soundtrack.m4a", "soundtrack")),
  700. (c += 6));
  701. };
  702. this._loadImages = function () {
  703. s_oSpriteLibrary.init(this._onImagesLoaded, this._onAllImagesLoaded, this);
  704. s_oSpriteLibrary.addSprite("but_play", "./sprites/but_play.png");
  705. s_oSpriteLibrary.addSprite("but_exit", "./sprites/but_exit.png");
  706. s_oSpriteLibrary.addSprite("bg_menu", "./sprites/bg_menu.jpg");
  707. s_oSpriteLibrary.addSprite("msg_box", "./sprites/msg_box.png");
  708. s_oSpriteLibrary.addSprite("but_left", "./sprites/but_left.png");
  709. s_oSpriteLibrary.addSprite("but_right", "./sprites/but_right.png");
  710. s_oSpriteLibrary.addSprite("but_up", "./sprites/but_up.png");
  711. s_oSpriteLibrary.addSprite("but_down", "./sprites/but_down.png");
  712. s_oSpriteLibrary.addSprite("but_upleft", "./sprites/but_up_left.png");
  713. s_oSpriteLibrary.addSprite("but_downleft", "./sprites/but_down_left.png");
  714. s_oSpriteLibrary.addSprite("but_upright", "./sprites/but_up_right.png");
  715. s_oSpriteLibrary.addSprite("but_downright", "./sprites/but_down_right.png");
  716. s_oSpriteLibrary.addSprite("shot_panel", "./sprites/shot_panel.png");
  717. s_oSpriteLibrary.addSprite("hit_panel", "./sprites/hit_panel.png");
  718. s_oSpriteLibrary.addSprite("bullet", "./sprites/bullet.png");
  719. s_oSpriteLibrary.addSprite("tap_shot", "./sprites/tap_shot.png");
  720. s_oSpriteLibrary.addSprite("hit_icon", "./sprites/hit_icon.png");
  721. s_oSpriteLibrary.addSprite("audio_icon", "./sprites/audio_icon.png");
  722. s_oSpriteLibrary.addSprite("bg_game", "./sprites/bg_game.jpg");
  723. s_oSpriteLibrary.addSprite("grass", "./sprites/grass.png");
  724. s_oSpriteLibrary.addSprite("tree", "./sprites/tree.png");
  725. s_oSpriteLibrary.addSprite("scope", "./sprites/gun_sight.png");
  726. s_oSpriteLibrary.addSprite("tap_shot", "./sprites/tap_shot.png");
  727. s_oSpriteLibrary.addSprite("duck_1", "./sprites/duck_1.png");
  728. s_oSpriteLibrary.addSprite("duck_2", "./sprites/duck_2.png");
  729. s_oSpriteLibrary.addSprite("duck_3", "./sprites/duck_3.png");
  730. s_oSpriteLibrary.addSprite("duck_4", "./sprites/duck_4.png");
  731. s_oSpriteLibrary.addSprite("target", "./sprites/target.png");
  732. s_oSpriteLibrary.addSprite("life_panel", "./sprites/life_panel.png");
  733. s_oSpriteLibrary.addSprite("help_panel_desktop", "./sprites/help_panel_desktop.png");
  734. s_oSpriteLibrary.addSprite("help_panel_mobile", "./sprites/help_panel_mobile.png");
  735. c += s_oSpriteLibrary.getNumSprites();
  736. s_oSpriteLibrary.loadSprites();
  737. };
  738. this._onImagesLoaded = function () {
  739. b++;
  740. g.refreshLoader(Math.floor((b / c) * 100));
  741. if (b === c) {
  742. g.unload();
  743. if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) s_oSoundTrack = createjs.Sound.play("soundtrack", { loop: 100 });
  744. this.gotoMenu();
  745. }
  746. };
  747. this._onAllImagesLoaded = function () {};
  748. this.onAllPreloaderImagesLoaded = function () {
  749. this._loadImages();
  750. };
  751. this.gotoMenu = function () {
  752. new CMenu();
  753. f = STATE_MENU;
  754. };
  755. this.gotoGame = function () {
  756. k = new CGame(e);
  757. f = STATE_GAME;
  758. $(s_oMain).trigger("game_start");
  759. };
  760. this.gotoHelp = function () {
  761. new CHelp();
  762. f = STATE_HELP;
  763. };
  764. this.stopUpdate = function () {
  765. d = !1;
  766. };
  767. this.startUpdate = function () {
  768. d = !0;
  769. };
  770. this._update = function (a) {
  771. if (!1 !== d) {
  772. var b = new Date().getTime();
  773. s_iTimeElaps = b - s_iPrevTime;
  774. s_iCntTime += s_iTimeElaps;
  775. s_iCntFps++;
  776. s_iPrevTime = b;
  777. 1e3 <= s_iCntTime && ((s_iCurFps = s_iCntFps), (s_iCntTime -= 1e3), (s_iCntFps = 0));
  778. f === STATE_GAME && k.update();
  779. s_oStage.update(a);
  780. }
  781. };
  782. s_oMain = this;
  783. e = a;
  784. this.initContainer();
  785. }
  786. var s_bMobile,
  787. s_bAudioActive = !0,
  788. s_iCntTime = 0,
  789. s_iTimeElaps = 0,
  790. s_iPrevTime = 0,
  791. s_iCntFps = 0,
  792. s_iCurFps = 0,
  793. s_oDrawLayer,
  794. s_oStage,
  795. s_oMain,
  796. s_oSpriteLibrary,
  797. s_oSoundTrack,
  798. s_oCanvas;
  799. TEXT_GAMEOVER = "GAME OVER";
  800. TEXT_SCORE = "SCORE";
  801. TEXT_PLAY = "PLAY";
  802. TEXT_HELP1 = "USE ARROW BUTTONS OR KEYS TO MOVE THE SCOPE";
  803. TEXT_HELP2 = "CLICK SPACEBAR OR FIRE BUTTON TO SHOOT";
  804. TEXT_HELP3 = "YOU HAVE 3 BULLETS TO HIT THE AIRCRAFTS, DON'T LET IT FLY AWAY OR YOU WILL LOSE A LIFE";
  805. TEXT_HELP_MOB1 = "USE ARROW BUTTONS TO MOVE THE SCOPE";
  806. TEXT_HELP_MOB2 = "PRESS FIRE BUTTON TO SHOOT";
  807. TEXT_SHOOT = "SHOOT";
  808. TEXT_HIT = "HIT";
  809. TEXT_BONUS = "BONUS SCORE";
  810. TEXT_SCORE = "SCORE";
  811. TEXT_NOAMMO = "NO AMMO";
  812. TEXT_MULTIPLY = "MULTIPY";
  813. function CInterface() {
  814. var a, d, b, c, f, e, g, k, l, h, p, u, n, r, t, x, B, y;
  815. this._init = function () {
  816. a = 0;
  817. p = [];
  818. y = createBitmap(s_oSpriteLibrary.getSprite("life_panel"));
  819. y.x = 770;
  820. y.y = 600;
  821. s_oStage.addChild(y);
  822. _oButShot = new CGfxButton(897, 688, s_oSpriteLibrary.getSprite("shot_panel"), !0);
  823. _oButShot.addEventListener(ON_MOUSE_UP, this._onShot, this);
  824. b = createBitmap(s_oSpriteLibrary.getSprite("hit_panel"));
  825. b.x = 218;
  826. b.y = 643;
  827. s_oStage.addChild(b);
  828. x = new createjs.Text(TEXT_HIT, "bold 30px walibi0615bold", "#ffffff");
  829. x.x = 238;
  830. x.y = 663;
  831. s_oStage.addChild(x);
  832. r = new createjs.Text(TEXT_BONUS, "bold 22px walibi0615bold", "#ffffff");
  833. r.x = 360;
  834. r.y = 658;
  835. s_oStage.addChild(r);
  836. u = new createjs.Text(TEXT_SCORE, "bold 30px walibi0615bold", "#000");
  837. u.x = 32;
  838. u.y = 12;
  839. s_oStage.addChild(u);
  840. n = new createjs.Text(TEXT_SCORE, "bold 30px walibi0615bold", "#ffffff");
  841. n.x = 30;
  842. n.y = 10;
  843. s_oStage.addChild(n);
  844. g = new createjs.Text(TEXT_NOAMMO, "bold 30px walibi0615bold", "#ffffff");
  845. g.x = 800;
  846. g.y = 670;
  847. g.lineWidth = 60;
  848. g.shadow = new createjs.Shadow("#000", 2, 2, 2);
  849. g.visible = !1;
  850. s_oStage.addChild(g);
  851. k = new createjs.Text("X " + PLAYER_LIVES, "bold 22px walibi0615bold", "#ffffff");
  852. k.x = 895;
  853. k.y = 630;
  854. k.textAlign = "right";
  855. k.textBaseline = "alphabetic";
  856. s_oStage.addChild(k);
  857. f = new createjs.Text("0", "bold 30px walibi0615bold", "#000");
  858. f.x = 172;
  859. f.y = 12;
  860. s_oStage.addChild(f);
  861. c = new createjs.Text("0", "bold 30px walibi0615bold", "#ffffff");
  862. c.x = 170;
  863. c.y = 10;
  864. s_oStage.addChild(c);
  865. e = new createjs.Text("", "bold 30px walibi0615bold", "yellow");
  866. e.textAlign = "center";
  867. e.shadow = new createjs.Shadow("#000", 2, 2, 2);
  868. t = new createjs.Text("0000", "bold 30px ComicSansMS-Bold", "#ffffff");
  869. t.x = 660;
  870. t.y = 682;
  871. t.textAlign = "right";
  872. t.textBaseline = "alphabetic";
  873. s_oStage.addChild(t);
  874. l = [];
  875. for (
  876. var q = s_oSpriteLibrary.getSprite("hit_icon"),
  877. v = new createjs.SpriteSheet({ images: [q], frames: { width: 51, height: 43 }, animations: { nohit: [0], hit: [1] } }),
  878. z = 230,
  879. q = 0;
  880. 9 > q;
  881. q++
  882. ) {
  883. var w = createSprite(v, "nohit", 0, 0, 51, 43);
  884. w.x = z;
  885. w.y = 710;
  886. w.visible = !1;
  887. s_oStage.addChild(w);
  888. l[q] = w;
  889. z += 58;
  890. }
  891. h = [];
  892. v = 800;
  893. for (q = 0; q < NUM_BULLETS; q++)
  894. (w = createBitmap(s_oSpriteLibrary.getSprite("bullet"))), (w.x = v), (w.y = 680), s_oStage.addChild(w), (h[q] = w), (v += 30);
  895. q = s_oSpriteLibrary.getSprite("but_exit");
  896. // d = new CGfxButton(CANVAS_WIDTH - q.height / 2 - 10, q.height / 2 + 10, q, !0);
  897. // d.addEventListener(ON_MOUSE_UP, this._onExit, this);
  898. w = CANVAS_WIDTH - q.width / 2 - 80;
  899. if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile)
  900. (q = s_oSpriteLibrary.getSprite("audio_icon")),
  901. (B = new CToggle(w, 10 + q.height / 2, q, s_bAudioActive)),
  902. B.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this);
  903. };
  904. this.unload = function () {
  905. d.unload();
  906. d = null;
  907. _oButShot.unload();
  908. _oButShot = null;
  909. if (!1 === DISABLE_SOUND_MOBILE || !1 === s_bMobile) B.unload(), (B = null);
  910. };
  911. this.refreshScore = function (a) {
  912. f.text = a;
  913. c.text = a;
  914. };
  915. this.refreshTime = function (a) {
  916. t.text = a;
  917. };
  918. this.viewMultiScore = function (a) {
  919. e.text = TEXT_MULTIPLY + " X" + a;
  920. e.x = CANVAS_WIDTH / 2;
  921. e.y = CANVAS_HEIGHT / 2;
  922. s_oStage.addChild(e);
  923. };
  924. this.cleanScore = function () {
  925. s_oStage.removeChild(e);
  926. };
  927. this.refreshLife = function (a) {
  928. k.text = "X " + a;
  929. };
  930. this.refreshBullets = function (a) {
  931. h[a].visible = !1;
  932. };
  933. this.reloadBullets = function (a) {
  934. for (var b = 0; b < a; b++) h[b].visible = !0;
  935. };
  936. this.noAmmo = function () {
  937. g.visible = !0;
  938. g.alpha = 1;
  939. createjs.Tween.get(g, { override: !0 }).to({ alpha: 0 }, 1e3, createjs.Ease.quadIn);
  940. };
  941. this.noAmmoDelete = function () {
  942. g.visible = !1;
  943. createjs.Tween.removeTweens(g);
  944. };
  945. this.setHit = function () {
  946. p.push(!0);
  947. this._setVisibleDuck();
  948. };
  949. this.setNoHit = function () {
  950. p.push(!1);
  951. this._setVisibleDuck();
  952. };
  953. this._setVisibleDuck = function () {
  954. if (8 < a) {
  955. for (var b = 0; 8 > b; b++) !0 === p[a - 8 + b] ? l[b].gotoAndPlay("hit") : l[b].gotoAndPlay("nohit");
  956. !0 === p[a] ? l[8].gotoAndPlay("hit") : l[8].gotoAndPlay("nohit");
  957. } else !0 === p[a] ? (l[a].gotoAndPlay("hit"), (l[a].visible = !0)) : !1 === p[a] && (l[a].gotoAndPlay("nohit"), (l[a].visible = !0));
  958. a++;
  959. };
  960. this._onKeyUpReleased = function () {
  961. s_oGame.onKeyUpReleased();
  962. };
  963. this._onKeyDownReleased = function () {
  964. s_oGame.onKeyDownReleased();
  965. };
  966. this._onKeyRightReleased = function () {
  967. s_oGame.onKeyRightReleased();
  968. };
  969. this._onKeyLeftReleased = function () {
  970. s_oGame.onKeyLeftReleased();
  971. };
  972. this._onLeftPressed = function () {
  973. s_oGame.onLeft();
  974. };
  975. this._onRightPressed = function () {
  976. s_oGame.onRight();
  977. };
  978. this._onDownPressed = function () {
  979. s_oGame.onDown();
  980. };
  981. this._onUpPressed = function () {
  982. s_oGame.onUp();
  983. };
  984. this._onShot = function () {
  985. s_oGame.onShot();
  986. };
  987. this.onExitFromHelp = function () {
  988. (void 0).unload();
  989. };
  990. this._onAudioToggle = function () {
  991. createjs.Sound.setMute(s_bAudioActive);
  992. s_bAudioActive = !s_bAudioActive;
  993. };
  994. this._onExit = function () {
  995. s_oGame.onExit();
  996. };
  997. this._init();
  998. return this;
  999. }
  1000. function CHelpPanel() {
  1001. var a, d, b, c, f, e, g, k, l, h;
  1002. this._init = function () {
  1003. var p;
  1004. p = s_bMobile ? s_oSpriteLibrary.getSprite("help_panel_mobile") : s_oSpriteLibrary.getSprite("help_panel_desktop");
  1005. l = createBitmap(p);
  1006. s_oStage.addChild(l);
  1007. !1 === s_bMobile ? ((g = TEXT_HELP1), (k = TEXT_HELP2)) : ((g = TEXT_HELP_MOB1), (k = TEXT_HELP_MOB2));
  1008. d = new createjs.Text(g, "bold 22px walibi0615bold", "#000000");
  1009. d.textAlign = "left";
  1010. d.lineWidth = 360;
  1011. d.x = 230;
  1012. d.y = 212;
  1013. a = new createjs.Text(g, "bold 22px walibi0615bold", "#ffffff");
  1014. a.textAlign = "left";
  1015. a.lineWidth = 360;
  1016. a.x = 232;
  1017. a.y = 210;
  1018. c = new createjs.Text(k, "bold 22px walibi0615bold", "#000000");
  1019. c.textAlign = "left";
  1020. c.lineWidth = 300;
  1021. c.x = 230;
  1022. c.y = 342;
  1023. b = new createjs.Text(k, "bold 22px walibi0615bold", "#ffffff");
  1024. b.textAlign = "left";
  1025. b.lineWidth = 300;
  1026. b.x = 232;
  1027. b.y = 340;
  1028. e = new createjs.Text(TEXT_HELP3, "bold 22px walibi0615bold", "#000000");
  1029. e.textAlign = "left";
  1030. e.lineWidth = 440;
  1031. e.x = 230;
  1032. e.y = 462;
  1033. f = new createjs.Text(TEXT_HELP3, "bold 22px walibi0615bold", "#ffffff");
  1034. f.textAlign = "left";
  1035. f.lineWidth = 440;
  1036. f.x = 232;
  1037. f.y = 460;
  1038. h = new createjs.Container();
  1039. h.addChild(l, d, a, c, b, e, f);
  1040. s_oStage.addChild(h);
  1041. p = createBitmap(s_oSpriteLibrary.getSprite("bullet"));
  1042. p.x = 700;
  1043. p.y = 460;
  1044. h.addChild(p);
  1045. p = createBitmap(s_oSpriteLibrary.getSprite("bullet"));
  1046. p.x = 730;
  1047. p.y = 460;
  1048. h.addChild(p);
  1049. p = createBitmap(s_oSpriteLibrary.getSprite("bullet"));
  1050. p.x = 760;
  1051. p.y = 460;
  1052. h.addChild(p);
  1053. var u = this;
  1054. h.on("pressup", function () {
  1055. u._onExitHelp();
  1056. });
  1057. };
  1058. this.unload = function () {
  1059. s_oStage.removeChild(h);
  1060. var a = this;
  1061. h.off("pressup", function () {
  1062. a._onExitHelp();
  1063. });
  1064. };
  1065. this._onExitHelp = function () {
  1066. this.unload();
  1067. s_oGame._onExitHelp();
  1068. };
  1069. this._init();
  1070. }
  1071. function CGfxButton(a, d, b) {
  1072. var c, f, e;
  1073. this._init = function (a, b, d) {
  1074. c = [];
  1075. f = [];
  1076. e = createBitmap(d);
  1077. e.x = a;
  1078. e.y = b;
  1079. e.regX = d.width / 2;
  1080. e.regY = d.height / 2;
  1081. s_oStage.addChild(e);
  1082. this._initListener();
  1083. };
  1084. this.unload = function () {
  1085. e.off("mousedown", this.buttonDown);
  1086. e.off("pressup", this.buttonRelease);
  1087. s_oStage.removeChild(e);
  1088. };
  1089. this.setVisible = function (a) {
  1090. e.visible = a;
  1091. };
  1092. this._initListener = function () {
  1093. e.on("mousedown", this.buttonDown);
  1094. e.on("pressup", this.buttonRelease);
  1095. };
  1096. this.addEventListener = function (a, b, d) {
  1097. c[a] = b;
  1098. f[a] = d;
  1099. };
  1100. this.buttonRelease = function () {
  1101. e.scaleX = 1;
  1102. e.scaleY = 1;
  1103. c[ON_MOUSE_UP] && c[ON_MOUSE_UP].call(f[ON_MOUSE_UP]);
  1104. };
  1105. this.buttonDown = function () {
  1106. e.scaleX = 0.9;
  1107. e.scaleY = 0.9;
  1108. c[ON_MOUSE_DOWN] && c[ON_MOUSE_DOWN].call(f[ON_MOUSE_DOWN]);
  1109. };
  1110. this.setPosition = function (a, b) {
  1111. e.x = a;
  1112. e.y = b;
  1113. };
  1114. this.setX = function (a) {
  1115. e.x = a;
  1116. };
  1117. this.setY = function (a) {
  1118. e.y = a;
  1119. };
  1120. this.getButtonImage = function () {
  1121. return e;
  1122. };
  1123. this.getX = function () {
  1124. return e.x;
  1125. };
  1126. this.getY = function () {
  1127. return e.y;
  1128. };
  1129. this._init(a, d, b);
  1130. return this;
  1131. }
  1132. function CGame(a) {
  1133. function d(a) {
  1134. if (32 === a.keyCode && !0 === B) s_oGame.onShot();
  1135. else 37 === a.keyCode ? m.leftStop() : 38 === a.keyCode ? m.upStop() : 39 === a.keyCode ? m.rightStop() : 40 === a.keyCode && m.downStop();
  1136. }
  1137. function b(a) {
  1138. a || (a = window.event);
  1139. switch (a.keyCode) {
  1140. case 37:
  1141. s_oGame.onLeft();
  1142. break;
  1143. case 38:
  1144. s_oGame.onUp();
  1145. break;
  1146. case 39:
  1147. s_oGame.onRight();
  1148. break;
  1149. case 40:
  1150. s_oGame.onDown();
  1151. }
  1152. }
  1153. var c,
  1154. f,
  1155. e,
  1156. g,
  1157. k,
  1158. l,
  1159. h,
  1160. p,
  1161. u,
  1162. n,
  1163. r,
  1164. t,
  1165. x = !1,
  1166. B = !1,
  1167. y,
  1168. q,
  1169. v,
  1170. z,
  1171. w,
  1172. C,
  1173. L,
  1174. A,
  1175. M = null,
  1176. N,
  1177. O,
  1178. P,
  1179. m,
  1180. D,
  1181. E,
  1182. F,
  1183. G,
  1184. H,
  1185. I,
  1186. J,
  1187. K;
  1188. this._init = function () {
  1189. e = c = 0;
  1190. g = BONUS_TIME;
  1191. f = NUM_BULLETS;
  1192. k = 0;
  1193. l = PLAYER_LIVES;
  1194. p = u = h = 0;
  1195. y = !1;
  1196. v = [];
  1197. z = [];
  1198. w = [];
  1199. C = [];
  1200. L = [];
  1201. A = new CInterface();
  1202. var a = createBitmap(s_oSpriteLibrary.getSprite("bg_game"));
  1203. s_oStage.addChild(a);
  1204. a = s_oSpriteLibrary.getSprite("tree");
  1205. a = new createBitmap(a);
  1206. O = new createjs.Container();
  1207. O.y = 30;
  1208. s_oStage.addChild(O);
  1209. O.addChild(a);
  1210. P = new createjs.Container();
  1211. s_oStage.addChild(P);
  1212. this._initDucks();
  1213. this._initPos();
  1214. this.initDuckObj();
  1215. var a = s_oSpriteLibrary.getSprite("grass"),
  1216. n = createBitmap(a);
  1217. N = new createjs.Container();
  1218. N.y = CANVAS_HEIGHT - a.height;
  1219. s_oStage.addChild(N);
  1220. N.addChild(n);
  1221. m = new CScope();
  1222. A = new CInterface();
  1223. D = createBitmap(s_oSpriteLibrary.getSprite("but_up"));
  1224. D.x = 70;
  1225. D.y = 550;
  1226. s_oStage.addChild(D);
  1227. E = createBitmap(s_oSpriteLibrary.getSprite("but_down"));
  1228. E.x = 70;
  1229. E.y = 656;
  1230. s_oStage.addChild(E);
  1231. F = createBitmap(s_oSpriteLibrary.getSprite("but_left"));
  1232. F.x = 4;
  1233. F.y = 615;
  1234. s_oStage.addChild(F);
  1235. G = createBitmap(s_oSpriteLibrary.getSprite("but_right"));
  1236. G.x = 110;
  1237. G.y = 616;
  1238. s_oStage.addChild(G);
  1239. H = createBitmap(s_oSpriteLibrary.getSprite("but_upright"));
  1240. H.x = 110;
  1241. H.y = 559;
  1242. s_oStage.addChild(H);
  1243. I = createBitmap(s_oSpriteLibrary.getSprite("but_downright"));
  1244. I.x = 110;
  1245. I.y = 656;
  1246. s_oStage.addChild(I);
  1247. J = createBitmap(s_oSpriteLibrary.getSprite("but_upleft"));
  1248. J.x = 14;
  1249. J.y = 559;
  1250. s_oStage.addChild(J);
  1251. K = createBitmap(s_oSpriteLibrary.getSprite("but_downleft"));
  1252. K.x = 14;
  1253. K.y = 656;
  1254. s_oStage.addChild(K);
  1255. CHelpPanel();
  1256. s_bMobile
  1257. ? window.navigator.msPointerEnabled
  1258. ? ((t = 0),
  1259. s_oCanvas.addEventListener("MSPointerDown", this.onTouchStartMS, !1),
  1260. s_oCanvas.addEventListener("MSPointerMove", this.onTouchMoveMS, !1),
  1261. s_oCanvas.addEventListener("MSPointerUp", this.onTouchEndMS, !1))
  1262. : (s_oCanvas.addEventListener("touchstart", this.onTouchStart, !1),
  1263. s_oCanvas.addEventListener("touchmove", this.onTouchMove, !1),
  1264. s_oCanvas.addEventListener("touchend", this.onTouchEnd, !1))
  1265. : ((document.onkeydown = b),
  1266. (document.onkeyup = d),
  1267. s_oStage.addEventListener("stagemousedown", this.onMouseStart, !1),
  1268. s_oStage.addEventListener("stagemousemove", this.onMouseMove, !1),
  1269. s_oStage.addEventListener("stagemouseup", this.onMouseEnd, !1));
  1270. (!1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile) || s_oSoundTrack.setVolume(0.5);
  1271. };
  1272. this.onMouseStart = function (a) {
  1273. a = a || window.event;
  1274. n = parseInt(a.stageX);
  1275. r = parseInt(a.stageY);
  1276. y = !0;
  1277. };
  1278. this.onMouseMove = function (a) {
  1279. !1 !== y && ((n = parseInt(a.stageX)), (r = parseInt(a.stageY)));
  1280. };
  1281. this.onMouseEnd = function () {
  1282. y = !1;
  1283. m.resetAllDirection();
  1284. };
  1285. this.onTouchStart = function (a) {
  1286. y ||
  1287. ((n = parseInt((a.touches[0].pageX - s_oCanvasLeft) / s_iScaleFactor)), (r = parseInt((a.touches[0].pageY - s_oCanvasTop) / s_iScaleFactor)), (y = !0));
  1288. };
  1289. this.onTouchMove = function (a) {
  1290. a.preventDefault();
  1291. n = parseInt((a.touches[0].pageX - s_oCanvasLeft) / s_iScaleFactor);
  1292. r = parseInt((a.touches[0].pageY - s_oCanvasTop) / s_iScaleFactor);
  1293. };
  1294. this.onTouchEnd = function (a) {
  1295. 0 === a.touches.length && ((y = !1), m.resetAllDirection());
  1296. };
  1297. this.onTouchStartMS = function (a) {
  1298. t++;
  1299. 1 < t ||
  1300. ((n = parseInt(((a.pageX || a.targetTouches[0].pageX) - s_oCanvasLeft) / s_iScaleFactor)),
  1301. (r = parseInt(((a.pageY || a.targetTouches[0].pageY) - s_oCanvasTop) / s_iScaleFactor)),
  1302. (y = !0));
  1303. };
  1304. this.onTouchMoveMS = function (a) {
  1305. if (!window.navigator.msPointerEnabled || a.isPrimary)
  1306. a.preventDefault(),
  1307. (n = parseInt(((a.pageX || a.targetTouches[0].pageX) - s_oCanvasLeft) / s_iScaleFactor)),
  1308. (r = parseInt(((a.pageY || a.targetTouches[0].pageY) - s_oCanvasTop) / s_iScaleFactor));
  1309. };
  1310. this.onTouchEndMS = function (a) {
  1311. t--;
  1312. 0 === t && ((y = !1), m.resetAllDirection());
  1313. };
  1314. this.unload = function () {
  1315. B = !1;
  1316. m.unload();
  1317. A.unload();
  1318. null !== M && M.unload();
  1319. for (var a = 0; a < q.length; a++) q[a].unload();
  1320. s_oStage.removeAllChildren();
  1321. };
  1322. this._initDucks = function () {
  1323. for (var a = 0; a < DUCK_ON_SCREEN.length; a++) u < DUCK_ON_SCREEN[a] && (u = DUCK_ON_SCREEN[a]);
  1324. q = [];
  1325. for (a = 0; a < u; a++) q.push(new CDuck(P));
  1326. };
  1327. this._initPos = function () {
  1328. for (var a = 51; a < CANVAS_WIDTH; ) v.push(new createjs.Point(a, 565)), (a += CANVAS_WIDTH / 20);
  1329. for (a = 0; a < v.length; a++) C.push(a);
  1330. z[0] = new createjs.Point(-120, 400);
  1331. z[1] = new createjs.Point(-120, 200);
  1332. z[2] = new createjs.Point(250, -120);
  1333. z[3] = new createjs.Point(500, -120);
  1334. w[0] = new createjs.Point(CANVAS_WIDTH + 120, 400);
  1335. w[1] = new createjs.Point(CANVAS_WIDTH + 120, 200);
  1336. w[2] = new createjs.Point(1e3, -120);
  1337. w[3] = new createjs.Point(750, -120);
  1338. for (a = 0; a < z.length; a++) L.push(a);
  1339. };
  1340. this.initDuckObj = function () {
  1341. (!1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile) || createjs.Sound.play("duck_intro");
  1342. if (h === DUCK_ON_SCREEN.length) for (var a = (h = 0); a < q.length; a++) q[a].increaseSpeed();
  1343. shuffle(C);
  1344. shuffle(L);
  1345. for (a = 0; a < DUCK_ON_SCREEN[h]; a++) C[a] < v.length / 2 ? q[a].reset(v[C[a]], w[L[a]]) : q[a].reset(v[C[a]], z[L[a]]), e++, q[a].show();
  1346. k = DUCK_ON_SCREEN[h];
  1347. h++;
  1348. this._refreshScreen();
  1349. };
  1350. this.checkDuck = function () {
  1351. k--;
  1352. 0 === k && this.initDuckObj();
  1353. };
  1354. this.onKeyUpReleased = function () {
  1355. m.upStop();
  1356. };
  1357. this.onKeyDownReleased = function () {
  1358. m.downStop();
  1359. };
  1360. this.onKeyLeftReleased = function () {
  1361. m.leftStop();
  1362. };
  1363. this.onKeyRightReleased = function () {
  1364. m.rightStop();
  1365. };
  1366. this.onLeft = function () {
  1367. m.moveLeft();
  1368. };
  1369. this.onRight = function () {
  1370. m.moveRight();
  1371. };
  1372. this.onUp = function () {
  1373. m.moveUp();
  1374. };
  1375. this.onDown = function () {
  1376. m.moveDown();
  1377. };
  1378. this.onShot = function () {
  1379. 0 === f
  1380. ? (A.noAmmo(), (!1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile) || createjs.Sound.play("click"))
  1381. : (f--, A.refreshBullets(f), m.playShot(), (x = !0));
  1382. };
  1383. this._reloadRifle = function () {
  1384. f = NUM_BULLETS;
  1385. A.reloadBullets(f);
  1386. };
  1387. this._showTime = function () {
  1388. A.refreshTime(g);
  1389. };
  1390. this._checkIfDuckHit = function (a) {
  1391. if (
  1392. m.bullsEye().x > a.target().x &&
  1393. m.bullsEye().x < a.target().x + a.target().w &&
  1394. m.bullsEye().y > a.target().y &&
  1395. m.bullsEye().y < a.target().y + a.target().h
  1396. )
  1397. return !0;
  1398. };
  1399. this.checkCollision = function (a) {
  1400. if (this._checkIfDuckHit(a) && x && a.isVisible() && !a.isHit()) {
  1401. a.onHit();
  1402. var b = SCORE_HIT + g;
  1403. p++;
  1404. 1 < p && ((b *= p), A.viewMultiScore(p));
  1405. p = 0;
  1406. c += b;
  1407. new CScoreText(b, a.getPos().x, a.getPos().y);
  1408. A.refreshScore(c);
  1409. (!1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile) || createjs.Sound.play("duck_hit");
  1410. }
  1411. };
  1412. this.setHitPane = function () {
  1413. A.setHit();
  1414. };
  1415. this.setNoHitPane = function () {
  1416. A.setNoHit();
  1417. };
  1418. this.subtractLife = function () {
  1419. l--;
  1420. 0 === l && (this.gameOver(), (B = !1));
  1421. A.refreshLife(l);
  1422. };
  1423. this._refreshScreen = function () {
  1424. this._reloadRifle();
  1425. g = BONUS_TIME;
  1426. A.cleanScore();
  1427. A.noAmmoDelete();
  1428. };
  1429. this.onExit = function () {
  1430. this.unload();
  1431. s_oMain.gotoMenu();
  1432. $(s_oMain).trigger("restart");
  1433. };
  1434. this._onExitHelp = function () {
  1435. B = !0;
  1436. };
  1437. this.gameOver = function () {
  1438. (!1 !== DISABLE_SOUND_MOBILE && !1 !== s_bMobile) || createjs.Sound.play("game_over");
  1439. M = CEndPanel(s_oSpriteLibrary.getSprite("msg_box"));
  1440. M.show(c);
  1441. };
  1442. this.checkController = function () {
  1443. var a = H.globalToLocal(n, r);
  1444. H.hitTest(a.x, a.y)
  1445. ? (m.moveUp(), m.moveRight(), m.downStop(), m.leftStop())
  1446. : ((a = I.globalToLocal(n, r)),
  1447. I.hitTest(a.x, a.y)
  1448. ? (m.moveDown(), m.moveRight(), m.upStop(), m.leftStop())
  1449. : ((a = J.globalToLocal(n, r)),
  1450. J.hitTest(a.x, a.y)
  1451. ? (m.moveUp(), m.moveLeft(), m.downStop(), m.rightStop())
  1452. : ((a = K.globalToLocal(n, r)),
  1453. K.hitTest(a.x, a.y)
  1454. ? (m.moveDown(), m.moveLeft(), m.upStop(), m.rightStop())
  1455. : ((a = D.globalToLocal(n, r)),
  1456. D.hitTest(a.x, a.y)
  1457. ? (m.moveUp(), m.downStop(), m.rightStop(), m.leftStop())
  1458. : ((a = E.globalToLocal(n, r)),
  1459. E.hitTest(a.x, a.y)
  1460. ? (m.moveDown(), m.upStop(), m.rightStop(), m.leftStop())
  1461. : ((a = F.globalToLocal(n, r)),
  1462. F.hitTest(a.x, a.y)
  1463. ? (m.moveLeft(), m.downStop(), m.rightStop(), m.upStop())
  1464. : ((a = G.globalToLocal(n, r)),
  1465. G.hitTest(a.x, a.y) ? (m.moveRight(), m.downStop(), m.upStop(), m.leftStop()) : m.resetAllDirection())))))));
  1466. };
  1467. this.update = function () {
  1468. if (B) {
  1469. y && this.checkController();
  1470. for (var a = 0; a < u; a++) q[a].update(), this.checkCollision(q[a]);
  1471. x = !1;
  1472. m.update();
  1473. g -= s_iTimeElaps;
  1474. 0 > g && (g = 0);
  1475. this._showTime();
  1476. }
  1477. };
  1478. s_oGame = this;
  1479. SCOPE_ACCELERATION = a.scope_accelleration;
  1480. SCOPE_FRICTION = a.scope_friction;
  1481. MAX_SCOPE_SPEED = a.max_scope_speed;
  1482. NUM_BULLETS = a.num_bullets;
  1483. SCORE_HIT = a.hit_score;
  1484. BONUS_TIME = a.bonus_time;
  1485. PLAYER_LIVES = a.lives;
  1486. DUCK_INCREASE_SPEED = a.duck_increase_speed;
  1487. DUCK_ON_SCREEN = a.duck_occurence;
  1488. this._init();
  1489. }
  1490. var s_oGame;
  1491. function CEndPanel(a) {
  1492. var d, b, c, f, e, g;
  1493. this._init = function (a) {
  1494. d = createBitmap(a);
  1495. e = new createjs.Text("", "bold 60px walibi0615bold", "#000");
  1496. e.x = CANVAS_WIDTH / 2 + 1;
  1497. e.y = CANVAS_HEIGHT / 2 - 160;
  1498. e.textAlign = "center";
  1499. f = new createjs.Text("", "bold 60px walibi0615bold", "#ffffff");
  1500. f.x = CANVAS_WIDTH / 2;
  1501. f.y = CANVAS_HEIGHT / 2 - 162;
  1502. f.textAlign = "center";
  1503. b = new createjs.Text("", "bold 40px walibi0615bold", "#000");
  1504. b.x = CANVAS_WIDTH / 2 + 1;
  1505. b.y = CANVAS_HEIGHT / 2 + 50;
  1506. b.textAlign = "center";
  1507. c = new createjs.Text("", "bold 40px walibi0615bold", "#ffffff");
  1508. c.x = CANVAS_WIDTH / 2;
  1509. c.y = CANVAS_HEIGHT / 2 + 52;
  1510. c.textAlign = "center";
  1511. g = new createjs.Container();
  1512. g.alpha = 0;
  1513. g.visible = !1;
  1514. g.addChild(d, b, c, e, f);
  1515. s_oStage.addChild(g);
  1516. };
  1517. this.unload = function () {
  1518. g.off("mousedown", this._onExit);
  1519. };
  1520. this._initListener = function () {
  1521. g.on("mousedown", this._onExit);
  1522. };
  1523. this.show = function (a) {
  1524. createjs.Sound.play("game_over");
  1525. e.text = TEXT_GAMEOVER;
  1526. f.text = TEXT_GAMEOVER;
  1527. b.text = TEXT_SCORE + ": " + a;
  1528. c.text = TEXT_SCORE + ": " + a;
  1529. g.visible = !0;
  1530. var d = this;
  1531. createjs.Tween.get(g)
  1532. .to({ alpha: 1 }, 500)
  1533. .call(function () {
  1534. d._initListener();
  1535. });
  1536. $(s_oMain).trigger("save_score", a);
  1537. };
  1538. this._onExit = function () {
  1539. g.off("mousedown", this._onExit);
  1540. s_oStage.removeChild(g);
  1541. s_oGame.onExit();
  1542. };
  1543. this._init(a);
  1544. return this;
  1545. }
  1546. function CDuck(a) {
  1547. var d, b, c, f, e, g, k, l, h, p, u, n, r, t, x;
  1548. this._init = function (a) {
  1549. b = 0;
  1550. c = DUCK_START_SPEED;
  1551. f = 200;
  1552. d = 102;
  1553. g = 300;
  1554. l = !1;
  1555. p = [];
  1556. u = a;
  1557. a = {
  1558. images: [s_oSpriteLibrary.getSprite("duck_1")],
  1559. frames: { width: 200, height: 204, regX: 100, regY: 102 },
  1560. animations: { fly: [0, 6, "fly"], hit: [7, 15, "hit_stop"], hit_stop: [15], fall: [16, 44, "fall"] },
  1561. };
  1562. var e = {
  1563. images: [s_oSpriteLibrary.getSprite("duck_2")],
  1564. frames: { width: 200, height: 204, regX: 100, regY: 102 },
  1565. animations: { fly: [0, 6, "fly"], hit: [7, 15, "hit_stop"], hit_stop: [15], fall: [16, 44, "fall"] },
  1566. },
  1567. h = {
  1568. images: [s_oSpriteLibrary.getSprite("duck_3")],
  1569. frames: { width: 200, height: 204, regX: 100, regY: 102 },
  1570. animations: { fly: [0, 6, "fly"], hit: [7, 15, "hit_stop"], hit_stop: [15], fall: [16, 44, "fall"] },
  1571. },
  1572. k = {
  1573. images: [s_oSpriteLibrary.getSprite("duck_4")],
  1574. frames: { width: 200, height: 204, regX: 100, regY: 102 },
  1575. animations: { fly: [0, 6, "fly"], hit: [7, 15, "hit_stop"], hit_stop: [15], fall: [16, 44, "fall"] },
  1576. };
  1577. r = new createjs.Rectangle(0, 0, 160, 80);
  1578. p[0] = new createjs.SpriteSheet(a);
  1579. p[1] = new createjs.SpriteSheet(e);
  1580. p[2] = new createjs.SpriteSheet(h);
  1581. p[3] = new createjs.SpriteSheet(k);
  1582. n = createSprite(p[0], "fly", 100, 102, 200, 204);
  1583. n.visible = !1;
  1584. n.stop();
  1585. u.addChild(n);
  1586. };
  1587. this._changeSprite = function () {
  1588. var a = Math.floor(4 * Math.random());
  1589. n.spriteSheet = p[a];
  1590. };
  1591. this._calculateMid = function () {
  1592. var a;
  1593. a = t.x > x.x ? new createjs.Point(t.x + 0.2 * (t.x - x.x), x.y - d / 2) : new createjs.Point(x.x - 0.2 * (x.x - t.x), x.y - d / 2);
  1594. h = { start: t, end: x, traj: a };
  1595. };
  1596. this._selectInterpolation = function () {
  1597. e = Math.floor(2 * Math.random());
  1598. };
  1599. this.reset = function (a, b) {
  1600. this._changeSprite();
  1601. createjs.Tween.removeTweens(n);
  1602. n.x = a.x;
  1603. n.y = a.y;
  1604. t = a;
  1605. x = b;
  1606. l = !1;
  1607. g = 300;
  1608. this._calculateMid();
  1609. this._selectInterpolation();
  1610. };
  1611. this.increaseSpeed = function () {
  1612. c += DUCK_INCREASE_SPEED;
  1613. };
  1614. this.unload = function () {
  1615. u.removeChild(n);
  1616. };
  1617. this.show = function () {
  1618. t.x < CANVAS_WIDTH / 2 && (n.scaleX = -1);
  1619. t.x > CANVAS_WIDTH / 2 && (n.scaleX = 1);
  1620. n.visible = !0;
  1621. n.gotoAndPlay("fly");
  1622. k = !0;
  1623. };
  1624. this.unShow = function () {
  1625. n.visible = !1;
  1626. };
  1627. this._updateRect = function () {
  1628. r.x = n.x - 80;
  1629. r.y = n.y - 40;
  1630. };
  1631. this.target = function () {
  1632. return { x: r.x, y: r.y, w: r.width, h: r.height };
  1633. };
  1634. this.setVisible = function () {
  1635. n.visible = !0;
  1636. };
  1637. this.isVisible = function () {
  1638. return n.visible;
  1639. };
  1640. this.onHit = function () {
  1641. n.alpha = 1;
  1642. n.gotoAndPlay("hit");
  1643. b = 0;
  1644. k = l = !0;
  1645. };
  1646. this.getSprite = function () {
  1647. return n;
  1648. };
  1649. this.getPos = function () {
  1650. return { x: n.x, y: n.y };
  1651. };
  1652. this.isHit = function () {
  1653. return l;
  1654. };
  1655. this._updateFly = function () {
  1656. b += c;
  1657. b > f && ((b = 0), (k = n.visible = !1), s_oGame.setNoHitPane(), s_oGame.checkDuck(), s_oGame.subtractLife());
  1658. var a;
  1659. switch (e) {
  1660. case 0:
  1661. a = easeLinear(b, 0, 1, f);
  1662. break;
  1663. case 1:
  1664. a = easeInSine(b, 0, 1, f);
  1665. }
  1666. a = getTrajectoryPoint(a, h);
  1667. n.x = a.x;
  1668. n.y = a.y;
  1669. this._updateRect();
  1670. };
  1671. this._updateFall = function () {
  1672. createjs.Tween.get(n)
  1673. .to({ y: CANVAS_HEIGHT }, 1e3, createjs.Ease.quadIn)
  1674. .call(function () {
  1675. s_oGame.checkDuck();
  1676. })
  1677. .call(function () {
  1678. s_oGame.setHitPane();
  1679. });
  1680. };
  1681. this.update = function () {
  1682. if (k)
  1683. switch (n.currentAnimation) {
  1684. case "fly":
  1685. this._updateFly();
  1686. break;
  1687. case "hit_stop":
  1688. g -= s_iTimeElaps;
  1689. 0 > g && ((g = 300), n.gotoAndPlay("fall"));
  1690. break;
  1691. case "fall":
  1692. this._updateFall(), (k = !1);
  1693. }
  1694. };
  1695. this._init(a);
  1696. }