非公開 画面90度回転

    @@ -3,82 +3,4 @@ * @description ゲーム画面を90度回転させるぞ 配信とかでも見えやすくなるはずだっ * @private */ -javascript:(function(){ - const container = document.getElementById('game-container'); - const canvas = document.getElementById('gameCanvas'); - if(!container || !canvas) return; - - /* 1. 土台の回転と配置(継続) */ - const w = canvas.width, h = canvas.height; - const scale = Math.min(window.innerWidth / h, window.innerHeight / w); - Object.assign(container.style, { - position: 'fixed', top: '50%', left: '50%', width: w + 'px', height: h + 'px', - maxWidth: 'none', maxHeight: 'none', zIndex: '9999', backgroundColor: '#000', - transform: `translate(-50%, -50%) rotate(90deg) scale(${scale})`, - transformOrigin: 'center center' - }); - - /* 2. 各UI要素に「逆回転」をかけて正対させる関数 */ - const fixUI = (id, styles) => { - const el = document.getElementById(id); - if(!el) return; - /* 90度回転を打ち消すために -90度(270度)回転させる */ - el.style.transformOrigin = 'center center'; - Object.assign(el.style, { - transform: 'rotate(-90deg)', - position: 'absolute', - zIndex: '10005', - ...styles - }); - }; - - /* 3. 具体的なパーツの再配置(画面の四隅へ) */ - /* 座標は回転後の見た目上の位置に合わせるため微調整が必要です */ - fixUI('ui-layer', { width: h + 'px', height: w + 'px', top: '50%', left: '50%', transform: 'translate(-50%, -50%) rotate(-90deg)' }); - fixUI('login-modal', { transform: 'translate(-50%, -50%) rotate(-90deg)', top: '50%', left: '50%' }); - fixUI('result-modal', { transform: 'translate(-50%, -50%) rotate(-90deg)', top: '50%', left: '50%' }); - fixUI('settings-modal', { transform: 'translate(-50%, -50%) rotate(-90deg)', top: '50%', left: '50%' }); - fixUI('history-modal', { transform: 'translate(-50%, -50%) rotate(-90deg)', top: '50%', left: '50%' }); - fixUI('help-modal', { transform: 'translate(-50%, -50%) rotate(-90deg)', top: '50%', left: '50%' }); - - /* スコアパネルやミニマップなどの個別パーツ */ - const scorePanel = document.querySelector('.score-panel'); - if(scorePanel) { - scorePanel.style.transform = 'rotate(-90deg)'; - scorePanel.style.transformOrigin = 'right top'; - } - - /* 4. ブーストボタンの判定補正(重要) */ - /* 元の判定式が縦画面前提なため、クリックイベントを横画面用に変換して再送する */ - canvas.addEventListener('mousedown', (e) => { - /* ここに座標変換ロジックを挟むことで、見た目通りの位置でボタンが押せるようになります */ - }, true); - - /* 5. 操作補正(継続) */ - if (typeof sendInput === 'function' && !window._inputHooked) { - window._inputHooked = true; - const _orig = window.sendInput; - window.sendInput = function() { - const dx = inputState.dx, dy = inputState.dy; - inputState.dx = dy; inputState.dy = -dx; - _orig.apply(this, arguments); - inputState.dx = dx; inputState.dy = dy; - }; - } - - /* 6. 名前と絵文字の水平維持(継続) */ - if (!window._originalFillText) { - window._originalFillText = CanvasRenderingContext2D.prototype.fillText; - CanvasRenderingContext2D.prototype.fillText = function(text, x, y, maxWidth) { - if (Math.abs(x) < 40 && Math.abs(y) < 40 && !text.includes('%') && !text.includes(':')) { - this.save(); this.rotate(-Math.PI / 2); - window._originalFillText.call(this, text, -y, x, maxWidth); - this.restore(); - } else { window._originalFillText.apply(this, arguments); } - }; - } - - window.removeEventListener('resize', window.resize); - document.body.style.backgroundColor = '#000'; - alert('【UI垂直補正パッチ】適用!\nUIとモーダルが正面を向きました。'); -})(); +javascript:(function(){const c=document.getElementById('game-container'),v=document.getElementById('gameCanvas');if(!c||!v)return;const w=v.width,h=v.height,s=Math.min(window.innerWidth/h,window.innerHeight/w)*0.98;Object.assign(c.style,{maxWidth:'none',maxHeight:'none',width:w+'px',height:h+'px',display:'flex',alignItems:'center',justifyContent:center,position:'fixed',top:'50%',left:'50%',zIndex:'9999',transform:`translate(-50%,-50%) rotate(90deg) scale(${s})`});if(typeof sendInput==='function'&&!window._iH){window._iH=1;const o=window.sendInput;window.sendInput=function(){const x=inputState.dx,y=inputState.dy;inputState.dx=y;inputState.dy=-x;o.apply(this,arguments);inputState.dx=x;inputState.dy=y;};}if(!window._oF){window._oF=CanvasRenderingContext2D.prototype.fillText;CanvasRenderingContext2D.prototype.fillText=function(t,x,y,m){if(Math.abs(x)<40&&Math.abs(y)<40&&!t.includes('%')){this.save();this.rotate(-Math.PI/2);window._oF.call(this,t,-y,x,m);this.restore();}else{window._oF.apply(this,arguments);}};}window.removeEventListener('resize',window.resize);document.body.style.backgroundColor='#000';alert('適用完了!');})();
  • /*
     * @title 画面90度回転
     * @description ゲーム画面を90度回転させるぞ 配信とかでも見えやすくなるはずだっ
     * @private
     */
    javascript:(function(){const c=document.getElementById('game-container'),v=document.getElementById('gameCanvas');if(!c||!v)return;const w=v.width,h=v.height,s=Math.min(window.innerWidth/h,window.innerHeight/w)*0.98;Object.assign(c.style,{maxWidth:'none',maxHeight:'none',width:w+'px',height:h+'px',display:'flex',alignItems:'center',justifyContent:center,position:'fixed',top:'50%',left:'50%',zIndex:'9999',transform:`translate(-50%,-50%) rotate(90deg) scale(${s})`});if(typeof sendInput==='function'&&!window._iH){window._iH=1;const o=window.sendInput;window.sendInput=function(){const x=inputState.dx,y=inputState.dy;inputState.dx=y;inputState.dy=-x;o.apply(this,arguments);inputState.dx=x;inputState.dy=y;};}if(!window._oF){window._oF=CanvasRenderingContext2D.prototype.fillText;CanvasRenderingContext2D.prototype.fillText=function(t,x,y,m){if(Math.abs(x)<40&&Math.abs(y)<40&&!t.includes('%')){this.save();this.rotate(-Math.PI/2);window._oF.call(this,t,-y,x,m);this.restore();}else{window._oF.apply(this,arguments);}};}window.removeEventListener('resize',window.resize);document.body.style.backgroundColor='#000';alert('適用完了!');})();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2026/05/07 21:37:28 - 4 hours ago
  2. 2026/05/07 21:36:45 - 4 hours ago
  3. 2026/05/07 21:35:51 - 4 hours ago
  4. 2026/05/07 21:33:04 - 4 hours ago
  5. 2026/05/07 21:32:51 - 4 hours ago
  6. 2026/05/07 21:32:34 - 4 hours ago
  7. 2026/05/07 21:31:47 - 4 hours ago
  8. 2026/05/07 21:30:08 - 4 hours ago
  9. 2026/05/07 21:29:42 - 4 hours ago
  10. 2026/05/07 21:29:00 - 4 hours ago
  11. 2026/05/07 21:28:35 - 4 hours ago
  12. 2026/05/07 21:28:13 - 4 hours ago
  13. 2026/05/07 21:27:47 - 4 hours ago
  14. 2026/05/07 21:26:34 - 4 hours ago
  15. 2026/05/07 21:25:12 - 4 hours ago
  16. 2026/05/07 21:24:27 - 4 hours ago
  17. 2026/05/07 21:23:48 - 4 hours ago
  18. 2026/05/07 21:19:16 - 4 hours ago
  19. 2026/05/07 21:18:28 - 4 hours ago
  20. 2026/05/07 21:18:05 - 4 hours ago
  21. 2026/05/07 21:16:56 - 4 hours ago
  22. 2026/05/07 21:15:57 - 4 hours ago
  23. 2026/05/07 21:13:29 - 4 hours ago
  24. 2026/05/07 21:12:09 - 4 hours ago
  25. 2026/05/07 21:11:27 - 4 hours ago
  26. 2026/05/07 21:10:51 - 4 hours ago
  27. 2026/05/07 21:10:17 - 4 hours ago
  28. 2026/05/07 21:09:44 - 4 hours ago
  29. 2026/05/07 21:06:24 - 4 hours ago
  30. 2026/05/07 21:04:49 - 4 hours ago
  31. 2026/05/07 20:58:38 - 4 hours ago
  32. 2026/05/07 20:55:41 - 5 hours ago
  33. 2026/05/07 20:44:19 - 5 hours ago
  34. 2026/05/07 20:33:33 - 5 hours ago
  35. 2026/05/07 20:27:57 - 5 hours ago
  36. 2026/05/07 20:21:47 - 5 hours ago
  37. 2026/05/07 20:15:17 - 5 hours ago
  38. 2026/05/07 20:07:46 - 5 hours ago
  39. 2026/05/07 19:45:31 - 6 hours ago
  40. 2026/05/07 19:36:35 - 6 hours ago
  41. 2026/05/07 19:32:05 - 6 hours ago
  42. 2026/05/07 19:30:04 - 6 hours ago
  43. 2026/05/07 19:22:33 - 6 hours ago
  44. 2026/05/07 14:18:43 - 11 hours ago