application.js 6.1 KB

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