application.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. System.register([], function (_export, _context) {
  2. "use strict";
  3. function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  4. function createApplication(_ref) {
  5. var loadJsListFile = _ref.loadJsListFile,
  6. fetchWasm = _ref.fetchWasm;
  7. // NOTE: before here we shall not import any module!
  8. var promise = Promise.resolve();
  9. promise = promise.then(function () {
  10. return topLevelImport('wait-for-ammo-instantiation');
  11. }).then(function (_ref2) {
  12. var waitForAmmoInstantiation = _ref2["default"];
  13. var isWasm = waitForAmmoInstantiation.isWasm,
  14. wasmBinaryURL = waitForAmmoInstantiation.wasmBinaryURL;
  15. if (!isWasm) {
  16. return waitForAmmoInstantiation();
  17. } else {
  18. return Promise.resolve(fetchWasm(wasmBinaryURL)).then(function (wasmBinary) {
  19. return waitForAmmoInstantiation(wasmBinary);
  20. });
  21. }
  22. });
  23. return promise.then(function () {
  24. return _defineProperty({
  25. start: start
  26. }, 'import', topLevelImport);
  27. });
  28. function start(_ref4) {
  29. var findCanvas = _ref4.findCanvas;
  30. var settings;
  31. var cc;
  32. return Promise.resolve().then(function () {
  33. return topLevelImport('cc');
  34. }).then(function (engine) {
  35. cc = engine;
  36. return loadSettingsJson(cc);
  37. }).then(function () {
  38. settings = window._CCSettings;
  39. return initializeGame(cc, settings, findCanvas).then(function () {
  40. if (settings.scriptPackages) {
  41. return loadModulePacks(settings.scriptPackages);
  42. }
  43. }).then(function () {
  44. return loadJsList(settings.jsList);
  45. }).then(function () {
  46. return loadAssetBundle(settings.hasResourcesBundle, settings.hasStartSceneBundle);
  47. }).then(function () {
  48. return cc.game.run(function () {
  49. return onGameStarted(cc, settings);
  50. });
  51. });
  52. });
  53. }
  54. function topLevelImport(url) {
  55. return _context["import"]("".concat(url));
  56. }
  57. function loadAssetBundle(hasResourcesBundle, hasStartSceneBundle) {
  58. var promise = Promise.resolve();
  59. var _cc$AssetManager$Buil = cc.AssetManager.BuiltinBundleName,
  60. MAIN = _cc$AssetManager$Buil.MAIN,
  61. RESOURCES = _cc$AssetManager$Buil.RESOURCES,
  62. START_SCENE = _cc$AssetManager$Buil.START_SCENE;
  63. var bundleRoot = hasResourcesBundle ? [RESOURCES, MAIN] : [MAIN];
  64. if (hasStartSceneBundle) {
  65. bundleRoot.push(START_SCENE);
  66. }
  67. return bundleRoot.reduce(function (pre, name) {
  68. return pre.then(function () {
  69. return loadBundle(name);
  70. });
  71. }, Promise.resolve());
  72. }
  73. function loadBundle(name) {
  74. return new Promise(function (resolve, reject) {
  75. cc.assetManager.loadBundle(name, function (err, bundle) {
  76. if (err) {
  77. return reject(err);
  78. }
  79. resolve(bundle);
  80. });
  81. });
  82. }
  83. function loadModulePacks(packs) {
  84. return Promise.all(packs.map(function (pack) {
  85. return topLevelImport(pack);
  86. }));
  87. }
  88. function loadJsList(jsList) {
  89. var promise = Promise.resolve();
  90. jsList.forEach(function (jsListFile) {
  91. promise = promise.then(function () {
  92. return loadJsListFile("src/".concat(jsListFile));
  93. });
  94. });
  95. return promise;
  96. }
  97. function loadSettingsJson(cc) {
  98. var server = '';
  99. var settings = 'src/settings.json';
  100. return new Promise(function (resolve, reject) {
  101. if (typeof fsUtils !== 'undefined' && !settings.startsWith('http')) {
  102. var result = fsUtils.readJsonSync(settings);
  103. if (result instanceof Error) {
  104. reject(result);
  105. } else {
  106. window._CCSettings = result;
  107. window._CCSettings.server = server;
  108. resolve();
  109. }
  110. } else {
  111. var requestSettings = function requestSettings() {
  112. var xhr = new XMLHttpRequest();
  113. xhr.open('GET', settings);
  114. xhr.responseType = 'text';
  115. xhr.onload = function () {
  116. window._CCSettings = JSON.parse(xhr.response);
  117. window._CCSettings.server = server;
  118. resolve();
  119. };
  120. xhr.onerror = function () {
  121. if (retryCount-- > 0) {
  122. setTimeout(requestSettings, retryInterval);
  123. } else {
  124. reject(new Error('request settings failed!'));
  125. }
  126. };
  127. xhr.send(null);
  128. };
  129. var retryCount = 3;
  130. var retryInterval = 2000;
  131. requestSettings();
  132. }
  133. });
  134. }
  135. }
  136. function initializeGame(cc, settings, findCanvas) {
  137. if (settings.macros) {
  138. for (var key in settings.macros) {
  139. cc.macro[key] = settings.macros[key];
  140. }
  141. }
  142. var gameOptions = getGameOptions(cc, settings, findCanvas);
  143. return Promise.resolve(cc.game.init(gameOptions));
  144. }
  145. function onGameStarted(cc, settings) {
  146. window._CCSettings = undefined;
  147. cc.view.enableRetina(true);
  148. cc.view.resizeWithBrowserSize(true);
  149. if (cc.sys.isMobile) {
  150. if (settings.orientation === 'landscape') {
  151. cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
  152. } else if (settings.orientation === 'portrait') {
  153. cc.view.setOrientation(cc.macro.ORIENTATION_PORTRAIT);
  154. }
  155. cc.view.enableAutoFullScreen(false);
  156. }
  157. var launchScene = settings.launchScene; // load scene
  158. cc.director.loadScene(launchScene, null, function () {
  159. cc.view.setDesignResolutionSize(960, 640, 4);
  160. console.log("Success to load scene: ".concat(launchScene));
  161. });
  162. }
  163. function getGameOptions(cc, settings, findCanvas) {
  164. // asset library options
  165. var assetOptions = {
  166. bundleVers: settings.bundleVers,
  167. remoteBundles: settings.remoteBundles,
  168. server: settings.server,
  169. subpackages: settings.subpackages
  170. };
  171. var options = {
  172. debugMode: settings.debug ? cc.DebugMode.INFO : cc.DebugMode.ERROR,
  173. showFPS: !false && settings.debug,
  174. frameRate: 60,
  175. groupList: settings.groupList,
  176. collisionMatrix: settings.collisionMatrix,
  177. renderPipeline: settings.renderPipeline,
  178. adapter: findCanvas('GameCanvas'),
  179. assetOptions: assetOptions,
  180. customJointTextureLayouts: settings.customJointTextureLayouts || [],
  181. physics: settings.physics
  182. };
  183. return options;
  184. }
  185. _export("createApplication", createApplication);
  186. return {
  187. setters: [],
  188. execute: function () {}
  189. };
  190. });