commit
51a455c625
48 changed files with 311 additions and 45 deletions
16
CHANGELOG.md
16
CHANGELOG.md
|
@ -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
8
Cargo.lock
generated
|
@ -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",
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 |
|
||||||
| :-: | :-: |
|
| :-: | :-: |
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 = 実験的です。これを無効にするとパッチ無しでゲームを起動することができます。これが機能しない場合、手動でパッチを適用する必要があります。これが何を意味するのかを理解できない人は無効にするべきではないでしょう。
|
||||||
|
|
|
@ -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 = ファイルを修正中
|
||||||
|
|
|
@ -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 에디션에서는 필요하지 않습니다
|
||||||
|
|
||||||
|
|
|
@ -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 = 파일 복구 중
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 = Экспериментально. Отключение опции позволяет запускать игру без применения патча. Это может не работать или требовать ручного изменения файлов. Используйте если знаете что делаете
|
||||||
|
|
|
@ -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 = Починка файлов
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 = 实验性功能。禁用此选项可以允许在没有打补丁的情况下尝试运行游戏。此时游戏可能无法正常运行,或者需要手动修改文件。请确保你知道自己在做什么
|
||||||
|
|
|
@ -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
BIN
repository/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 127 KiB |
52
repository/patchstatus.svg
Normal file
52
repository/patchstatus.svg
Normal 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,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AYht+mSkWrDu2g4pChOtlFRRxrFYpQIdQKrTqYXPoHTRqSFBdHwbXg4M9i1cHFWVcHV0EQ/AFxdXFSdJESv2sKLWI8uLuH97735e47QKiXmWZ1xQBNt81UIi5msqti4BV9GECI1mGZWcacJCXhOb7u4eP7XZRnedf9OfrVnMUAn0gcY4ZpE28Qz2zaBud94jAryirxOfGESRckfuS64vIb50KTBZ4ZNtOpeeIwsVjoYKWDWdHUiKeJI6qmU76QcVnlvMVZK1dZ6578hcGcvrLMdZqjSGARS5AgQkEVJZRhI0q7ToqFFJ3HPfwjTb9ELoVcJTByLKACDXLTD/4Hv3tr5acm3aRgHOh+cZyPMSCwCzRqjvN97DiNE8D/DFzpbX+lDsx+kl5ra5EjYHAbuLhua8oecLkDDD0Zsik3JT9NIZ8H3s/om7JA6BboXXP71jrH6QOQpl4lb4CDQ2C8QNnrHu/u6ezbvzWt/v0AY0JyoIwWTZgAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfnCw4TDg43wdoYAAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAABGlJREFUaN7VmttPHFUcxz8zCkghlhHUB20MrclS3qqgJN5CfOgD1I5W/wtfBkubGFM11nqLjBbffeLBVuq0rg+bFHvzYSktNG2s2wep1pjeoAOBZWVZuj7sGbJddmbPXmZn+T7unjlzPvP9ndvvHIUKyrJNFegAtgPtQBuwSfydAGaBv4CYoqR/390ysFqpdysVaHwr8BbQD7wGbJZ8NA6cA34BRnXNuBkIiGWb3cAA8CbQUOb3SAFhwNQ142xVQCzb3A58KRzwQ6eA93TNmPIFxLLNOuAAsB+ow1+tAsPA+7pmJCoGYtnmM8BRoJvq6irwtq4Zf5QNYtnmi8DPwOMEo3kBc9KrkFoAohc4GSAEYhQMW7a5uyRHhBNjQBO1oWWg380ZxaNPTATshFuY9eiaESsYWmJ0OlKDEE6YjVr2UKNMH/kAeCGw+FlJMRm7QTqddivSCcohz9CybDMEXAbqg4IYGZvkxO0Z3u3cyutdIRRFcZtnurMnzVxHvqgFCIDvrk4zduGamzMPAV/ndcSyzeeAi7UAka0Czryqa8a5XEeMWoOQcGbgAUcs22wBbgKPVBUimWLk1CQnbs14lqtXFIb7XuLJ1kfzrZq36Jpxy3FEr2WIQ73P54MAeBjYkx1a/VUPJwmIOgHx7JYnvIr1ASjWvW8UlPQdsS0NvE/kOlEAAmARhRYVJd2+gSEAmknTqYpEgZRWUqsc/+0KcwuJWoFw1KECW2Uhfjh9ie///IdvI9GiYHyGAGhXZcJqJbXKkdOX+PHf2wBMxRPSMMvJFCO/+goB0KoCjTIQRwWEo6l4gsORKHMLSxUbYkuEAGhUvTZXTjjlQjiajCcYjpzPC1PhIbagVMD1ky7E/+PKjO1ZwcX40jqYtT4h4cRnvV1lQwBLKuD6tsc2NzG4s4dQQ31BmMORceYWEiV07Irs32YUyzb7RJbPvZS9yFeRKNeWk5617Whq5KmmTYTvzPrdJ3K1RwUK5ozatGYGd/bQUcCZqXgiCAiAmApc9wqvbJi9EjABQMwDMVXXjDRwRuaJcmB8ggA4o2vGfWf1G5Z9yoEJFQFT5x/EWtsdEIvMQYw0zKAkTGaI9Q0iCRxbA9E1Yw4YLaYGGZh6f50AOKZrxmzunn2o2Fq8YKoA8UCb10BEjuh4qTDZA0CVIMK6Zky45bX2i7grGiYzmjVUCyIJ7HPNNIqMykfAhyWtE+xF5uMJtj3te9r4E10zDuQuGnP1KXC+lNrbtOZqQEwAB3N/3GjHCnfJ5Hz/zreMXydRcBeZs/BaURzYlQ/CFUTAjNcQzKKAGHcrsBEOQ+8Cb+iaES20Q/SU+ApdwHgAEBOiT0RltrpIwNwAXgE+LmWeKXGeOAi87NYnig6tPKEWAj4nk/j2azW7T+aSQFkgWUA7yJypvEP5mfxlsYod0jXjQikVVOKaU4twx7nmJJtHngXOkrnm9JOuGffKaYdSyZiw7CEFlHYyl8+2Aa2sv3g2DcSAaV0z7lfq3f8DJ0QDuq1Wyp8AAAAASUVORK5CYII=')
|
||||||
|
}
|
||||||
|
.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 |
|
@ -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"),
|
||||||
|
|
||||||
|
|
|
@ -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"),
|
||||||
|
|
|
@ -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
137
src/ui/main/repair_game.rs
Normal 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));
|
||||||
|
});
|
||||||
|
}
|
|
@ -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()
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue