МАОН первой серии
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

176 lines
5.4KB

  1. const АДРЕС_АРХИВА = "https://git.opengamestudio.org/kornerr/APXuB/raw/branch/master/MAOH.zip";
  2. const КЛЮЧЕВОЙ_МОДУЛЬ = "https://git.opengamestudio.org/MAOH/CYMA/raw/branch/master/0000";
  3. // // // //
  4. СохранитьСобранныеМодули = мир =>
  5. {
  6. function сохранитьМодуль(мир, список, номер, успех, провал)
  7. {
  8. const ук = мир.списокМодулейИзАрхива[номер];
  9. мир.модули.сохранили.подписатьРаз(function() {
  10. успех();
  11. });
  12. мир.модули.сохранить(ук);
  13. }
  14. сделатьПоследовательно(
  15. мир,
  16. мир.списокМодулейИзАрхива,
  17. сохранитьМодуль,
  18. function() {
  19. мир.уведомить("сохранили собранные модули");
  20. }
  21. );
  22. };
  23. // // // //
  24. СобратьМодулиПриложенияИзАрхива = мир =>
  25. {
  26. function собратьМодуль(мир, список, номер, успех, провал)
  27. {
  28. const ук = мир.списокМодулейИзАрхива[номер];
  29. const оп = мир.описанияМодулейИзАрхива[номер];
  30. собратьМодульИзАрхива(
  31. мир,
  32. мир.архив,
  33. номер,
  34. ук,
  35. оп,
  36. function(модуль) {
  37. мир.модули.модули[модуль.указатель] = модуль;
  38. успех();
  39. }
  40. );
  41. }
  42. сделатьПоследовательно(
  43. мир,
  44. мир.списокМодулейИзАрхива,
  45. собратьМодуль,
  46. function() {
  47. console.debug("собрали модули приложения из архива");
  48. мир.уведомить("собрали модули приложения из архива");
  49. }
  50. );
  51. };
  52. // // // //
  53. СобратьОписанияМодулейИзАрхива = мир =>
  54. {
  55. мир.описанияМодулейИзАрхива = [];
  56. function собратьОписание(мир, список, номер, успех, провал)
  57. {
  58. const ук = список[номер];
  59. var файл = `${номер}/0000`;
  60. мир.архив.file(файл).async("string").then(function(содержимое) {
  61. var описание = мир.разобрать0000(содержимое);
  62. мир.описанияМодулейИзАрхива.push(описание);
  63. успех();
  64. });
  65. }
  66. сделатьПоследовательно(
  67. мир,
  68. мир.списокМодулейИзАрхива,
  69. собратьОписание,
  70. function() {
  71. мир.уведомить("собрали описания модулей из архива");
  72. console.debug("описания", мир.описанияМодулейИзАрхива);
  73. }
  74. );
  75. };
  76. // // // //
  77. СобратьСписокМодулейИзАрхива = мир =>
  78. {
  79. мир.архив.file("gitjs").async("string").then(function(содержимое) {
  80. var строки = содержимое.split(/\n/);
  81. var список = [];
  82. for (var н in строки)
  83. {
  84. var строка = строки[н];
  85. if (строка.length)
  86. {
  87. список.push(строка);
  88. }
  89. }
  90. мир.списокМодулейИзАрхива = список;
  91. мир.уведомить("собрали список модулей из архива");
  92. });
  93. };
  94. // // // //
  95. УведомитьОНаличииПриложения = мир =>
  96. {
  97. мир.уведомить("приложение присутствует");
  98. };
  99. // // // //
  100. РазобратьАрхивПриложения = мир =>
  101. {
  102. var zip = new JSZip();
  103. zip.loadAsync(мир.архив).then(function(архив) {
  104. мир.архив = архив.folder("MAOH");
  105. мир.уведомить("разобрали архив приложения");
  106. });
  107. };
  108. // // // //
  109. СкачатьАрхивПриложения = мир =>
  110. {
  111. мир.взять(
  112. АДРЕС_АРХИВА,
  113. function(содержимое) {
  114. мир.архив = содержимое;
  115. мир.уведомить("скачали архив приложения");
  116. },
  117. function(ошибка) {
  118. мир.уведомить("не скачали архив приложения");
  119. },
  120. true
  121. );
  122. };
  123. // // // //
  124. ПроверитьНаличиеКлючевогоМодуляПриложения = мир =>
  125. {
  126. console.debug("проверить наличие ключевого модуля приложения");
  127. var м = мир.модули.модули[КЛЮЧЕВОЙ_МОДУЛЬ];
  128. if (м)
  129. {
  130. console.debug("приложение есть");
  131. мир.уведомить("приложение присутствует");
  132. }
  133. else
  134. {
  135. console.debug("приложения нет");
  136. мир.уведомить("приложение отсутствует");
  137. }
  138. };