Просмотр исходного кода

Merge pull request #2280 from mobeicanyue/main

feat: 添加 Xbox 手柄 LB 和 RB 按键支持,增加翻页功能

产物处理:本 PR 携带的 fork 构建产物与 main 上(含自动翻页)的产物冲突,按「保留 main 产物 + 用仓库工具链重建」解决——pnpm build 输出全量同步到 app/src/main/assets/web/vue,因此合并后产物同时包含自动翻页与 LB/RB;另补回 xboxGamepad.ts 末尾换行。
HapeLee 1 месяц назад
Родитель
Сommit
72a93307ef

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/src/main/assets/web/vue/assets/BookChapter-Dg2n6bkm.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/src/main/assets/web/vue/assets/BookChapter-Uh8Wo3W7.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/src/main/assets/web/vue/assets/BookShelf-Do_aGKse.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
app/src/main/assets/web/vue/assets/index-D-9cumFp.js


+ 1 - 1
app/src/main/assets/web/vue/index.html

@@ -4,7 +4,7 @@
         <meta charset="UTF-8" />
         <link rel="icon" href="./favicon.ico" />
     <meta name="viewport" content="width=device-width,initial-scale=1.0" />
-      <script type="module" crossorigin src="./assets/index-BbPkUGSp.js"></script>
+      <script type="module" crossorigin src="./assets/index-D-9cumFp.js"></script>
       <link rel="modulepreload" crossorigin href="./assets/vendor-DQqeohSF.js">
       <link rel="stylesheet" crossorigin href="./assets/vendor-CXe1BRiH.css">
       <link rel="stylesheet" crossorigin href="./assets/index-CpkaNQMA.css">

+ 28 - 1
modules/web/src/utils/xboxGamepad.ts

@@ -17,6 +17,8 @@ interface GamepadConfig {
   BUTTON_INDEX: {
     A: number
     B: number
+    LB: number
+    RB: number
   }
 }
 
@@ -28,6 +30,8 @@ interface DPadState {
 
   a: boolean
   b: boolean
+  lb: boolean
+  rb: boolean
 }
 
 interface GamepadState {
@@ -52,6 +56,8 @@ function createGamepadState(): GamepadState {
       right: false,
       a: false,
       b: false,
+      lb: false,
+      rb: false,
     },
   }
 }
@@ -76,8 +82,9 @@ const CONFIG: GamepadConfig = {
   // Xbox 按键
   BUTTON_INDEX: {
     A: 0,
-
     B: 1,
+    LB: 4,
+    RB: 5,
   },
 }
 
@@ -255,6 +262,10 @@ function handleDPad(gp: Gamepad, gs: GamepadState): void {
     a: gp.buttons[buttons.A]?.pressed || false,
 
     b: gp.buttons[buttons.B]?.pressed || false,
+
+    lb: gp.buttons[buttons.LB]?.pressed || false,
+
+    rb: gp.buttons[buttons.RB]?.pressed || false,
   }
 
   // 十字 ↑ 顶部
@@ -291,6 +302,22 @@ function handleDPad(gp: Gamepad, gs: GamepadState): void {
     toggleCatalog()
   }
 
+  // LB 向上翻页
+
+  if (isPressedOnce(current.lb, gs.dpadPressed.lb)) {
+    log('🎮 LB 向上翻页')
+
+    scrollPage(-1)
+  }
+
+  // RB 向下翻页
+
+  if (isPressedOnce(current.rb, gs.dpadPressed.rb)) {
+    log('🎮 RB 向下翻页')
+
+    scrollPage(1)
+  }
+
   gs.dpadPressed = current
 }
 

Некоторые файлы не были показаны из-за большого количества измененных файлов