From 71372f2f5095bf70b55dd24563d7765cb2dd6ba0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BB=D0=B0=D0=B2=D1=80=D0=B5=D0=B4=20=7C=20Glavred?= Date: Thu, 8 Oct 2020 16:10:02 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BE=D1=82=20=D0=93=D0=BB=D0=B0=D0=B2=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B0=20=D0=93=D0=B8=D1=82=D0=96=D0=A1=20|=20Chang?= =?UTF-8?q?es=20of=20GitJS=20Glavred?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0000 | 3 +- раскладка-layout-kmahjongg.js | 106 +++++++++++++++++ раскладка|layout.js | 154 ------------------------- раскладка|layout.череда | 7 -- 4 files changed, 107 insertions(+), 163 deletions(-) create mode 100644 раскладка-layout-kmahjongg.js delete mode 100644 раскладка|layout.js delete mode 100644 раскладка|layout.череда diff --git a/0000 b/0000 index 6c36980..e67974b 100644 --- a/0000 +++ b/0000 @@ -2,5 +2,4 @@ 1.0.0 https://git.opengamestudio.org/mahjong/mahjong-raskladka-layout -x /раскладка|layout.js -/раскладка|layout.череда \ No newline at end of file +x /раскладка-layout-kmahjongg.js \ No newline at end of file diff --git a/раскладка-layout-kmahjongg.js b/раскладка-layout-kmahjongg.js new file mode 100644 index 0000000..320dbb9 --- /dev/null +++ b/раскладка-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.позиции; +}; \ No newline at end of file diff --git a/раскладка|layout.js b/раскладка|layout.js deleted file mode 100644 index 7c29035..0000000 --- a/раскладка|layout.js +++ /dev/null @@ -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"); -}; - diff --git a/раскладка|layout.череда b/раскладка|layout.череда deleted file mode 100644 index 3156e5f..0000000 --- a/раскладка|layout.череда +++ /dev/null @@ -1,7 +0,0 @@ -надо разобрать раскладку KMahjongg - подготовить раскладку KMahjongg к разбору - разобрать параметры раскладки KMahjongg -# вывести параметры раскладки KMahjongg - разобрать позиции элементов раскладки KMahjongg -# вывести позиции раскладки KMahjongg - уведомить об окончании разбора раскладки KMahjongg \ No newline at end of file