diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f914e0f..3b26f51 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,7 +19,7 @@ jobs: # --- Linux - name: Install Dependencies (Linux) if: startsWith(matrix.os, 'ubuntu-') - run: sudo apt install libpcap-dev + run: sudo apt install libpcap-dev libcurl4-openssl-dev # --- Windows - uses: seanmiddleditch/gha-setup-vsdevenv@8c6bbf80998779f2bba87b1452832e561b65fd57 if: startsWith(matrix.os, 'windows-') diff --git a/README.md b/README.md index 4a0f8b8..16469cd 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,9 @@ Among Us のパケットをキャプチャし、 GitHub Actions でコミット毎に自動ビルドを回しています。ビルド成果は各コミットのArtifactsからダウンロードできます (GitHub にログインしていないと表示されません)。 -## Tasks (0/4) +## Tasks (1/4) -- Linked with AutoMuteUs https://automute.us/ -- GUI: Create GUI Front-end for macOS -- GUI: Create GUI Front-end for Windows -- GUI: Create GUI Front-end for Linux (GTK?) +- [x] Linked with AutoMuteUs https://automute.us/ (requires [auethermuteproxy](https://github.com/rinsuki/auethermuteproxy) for interact with AutoMuteUs server) +- [ ] GUI: Create GUI Front-end for macOS +- [ ] GUI: Create GUI Front-end for Windows +- [ ] GUI: Create GUI Front-end for Linux (GTK?) diff --git a/Sources/AUEtherCapture/CaptureState+handleRPC.swift b/Sources/AUEtherCapture/CaptureState+handleRPC.swift index 4f011fd..0dccc8f 100644 --- a/Sources/AUEtherCapture/CaptureState+handleRPC.swift +++ b/Sources/AUEtherCapture/CaptureState+handleRPC.swift @@ -23,18 +23,21 @@ extension CaptureState { for _ in 0.. Bool { if ackStore.contains(ack) { return false @@ -55,10 +56,10 @@ struct CaptureState { break } print(packet) -// case .disconnect(forced: let forced, reason: let reason, description: let description): -// <#code#> -// case .disconnectSimple: -// <#code#> + case .disconnect(forced: let forced, reason: let reason, description: let description): + fallthrough + case .disconnectSimple: + updateAutoMuteUsScene(scene: .menu) case .ack(let ack): for ack in ack { let ack = Ack(pair: pair.reversed(), no: ack) @@ -88,13 +89,18 @@ struct CaptureState { handleGameDataArray(&reader) case .joinedGame: print("Reset State") + for player in gameState.players.values { + updateAutoMuteUsPlayer(player: player, action: .left) + } gameState = .init() + updateAutoMuteUsScene(scene: .lobby) case .endGame: // EndGame _ = reader.int32() let reason = EndReason(rawValue: reader.uint8()) gameState.endReason = reason gameState.duration = timestamp - gameState.startedAt gameFinish() + updateAutoMuteUsScene(scene: .ended) default: print("Hazel", packet) } @@ -104,6 +110,12 @@ struct CaptureState { if let outDir = outDir { output(to: outDir) } + updateAutoMuteUsGameOver(reason: gameState.endReason!, players: Array(gameState.players.values)) + updateAutoMuteUsScene(scene: .ended) + sleep(1) + for player in gameState.players.values { + updateAutoMuteUsPlayer(player: player, action: .left) + } gameState = .init() } @@ -189,7 +201,9 @@ struct CaptureState { var reader = BinaryReader(data: data) let playersLength = reader.packedUInt32() for _ in 0..