МАОН первой серии
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.

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