Игра Маджонг | Mahjong game
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.

227 lines
4.2KB

  1. мж.создатьЭкран = function()
  2. {
  3. var экран = document.createElement("div");
  4. экран.style.cssText = `
  5. position: absolute;
  6. left: 0;
  7. right: 0;
  8. top: 0;
  9. bottom: 0;
  10. pointer-events: none;
  11. `;
  12. return экран;
  13. };
  14. мж.показалиНазвание = new Уведомитель();
  15. мж.скрываемНазвание = new Уведомитель();
  16. мж.показатьНазвание = function()
  17. {
  18. var html = `
  19. <div id="bg" class="fade-out-3">
  20. <div class="center">
  21. <center>
  22. <h1 class="begin-transparent fade-in-1">Маджонг</h1>
  23. <p class="nowrap begin-transparent fade-in-2">открытая игра</p>
  24. </center>
  25. </div>
  26. </div>
  27. `;
  28. var css = `
  29. #bg
  30. {
  31. position: absolute;
  32. top: 0;
  33. left: 0;
  34. right: 0;
  35. bottom: 0;
  36. background-color: white;
  37. }
  38. .begin-transparent
  39. {
  40. opacity: 0;
  41. }
  42. .center
  43. {
  44. position: absolute;
  45. top: 50%;
  46. left: 50%;
  47. transform: translateX(-50%) translateY(-50%);
  48. }
  49. .fade-in-1
  50. {
  51. animation: fadeIn 2.5s ease;
  52. animation-delay: 0.5s;
  53. animation-fill-mode: forwards;
  54. }
  55. .fade-in-2
  56. {
  57. animation: fadeIn 1s ease;
  58. animation-delay: 1.5s;
  59. animation-fill-mode: forwards;
  60. }
  61. @keyframes fadeIn
  62. {
  63. from
  64. {
  65. opacity: 0;
  66. }
  67. to
  68. {
  69. opacity: 1;
  70. }
  71. }
  72. .fade-out-3
  73. {
  74. animation: fadeOut 1s ease;
  75. animation-delay: 3s;
  76. animation-fill-mode: forwards;
  77. }
  78. @keyframes fadeOut
  79. {
  80. from
  81. {
  82. opacity: 1;
  83. }
  84. to
  85. {
  86. opacity: 0;
  87. }
  88. }
  89. `;
  90. var заставка = мж.создатьЭкран();
  91. заставка.innerHTML = html;
  92. мж.стиль.innerHTML += css;
  93. document.body.appendChild(заставка);
  94. var фон = document.getElementById("bg");
  95. var колво = 0;
  96. фон.addEventListener(
  97. "animationend",
  98. function()
  99. {
  100. ++колво;
  101. if (колво == 2)
  102. {
  103. мж.скрываемНазвание.уведомить();
  104. }
  105. else if (колво == 3)
  106. {
  107. мж.показалиНазвание.уведомить();
  108. document.body.removeChild(заставка);
  109. }
  110. }
  111. );
  112. };
  113. // Кнопки.
  114. мж.кнопкаРаскладкиНажата = new Уведомитель();
  115. мж.создатьКнопкуРаскладки = function()
  116. {
  117. var html = `
  118. <div id="layout-button-border">
  119. </div>
  120. <div id="layout-button">
  121. <img id="layout-image" src="data:image/svg+xml;base64, ` + мж.иконкиКнопок["layout"] + `" alt="Раскладка" />
  122. </div>
  123. `;
  124. var css = `
  125. #layout-button
  126. {
  127. position: absolute;
  128. left: 0.5em;
  129. bottom: 0.5em;
  130. border-radius: 50%;
  131. text-align: center;
  132. width: 4em;
  133. height: 4em;
  134. line-height: 4em;
  135. pointer-events: all;
  136. background-color: #444477;
  137. }
  138. #layout-button-border
  139. {
  140. position: absolute;
  141. left: 0.5em;
  142. bottom: 0.5em;
  143. border-radius: 50%;
  144. border: 0 solid #444477;
  145. width: 4em;
  146. height: 4em;
  147. pointer-events: none;
  148. background-color: #444477;
  149. }
  150. #layout-button img
  151. {
  152. vertical-align: middle;
  153. }
  154. #layout-image
  155. {
  156. height: 2em;
  157. }
  158. .layout-button-show
  159. {
  160. animation: layout-button-show-anim 0.5s ease forwards;
  161. }
  162. .layout-button-hide
  163. {
  164. animation: layout-button-hide-anim 0.5s ease forwards;
  165. }
  166. @keyframes layout-button-show-anim
  167. {
  168. from
  169. {
  170. border-width: 0;
  171. left: 0.5em;
  172. bottom: 0.5em;
  173. }
  174. to
  175. {
  176. border-width: 300vh;
  177. left: calc(0.5em - 300vh);
  178. bottom: calc(0.5em - 300vh);
  179. }
  180. }
  181. @keyframes layout-button-hide-anim
  182. {
  183. from
  184. {
  185. border-width: 300vh;
  186. left: calc(0.5em - 300vh);
  187. bottom: calc(0.5em - 300vh);
  188. }
  189. to
  190. {
  191. border-width: 0;
  192. left: 0.5em;
  193. bottom: 0.5em;
  194. }
  195. }
  196. `;
  197. мж.иф.innerHTML += html;
  198. мж.стиль.innerHTML += css;
  199. var кнопка = document.getElementById("layout-button");
  200. мж.кнопки["раскладка"] = кнопка;
  201. кнопка.onclick = function(){
  202. мж.кнопкаРаскладкиНажата.уведомить();
  203. };
  204. };