const АДРЕС_АРХИВА = "https://git.opengamestudio.org/kornerr/APXuB/raw/branch/master/MAOH.zip"; const КЛЮЧЕВОЙ_МОДУЛЬ = "https://git.opengamestudio.org/MAOH/CYMA/raw/branch/master/0000"; // // // // СохранитьМодулиПриложенияИзАрхива = мир => { console.debug("сохранить модули приложения из архива"); var номер = 0; const ук = мир.списокМодулейИзАрхива[номер]; const описание = мир.описанияМодулейИзАрхива[номер]; var список = Object.keys(описание.структура).sort(); console.debug("список", список); var модуль = new Модуль( описание.имя, описание.версия, описание["🏠"], указатель, указатель + "/..", описание.структура ); модуль.содержимое = {}; function собратьМодуль(мир, список, номер, успех, провал) { const файл = список[номер]; var свойства = описание.структура[файл]; var тип = свойства.двоичный ? "arraybuffer" : "string"; var путь = `${номер}${файл}`; console.debug("путь", путь); мир.архив.file(путь).async(тип).then(function(содержимое) { модуль.содержимое[файл] = содержимое; успех(); }); } сделатьПоследовательно( мир, список, собратьМодуль, function() { //мир.уведомить("собрали содержимое модулей из архива"); //console.debug("описания", мир.описанияМодулейИзАрхива); 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("приложения нет"); мир.уведомить("приложение отсутствует"); } };