Merge pull request #87 from an-anime-team/next

Release 1.5.1
This commit is contained in:
Observer KRypt0n_ 2023-11-15 22:23:00 +02:00 committed by GitHub
commit 51a455c625
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
48 changed files with 311 additions and 45 deletions

View file

@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
### Added
- Added `UpdatingPermissions` installation step
- Downloaders now will skip finished files and truncate them if needed
- Added new fix for the API responses
- Added voiceovers repairing support
- Added special tooltips for concerning patch status
### Fixed
- Fixed launch button color in concerning patches
### Changed
- Increased voiceovers version prediction error
## [1.5.0] - 13.11.2023 ## [1.5.0] - 13.11.2023
### Added ### Added

8
Cargo.lock generated
View file

@ -57,8 +57,8 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
[[package]] [[package]]
name = "anime-game-core" name = "anime-game-core"
version = "1.17.2" version = "1.17.3"
source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.17.2#79fa0ea967b05efcbf19b2db4800ddd2b731c2c9" source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.17.3#177a3d7611f02b8a32004029cc38a2101ad5bffb"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bzip2", "bzip2",
@ -82,8 +82,8 @@ dependencies = [
[[package]] [[package]]
name = "anime-launcher-sdk" name = "anime-launcher-sdk"
version = "1.12.2" version = "1.12.3"
source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.12.2#923a389dffe44c2076bbacb7085084069fbaee4f" source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.12.3#dcd1b3e3ed34ea5a6335644dab1416ed083e371b"
dependencies = [ dependencies = [
"anime-game-core", "anime-game-core",
"anyhow", "anyhow",

View file

@ -19,7 +19,7 @@ glib-build-tools = "0.18"
[dependencies.anime-launcher-sdk] [dependencies.anime-launcher-sdk]
git = "https://github.com/an-anime-team/anime-launcher-sdk" git = "https://github.com/an-anime-team/anime-launcher-sdk"
tag = "1.12.2" tag = "1.12.3"
features = ["all", "star-rail", "star-rail-patch"] features = ["all", "star-rail", "star-rail-patch"]
# path = "../anime-launcher-sdk" # ! for dev purposes only # path = "../anime-launcher-sdk" # ! for dev purposes only

View file

@ -1,7 +1,7 @@
<picture> <div float="left" align="center">
<source media="(prefers-color-scheme: dark)" srcset="repository/logo-dark.png"> <img src="repository/logo.png" width="200px" height="200px">
<img src="repository/logo-light.png"> <img src="repository/patchstatus.svg" height="200px">
</picture> </div>
| Modern style | Classic style | | Modern style | Classic style |
| :-: | :-: | | :-: | :-: |

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = Test-Patch ist verfügbar
patch-not-applied-tooltip = Patch ist nicht angewendet patch-not-applied-tooltip = Patch ist nicht angewendet
patch-broken-tooltip = Der aktuelle Patch funktioniert derzeit nicht patch-broken-tooltip = Der aktuelle Patch funktioniert derzeit nicht
patch-unsafe-tooltip = Der aktuelle Patch ist derzeit nicht sicher und sollte nicht genutzt werden patch-unsafe-tooltip = Der aktuelle Patch ist derzeit nicht sicher und sollte nicht genutzt werden
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = Hauptpatch Anwenden apply-main-patch = Hauptpatch Anwenden
apply-main-patch-description = Experimentell. Wenn Sie diese Option deaktivieren, können Sie das Spiel ausführen, ohne den Patch anzuwenden. Dies könnte möglicherweise nicht funktionieren oder erfordert manuelle Änderungen an den Dateien. Verwenden Sie dies nur wenn Sie wissen was Sie tun. apply-main-patch-description = Experimentell. Wenn Sie diese Option deaktivieren, können Sie das Spiel ausführen, ohne den Patch anzuwenden. Dies könnte möglicherweise nicht funktionieren oder erfordert manuelle Änderungen an den Dateien. Verwenden Sie dies nur wenn Sie wissen was Sie tun.

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = Launcher status wird geladen: Verifizierung des
checking-free-space = Überprüfe Freien Speicherplatz checking-free-space = Überprüfe Freien Speicherplatz
downloading = Lade Herunter downloading = Lade Herunter
updating-permissions = Updating permissions
unpacking = Entpacken unpacking = Entpacken
verifying-files = Verifiziere Dateien verifying-files = Verifiziere Dateien
repairing-files = Repariere Dateien repairing-files = Repariere Dateien

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = Test patch is available
patch-not-applied-tooltip = Patch is not applied patch-not-applied-tooltip = Patch is not applied
patch-broken-tooltip = Current patch version is broken and doesn't work properly patch-broken-tooltip = Current patch version is broken and doesn't work properly
patch-unsafe-tooltip = Current patch version is unsafe and shouldn't be used patch-unsafe-tooltip = Current patch version is unsafe and shouldn't be used
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = Apply main patch apply-main-patch = Apply main patch
apply-main-patch-description = Experimental. Disabling this allows you to run the game without applying the patch. This may not work, or require manual files modifications. Use if you know what you're doing apply-main-patch-description = Experimental. Disabling this allows you to run the game without applying the patch. This may not work, or require manual files modifications. Use if you know what you're doing

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = Loading launcher state: verifying installed patc
checking-free-space = Checking free space checking-free-space = Checking free space
downloading = Downloading downloading = Downloading
updating-permissions = Updating permissions
unpacking = Unpacking unpacking = Unpacking
verifying-files = Verifying files verifying-files = Verifying files
repairing-files = Repairing files repairing-files = Repairing files

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = Está disponible un parche de prueba
patch-not-applied-tooltip = El parche no está aplicado patch-not-applied-tooltip = El parche no está aplicado
patch-broken-tooltip = La versión actual del parche está rota y no funciona correctamente patch-broken-tooltip = La versión actual del parche está rota y no funciona correctamente
patch-unsafe-tooltip = La versión actual del parche es insegura y no debería usarse patch-unsafe-tooltip = La versión actual del parche es insegura y no debería usarse
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = Aplicar parche principal apply-main-patch = Aplicar parche principal
apply-main-patch-description = Experimental. Deshabilitar esta opción te permitirá correr el juego sin aplicar el parche. Esto podría no funcionar, o requerir modificaciones manuales a los archivos. Úsalo sólo si sabes lo que estás haciendo apply-main-patch-description = Experimental. Deshabilitar esta opción te permitirá correr el juego sin aplicar el parche. Esto podría no funcionar, o requerir modificaciones manuales a los archivos. Úsalo sólo si sabes lo que estás haciendo

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = Cargando estado del launcher: Verificando parche
checking-free-space = Comprobando espacio libre checking-free-space = Comprobando espacio libre
downloading = Descargando downloading = Descargando
updating-permissions = Updating permissions
unpacking = Descomprimiendo unpacking = Descomprimiendo
verifying-files = Verificación de archivos verifying-files = Verificación de archivos
repairing-files = Reparación de archivos repairing-files = Reparación de archivos

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = Patch de test disponible
patch-not-applied-tooltip = Patch is not applied patch-not-applied-tooltip = Patch is not applied
patch-broken-tooltip = La version actuelle du patch ne fonctionne pas correctement patch-broken-tooltip = La version actuelle du patch ne fonctionne pas correctement
patch-unsafe-tooltip = La version actuelle du patch n'est pas safe, et ne doit pas être utilisée patch-unsafe-tooltip = La version actuelle du patch n'est pas safe, et ne doit pas être utilisée
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = Appliquer le patch principal apply-main-patch = Appliquer le patch principal
apply-main-patch-description = Expériment. Désactiver cette option permet de lancer le jeu sans le patch. Il n'est pas garanti que cette option marche, et des modifications manuelles seront potentiellement nécessaires. À n'utiliser que si vous savez ce que vous faites apply-main-patch-description = Expériment. Désactiver cette option permet de lancer le jeu sans le patch. Il n'est pas garanti que cette option marche, et des modifications manuelles seront potentiellement nécessaires. À n'utiliser que si vous savez ce que vous faites

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = Chargement de l'état du launcher : vérificati
checking-free-space = Vérification de l'espace disque disponible checking-free-space = Vérification de l'espace disque disponible
downloading = Téléchargement downloading = Téléchargement
updating-permissions = Updating permissions
unpacking = Décompression unpacking = Décompression
verifying-files = Vérification des fichiers verifying-files = Vérification des fichiers
repairing-files = Réparation des fichiers repairing-files = Réparation des fichiers

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = Teszt patch elérhető
patch-not-applied-tooltip = A patch nincs alkalmazva patch-not-applied-tooltip = A patch nincs alkalmazva
patch-broken-tooltip = Current patch version is broken and doesn't work properly patch-broken-tooltip = Current patch version is broken and doesn't work properly
patch-unsafe-tooltip = Current patch version is unsafe and shouldn't be used patch-unsafe-tooltip = Current patch version is unsafe and shouldn't be used
patch-concerning-tooltip = A jelenlegi patch verzióval van pár aggodalmunk
apply-main-patch = Fő patch alkalmazása apply-main-patch = Fő patch alkalmazása
apply-main-patch-description = Kísérleti opció, a kikapcsolásával futtathatod a játékot patch nélkül. Lehet hogy nem fog működni, vagy a fájlokat manuálisan kell szerkesztened, akkor kapcsold ki ha tudod mit csinálsz. apply-main-patch-description = Kísérleti opció, a kikapcsolásával futtathatod a játékot patch nélkül. Lehet hogy nem fog működni, vagy a fájlokat manuálisan kell szerkesztened, akkor kapcsold ki ha tudod mit csinálsz.

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = Launcher állapot betöltése: telepített patch
checking-free-space = Szabad hely ellenőrzése checking-free-space = Szabad hely ellenőrzése
downloading = Letöltés downloading = Letöltés
updating-permissions = Jogosultságok frissítése
unpacking = Kicsomagolás unpacking = Kicsomagolás
verifying-files = Fájlok ellenőrzése verifying-files = Fájlok ellenőrzése
repairing-files = Fájlok javítása repairing-files = Fájlok javítása

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = Patch tes tersedia
patch-not-applied-tooltip = Patch tidak diterapkan patch-not-applied-tooltip = Patch tidak diterapkan
patch-broken-tooltip = Patch versi saat ini rusak dan tidak dapat bekerja dengan semestinya patch-broken-tooltip = Patch versi saat ini rusak dan tidak dapat bekerja dengan semestinya
patch-unsafe-tooltip = Patch versi saat ini tidak aman dan sebaiknya tidak digunakan patch-unsafe-tooltip = Patch versi saat ini tidak aman dan sebaiknya tidak digunakan
patch-concerning-tooltip = Kami khawatir dengan kondisi patch versi saat ini
apply-main-patch = Terapkan patch utama apply-main-patch = Terapkan patch utama
apply-main-patch-description = Eksperimental. Menonaktifkan opsi ini akan menginzinkan Anda menjalankan game tanpa menerapkan patch. Hal ini mungkin tidak bekerja, atau membutuhkan modifikasi file secara manual. Gunakan jika Anda tahu apa yang Anda lakukan apply-main-patch-description = Eksperimental. Menonaktifkan opsi ini akan menginzinkan Anda menjalankan game tanpa menerapkan patch. Hal ini mungkin tidak bekerja, atau membutuhkan modifikasi file secara manual. Gunakan jika Anda tahu apa yang Anda lakukan

View file

@ -49,6 +49,7 @@ loading-launcher-state--patch = Memuat keadaan launcher: memverifikasi patch yan
checking-free-space = Mengecek penyimpanan kosong checking-free-space = Mengecek penyimpanan kosong
downloading = Mengunduh downloading = Mengunduh
updating-permissions = Perbaharui izin akses baca, tulis, dan eksekusi berkas atau direktori
unpacking = Membongkar unpacking = Membongkar
verifying-files = Memverifikasi file verifying-files = Memverifikasi file
repairing-files = Memperbaiki file repairing-files = Memperbaiki file

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = La patch di test è disponibile
patch-not-applied-tooltip = La patch non è applicata patch-not-applied-tooltip = La patch non è applicata
patch-broken-tooltip = L'attuale versione della patch è difettosa e non funziona correttamente patch-broken-tooltip = L'attuale versione della patch è difettosa e non funziona correttamente
patch-unsafe-tooltip = L'attuale versione della patch non è sicura e non dovrebbe essere usata patch-unsafe-tooltip = L'attuale versione della patch non è sicura e non dovrebbe essere usata
patch-concerning-tooltip = Abbiamo alcuni timori sulla versione attuale della patch
apply-main-patch = Applica la patch principale apply-main-patch = Applica la patch principale
apply-main-patch-description = Sperimentale. Disabilitandola ti permette di eseguite il gioco senza applicare la patch. Ciò potrebbe non funzionare o richiedere modifiche manuali ai file. Usala se sai cosa stai facendo apply-main-patch-description = Sperimentale. Disabilitandola ti permette di eseguite il gioco senza applicare la patch. Ciò potrebbe non funzionare o richiedere modifiche manuali ai file. Usala se sai cosa stai facendo

View file

@ -51,6 +51,7 @@ loading-launcher-state--patch = Caricamento dello stato del launcher: verifica d
checking-free-space = Controllo dello spazio disponibile in corso checking-free-space = Controllo dello spazio disponibile in corso
downloading = Scaricamento in corso downloading = Scaricamento in corso
updating-permissions = Aggiornamento dei permessi in corso
unpacking = Unpacking in corso unpacking = Unpacking in corso
verifying-files = Verifica dei file in corso verifying-files = Verifica dei file in corso
repairing-files = Riparazione dei file in corso repairing-files = Riparazione dei file in corso

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = テストパッチがあります
patch-not-applied-tooltip = パッチが適用されませんでした。 patch-not-applied-tooltip = パッチが適用されませんでした。
patch-broken-tooltip = 現在のパッチは、壊れているため正しく動作しない場合があります。 patch-broken-tooltip = 現在のパッチは、壊れているため正しく動作しない場合があります。
patch-unsafe-tooltip = 現在のパッチは、安全ではないので使わないほうが良いでしょう。 patch-unsafe-tooltip = 現在のパッチは、安全ではないので使わないほうが良いでしょう。
patch-concerning-tooltip = 現在のパッチバージョンは、いくつかの懸念点があります
apply-main-patch = メインパッチを適用 apply-main-patch = メインパッチを適用
apply-main-patch-description = 実験的です。これを無効にするとパッチ無しでゲームを起動することができます。これが機能しない場合、手動でパッチを適用する必要があります。これが何を意味するのかを理解できない人は無効にするべきではないでしょう。 apply-main-patch-description = 実験的です。これを無効にするとパッチ無しでゲームを起動することができます。これが機能しない場合、手動でパッチを適用する必要があります。これが何を意味するのかを理解できない人は無効にするべきではないでしょう。

View file

@ -50,6 +50,7 @@ loading-launcher-state--patch = ランチャーの状態を読み込み中 イ
checking-free-space = 空き容量を確認しています checking-free-space = 空き容量を確認しています
downloading = ダウンロード中 downloading = ダウンロード中
updating-permissions = 権限を更新中
unpacking = 展開 unpacking = 展開
verifying-files = ファイルの整合性を確認中 verifying-files = ファイルの整合性を確認中
repairing-files = ファイルを修正中 repairing-files = ファイルを修正中

View file

@ -48,13 +48,13 @@ patch-preparation-tooltip = 패치가 개발 중입니다
patch-testing-tooltip = 테스트 패치를 사용할 수 있습니다 patch-testing-tooltip = 테스트 패치를 사용할 수 있습니다
patch-not-applied-tooltip = 패치가 적용되지 않았습니다 patch-not-applied-tooltip = 패치가 적용되지 않았습니다
patch-broken-tooltip = Current patch version is broken and doesn't work properly
patch-unsafe-tooltip = Current patch version is unsafe and shouldn't be used
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = 메인 패치 적용 apply-main-patch = 메인 패치 적용
apply-main-patch-description = 실험적 기능입니다. 이 옵션을 비활성화하면 패치를 적용하지 않고 게임을 실행할 수 있습니다. 작동하지 않거나 수동으로 파일을 수정해야 할 수 있습니다. 사용법을 알고 있는 경우에만 사용하세요. apply-main-patch-description = 실험적 기능입니다. 이 옵션을 비활성화하면 패치를 적용하지 않고 게임을 실행할 수 있습니다. 작동하지 않거나 수동으로 파일을 수정해야 할 수 있습니다. 사용법을 알고 있는 경우에만 사용하세요.
disable-mhypbase = mhypbase 비활성화
disable-mhypbase-description = 실험적 기능입니다. 활성화 된 경우, 런처는 메인 패치 적용 중에 mhypbase.dll을 비활성화합니다. 이는 현재 XLUA 패치와 동일합니다. 성능을 향상시키고 CPU 사용을 줄입니다
ask-superuser-permissions = 슈퍼유저 권한 요청 ask-superuser-permissions = 슈퍼유저 권한 요청
ask-superuser-permissions-description = 런처가 이를 사용하여 호스트 파일을 자동으로 업데이트합니다. Flatpak 에디션에서는 필요하지 않습니다 ask-superuser-permissions-description = 런처가 이를 사용하여 호스트 파일을 자동으로 업데이트합니다. Flatpak 에디션에서는 필요하지 않습니다

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = 런처 상태 로드 중: 설치된 패치 확
checking-free-space = 여유 공간 확인 중 checking-free-space = 여유 공간 확인 중
downloading = 다운로드 중 downloading = 다운로드 중
updating-permissions = Updating permissions
unpacking = 압축 해제 중 unpacking = 압축 해제 중
verifying-files = 파일 검증 중 verifying-files = 파일 검증 중
repairing-files = 파일 복구 중 repairing-files = 파일 복구 중

View file

@ -49,13 +49,13 @@ patch-preparation-tooltip = Patch is in ontwikkeling
patch-testing-tooltip = Testpatch is beschikbaar patch-testing-tooltip = Testpatch is beschikbaar
patch-not-applied-tooltip = Patch is niet toegepast patch-not-applied-tooltip = Patch is niet toegepast
patch-broken-tooltip = Current patch version is broken and doesn't work properly
patch-unsafe-tooltip = Current patch version is unsafe and shouldn't be used
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = Breng de main patch aan apply-main-patch = Breng de main patch aan
apply-main-patch-description = Experimenteel. Als je dit uitschakelt, kun je het spel uitvoeren zonder de patch toe te passen. Dit werkt mogelijk niet, of vereist handmatige bestandsaanpassingen. Gebruik dit als je weet wat je doet apply-main-patch-description = Experimenteel. Als je dit uitschakelt, kun je het spel uitvoeren zonder de patch toe te passen. Dit werkt mogelijk niet, of vereist handmatige bestandsaanpassingen. Gebruik dit als je weet wat je doet
disable-mhypbase = Schakel mhypbase uit
disable-mhypbase-description = Experimenteel. Indien ingeschakeld, zal het opstartprogramma mhypbase.dll uitschakelen tijdens het aanbrengen van de main patch, wat momenteel gelijkwaardig is aan de xlua-patch. Verbetert de prestaties en vermindert het CPU-gebruik
ask-superuser-permissions = Vraag superuser-machtigingen ask-superuser-permissions = Vraag superuser-machtigingen
ask-superuser-permissions-description = Launcher zal ze gebruiken om je hosts-bestand automatisch bij te werken. Dit is niet nodig in de flatpak-editie ask-superuser-permissions-description = Launcher zal ze gebruiken om je hosts-bestand automatisch bij te werken. Dit is niet nodig in de flatpak-editie

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = Laadstatus van de launcher: geïnstalleerde patc
checking-free-space = Vrije ruimte controleren checking-free-space = Vrije ruimte controleren
downloading = Downloaden downloading = Downloaden
updating-permissions = Updating permissions
unpacking = Uitpakken unpacking = Uitpakken
verifying-files = Bestanden verifiëren verifying-files = Bestanden verifiëren
repairing-files = Bestanden repareren repairing-files = Bestanden repareren

View file

@ -48,13 +48,13 @@ patch-preparation-tooltip = Łatka jest w trakcie opracowywania
patch-testing-tooltip = Dostępna jest łatka testowa patch-testing-tooltip = Dostępna jest łatka testowa
patch-not-applied-tooltip = Łatka nie jest zastosowana patch-not-applied-tooltip = Łatka nie jest zastosowana
patch-broken-tooltip = Current patch version is broken and doesn't work properly
patch-unsafe-tooltip = Current patch version is unsafe and shouldn't be used
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = Zastosuj główną łatkę apply-main-patch = Zastosuj główną łatkę
apply-main-patch-description = Eksperymentalne. Wyłączenie tej opcji pozwoli uruchomić grę bez stosowania łatki. Może to nie działać lub wymagać ręcznych modyfikacji plików. Użyj tej opcji, jeśli wiesz, co robisz. apply-main-patch-description = Eksperymentalne. Wyłączenie tej opcji pozwoli uruchomić grę bez stosowania łatki. Może to nie działać lub wymagać ręcznych modyfikacji plików. Użyj tej opcji, jeśli wiesz, co robisz.
disable-mhypbase = Wyłącz mhypbase
disable-mhypbase-description = Eksperymentalne. Jeśli ta opcja jest włączona, launcher wyłączy plik mhypbase.dll podczas stosowania głównej łatki, co obecnie jest równoważne z łatką xlua. Poprawia wydajność i zmniejsza użycie CPU.
ask-superuser-permissions = Poproś o uprawnienia super użytkownika ask-superuser-permissions = Poproś o uprawnienia super użytkownika
ask-superuser-permissions-description = Launcher będzie używał ich do automatycznego aktualizowania twojego pliku hosts. Nie jest to wymagane w edycji Flatpak. ask-superuser-permissions-description = Launcher będzie używał ich do automatycznego aktualizowania twojego pliku hosts. Nie jest to wymagane w edycji Flatpak.

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = Ładowanie stanu launchera: weryfikowanie zainst
checking-free-space = Sprawdzanie dostępnej przestrzeni checking-free-space = Sprawdzanie dostępnej przestrzeni
downloading = Pobieranie downloading = Pobieranie
updating-permissions = Updating permissions
unpacking = Rozpakowywanie unpacking = Rozpakowywanie
verifying-files = Weryfikacja plików verifying-files = Weryfikacja plików
repairing-files = Naprawianie plików repairing-files = Naprawianie plików

View file

@ -47,13 +47,13 @@ patch-preparation-tooltip = Patch está em desenvolvimento
patch-testing-tooltip = Patch teste está disponível patch-testing-tooltip = Patch teste está disponível
patch-not-applied-tooltip = Patch não está aplicado patch-not-applied-tooltip = Patch não está aplicado
patch-broken-tooltip = Current patch version is broken and doesn't work properly
patch-unsafe-tooltip = Current patch version is unsafe and shouldn't be used
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = Aplicar patch principal apply-main-patch = Aplicar patch principal
apply-main-patch-description = Experimental. Desativar isso permite jogar o jogo sem aplicar o patch. Isso pode não funcionar, ou requer modificações de arquivo manuais. Use se sabe o que está fazendo apply-main-patch-description = Experimental. Desativar isso permite jogar o jogo sem aplicar o patch. Isso pode não funcionar, ou requer modificações de arquivo manuais. Use se sabe o que está fazendo
disable-mhypbase = Desative mhypbase
disable-mhypbase-description = Experimental. Se ativado, o launcher ira desativar mhypbase.dll durante a aplicação do patch principal, que é atualmente equivalente ao patch xlua. melhora performance e reduz uso da CPU
ask-superuser-permissions = Pede permissão de superusuário ask-superuser-permissions = Pede permissão de superusuário
ask-superuser-permissions-description = Launcher irá usa-lo para atualizar automaticamente os arquivos. Isso não é necessário na edição flatpak ask-superuser-permissions-description = Launcher irá usa-lo para atualizar automaticamente os arquivos. Isso não é necessário na edição flatpak

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = Loading launcher state: verificando patch instal
checking-free-space = Checando espaço livre checking-free-space = Checando espaço livre
downloading = Baixando downloading = Baixando
updating-permissions = Updating permissions
unpacking = Extraindo unpacking = Extraindo
verifying-files = Verificando arquivos verifying-files = Verificando arquivos
repairing-files = Reparando arquivos repairing-files = Reparando arquivos

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = Доступна тестовая версия патч
patch-not-applied-tooltip = Патч не применен patch-not-applied-tooltip = Патч не применен
patch-broken-tooltip = Текущая версия патча работает неисправно patch-broken-tooltip = Текущая версия патча работает неисправно
patch-unsafe-tooltip = Текущая версия патча небезопасна и не должна быть использована patch-unsafe-tooltip = Текущая версия патча небезопасна и не должна быть использована
patch-concerning-tooltip = У нас есть некоторые беспокойства о текущей версии патча
apply-main-patch = Применять основной патч apply-main-patch = Применять основной патч
apply-main-patch-description = Экспериментально. Отключение опции позволяет запускать игру без применения патча. Это может не работать или требовать ручного изменения файлов. Используйте если знаете что делаете apply-main-patch-description = Экспериментально. Отключение опции позволяет запускать игру без применения патча. Это может не работать или требовать ручного изменения файлов. Используйте если знаете что делаете

View file

@ -56,6 +56,7 @@ loading-launcher-state--patch = Загрузка статуса лаунчера
checking-free-space = Проверка свободного места checking-free-space = Проверка свободного места
downloading = Загрузка downloading = Загрузка
updating-permissions = Обновление привелегий
unpacking = Распаковка unpacking = Распаковка
verifying-files = Проверка файлов verifying-files = Проверка файлов
repairing-files = Починка файлов repairing-files = Починка файлов

View file

@ -48,13 +48,13 @@ patch-preparation-tooltip = Patchen är under utveckling
patch-testing-tooltip = Test-patch är tillgänglig patch-testing-tooltip = Test-patch är tillgänglig
patch-not-applied-tooltip = Patchen är inte applicerad patch-not-applied-tooltip = Patchen är inte applicerad
patch-broken-tooltip = Current patch version is broken and doesn't work properly
patch-unsafe-tooltip = Current patch version is unsafe and shouldn't be used
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = Applicera huvudsaklig patch apply-main-patch = Applicera huvudsaklig patch
apply-main-patch-description = Experimentellt. Om du inaktiverar detta kan du köra spelet utan att använda patchen. Detta kanske inte fungerar eller kan kräva manuella filändringar. Använd om du vet vad du gör apply-main-patch-description = Experimentellt. Om du inaktiverar detta kan du köra spelet utan att använda patchen. Detta kanske inte fungerar eller kan kräva manuella filändringar. Använd om du vet vad du gör
disable-mhypbase = Inaktivera mhypbase
disable-mhypbase-description = Experimentellt. Om aktiverad så kommer starthanteraren att inaktivera mhypbase.dll under applicering av huvudsaklig patch, vilket för närvarande är en motsvarighet till xlua-patchen. Förbättrar prestanda och minskar CPU-användning
ask-superuser-permissions = Fråga efter superuser-rättigheter ask-superuser-permissions = Fråga efter superuser-rättigheter
ask-superuser-permissions-description = Starthanteraren kommer att använda dem för att automatiskt uppdatera din hosts-fil. Detta behövs inte i flatpak-utgåvan ask-superuser-permissions-description = Starthanteraren kommer att använda dem för att automatiskt uppdatera din hosts-fil. Detta behövs inte i flatpak-utgåvan

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = Laddar starthanterarens tillstånd: verifierar i
checking-free-space = Kontrollerar ledigt utrymme checking-free-space = Kontrollerar ledigt utrymme
downloading = Laddar ner downloading = Laddar ner
updating-permissions = Updating permissions
unpacking = Packar upp unpacking = Packar upp
verifying-files = Verifierar filer verifying-files = Verifierar filer
repairing-files = Reparerar filer repairing-files = Reparerar filer

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = Test yaması mevcut
patch-not-applied-tooltip = Yama uygulanmamış patch-not-applied-tooltip = Yama uygulanmamış
patch-broken-tooltip = Geçerli yama sürümü bozuk ve düzgün çalışmıyor patch-broken-tooltip = Geçerli yama sürümü bozuk ve düzgün çalışmıyor
patch-unsafe-tooltip = Geçerli yama sürümü güvensiz ve kullanılmamalı patch-unsafe-tooltip = Geçerli yama sürümü güvensiz ve kullanılmamalı
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = Ana yamayı uygula apply-main-patch = Ana yamayı uygula
apply-main-patch-description = Deneysel. Bunu devre dışı bırakmak yamayı uygulamadan oyunu çalıştırmanızı sağlar. Bu çalışmayabilir, ya da elle dosyaları değiştirmeyi gerektirebilir. Ne yaptığınızı biliyorsanız kullanın. apply-main-patch-description = Deneysel. Bunu devre dışı bırakmak yamayı uygulamadan oyunu çalıştırmanızı sağlar. Bu çalışmayabilir, ya da elle dosyaları değiştirmeyi gerektirebilir. Ne yaptığınızı biliyorsanız kullanın.

View file

@ -50,6 +50,7 @@ loading-launcher-state--patch = Loading launcher state: indirilmiş yamanın dur
checking-free-space = Boş alan kontrol ediliyor checking-free-space = Boş alan kontrol ediliyor
downloading = İndiriliyor downloading = İndiriliyor
updating-permissions = Updating permissions
unpacking = Paketten çıkartılıyor unpacking = Paketten çıkartılıyor
verifying-files = Dosyalar Doğrulanıyor verifying-files = Dosyalar Doğrulanıyor
repairing-files = Dosyalar tamir ediliyor repairing-files = Dosyalar tamir ediliyor

View file

@ -59,6 +59,7 @@ patch-testing-tooltip = Đã có bản vá thử nghiệm
patch-not-applied-tooltip = Bản vá không được áp dụng patch-not-applied-tooltip = Bản vá không được áp dụng
patch-broken-tooltip = Bản vá hiện tại bị hỏng và không hoạt động bình thường patch-broken-tooltip = Bản vá hiện tại bị hỏng và không hoạt động bình thường
patch-unsafe-tooltip = Bản vá hiện tại không an toàn và không nên sử dụng patch-unsafe-tooltip = Bản vá hiện tại không an toàn và không nên sử dụng
patch-concerning-tooltip = We have some concerns about the current patch version
apply-mfplat-patch = Áp dụng bản vá mfplat apply-mfplat-patch = Áp dụng bản vá mfplat

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = Đang tải trạng thái launcher: xác minh b
checking-free-space = Kiểm tra dung lượng trống checking-free-space = Kiểm tra dung lượng trống
downloading = Đang tải xuống downloading = Đang tải xuống
updating-permissions = Updating permissions
unpacking = Đang giải nén unpacking = Đang giải nén
verifying-files = Đang xác minh tập tin verifying-files = Đang xác minh tập tin
repairing-files = Sửa chữa tập tin repairing-files = Sửa chữa tập tin

View file

@ -50,6 +50,7 @@ patch-testing-tooltip = 有测试版补丁可用
patch-not-applied-tooltip = 补丁未应用 patch-not-applied-tooltip = 补丁未应用
patch-broken-tooltip = 当前补丁版本已损坏,无法正常工作 patch-broken-tooltip = 当前补丁版本已损坏,无法正常工作
patch-unsafe-tooltip = 当前补丁版本不安全,不应使用 patch-unsafe-tooltip = 当前补丁版本不安全,不应使用
patch-concerning-tooltip = We have some concerns about the current patch version
apply-main-patch = 应用主补丁 apply-main-patch = 应用主补丁
apply-main-patch-description = 实验性功能。禁用此选项可以允许在没有打补丁的情况下尝试运行游戏。此时游戏可能无法正常运行,或者需要手动修改文件。请确保你知道自己在做什么 apply-main-patch-description = 实验性功能。禁用此选项可以允许在没有打补丁的情况下尝试运行游戏。此时游戏可能无法正常运行,或者需要手动修改文件。请确保你知道自己在做什么

View file

@ -42,6 +42,7 @@ loading-launcher-state--patch = 正在计算启动器状态: 验证已安装补
checking-free-space = 正在检查剩余空间 checking-free-space = 正在检查剩余空间
downloading = 正在下载 downloading = 正在下载
updating-permissions = Updating permissions
unpacking = 正在解压缩 unpacking = 正在解压缩
verifying-files = 正在检验文件 verifying-files = 正在检验文件
repairing-files = 正在修复文件 repairing-files = 正在修复文件

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

BIN
repository/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

View file

@ -0,0 +1,52 @@
<svg fill="none" viewBox="0 0 600 300" width="600" height="300" xmlns="http://www.w3.org/2000/svg">
<foreignObject width="100%" height="100%">
<div xmlns="http://www.w3.org/1999/xhtml">
<style>
.container {
margin-left: 50px;
color: white;
font-size: 45px;
font-family: -apple-system, BlinkMacSystemFont, "Dejavu Sans", "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
@media (prefers-color-scheme: light) {
.container {
color: black;
}
}
.container section {
position: relative;
left: 70px;
}
.state, .version {
color: rgb(95, 117, 233);
}
.verification-icon {
top: 90px;
position: relative;
}
.verification-icon .exclamation {
width: 50px;
height: 50px;
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AYht+mSkWrDu2g4pChOtlFRRxrFYpQIdQKrTqYXPoHTRqSFBdHwbXg4M9i1cHFWVcHV0EQ/AFxdXFSdJESv2sKLWI8uLuH97735e47QKiXmWZ1xQBNt81UIi5msqti4BV9GECI1mGZWcacJCXhOb7u4eP7XZRnedf9OfrVnMUAn0gcY4ZpE28Qz2zaBud94jAryirxOfGESRckfuS64vIb50KTBZ4ZNtOpeeIwsVjoYKWDWdHUiKeJI6qmU76QcVnlvMVZK1dZ6578hcGcvrLMdZqjSGARS5AgQkEVJZRhI0q7ToqFFJ3HPfwjTb9ELoVcJTByLKACDXLTD/4Hv3tr5acm3aRgHOh+cZyPMSCwCzRqjvN97DiNE8D/DFzpbX+lDsx+kl5ra5EjYHAbuLhua8oecLkDDD0Zsik3JT9NIZ8H3s/om7JA6BboXXP71jrH6QOQpl4lb4CDQ2C8QNnrHu/u6ezbvzWt/v0AY0JyoIwWTZgAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfnCw4TDhtaHD7zAAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAAAzhJREFUaN7tmstLVFEcxz93nLHHLaxMsgyyuj4K7ElhyEmSLGphL1zZzp1Fiwpq1UbBCAr1f2jXQqGN5e4GRSFhQqkde2Bgkj0oj+KMelt0KitrxpkzM3fC7+pw7++c3/mc77lzHgwsaEEL+pesZDWspCgCrgHV+tFd4JLtuAMZA6Kk2Ag8AnJ/e/Ue2GM77kvTOQNJMqRtDgj0s7aMcERJcQjojBJ22HbcO74FUVIEgR5ga5TQZ1hssze7U36dWg0xQABswaPBl44oKXKB58DKGKt8BIpsx33vN0ca5wGBjm30lSNKijLgMZA1z6rTwE7bcXv94khLHBDoOi2+mFpKihNAVQJNVCkpTqZ1aikpFgFPgU0J9uMFsNV23Ml0OXLeAAS6jfNpcURJsRboB5Yb+s6+ACW24w6n2pHmWCDCkQDhSExplus2U+eIkmIv8CBa/ZdvltF2Mw+Ac3Xv2Lh+LFrTHlBuO+7DpDsy/vqABbTGMgj3unOYDFtMhi3udefEOrCtE337raSDeJGpOqA8lthIxJqzHEXlM0HvdFJBlBQ2cDUFJ9dmnStpjlwGClIAUqBzmQdRUhQCF1J4n3BR5zTuyDVgSQpBFuuc5kCUFJVAbRpueWp17sRBlBTGdqjx7qzVoMgy4Ug9sCONIDvwqE8IREmxAmgi/WrSfYnbkStAng9A8nRf5g+ipCgBzuIfnVVSlMbjyA0g5COQEHB9XiBKiiPA0UQzr1sT/rlUzyonoKO6b9G38UqKEPAEKE00azgS4FHvKgD2lH0gOzRjAqbfgm1LHfeXkQnOEXjGBARAdmiGil2jpqdYifftRrPlr44oKfKAAWAF/tYnoNh23Hd/+0YaTUKoiSAdXfl0dOUzPhE0CfLH+mbNcmM70E18F21zqqMrn877SwE4vG+cYwffmoSZBnbbjtvzwxE1KL4fX7PIHGUBrWrw27E4qI/8p4BK05mqK0aB1bPKxlWJ550Cbln6trAPKCQz9QooDQDHMhgC3feaAFBE5qs4AAz9ByBDAaAdGMlgiBGgPWA77mfgODCcgRDDwHHbcT/PXhBtoAbYQBL/2mFInv61um077hgL8qG+AjY84IemfpY1AAAAAElFTkSuQmCC')
}
.verification-icon .checkmark {
width: 50px;
height: 50px;
background: url('data:image/png;base64,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')
}
.verification-icon .cancel {
width: 50px;
height: 50px;
background: url('data:image/png;base64,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')
}
</style>
<div class="container">
<div class="verification-icon"><div class="checkmark"></div></div>
<section>
<p>Patch version: <span class="version">1.4.0</span></p>
<p>Patch state: <span class="state">verified</span></p>
</section>
</div>
</div>
</foreignObject>
</svg>

After

Width:  |  Height:  |  Size: 8 KiB

View file

@ -100,20 +100,23 @@ impl SimpleComponent for AboutDialog {
"<p>Added</p>", "<p>Added</p>",
"<ul>", "<ul>",
"<li>Added Vietnamese</li>", "<li>Added `UpdatingPermissions` installation step</li>",
"<li>Added Korean</li>", "<li>Downloaders now will skip finished files and truncate them if needed</li>",
"<li>Added Dutch</li>", "<li>Added new fix for the API responses</li>",
"<li>Made free space checks resolve symlinks</li>", "<li>Added voiceovers repairing support</li>",
"<li>Added voiceovers support</li>", "<li>Added special tooltips for concerning patch status</li>",
"<li>Added new *Concerning* patch status</li>", "</ul>",
"<p>Fixed</p>",
"<ul>",
"<li>Fixed launch button color in concerning patches</li>",
"</ul>", "</ul>",
"<p>Changed</p>", "<p>Changed</p>",
"<ul>", "<ul>",
"<li>Updated development libraries versions</li>", "<li>Increased voiceovers version prediction error</li>",
"<li>Updated Japanese</li>",
"<li>Updated Chinese</li>",
"</ul>", "</ul>",
].join("\n"), ].join("\n"),

View file

@ -134,6 +134,7 @@ impl SimpleAsyncComponent for ProgressBar {
DiffUpdate::InstallerUpdate(InstallerUpdate::CheckingFreeSpace(_)) => self.caption = Some(tr!("checking-free-space")), DiffUpdate::InstallerUpdate(InstallerUpdate::CheckingFreeSpace(_)) => self.caption = Some(tr!("checking-free-space")),
DiffUpdate::InstallerUpdate(InstallerUpdate::DownloadingStarted(_)) => self.caption = Some(tr!("downloading")), DiffUpdate::InstallerUpdate(InstallerUpdate::DownloadingStarted(_)) => self.caption = Some(tr!("downloading")),
DiffUpdate::InstallerUpdate(InstallerUpdate::UpdatingPermissionsStarted(_)) => self.caption = Some(tr!("updating-permissions")),
DiffUpdate::InstallerUpdate(InstallerUpdate::UnpackingStarted(_)) => self.caption = Some(tr!("unpacking")), DiffUpdate::InstallerUpdate(InstallerUpdate::UnpackingStarted(_)) => self.caption = Some(tr!("unpacking")),
DiffUpdate::ApplyingHdiffStarted => { DiffUpdate::ApplyingHdiffStarted => {
@ -149,6 +150,7 @@ impl SimpleAsyncComponent for ProgressBar {
}, },
DiffUpdate::InstallerUpdate(InstallerUpdate::DownloadingProgress(curr, total)) | DiffUpdate::InstallerUpdate(InstallerUpdate::DownloadingProgress(curr, total)) |
DiffUpdate::InstallerUpdate(InstallerUpdate::UpdatingPermissions(curr, total)) |
DiffUpdate::InstallerUpdate(InstallerUpdate::UnpackingProgress(curr, total)) | DiffUpdate::InstallerUpdate(InstallerUpdate::UnpackingProgress(curr, total)) |
DiffUpdate::ApplyingHdiffProgress(curr, total) | DiffUpdate::ApplyingHdiffProgress(curr, total) |
DiffUpdate::RemovingOutdatedProgress(curr, total) => { DiffUpdate::RemovingOutdatedProgress(curr, total) => {
@ -161,6 +163,7 @@ impl SimpleAsyncComponent for ProgressBar {
} }
DiffUpdate::InstallerUpdate(InstallerUpdate::DownloadingFinished) => tracing::info!("Downloading finished"), DiffUpdate::InstallerUpdate(InstallerUpdate::DownloadingFinished) => tracing::info!("Downloading finished"),
DiffUpdate::InstallerUpdate(InstallerUpdate::UpdatingPermissionsFinished) => tracing::info!("Updating permissions finished"),
DiffUpdate::InstallerUpdate(InstallerUpdate::UnpackingFinished) => tracing::info!("Unpacking finished"), DiffUpdate::InstallerUpdate(InstallerUpdate::UnpackingFinished) => tracing::info!("Unpacking finished"),
DiffUpdate::ApplyingHdiffFinished => tracing::info!("Applying hdiffs finished"), DiffUpdate::ApplyingHdiffFinished => tracing::info!("Applying hdiffs finished"),

View file

@ -9,6 +9,7 @@ use adw::prelude::*;
use gtk::glib::clone; use gtk::glib::clone;
mod repair_game;
mod update_patch; mod update_patch;
mod download_wine; mod download_wine;
mod create_prefix; mod create_prefix;
@ -92,6 +93,7 @@ pub enum AppMsg {
DisableKillGameButton(bool), DisableKillGameButton(bool),
OpenPreferences, OpenPreferences,
RepairGame,
PredownloadUpdate, PredownloadUpdate,
PerformAction, PerformAction,
@ -507,6 +509,7 @@ impl SimpleComponent for App {
Some(LauncherState::PatchBroken) | Some(LauncherState::PatchBroken) |
Some(LauncherState::PatchUnsafe) | Some(LauncherState::PatchUnsafe) |
Some(LauncherState::PatchConcerning) |
Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Broken, .. }) | Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Broken, .. }) |
Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unsafe, .. }) | Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unsafe, .. }) |
Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Concerning, .. }) Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Concerning, .. })
@ -530,11 +533,13 @@ impl SimpleComponent for App {
// TODO: a special tooltip for concerning patch state // TODO: a special tooltip for concerning patch state
Some(LauncherState::PatchUnsafe) | Some(LauncherState::PatchUnsafe) |
Some(LauncherState::PatchConcerning) | Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unsafe, .. })
Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unsafe, .. }) |
Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Concerning, .. })
=> tr!("patch-unsafe-tooltip"), => tr!("patch-unsafe-tooltip"),
Some(LauncherState::PatchConcerning) |
Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Concerning, .. })
=> tr!("patch-concerning-tooltip"),
_ => String::new() _ => String::new()
}), }),
@ -1054,7 +1059,9 @@ impl SimpleComponent for App {
if let Some(state) = state { if let Some(state) = state {
match state { match state {
LauncherState::GameUpdateAvailable(_) | LauncherState::GameUpdateAvailable(_) |
LauncherState::GameNotInstalled(_) if perform_on_download_needed => { LauncherState::GameNotInstalled(_) |
LauncherState::VoiceUpdateAvailable(_) |
LauncherState::VoiceNotInstalled(_) if perform_on_download_needed => {
sender.input(AppMsg::PerformAction); sender.input(AppMsg::PerformAction);
} }
@ -1105,6 +1112,8 @@ impl SimpleComponent for App {
PREFERENCES_WINDOW.as_ref().unwrap_unchecked().widget().present(); PREFERENCES_WINDOW.as_ref().unwrap_unchecked().widget().present();
} }
AppMsg::RepairGame => repair_game::repair_game(sender, self.progress_bar.sender().to_owned()),
#[allow(unused_must_use)] #[allow(unused_must_use)]
AppMsg::PredownloadUpdate => { AppMsg::PredownloadUpdate => {
if let Some(LauncherState::PredownloadAvailable { game, mut voices, .. }) = self.state.clone() { if let Some(LauncherState::PredownloadAvailable { game, mut voices, .. }) = self.state.clone() {

137
src/ui/main/repair_game.rs Normal file
View file

@ -0,0 +1,137 @@
use relm4::{
prelude::*,
Sender
};
use gtk::glib::clone;
use crate::*;
use crate::ui::components::*;
use super::{App, AppMsg};
#[allow(unused_must_use)]
pub fn repair_game(sender: ComponentSender<App>, progress_bar_input: Sender<ProgressBarMsg>) {
let config = Config::get().unwrap();
progress_bar_input.send(ProgressBarMsg::UpdateCaption(Some(tr!("verifying-files"))));
sender.input(AppMsg::SetDownloading(true));
std::thread::spawn(move || {
match repairer::try_get_integrity_files(config.launcher.edition, None) {
Ok(mut files) => {
// Add voiceovers files
let game_path = config.game.path.for_edition(config.launcher.edition).to_path_buf();
let game = Game::new(&game_path, config.launcher.edition);
if let Ok(voiceovers) = game.get_voice_packages() {
for package in voiceovers {
if let Ok(mut voiceover_files) = repairer::try_get_voice_integrity_files(config.launcher.edition, package.locale(), None) {
files.append(&mut voiceover_files);
}
}
}
progress_bar_input.send(ProgressBarMsg::UpdateProgress(0, 0));
let mut total = 0;
for file in &files {
total += file.size;
}
let median_size = total / config.launcher.repairer.threads;
let mut i = 0;
let (verify_sender, verify_receiver) = std::sync::mpsc::channel();
for _ in 0..config.launcher.repairer.threads {
let mut thread_files = Vec::new();
let mut thread_files_size = 0;
while i < files.len() {
thread_files.push(files[i].clone());
thread_files_size += files[i].size;
i += 1;
if thread_files_size >= median_size {
break;
}
}
let thread_sender = verify_sender.clone();
std::thread::spawn(clone!(@strong game_path => move || {
for file in thread_files {
let status = if config.launcher.repairer.fast {
file.fast_verify(&game_path)
} else {
file.verify(&game_path)
};
thread_sender.send((file, status)).unwrap();
}
}));
}
// We have [config.launcher.repairer.threads] copies of this sender + the original one
// receiver will return Err when all the senders will be dropped.
// [config.launcher.repairer.threads] senders will be dropped when threads will finish verifying files
// but this one will live as long as current thread exists so we should drop it manually
drop(verify_sender);
let mut broken = Vec::new();
let mut processed = 0;
while let Ok((file, status)) = verify_receiver.recv() {
processed += file.size;
if !status {
broken.push(file);
}
progress_bar_input.send(ProgressBarMsg::UpdateProgress(processed, total));
}
if !broken.is_empty() {
let total = broken.len() as u64;
progress_bar_input.send(ProgressBarMsg::UpdateCaption(Some(tr!("repairing-files"))));
progress_bar_input.send(ProgressBarMsg::DisplayFraction(false));
progress_bar_input.send(ProgressBarMsg::UpdateProgress(0, total));
tracing::warn!("Found broken files:\n{}", broken.iter().fold(String::new(), |acc, file| acc + &format!("- {}\n", file.path.to_string_lossy())));
for (i, file) in broken.into_iter().enumerate() {
tracing::debug!("Repairing file: {}", file.path.to_string_lossy());
if let Err(err) = file.repair(&game_path) {
sender.input(AppMsg::Toast {
title: tr!("game-file-repairing-error"),
description: Some(err.to_string())
});
tracing::error!("Failed to repair game file: {err}");
}
progress_bar_input.send(ProgressBarMsg::UpdateProgress(i as u64 + 1, total));
}
progress_bar_input.send(ProgressBarMsg::DisplayFraction(true));
}
}
Err(err) => {
tracing::error!("Failed to get inregrity failes: {err}");
sender.input(AppMsg::Toast {
title: tr!("integrity-files-getting-error"),
description: Some(err.to_string())
});
}
}
sender.input(AppMsg::SetDownloading(false));
});
}

View file

@ -134,6 +134,7 @@ pub enum GeneralAppMsg {
UpdateDownloadedDxvk, UpdateDownloadedDxvk,
OpenMigrateInstallation, OpenMigrateInstallation,
RepairGame,
OpenMainPage, OpenMainPage,
OpenComponentsPage, OpenComponentsPage,
@ -319,6 +320,12 @@ impl SimpleAsyncComponent for GeneralApp {
set_tooltip_text: Some(&tr!("migrate-installation-description")), set_tooltip_text: Some(&tr!("migrate-installation-description")),
connect_clicked => GeneralAppMsg::OpenMigrateInstallation connect_clicked => GeneralAppMsg::OpenMigrateInstallation
},
gtk::Button {
set_label: &tr!("repair-game"),
connect_clicked => GeneralAppMsg::RepairGame
} }
} }
}, },
@ -414,9 +421,7 @@ impl SimpleAsyncComponent for GeneralApp {
JadeitePatchStatusVariant::Unverified => tr!("patch-testing-tooltip"), JadeitePatchStatusVariant::Unverified => tr!("patch-testing-tooltip"),
JadeitePatchStatusVariant::Broken => tr!("patch-broken-tooltip"), JadeitePatchStatusVariant::Broken => tr!("patch-broken-tooltip"),
JadeitePatchStatusVariant::Unsafe => tr!("patch-unsafe-tooltip"), JadeitePatchStatusVariant::Unsafe => tr!("patch-unsafe-tooltip"),
JadeitePatchStatusVariant::Concerning => tr!("patch-concerning-tooltip"),
// TODO: special tooltip for concerning status
JadeitePatchStatusVariant::Concerning => tr!("patch-unsafe-tooltip"),
_ => String::new() _ => String::new()
} }
@ -671,6 +676,10 @@ impl SimpleAsyncComponent for GeneralApp {
self.migrate_installation.widget().present(); self.migrate_installation.widget().present();
} }
GeneralAppMsg::RepairGame => {
sender.output(Self::Output::RepairGame).unwrap();
}
GeneralAppMsg::OpenMainPage => unsafe { GeneralAppMsg::OpenMainPage => unsafe {
PREFERENCES_WINDOW.as_ref() PREFERENCES_WINDOW.as_ref()
.unwrap_unchecked() .unwrap_unchecked()

View file

@ -35,6 +35,7 @@ pub enum PreferencesAppMsg {
SetLauncherStyle(LauncherStyle), SetLauncherStyle(LauncherStyle),
UpdateLauncherState, UpdateLauncherState,
RepairGame,
Toast { Toast {
title: String, title: String,
@ -132,6 +133,13 @@ impl SimpleAsyncComponent for PreferencesApp {
}); });
} }
#[allow(unused_must_use)]
PreferencesAppMsg::RepairGame => unsafe {
PREFERENCES_WINDOW.as_ref().unwrap_unchecked().close();
sender.output(Self::Output::RepairGame);
}
PreferencesAppMsg::Toast { title, description } => unsafe { PreferencesAppMsg::Toast { title, description } => unsafe {
let toast = adw::Toast::new(&title); let toast = adw::Toast::new(&title);