166 lines
5.4 KiB
JavaScript
166 lines
5.4 KiB
JavaScript
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("приложения нет");
|
||
мир.уведомить("приложение отсутствует");
|
||
}
|
||
}; |