Основа Маджонга | Mahjong's base
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

интерфейс|ui.js 7.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. // // // //
  2. ОкончательноСкрытьОкноПриветствияПослеСкрытия = мир =>
  3. {
  4. if (мир.путьАнимацииОкнаПриветствия != "скрытие")
  5. {
  6. return;
  7. }
  8. мир.окноПриветствия.style.display = "none";
  9. };
  10. // // // //
  11. ВыбратьРаскладкуПровальную = мир =>
  12. {
  13. мир.выбраннаяРаскладка = "😭";
  14. мир.уведомить("выбрали раскладку");
  15. };
  16. // // // //
  17. ВыбратьРаскладкуУспешную = мир =>
  18. {
  19. мир.выбраннаяРаскладка = "😀";
  20. мир.уведомить("выбрали раскладку");
  21. };
  22. // // // //
  23. ВыбратьРаскладкуX = мир =>
  24. {
  25. мир.выбраннаяРаскладка = "X";
  26. мир.уведомить("выбрали раскладку");
  27. };
  28. // // // //
  29. ВывестиФактЗавершенияАнимацииОкнаПриветствия = мир =>
  30. {
  31. console.debug("завершили анимацию окна приветствия");
  32. };
  33. // // // //
  34. ПлавноСкрытьОкноПриветствия = мир =>
  35. {
  36. const указатель = "окно-приветствия";
  37. const css = `
  38. #${указатель}
  39. {
  40. opacity: 1;
  41. animation: ${указатель}FadeOut 1s ease;
  42. animation-fill-mode: forwards;
  43. animation-delay: 0.2s;
  44. }
  45. @keyframes ${указатель}FadeOut
  46. {
  47. 0%
  48. {
  49. opacity: 1;
  50. }
  51. 100%
  52. {
  53. opacity: 0;
  54. }
  55. }
  56. `;
  57. мир.анимацияОкнаПриветствия.innerHTML = css;
  58. мир.путьАнимацииОкнаПриветствия = "скрытие";
  59. };
  60. // // // //
  61. ПлавноПоказатьОкноПриветствия = мир =>
  62. {
  63. const указатель = "окно-приветствия";
  64. const css = `
  65. #${указатель}
  66. {
  67. opacity: 0;
  68. animation: ${указатель}FadeIn 1s ease;
  69. animation-fill-mode: forwards;
  70. }
  71. @keyframes ${указатель}FadeIn
  72. {
  73. 0%
  74. {
  75. opacity: 0;
  76. }
  77. 100%
  78. {
  79. opacity: 1;
  80. }
  81. }
  82. `;
  83. мир.анимацияОкнаПриветствия.innerHTML = css;
  84. мир.путьАнимацииОкнаПриветствия = "отображение";
  85. };
  86. // // // //
  87. ПодготовитьАнимациюОкнаПриветствия = мир =>
  88. {
  89. мир.анимацияОкнаПриветствия = document.createElement("style");
  90. document.head.appendChild(мир.анимацияОкнаПриветствия);
  91. мир.окноПриветствия.addEventListener(
  92. "animationend",
  93. function()
  94. {
  95. мир.уведомить("завершили анимацию окна приветствия");
  96. }
  97. );
  98. };
  99. // // // //
  100. ЗадатьВидОкнаПриветствия = мир =>
  101. {
  102. const указатель = "окно-приветствия";
  103. const css = `
  104. #${указатель}-тело
  105. {
  106. position: absolute;
  107. left: 50%;
  108. top: 50%;
  109. transform: translateX(-50%) translateY(-50%);
  110. }
  111. #${указатель}
  112. {
  113. background-color: white;
  114. position: fixed;
  115. left: 0;
  116. top: 0;
  117. right: 0;
  118. bottom: 0;
  119. }
  120. `;
  121. var вид = document.createElement("style");
  122. вид.innerHTML = css;
  123. document.head.appendChild(вид);
  124. };
  125. // // // //
  126. СоздатьОкноПриветствия = мир =>
  127. {
  128. const указатель = "окно-приветствия";
  129. const html = `
  130. <div id="${указатель}-тело">
  131. <center>
  132. <h1>Маджонг | 麻将 | Mahjong</h1>
  133. <hr class="uk-divider-icon">
  134. <p uk-margin>
  135. <p>Выберите раскладку | 选择布局 | Select layout</p>
  136. <button id="${указатель}-X" class="uk-button uk-button-default">X</button>
  137. <button id="${указатель}-😀" class="uk-button uk-button-default">😀</button>
  138. <button id="${указатель}-😭" class="uk-button uk-button-default">😭</button>
  139. </p>
  140. </center>
  141. </div>
  142. `;
  143. var окно = document.createElement("div");
  144. окно.id = указатель;
  145. окно.innerHTML = html;
  146. document.body.appendChild(окно);
  147. мир.окноПриветствия = окно;
  148. $(`#${указатель}-X`).click(function() {
  149. мир.уведомить("кнопка раскладки X");
  150. });
  151. $(`#${указатель}-😀`).click(function() {
  152. мир.уведомить("кнопка раскладки 😀");
  153. });
  154. $(`#${указатель}-😭`).click(function() {
  155. мир.уведомить("кнопка раскладки 😭");
  156. });
  157. };
  158. // // // //
  159. СоздатьОкноПоражения = мир =>
  160. {
  161. var структура = `
  162. <div id="окно-поражения-тело">
  163. <center>
  164. <h1>Поражение</h1>
  165. <hr class="uk-divider-icon">
  166. <p uk-margin>
  167. <p>Перезапустить игру с раскладкой:</p>
  168. <button id="перезапустить-раскладку-решаемую" class="uk-button uk-button-default">Решаемой</button>
  169. <button id="перезапустить-раскладку-нерешаемую" class="uk-button uk-button-default">Нерешаемой</button>
  170. </p>
  171. </center>
  172. </div>
  173. `;
  174. var вид = `
  175. #окно-поражение-тело
  176. {
  177. position: absolute;
  178. left: 50%;
  179. top: 50%;
  180. transform: translateX(-50%) translateY(-50%);
  181. pointer-events: all;
  182. }
  183. #окно-победы
  184. {
  185. opacity: 0;
  186. background-color: white;
  187. animation: fadeInОкноПоражения 1s ease;
  188. animation-fill-mode: forwards;
  189. position: fixed;
  190. left: 0;
  191. top: 0;
  192. right: 0;
  193. bottom: 0;
  194. }
  195. @keyframes fadeInОкноПоражения
  196. {
  197. 0%
  198. {
  199. opacity: 0;
  200. }
  201. 100%
  202. {
  203. opacity: 1;
  204. }
  205. }
  206. `;
  207. };
  208. // // // //
  209. СоздатьОкноПобеды = мир =>
  210. {
  211. var структура = `
  212. <div id="окно-победы-тело">
  213. <center>
  214. <h1>Победа</h1>
  215. <hr class="uk-divider-icon">
  216. <p uk-margin>
  217. <p>Перезапустить игру с раскладкой:</p>
  218. <button id="перезапустить-раскладку-решаемую" class="uk-button uk-button-default">Решаемой</button>
  219. <button id="перезапустить-раскладку-нерешаемую" class="uk-button uk-button-default">Нерешаемой</button>
  220. </p>
  221. </center>
  222. </div>
  223. `;
  224. var вид = `
  225. #окно-победы-тело
  226. {
  227. position: absolute;
  228. left: 50%;
  229. top: 50%;
  230. transform: translateX(-50%) translateY(-50%);
  231. pointer-events: all;
  232. }
  233. #окно-победы
  234. {
  235. opacity: 0;
  236. background-color: white;
  237. animation: fadeInОкноПобеды 1s ease;
  238. animation-fill-mode: forwards;
  239. position: fixed;
  240. left: 0;
  241. top: 0;
  242. right: 0;
  243. bottom: 0;
  244. }
  245. @keyframes fadeInОкноПобеды
  246. {
  247. 0%
  248. {
  249. opacity: 0;
  250. }
  251. 100%
  252. {
  253. opacity: 1;
  254. }
  255. }
  256. `;
  257. мир.окноПобеды = добавитьОкно("окно-победы", структура, вид);
  258. };