三男で理牌

ランダムコマンドを大きく表示して麻雀牌をソートする

  1. // ==UserScript==
  2. // @name 三男で理牌
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description ランダムコマンドを大きく表示して麻雀牌をソートする
  6. // @author sasakinchu
  7. // @match https://*.sannan.nl/**
  8. // @grant GM_addStyle
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // 麻雀牌の絵文字の並び順
  16. const tileOrder = [
  17. '🀇', '🀈', '🀉', '🀊', '🀋', '🀌', '🀍', '🀎', '🀏',
  18. '🀙', '🀚', '🀛', '🀜', '🀝', '🀞', '🀟', '🀠', '🀡',
  19. '🀐', '🀑', '🀒', '🀓', '🀔', '🀕', '🀖', '🀗', '🀘',
  20. '🀀', '🀁', '🀂', '🀃', '🀆', '🀅', '🀄',
  21. ];
  22.  
  23. // 牌を大きく表示するスタイルを定義
  24. const tileStyle = `
  25. font-size: 40px;
  26. line-height: 1;
  27. vertical-align: middle;
  28. `;
  29.  
  30. // 牌をソートして大きく表示する関数
  31. function sortAndEnlargeTiles() {
  32. const ddTags = document.getElementsByTagName('dd');
  33.  
  34. for (let i = 0; i < ddTags.length; i++) {
  35. const ddTag = ddTags[i];
  36. const bTags = ddTag.getElementsByTagName('b');
  37.  
  38. const tiles = [];
  39. for (let j = 0; j < bTags.length; j++) {
  40. const bTag = bTags[j];
  41. const tile = bTag.innerText.trim();
  42. tiles.push(tile);
  43. }
  44.  
  45. tiles.sort((a, b) => {
  46. return tileOrder.indexOf(a) - tileOrder.indexOf(b);
  47. }); // 牌をソート
  48.  
  49. for (let j = 0; j < bTags.length; j++) {
  50. const bTag = bTags[j];
  51. const tile = tiles[j];
  52. const enlargedHTML = `<span style="${tileStyle}">${tile}</span>`;
  53. bTag.innerHTML = enlargedHTML;
  54. }
  55. }
  56. }
  57.  
  58. // 牌をソートして大きく表示
  59. sortAndEnlargeTiles();
  60. })();