Основа Маджонга | Mahjong's base
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.

419 lines
10KB

  1. // // // //
  2. СоздатьЭлементыУправленияМасштабом = мир =>
  3. {
  4. var элементы = document.createElement("div");
  5. элементы.innerHTML = `
  6. <ul class="uk-iconnav uk-iconnav-vertical">
  7. <li><a id="увеличить-масштаб" uk-icon="icon: plus; ratio: 2"></a></li>
  8. <li><a id="уменьшить-масштаб" uk-icon="icon: minus; ratio: 2"></a></li>
  9. </ul>
  10. `;
  11. элементы.style = `
  12. position: fixed;
  13. right: 0;
  14. top: 50%;
  15. transform: translateX(-50%) translateY(-50%);
  16. `;
  17. мир.окна.управление.элемент.appendChild(элементы);
  18. $(`#увеличить-масштаб`).click(function() {
  19. мир.уведомить("кнопка увеличения масштаба");
  20. });
  21. $(`#уменьшить-масштаб`).click(function() {
  22. мир.уведомить("кнопка уменьшения масштаба");
  23. });
  24. };
  25. // // // //
  26. СоздатьОкноУправления = мир =>
  27. {
  28. мир.окна.управление = {
  29. "указатель": "окно-управления",
  30. };
  31. var окно = document.createElement("div");
  32. окно.id = мир.окна.управление.указатель;
  33. document.body.appendChild(окно);
  34. окно.style = `
  35. position: absolute;
  36. left: 0;
  37. top: 0;
  38. right: 0;
  39. bottom: 0;
  40. `;
  41. мир.окна.управление.элемент = окно;
  42. };
  43. // // // //
  44. ЗадатьПораженческоеСодержимоеОкнуОкончания = мир =>
  45. {
  46. $(`#${мир.окна.окончание.указатель}-содержимое`).html(`
  47. <span class="uk-text-large">Поражение</span>
  48. ⚬ <span class="uk-text-large uk-text-bold">失败</span> ⚬
  49. <span class="uk-text-large">Defeat</span>
  50. `);
  51. };
  52. // // // //
  53. ЗадатьПобедноеСодержимоеОкнуОкончания = мир =>
  54. {
  55. $(`#${мир.окна.окончание.указатель}-содержимое`).html(`
  56. <span class="uk-text-large">Победа</span>
  57. ⚬ <span class="uk-text-large uk-text-bold">胜利</span> ⚬
  58. <span class="uk-text-large">Victory</span>
  59. `);
  60. };
  61. // // // //
  62. ПлавноПоказатьОкноОкончания = мир =>
  63. {
  64. const css = `
  65. #${мир.окна.окончание.указатель}
  66. {
  67. opacity: 0;
  68. animation: ${мир.окна.окончание.указатель}ПлавноПоказать 0.5s ease;
  69. animation-fill-mode: forwards;
  70. }
  71. `;
  72. мир.окна.окончание.анимация.innerHTML = css;
  73. мир.окна.окончание.элемент.style.display = "block";
  74. };
  75. // // // //
  76. ПодготовитьАнимациюОкнаОкончания = мир =>
  77. {
  78. мир.окна.окончание.анимация = document.createElement("style");
  79. document.head.appendChild(мир.окна.окончание.анимация);
  80. };
  81. // // // //
  82. ЗадатьВидИАнимациюОкнаОкончания = мир =>
  83. {
  84. const css = `
  85. #${мир.окна.окончание.указатель}-тело
  86. {
  87. position: absolute;
  88. left: 50%;
  89. top: 50%;
  90. transform: translateX(-50%) translateY(-50%);
  91. }
  92. #${мир.окна.окончание.указатель}
  93. {
  94. background-color: white;
  95. position: fixed;
  96. left: 0;
  97. top: 0;
  98. right: 0;
  99. bottom: 0;
  100. }
  101. @keyframes ${мир.окна.окончание.указатель}ПлавноСкрыть
  102. {
  103. 0%
  104. {
  105. opacity: 1;
  106. }
  107. 100%
  108. {
  109. opacity: 0;
  110. }
  111. }
  112. @keyframes ${мир.окна.окончание.указатель}ПлавноПоказать
  113. {
  114. 0%
  115. {
  116. opacity: 0;
  117. }
  118. 100%
  119. {
  120. opacity: 1;
  121. }
  122. }
  123. `;
  124. var вид = document.createElement("style");
  125. вид.innerHTML = css;
  126. document.head.appendChild(вид);
  127. };
  128. // // // //
  129. СоздатьОкноОкончания = мир =>
  130. {
  131. мир.окна.окончание = {
  132. "указатель": "окно-окончания",
  133. };
  134. const html = `
  135. <div id="${мир.окна.окончание.указатель}-тело">
  136. <center>
  137. <span id="${мир.окна.окончание.указатель}-содержимое">
  138. </span>
  139. <hr class="uk-divider-icon">
  140. <p>
  141. <a href="https://twitter.com/opengamestudio" target="_blank" class="uk-icon-button" uk-icon="twitter"></a>
  142. </p>
  143. </center>
  144. </div>
  145. `;
  146. var окно = document.createElement("div");
  147. окно.id = мир.окна.окончание.указатель;
  148. окно.innerHTML = html;
  149. document.body.appendChild(окно);
  150. окно.style.display = "none";
  151. мир.окна.окончание.элемент = окно;
  152. };
  153. // // // //
  154. ОтключитьОкноПриветствия = мир =>
  155. {
  156. мир.окна.приветствие.элемент.style.display = "none";
  157. };
  158. // // // //
  159. ВыбратьРаскладкуПровальную = мир =>
  160. {
  161. мир.выбраннаяРаскладка = "😭";
  162. мир.уведомить("выбрали раскладку");
  163. };
  164. // // // //
  165. ВыбратьРаскладкуУспешную = мир =>
  166. {
  167. мир.выбраннаяРаскладка = "😀";
  168. мир.уведомить("выбрали раскладку");
  169. };
  170. // // // //
  171. ВыбратьРаскладкуX = мир =>
  172. {
  173. мир.выбраннаяРаскладка = "X";
  174. мир.уведомить("выбрали раскладку");
  175. };
  176. // // // //
  177. ПлавноСкрытьОкноПриветствия = мир =>
  178. {
  179. const css = `
  180. #${мир.окна.приветствие.указатель}
  181. {
  182. opacity: 1;
  183. animation: ${мир.окна.приветствие.указатель}ПлавноСкрыть 0.5s ease;
  184. animation-fill-mode: forwards;
  185. animation-delay: 0.1s;
  186. }
  187. `;
  188. мир.окна.приветствие.анимация.innerHTML = css;
  189. мир.окна.приветствие.показываем = false;
  190. };
  191. // // // //
  192. ПлавноПоказатьОкноПриветствия = мир =>
  193. {
  194. const css = `
  195. #${мир.окна.приветствие.указатель}
  196. {
  197. opacity: 0;
  198. animation: ${мир.окна.приветствие.указатель}ПлавноПоказать 1s ease;
  199. animation-fill-mode: forwards;
  200. }
  201. `;
  202. мир.окна.приветствие.анимация.innerHTML = css;
  203. мир.окна.приветствие.показываем = true;
  204. мир.окна.приветствие.элемент.style.display = "block";
  205. };
  206. // // // //
  207. ПодготовитьАнимациюОкнаПриветствия = мир =>
  208. {
  209. мир.окна.приветствие.анимация = document.createElement("style");
  210. document.head.appendChild(мир.окна.приветствие.анимация);
  211. мир.окна.приветствие.показываем = true;
  212. мир.окна.приветствие.элемент.addEventListener(
  213. "animationend",
  214. function()
  215. {
  216. if (мир.окна.приветствие.показываем)
  217. {
  218. мир.уведомить("плавно показали окно приветствия");
  219. }
  220. else {
  221. мир.уведомить("плавно скрыли окно приветствия");
  222. }
  223. }
  224. );
  225. };
  226. // // // //
  227. ЗадатьВидИАнимациюОкнаПриветствия = мир =>
  228. {
  229. const css = `
  230. #${мир.окна.приветствие.указатель}-тело
  231. {
  232. position: absolute;
  233. left: 50%;
  234. top: 50%;
  235. transform: translateX(-50%) translateY(-50%);
  236. }
  237. #${мир.окна.приветствие.указатель}
  238. {
  239. background-color: white;
  240. position: fixed;
  241. left: 0;
  242. top: 0;
  243. right: 0;
  244. bottom: 0;
  245. }
  246. @keyframes ${мир.окна.приветствие.указатель}ПлавноСкрыть
  247. {
  248. 0%
  249. {
  250. opacity: 1;
  251. }
  252. 100%
  253. {
  254. opacity: 0;
  255. }
  256. }
  257. @keyframes ${мир.окна.приветствие.указатель}ПлавноПоказать
  258. {
  259. 0%
  260. {
  261. opacity: 0;
  262. }
  263. 100%
  264. {
  265. opacity: 1;
  266. }
  267. }
  268. `;
  269. var вид = document.createElement("style");
  270. вид.innerHTML = css;
  271. document.head.appendChild(вид);
  272. };
  273. // // // //
  274. СоздатьОкноПриветствия = мир =>
  275. {
  276. мир.окна.приветствие = {
  277. "указатель": "окно-приветствия",
  278. };
  279. const html = `
  280. <div id="${мир.окна.приветствие.указатель}-тело">
  281. <center>
  282. <p>
  283. <span class="uk-text-large">Маджонг</span>
  284. ⚬ <span class="uk-text-large uk-text-bold">麻将</span> ⚬
  285. <span class="uk-text-large">Mahjong</span>
  286. </p>
  287. <span>${мир.версия}</span>
  288. <hr class="uk-divider-icon">
  289. <p uk-margin>
  290. <p>Выберите раскладку: | 选择布局: | Select layout:</p>
  291. <button id="${мир.окна.приветствие.указатель}-X" class="uk-button uk-button-default">X</button>
  292. <button id="${мир.окна.приветствие.указатель}-😀" class="uk-button uk-button-default">😀</button>
  293. <button id="${мир.окна.приветствие.указатель}-😭" class="uk-button uk-button-default">😭</button>
  294. </p>
  295. </center>
  296. </div>
  297. `;
  298. var окно = document.createElement("div");
  299. окно.id = мир.окна.приветствие.указатель;
  300. окно.innerHTML = html;
  301. document.body.appendChild(окно);
  302. окно.style.display = "none";
  303. мир.окна.приветствие.элемент = окно;
  304. $(`#${мир.окна.приветствие.указатель}-X`).click(function() {
  305. мир.уведомить("кнопка раскладки X");
  306. });
  307. $(`#${мир.окна.приветствие.указатель}-😀`).click(function() {
  308. мир.уведомить("кнопка раскладки 😀");
  309. });
  310. $(`#${мир.окна.приветствие.указатель}-😭`).click(function() {
  311. мир.уведомить("кнопка раскладки 😭");
  312. });
  313. };
  314. // // // //
  315. СоздатьХранилищеОкон = мир =>
  316. {
  317. мир.окна = {};
  318. };