Раскладка Маджонга | Mahjong layout
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
5.0KB

  1. // // // //
  2. ВывестиПозицииРаскладкиKMahjongg = мир =>
  3. {
  4. console.debug("Позиции раскладки KMahjongg НАЧАЛО");
  5. const позиции = мир.раскладкаKMahjongg.позиции;
  6. for (var номер in позиции) {
  7. const позиция = позиции[номер];
  8. console.debug(позиция);
  9. }
  10. console.debug("Позиции раскладки KMahjongg КОНЕЦ");
  11. };
  12. // // // //
  13. РазобратьПозицииЭлементовРаскладкиKMahjongg = мир =>
  14. {
  15. const параметры = мир.раскладкаKMahjongg.параметры;
  16. const строки = мир.раскладкаKMahjongg.строки;
  17. var позиции = [];
  18. for (var номерСлоя = 0; номерСлоя < параметры.глубина; ++номерСлоя)
  19. {
  20. for (var ряд = 0; ряд < параметры.высота - 1; ++ряд)
  21. {
  22. for (var столбец = 0; столбец < параметры.ширина - 1; ++столбец)
  23. {
  24. const рядСлоя = ряд + (номерСлоя * параметры.высота);
  25. if (
  26. (строки[рядСлоя][столбец] == '1') &&
  27. (строки[рядСлоя][столбец + 1] == '2') &&
  28. (строки[рядСлоя + 1][столбец] == '4') &&
  29. (строки[рядСлоя + 1][столбец + 1] == '3')
  30. ) {
  31. позиции.push([номерСлоя, ряд, столбец]);
  32. }
  33. }
  34. }
  35. }
  36. мир.раскладкаKMahjongg.позиции = позиции;
  37. };
  38. // // // //
  39. ВывестиПараметрыРаскладкиKMahjongg = мир =>
  40. {
  41. console.debug("Параметры раскладки KMahjongg", JSON.stringify(мир.раскладкаKMahjongg.параметры));
  42. };
  43. // // // //
  44. РазобратьПараметрыРаскладкиKMahjongg = мир =>
  45. {
  46. var параметры = {
  47. "ширина": 32,
  48. "высота": 16,
  49. "глубина": 0,
  50. "версия": "1.0",
  51. };
  52. var префиксы = {
  53. "версия": "kmahjongg-layout-v",
  54. "глубина": "d",
  55. "ширина": "w",
  56. "высота": "h",
  57. };
  58. var удалитьЭлементов = 0;
  59. var строки = мир.раскладкаKMahjongg.строки;
  60. for (var номер in строки)
  61. {
  62. var строка = строки[номер];
  63. // Версия.
  64. if (строка.startsWith(префиксы.версия))
  65. {
  66. параметры.версия = строка.substring(префиксы.версия.length);
  67. }
  68. // Глубина.
  69. else if (строка.startsWith(префиксы.глубина))
  70. {
  71. параметры.глубина = строка.substring(префиксы.глубина.length);
  72. }
  73. // Ширина.
  74. else if (строка.startsWith(префиксы.ширина))
  75. {
  76. параметры.ширина = строка.substring(префиксы.ширина.length);
  77. }
  78. // Высота.
  79. else if (строка.startsWith(префиксы.высота))
  80. {
  81. параметры.высота = строка.substring(префиксы.высота.length);
  82. }
  83. else
  84. {
  85. удалитьЭлементов = номер;
  86. break;
  87. }
  88. }
  89. мир.раскладкаKMahjongg.строки.splice(0, удалитьЭлементов);
  90. if (параметры.глубина == 0)
  91. {
  92. параметры.глубина = мир.раскладкаKMahjongg.строки.length / параметры.высота;
  93. }
  94. мир.раскладкаKMahjongg.параметры = параметры;
  95. };
  96. // // // //
  97. ПодготовитьРаскладкуKMahjonggКРазбору = мир =>
  98. {
  99. var строки = мир.раскладкаKMahjongg.содержимое.split(/\n/);
  100. мир.раскладкаKMahjongg.строки = [];
  101. for (var номер in строки)
  102. {
  103. var строка = строки[номер].trim();
  104. // Пропускаем комментарии и пустые строки.
  105. if (строка.startsWith("#") || !строка.length)
  106. {
  107. continue;
  108. }
  109. мир.раскладкаKMahjongg.строки.push(строка);
  110. }
  111. };
  112. // // // //
  113. УведомитьОбОкончанииРазбораРаскладкиKMahjongg = мир =>
  114. {
  115. мир.уведомить("разобрали раскладку KMahjongg");
  116. };
  117. // // // //
  118. РазобратьРаскладкуKMahjongg = мир =>
  119. {
  120. мир.уведомить("надо разобрать раскладку KMahjongg");
  121. };