const АДРЕС_АРХИВА = "https://git.opengamestudio.org/kornerr/APXuB/raw/branch/master/MAOH.zip"; const КЛЮЧЕВОЙ_МОДУЛЬ = "https://git.opengamestudio.org/MAOH/CYMA/raw/branch/master/0000"; // // // // СохранитьСобранныеМодули = мир => { function сохранитьМодуль(мир, список, номер, успех, провал) { const ук = мир.списокМодулейИзАрхива[номер]; мир.модули.сохранили.подписатьРаз(function() { успех(); }); мир.модули.сохранить(ук); } сделатьПоследовательно( мир, мир.списокМодулейИзАрхива, сохранитьМодуль, function() { мир.уведомить("сохранили собранные модули"); } ); }; // // // // СобратьМодулиПриложенияИзАрхива = мир => { function собратьМодуль(мир, список, номер, успех, провал) { const ук = мир.списокМодулейИзАрхива[номер]; const оп = мир.описанияМодулейИзАрхива[номер]; собратьМодульИзАрхива( мир, мир.архив, номер, ук, оп, function(модуль) { мир.модули.модули[модуль.указатель] = модуль; успех(); } ); } сделатьПоследовательно( мир, мир.списокМодулейИзАрхива, собратьМодуль, function() { console.debug("собрали модули приложения из архива"); мир.уведомить("собрали модули приложения из архива"); } ); }; // // // // СобратьОписанияМодулейИзАрхива = мир => { мир.описанияМодулейИзАрхива = []; function собратьОписание(мир, список, номер, успех, провал) { const ук = список[номер]; var файл = `${номер}/0000`; мир.архив.file(файл).async("string").then(function(содержимое) { var описание = мир.разобрать0000(содержимое); мир.описанияМодулейИзАрхива.push(описание); успех(); }); } сделатьПоследовательно( мир, мир.списокМодулейИзАрхива, собратьОписание, function() { мир.уведомить("собрали описания модулей из архива"); console.debug("описания", мир.описанияМодулейИзАрхива); } ); }; // // // // СобратьСписокМодулейИзАрхива = мир => { мир.архив.file("gitjs").async("string").then(function(содержимое) { var строки = содержимое.split(/\n/); var список = []; for (var н in строки) { var строка = строки[н]; if (строка.length) { список.push(строка); } } мир.списокМодулейИзАрхива = список; мир.уведомить("собрали список модулей из архива"); }); }; // // // // УведомитьОНаличииПриложения = мир => { мир.уведомить("приложение присутствует"); }; // // // // РазобратьАрхивПриложения = мир => { var zip = new JSZip(); zip.loadAsync(мир.архив).then(function(архив) { мир.архив = архив.folder("MAOH"); мир.уведомить("разобрали архив приложения"); }); }; // // // // СкачатьАрхивПриложения = мир => { мир.взять( АДРЕС_АРХИВА, function(содержимое) { мир.архив = содержимое; мир.уведомить("скачали архив приложения"); }, function(ошибка) { мир.уведомить("не скачали архив приложения"); }, true ); }; // // // // ПроверитьНаличиеКлючевогоМодуляПриложения = мир => { console.debug("проверить наличие ключевого модуля приложения"); var м = мир.модули.модули[КЛЮЧЕВОЙ_МОДУЛЬ]; if (м) { console.debug("приложение есть"); мир.уведомить("приложение присутствует"); } else { console.debug("приложения нет"); мир.уведомить("приложение отсутствует"); } };