@@ -2,5 +2,4 @@ | |||||
1.0.0 | 1.0.0 | ||||
https://git.opengamestudio.org/mahjong/mahjong-raskladka-layout | https://git.opengamestudio.org/mahjong/mahjong-raskladka-layout | ||||
x /раскладка|layout.js | |||||
/раскладка|layout.череда | |||||
x /раскладка-layout-kmahjongg.js |
@@ -0,0 +1,106 @@ | |||||
разобратьРаскладкуKMahjongg = function(содержимое) | |||||
{ | |||||
this.__преобразоватьСодержимоеВСтроки = () => | |||||
{ | |||||
var строки = содержимое.split(/\n/); | |||||
this.строки = []; | |||||
for (var номер in строки) | |||||
{ | |||||
var строка = строки[номер].trim(); | |||||
// Пропускаем комментарии и пустые строки. | |||||
if (строка.startsWith("#") || !строка.length) | |||||
{ | |||||
continue; | |||||
} | |||||
this.строки.push(строка); | |||||
} | |||||
}; | |||||
this.__разобратьПараметры = () => | |||||
{ | |||||
var параметры = { | |||||
"ширина": 32, | |||||
"высота": 16, | |||||
"глубина": 0, | |||||
"версия": "1.0", | |||||
}; | |||||
var префиксы = { | |||||
"версия": "kmahjongg-layout-v", | |||||
"глубина": "d", | |||||
"ширина": "w", | |||||
"высота": "h", | |||||
}; | |||||
var удалитьЭлементов = 0; | |||||
var строки = this.строки; | |||||
for (var номер in строки) | |||||
{ | |||||
var строка = строки[номер]; | |||||
// Версия. | |||||
if (строка.startsWith(префиксы.версия)) | |||||
{ | |||||
параметры.версия = строка.substring(префиксы.версия.length); | |||||
} | |||||
// Глубина. | |||||
else if (строка.startsWith(префиксы.глубина)) | |||||
{ | |||||
параметры.глубина = строка.substring(префиксы.глубина.length); | |||||
} | |||||
// Ширина. | |||||
else if (строка.startsWith(префиксы.ширина)) | |||||
{ | |||||
параметры.ширина = строка.substring(префиксы.ширина.length); | |||||
} | |||||
// Высота. | |||||
else if (строка.startsWith(префиксы.высота)) | |||||
{ | |||||
параметры.высота = строка.substring(префиксы.высота.length); | |||||
} | |||||
else | |||||
{ | |||||
удалитьЭлементов = номер; | |||||
break; | |||||
} | |||||
} | |||||
this.строки.splice(0, удалитьЭлементов); | |||||
if (параметры.глубина == 0) | |||||
{ | |||||
параметры.глубина = this.строки.length / параметры.высота; | |||||
} | |||||
this.параметры = параметры; | |||||
}; | |||||
this.__разобратьПозиции = () => | |||||
{ | |||||
const параметры = this.параметры; | |||||
const строки = this.строки; | |||||
var позиции = []; | |||||
for (var номерСлоя = 0; номерСлоя < параметры.глубина; ++номерСлоя) | |||||
{ | |||||
for (var ряд = 0; ряд < параметры.высота - 1; ++ряд) | |||||
{ | |||||
for (var столбец = 0; столбец < параметры.ширина - 1; ++столбец) | |||||
{ | |||||
const рядСлоя = ряд + (номерСлоя * параметры.высота); | |||||
if ( | |||||
(строки[рядСлоя][столбец] == '1') && | |||||
(строки[рядСлоя][столбец + 1] == '2') && | |||||
(строки[рядСлоя + 1][столбец] == '4') && | |||||
(строки[рядСлоя + 1][столбец + 1] == '3') | |||||
) { | |||||
позиции.push([номерСлоя, ряд, столбец]); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
this.позиции = позиции; | |||||
}; | |||||
// Исполняем. | |||||
this.__преобразоватьСодержимоеВСтроки(); | |||||
this.__разобратьПараметры(); | |||||
this.__разобратьПозиции(); | |||||
return this.позиции; | |||||
}; |
@@ -1,154 +0,0 @@ | |||||
// // // // | |||||
ВывестиПозицииРаскладкиKMahjongg = мир => | |||||
{ | |||||
console.debug("Позиции раскладки KMahjongg НАЧАЛО"); | |||||
const позиции = мир.раскладкаKMahjongg.позиции; | |||||
for (var номер in позиции) { | |||||
const позиция = позиции[номер]; | |||||
console.debug(позиция); | |||||
} | |||||
console.debug("Позиции раскладки KMahjongg КОНЕЦ"); | |||||
}; | |||||
// // // // | |||||
РазобратьПозицииЭлементовРаскладкиKMahjongg = мир => | |||||
{ | |||||
const параметры = мир.раскладкаKMahjongg.параметры; | |||||
const строки = мир.раскладкаKMahjongg.строки; | |||||
var позиции = []; | |||||
for (var номерСлоя = 0; номерСлоя < параметры.глубина; ++номерСлоя) | |||||
{ | |||||
for (var ряд = 0; ряд < параметры.высота - 1; ++ряд) | |||||
{ | |||||
for (var столбец = 0; столбец < параметры.ширина - 1; ++столбец) | |||||
{ | |||||
const рядСлоя = ряд + (номерСлоя * параметры.высота); | |||||
if ( | |||||
(строки[рядСлоя][столбец] == '1') && | |||||
(строки[рядСлоя][столбец + 1] == '2') && | |||||
(строки[рядСлоя + 1][столбец] == '4') && | |||||
(строки[рядСлоя + 1][столбец + 1] == '3') | |||||
) { | |||||
позиции.push([номерСлоя, ряд, столбец]); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
мир.раскладкаKMahjongg.позиции = позиции; | |||||
}; | |||||
// // // // | |||||
ВывестиПараметрыРаскладкиKMahjongg = мир => | |||||
{ | |||||
console.debug("Параметры раскладки KMahjongg", JSON.stringify(мир.раскладкаKMahjongg.параметры)); | |||||
}; | |||||
// // // // | |||||
РазобратьПараметрыРаскладкиKMahjongg = мир => | |||||
{ | |||||
var параметры = { | |||||
"ширина": 32, | |||||
"высота": 16, | |||||
"глубина": 0, | |||||
"версия": "1.0", | |||||
}; | |||||
var префиксы = { | |||||
"версия": "kmahjongg-layout-v", | |||||
"глубина": "d", | |||||
"ширина": "w", | |||||
"высота": "h", | |||||
}; | |||||
var удалитьЭлементов = 0; | |||||
var строки = мир.раскладкаKMahjongg.строки; | |||||
for (var номер in строки) | |||||
{ | |||||
var строка = строки[номер]; | |||||
// Версия. | |||||
if (строка.startsWith(префиксы.версия)) | |||||
{ | |||||
параметры.версия = строка.substring(префиксы.версия.length); | |||||
} | |||||
// Глубина. | |||||
else if (строка.startsWith(префиксы.глубина)) | |||||
{ | |||||
параметры.глубина = строка.substring(префиксы.глубина.length); | |||||
} | |||||
// Ширина. | |||||
else if (строка.startsWith(префиксы.ширина)) | |||||
{ | |||||
параметры.ширина = строка.substring(префиксы.ширина.length); | |||||
} | |||||
// Высота. | |||||
else if (строка.startsWith(префиксы.высота)) | |||||
{ | |||||
параметры.высота = строка.substring(префиксы.высота.length); | |||||
} | |||||
else | |||||
{ | |||||
удалитьЭлементов = номер; | |||||
break; | |||||
} | |||||
} | |||||
мир.раскладкаKMahjongg.строки.splice(0, удалитьЭлементов); | |||||
if (параметры.глубина == 0) | |||||
{ | |||||
параметры.глубина = мир.раскладкаKMahjongg.строки.length / параметры.высота; | |||||
} | |||||
мир.раскладкаKMahjongg.параметры = параметры; | |||||
}; | |||||
// // // // | |||||
ПодготовитьРаскладкуKMahjonggКРазбору = мир => | |||||
{ | |||||
var строки = мир.раскладкаKMahjongg.содержимое.split(/\n/); | |||||
мир.раскладкаKMahjongg.строки = []; | |||||
for (var номер in строки) | |||||
{ | |||||
var строка = строки[номер].trim(); | |||||
// Пропускаем комментарии и пустые строки. | |||||
if (строка.startsWith("#") || !строка.length) | |||||
{ | |||||
continue; | |||||
} | |||||
мир.раскладкаKMahjongg.строки.push(строка); | |||||
} | |||||
}; | |||||
// // // // | |||||
УведомитьОбОкончанииРазбораРаскладкиKMahjongg = мир => | |||||
{ | |||||
мир.уведомить("разобрали раскладку KMahjongg"); | |||||
}; | |||||
// // // // | |||||
РазобратьРаскладкуKMahjongg = мир => | |||||
{ | |||||
мир.уведомить("надо разобрать раскладку KMahjongg"); | |||||
}; | |||||
@@ -1,7 +0,0 @@ | |||||
надо разобрать раскладку KMahjongg | |||||
подготовить раскладку KMahjongg к разбору | |||||
разобрать параметры раскладки KMahjongg | |||||
# вывести параметры раскладки KMahjongg | |||||
разобрать позиции элементов раскладки KMahjongg | |||||
# вывести позиции раскладки KMahjongg | |||||
уведомить об окончании разбора раскладки KMahjongg |