Moving touch buttons in tetr.js

title

当前为 2020-01-27 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Moving touch buttons in tetr.js
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.32
  5. // @author Oki
  6. // @description title
  7. // @match http://farter.cn/tetr.js/
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13.  
  14. window.addEventListener('load', function(){
  15.  
  16.  
  17.  
  18.  
  19. touchButtonsLayout = function() {
  20. console.log("test")
  21. var dpiX = 96;
  22. var dpiY = 96;
  23. var winW = window.innerWidth / dpiX;
  24. var winH = window.innerHeight / dpiY;
  25. var buttonH = 0.7, buttonW = 1, fontSize=0.55, margin=0.1, unit="in";
  26.  
  27. var setPos = function(elem, posX, posY, sizeW, sizeH,
  28. alignX, alignY, offsetX, offsetY, clientW, clientH)
  29. {
  30. elem.style.width = "" + sizeW + unit;
  31. elem.style.height = "" + sizeH + unit;
  32. // border ignored, for now
  33. elem.style.left = "" + (offsetX + alignX * 0.5 * (clientW - sizeW) + posX * sizeW - ( (alignX-1) * margin/2 )) + unit;
  34. elem.style.top = "" + (offsetY + alignY * 0.5 * (clientH - sizeH) + posY * sizeH - ( (alignY-1) * margin/2 )) + unit;
  35. elem.style.display = "block";
  36. elem.style.fontSize = "" + fontSize + unit;
  37. }
  38.  
  39. var layouts = { //function array
  40. "NONE":
  41. function() {
  42. for (var i = 0, len = touchButtons.length; i < len; i++)
  43. touchButtons[i].style.display = "none";
  44. },
  45. "KBD_R":
  46. function() {
  47. setPos(touchRotLeft, 0, -1, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  48. setPos(touchDown, 0.5, -2, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  49. setPos(touchRotRight, 1, -1, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  50. setPos(touchDrop, 1.5, 0, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  51. setPos(touchRight, 0, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  52. setPos(touchLeft, -2, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  53. setPos(touchRot180, -1, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  54. setPos(touchHold, -1, -1, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  55. },
  56. "KBD_L":
  57. function() {
  58. setPos(touchRotLeft, -1, -1, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  59. setPos(touchRot180, -0.4, -2, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  60. setPos(touchRotRight, 0, -1, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  61. setPos(touchHold, -1.5, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  62. setPos(touchRight, 2, 0, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  63. setPos(touchLeft, 0, 0, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  64. setPos(touchDown, 1, 0, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  65. setPos(touchDrop, 1, -1, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  66. },
  67. "JOY":
  68. function() {
  69. var oy/*offset Y by block*/,ay/*align Y*/;
  70. if (winH-winW>buttonH*1.5) {
  71. oy=-1; ay=2;
  72. } else {
  73. oy=0; ay=1;
  74. }
  75. /* single finger */
  76. buttonW = 0.8;
  77. if ((winW-0.1)/4<buttonW) {
  78. buttonW=(winW-0.1)/4;
  79. }
  80. setPos(touchRotLeft, -0.5, 1+oy, buttonW, buttonH, 2, ay, 0, 0, winW, winH);
  81. setPos(touchRot180, -0.5, -1+oy, buttonW, buttonH, 2, ay, 0, 0, winW, winH);
  82. setPos(touchRotRight, 0, 0+oy, buttonW, buttonH, 2, ay, 0, 0, winW, winH);
  83. setPos(touchHold, -1, 0+oy, buttonW, buttonH, 2, ay, 0, 0, winW, winH);
  84. setPos(touchRight, 1, 0+oy, buttonW, buttonH, 0, ay, 0, 0, winW, winH);
  85. setPos(touchLeft, 0, 0+oy, buttonW, buttonH, 0, ay, 0, 0, winW, winH);
  86. setPos(touchDown, 0.5, 1+oy, buttonW, buttonH, 0, ay, 0, 0, winW, winH);
  87. setPos(touchDrop, 0.5, -1+oy, buttonW, buttonH, 0, ay, 0, 0, winW, winH);
  88. },
  89. "NARROW":
  90. function() {
  91. setPos(touchLeft, -2, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  92. setPos(touchRight, 0, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  93. if (winH-winW>buttonH*1.5) {
  94. setPos(touchDown, -1, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  95. setPos(touchDrop, -1, -1, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  96. } else {
  97. setPos(touchDown, 0, -1, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  98. setPos(touchDrop, -1, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  99. }
  100. setPos(touchRotLeft, 0, -1.2, buttonW, buttonH, 0, 1, 0, 0, winW, winH);
  101. setPos(touchRotRight, 0, 0, buttonW, buttonH, 0, 1, 0, 0, winW, winH);
  102. setPos(touchHold, 0, 1.2, buttonW, buttonH, 0, 1, 0, 0, winW, winH);
  103. setPos(touchRot180, 0, -2.4, buttonW, buttonH, 0, 1, 0, 0, winW, winH);
  104. },
  105. "NARROW_L":
  106. function() {
  107. setPos(touchRotLeft, -2, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  108. setPos(touchRotRight, -1, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  109. setPos(touchDrop, 0, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  110. if (winH-winW>buttonH*1.5) {
  111. setPos(touchRot180, -1, -1, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  112. } else {
  113. setPos(touchRot180, 0, -1, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  114. }
  115. setPos(touchLeft, 0, -1.2, buttonW, buttonH, 0, 1, 0, 0, winW, winH);
  116. setPos(touchDown, 0, 0, buttonW, buttonH, 0, 1, 0, 0, winW, winH);
  117. setPos(touchRight, 0, 1.2, buttonW, buttonH, 0, 1, 0, 0, winW, winH);
  118. setPos(touchHold, 0, -2.4, buttonW, buttonH, 0, 1, 0, 0, winW, winH);
  119. },
  120. "NARROW_LM":
  121. function() {
  122. setPos(touchLeft, 0, 0, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  123. setPos(touchRight, 2, 0, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  124. if (winH-winW>buttonH*1.5) {
  125. setPos(touchDown, 1, 0, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  126. setPos(touchDrop, 1, -1, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  127. }
  128. else {
  129. setPos(touchDown, 0, -1, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  130. setPos(touchDrop, 1, 0, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  131. }
  132. setPos(touchRotLeft, 0, -1.2, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  133. setPos(touchRotRight, 0, -2.4, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  134. setPos(touchHold, 0, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  135. setPos(touchRot180, 0, -3.6, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  136. },
  137.  
  138. "DELUXE":
  139. function() {
  140. buttonW = 0.8;
  141. if ((winW-0.1)/4<buttonW) {
  142. buttonW=(winW-0.1)/4;
  143. }
  144. setPos(touchLeft, 0, 0, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  145. setPos(touchRight, 1, 0, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  146. setPos(touchDown, 0, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  147. setPos(touchDrop, 0, -1, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  148. setPos(touchRotLeft, -1, 0, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  149. setPos(touchRotRight, -1, -1, buttonW, buttonH, 2, 2, 0, 0, winW, winH);
  150. setPos(touchHold, 0.5, -1, buttonW, buttonH, 0, 2, 0, 0, winW, winH);
  151. //setPos(touchRot180, 0, -buttonH*2.4, buttonW, buttonH, 0, 1, 0, 0, winW, winH);
  152. touchRot180.style.display = "none";
  153. },
  154.  
  155. };
  156.  
  157. setPos(touchLayout, 0, 0, buttonW*0.8, buttonH*0.8, 2, 0, 0, 0, winW, winH);
  158. if(currLayout === -2) { // none
  159. layouts["NONE"]();
  160. }else if(currLayout === -1) { // auto detection
  161. if(winW<buttonW*3) {
  162. layouts["NONE"]();
  163. }
  164. else if((winW-(winH*0.5)>buttonW*4.5) ||
  165. (winH-winW>4*buttonH && winW>buttonW*5.5)) {
  166. layouts["KBD_R"]();
  167. }
  168. else if(winW-(winH*0.5)>buttonW*3) {
  169. layouts["JOY"]();
  170. }
  171. else if(winH-winW>0) {
  172. layouts["NARROW"]();
  173. }
  174. else if(winW>=buttonW*4) {
  175. layouts["DELUXE"]();
  176. }
  177. else {
  178. layouts["NONE"]();
  179. }
  180. }
  181. else {
  182. layouts[["KBD_R","KBD_L","JOY","NARROW","NARROW_L","NARROW_LM","DELUXE"][currLayout]]();
  183. }
  184. }
  185.  
  186.  
  187.  
  188. });
  189. })();