__quick_compile__.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. (function () {
  2. var scripts = [{"deps":{"./assets/Script/GD":1,"./assets/Script/Global":4,"./assets/Script/Http":5,"./assets/Script/MainScene":16,"./assets/Script/MessManager":10,"./assets/Script/NewScript":3,"./assets/Script/Opplvdai":13,"./assets/Script/Playcontroler":17,"./assets/Script/Rank":7,"./assets/Script/SB":6,"./assets/Script/StartScene":15,"./assets/Script/boli":9,"./assets/Script/dici":21,"./assets/Script/fuhuo1":11,"./assets/Script/getP":12,"./assets/Script/hook":20,"./assets/Script/lvdai":14,"./assets/Script/rootmusci":23,"./assets/Script/run":18,"./assets/Script/runRight":28,"./assets/Script/setzIndex":22,"./assets/Script/shandian":27,"./assets/Script/stand":19,"./assets/Script/tanhuang":24,"./assets/Script/CliGD":25,"./assets/Script/shader/uv1":2,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event":8,"./assets/Script/EndScene":26},"path":"preview-scripts/__qc_index__.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/GD.js"},{"deps":{},"path":"preview-scripts/assets/Script/shader/uv1.js"},{"deps":{},"path":"preview-scripts/assets/Script/NewScript.js"},{"deps":{},"path":"preview-scripts/assets/Script/Global.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/Http.js"},{"deps":{},"path":"preview-scripts/assets/Script/SB.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/Rank.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/boli.js"},{"deps":{},"path":"preview-scripts/assets/Script/MessManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/fuhuo1.js"},{"deps":{},"path":"preview-scripts/assets/Script/getP.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/Opplvdai.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/lvdai.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/StartScene.js"},{"deps":{"./Global":4,"./MessManager":10},"path":"preview-scripts/assets/Script/MainScene.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/Playcontroler.js"},{"deps":{},"path":"preview-scripts/assets/Script/run.js"},{"deps":{},"path":"preview-scripts/assets/Script/stand.js"},{"deps":{},"path":"preview-scripts/assets/Script/hook.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/dici.js"},{"deps":{},"path":"preview-scripts/assets/Script/setzIndex.js"},{"deps":{},"path":"preview-scripts/assets/Script/rootmusci.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/tanhuang.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/CliGD.js"},{"deps":{},"path":"preview-scripts/assets/Script/EndScene.js"},{"deps":{"./Global":4},"path":"preview-scripts/assets/Script/shandian.js"},{"deps":{},"path":"preview-scripts/assets/Script/runRight.js"}];
  3. var entries = ["preview-scripts/__qc_index__.js"];
  4. var bundleScript = 'preview-scripts/__qc_bundle__.js';
  5. /**
  6. * Notice: This file can not use ES6 (for IE 11)
  7. */
  8. var modules = {};
  9. var name2path = {};
  10. // Will generated by module.js plugin
  11. // var scripts = ${scripts};
  12. // var entries = ${entries};
  13. // var bundleScript = ${bundleScript};
  14. if (typeof global === 'undefined') {
  15. window.global = window;
  16. }
  17. var isJSB = typeof jsb !== 'undefined';
  18. function getXMLHttpRequest () {
  19. return window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject('MSXML2.XMLHTTP');
  20. }
  21. function downloadText(url, callback) {
  22. if (isJSB) {
  23. var result = jsb.fileUtils.getStringFromFile(url);
  24. callback(null, result);
  25. return;
  26. }
  27. var xhr = getXMLHttpRequest(),
  28. errInfo = 'Load text file failed: ' + url;
  29. xhr.open('GET', url, true);
  30. if (xhr.overrideMimeType) xhr.overrideMimeType('text\/plain; charset=utf-8');
  31. xhr.onload = function () {
  32. if (xhr.readyState === 4) {
  33. if (xhr.status === 200 || xhr.status === 0) {
  34. callback(null, xhr.responseText);
  35. }
  36. else {
  37. callback({status:xhr.status, errorMessage:errInfo + ', status: ' + xhr.status});
  38. }
  39. }
  40. else {
  41. callback({status:xhr.status, errorMessage:errInfo + '(wrong readyState)'});
  42. }
  43. };
  44. xhr.onerror = function(){
  45. callback({status:xhr.status, errorMessage:errInfo + '(error)'});
  46. };
  47. xhr.ontimeout = function(){
  48. callback({status:xhr.status, errorMessage:errInfo + '(time out)'});
  49. };
  50. xhr.send(null);
  51. };
  52. function loadScript (src, cb) {
  53. if (typeof require !== 'undefined') {
  54. require(src);
  55. return cb();
  56. }
  57. // var timer = 'load ' + src;
  58. // console.time(timer);
  59. var scriptElement = document.createElement('script');
  60. function done() {
  61. // console.timeEnd(timer);
  62. // deallocation immediate whatever
  63. scriptElement.remove();
  64. }
  65. scriptElement.onload = function () {
  66. done();
  67. cb();
  68. };
  69. scriptElement.onerror = function () {
  70. done();
  71. var error = 'Failed to load ' + src;
  72. console.error(error);
  73. cb(new Error(error));
  74. };
  75. scriptElement.setAttribute('type','text/javascript');
  76. scriptElement.setAttribute('charset', 'utf-8');
  77. scriptElement.setAttribute('src', src);
  78. document.head.appendChild(scriptElement);
  79. }
  80. function loadScripts (srcs, cb) {
  81. var n = srcs.length;
  82. srcs.forEach(function (src) {
  83. loadScript(src, function () {
  84. n--;
  85. if (n === 0) {
  86. cb();
  87. }
  88. });
  89. })
  90. }
  91. function formatPath (path) {
  92. let destPath = window.__quick_compile_project__.destPath;
  93. if (destPath) {
  94. let prefix = 'preview-scripts';
  95. if (destPath[destPath.length - 1] === '/') {
  96. prefix += '/';
  97. }
  98. path = path.replace(prefix, destPath);
  99. }
  100. return path;
  101. }
  102. window.__quick_compile_project__ = {
  103. destPath: '',
  104. registerModule: function (path, module) {
  105. path = formatPath(path);
  106. modules[path].module = module;
  107. },
  108. registerModuleFunc: function (path, func) {
  109. path = formatPath(path);
  110. modules[path].func = func;
  111. var sections = path.split('/');
  112. var name = sections[sections.length - 1];
  113. name = name.replace(/\.(?:js|ts|json)$/i, '');
  114. name2path[name] = path;
  115. },
  116. require: function (request, path) {
  117. var m, requestScript;
  118. path = formatPath(path);
  119. if (path) {
  120. m = modules[path];
  121. if (!m) {
  122. console.warn('Can not find module for path : ' + path);
  123. return null;
  124. }
  125. }
  126. if (m) {
  127. let depIndex = m.deps[request];
  128. // dependence script was excluded
  129. if (depIndex === -1) {
  130. return null;
  131. }
  132. else {
  133. requestScript = scripts[ m.deps[request] ];
  134. }
  135. }
  136. let requestPath = '';
  137. if (!requestScript) {
  138. // search from name2path when request is a dynamic module name
  139. if (/^[\w- .]*$/.test(request)) {
  140. requestPath = name2path[request];
  141. }
  142. if (!requestPath) {
  143. if (CC_JSB) {
  144. return require(request);
  145. }
  146. else {
  147. console.warn('Can not find deps [' + request + '] for path : ' + path);
  148. return null;
  149. }
  150. }
  151. }
  152. else {
  153. requestPath = formatPath(requestScript.path);
  154. }
  155. let requestModule = modules[requestPath];
  156. if (!requestModule) {
  157. console.warn('Can not find request module for path : ' + requestPath);
  158. return null;
  159. }
  160. if (!requestModule.module && requestModule.func) {
  161. requestModule.func();
  162. }
  163. if (!requestModule.module) {
  164. console.warn('Can not find requestModule.module for path : ' + path);
  165. return null;
  166. }
  167. return requestModule.module.exports;
  168. },
  169. run: function () {
  170. entries.forEach(function (entry) {
  171. entry = formatPath(entry);
  172. var module = modules[entry];
  173. if (!module.module) {
  174. module.func();
  175. }
  176. });
  177. },
  178. load: function (cb) {
  179. var self = this;
  180. var srcs = scripts.map(function (script) {
  181. var path = formatPath(script.path);
  182. modules[path] = script;
  183. if (script.mtime) {
  184. path += ("?mtime=" + script.mtime);
  185. }
  186. return path;
  187. });
  188. console.time && console.time('load __quick_compile_project__');
  189. // jsb can not analysis sourcemap, so keep separate files.
  190. if (bundleScript && !isJSB) {
  191. downloadText(formatPath(bundleScript), function (err, bundleSource) {
  192. console.timeEnd && console.timeEnd('load __quick_compile_project__');
  193. if (err) {
  194. console.error(err);
  195. return;
  196. }
  197. let evalTime = 'eval __quick_compile_project__ : ' + srcs.length + ' files';
  198. console.time && console.time(evalTime);
  199. var sources = bundleSource.split('\n//------QC-SOURCE-SPLIT------\n');
  200. for (var i = 0; i < sources.length; i++) {
  201. if (sources[i]) {
  202. window.eval(sources[i]);
  203. // not sure why new Function cannot set breakpoints precisely
  204. // new Function(sources[i])()
  205. }
  206. }
  207. self.run();
  208. console.timeEnd && console.timeEnd(evalTime);
  209. cb();
  210. })
  211. }
  212. else {
  213. loadScripts(srcs, function () {
  214. self.run();
  215. console.timeEnd && console.timeEnd('load __quick_compile_project__');
  216. cb();
  217. });
  218. }
  219. }
  220. };
  221. // Polyfill for IE 11
  222. if (!('remove' in Element.prototype)) {
  223. Element.prototype.remove = function () {
  224. if (this.parentNode) {
  225. this.parentNode.removeChild(this);
  226. }
  227. };
  228. }
  229. })();