core.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. let starttime = 0
  2. let canvas;
  3. var zodiac_message_list = [];
  4. var zodiac_text_list = [];
  5. var proverbs = [];
  6. var localization_list = ['en-us', 'zh-cn', 'zh-hk', 'zh-tw', 'ko', 'ja','th', 'id', 'ms', 'es', 'pt-br'];
  7. var lang;
  8. $(document).ready(function() {
  9. $("#fade-wrapper").show();
  10. canvas = createHiResCanvas(window.innerWidth, window.innerHeight);
  11. var parent = document.getElementsByClassName("my-container")[0];
  12. parent.parentNode.insertBefore(canvas, parent);
  13. let getLang = () => (navigator.language || navigator.browserLanguage || (navigator.languages||[ "en" ])[0]).split(/[_-]/)[0].toLowerCase()
  14. let language = window.navigator.languages[0];
  15. if(getParameterByName("lang", document.location.href) == null) {
  16. if(localization_list.indexOf(language.toLocaleLowerCase()) > - 1) {
  17. lang = language.toLocaleLowerCase();
  18. } else {
  19. lang = localization_list[0];
  20. }
  21. document.location.href = window.location.href.toString().split("?")[0] + "?lang=" + lang;
  22. } else {
  23. lang = getParameterByName("lang", document.location.href);
  24. if(localization_list.indexOf(lang.toLocaleLowerCase()) < 0) {
  25. lang = "en-us";
  26. document.location.href = window.location.href.toString().split("?")[0] + "?lang=" + lang;
  27. }
  28. }
  29. $.i18n().load(
  30. {
  31. "en-us": 'localization/en-us.json',
  32. "zh-cn": 'localization/zh-cn.json',
  33. "zh-hk": 'localization/zh-hk.json',
  34. "zh-tw": 'localization/zh-tw.json',
  35. "es": 'localization/es.json',
  36. "ms": 'localization/ms.json',
  37. "pt-br": 'localization/pt-br.json',
  38. "ko": 'localization/ko.json',
  39. "id": 'localization/id.json',
  40. "th":'localization/th.json',
  41. "ja": 'localization/ja.json'
  42. }).done(
  43. function () {
  44. $.i18n().locale = lang;
  45. zodiac_message_list = [
  46. $.i18n('animal_rat'),
  47. $.i18n('animal_ox'),
  48. $.i18n('animal_tiger'),
  49. $.i18n('animal_rabbit'),
  50. $.i18n('animal_dragon'),
  51. $.i18n('animal_snake'),
  52. $.i18n('animal_horse'),
  53. $.i18n('animal_goat'),
  54. $.i18n('animal_monkey'),
  55. $.i18n('animal_rooster'),
  56. $.i18n('animal_dog'),
  57. $.i18n('animal_pig')
  58. ];
  59. zodiac_text_list = [
  60. $.i18n('animal_text_rat'),
  61. $.i18n('animal_text_ox'),
  62. $.i18n('animal_text_tiger'),
  63. $.i18n('animal_text_rabbit'),
  64. $.i18n('animal_text_dragon'),
  65. $.i18n('animal_text_snake'),
  66. $.i18n('animal_text_horse'),
  67. $.i18n('animal_text_goat'),
  68. $.i18n('animal_text_monkey'),
  69. $.i18n('animal_text_rooster'),
  70. $.i18n('animal_text_dog'),
  71. $.i18n('animal_text_pig')
  72. ];
  73. proverbs = [
  74. $.i18n('fail_states_rat'),
  75. $.i18n('fail_states_ox'),
  76. $.i18n('fail_states_tiger'),
  77. $.i18n('fail_states_rabbit'),
  78. $.i18n('fail_states_dragon'),
  79. $.i18n('fail_states_snake'),
  80. $.i18n('fail_states_horse'),
  81. $.i18n('fail_states_goat'),
  82. $.i18n('fail_states_monkey'),
  83. $.i18n('fail_states_rooster'),
  84. $.i18n('fail_states_dog'),
  85. $.i18n('fail_states_pig')
  86. ];
  87. $("#btn_play").css({'background-image': 'url('+$.i18n('btn_play') +')'});
  88. $("#btn_next").css({'background-image': 'url('+$.i18n('btn_next') +')'});
  89. $("#btn_begin").css({'background-image': 'url('+$.i18n('btn_begin') +')'});
  90. $("#play_again_btn").css({'background-image': 'url('+$.i18n('btn_play_again') +')'});
  91. $("#btn_play_end").css({'background-image': 'url('+$.i18n('btn_play') +')'});
  92. $("#calibrate_message").html($.i18n('calibrating_copy'));
  93. $("#calibrate_message").css({'font-family': $.i18n('fonts_primary')});
  94. $("#zodiac_text").html($.i18n('btn_name_zodiac'));
  95. $("#zodiac_text").css({'font-family': $.i18n('fonts_primary')});
  96. $("#year_text").css({'font-family': $.i18n('fonts_primary')});
  97. $("#loading_img").attr('src', $.i18n('loading'));
  98. $("#btn_select_zodiac").css({'background-image': 'url('+ $.i18n('btn_comfirm') +')'});
  99. // $(".zodiac-ic-name").css({'font-family': $.i18n('fonts_primary')}) ;
  100. setTimeout( function() {
  101. $("#fade-wrapper").fadeOut();
  102. checkDevice()
  103. console.log(mobileDevice);
  104. if (mobileDevice) {
  105. showMobileTips()
  106. }else{
  107. gameLoop(new Date().getTime());
  108. hideUI();
  109. setup();
  110. }
  111. }, 1000);
  112. }
  113. );
  114. (function() {
  115. let lastTime = 0;
  116. const vendors = ['ms', 'moz', 'webkit', 'o'];
  117. for(let x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
  118. window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
  119. window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
  120. || window[vendors[x]+'CancelRequestAnimationFrame'];
  121. }
  122. if (!window.requestAnimationFrame)
  123. window.requestAnimationFrame = function(callback, element) {
  124. let currTime = new Date().getTime();
  125. let timeToCall = Math.max(0, 16 - (currTime - lastTime));
  126. let id = window.setTimeout(function() { callback(currTime + timeToCall); },
  127. timeToCall);
  128. lastTime = currTime + timeToCall;
  129. return id;
  130. };
  131. if (!window.cancelAnimationFrame)
  132. window.cancelAnimationFrame = function(id) {
  133. clearTimeout(id);
  134. };
  135. }());
  136. setSelectOptionsLanguage();
  137. selectLanguageListener();
  138. });
  139. let timestamp = 0;
  140. let elapsedtimeseconds = 0;
  141. let video;
  142. function gameLoop (timestamp) {
  143. timestamp = timestamp || new Date().getTime();
  144. let runtime = timestamp - starttime;
  145. elapsedtimeseconds = runtime / 1000;
  146. update();
  147. draw();
  148. window.requestAnimationFrame(function (timestamp) {
  149. gameLoop(timestamp)
  150. })
  151. }
  152. function getElapsedTimeSeconds() {
  153. return elapsedtimeseconds;
  154. }
  155. function getPixelRatio(){
  156. var ctx = document.createElement("canvas").getContext("2d"),
  157. dpr = window.devicePixelRatio || 1,
  158. bsr = ctx.webkitBackingStorePixelRatio ||
  159. ctx.mozBackingStorePixelRatio ||
  160. ctx.msBackingStorePixelRatio ||
  161. ctx.oBackingStorePixelRatio ||
  162. ctx.backingStorePixelRatio || 1;
  163. return dpr / bsr;
  164. }
  165. function createHiResCanvas(w, h, ratio) {
  166. if (!ratio) { ratio = getPixelRatio(); }
  167. devicescreenratio = ratio;
  168. var can = document.createElement("canvas");
  169. can.setAttribute("id", "canvas");
  170. can.width = w * ratio;
  171. can.height = h * ratio;
  172. can.style.width = w + "px";
  173. can.style.height = h + "px";
  174. can.getContext("2d").setTransform(ratio, 0, 0, ratio, 0, 0);
  175. return can;
  176. }
  177. function selectLanguageListener() {
  178. $('#dropdown_select').change(function(){
  179. var value = $(this).val();
  180. window.location = window.location.href.toString().split("?")[0] + "?lang=" + value;
  181. setTimeout(function(){
  182. location.reload();
  183. }, 500);
  184. });
  185. }
  186. function setSelectOptionsLanguage() {
  187. $("#dropdown_select").val(lang);
  188. }