diff --git a/app/src/main/java/dev/lucasnlm/antimine/cloud/CloudSaveManager.kt b/app/src/main/java/dev/lucasnlm/antimine/cloud/CloudSaveManager.kt index 29b27c74..601a441b 100644 --- a/app/src/main/java/dev/lucasnlm/antimine/cloud/CloudSaveManager.kt +++ b/app/src/main/java/dev/lucasnlm/antimine/cloud/CloudSaveManager.kt @@ -40,18 +40,21 @@ class CloudSaveManager( squareRadius = preferencesRepository.squareRadius(), squareSize = preferencesRepository.squareSizeMultiplier(), touchTiming = preferencesRepository.customLongPressTimeout().toInt(), - questionMark = if (preferencesRepository.useQuestionMark()) 1 else 0, - gameAssistance = if (preferencesRepository.useFlagAssistant()) 1 else 0, - help = if (preferencesRepository.useHelp()) 1 else 0, - hapticFeedback = if (preferencesRepository.useHapticFeedback()) 1 else 0, - soundEffects = if (preferencesRepository.isSoundEffectsEnabled()) 1 else 0, + questionMark = preferencesRepository.useQuestionMark().toInt(), + gameAssistance = preferencesRepository.useFlagAssistant().toInt(), + help = preferencesRepository.useHelp().toInt(), + hapticFeedback = preferencesRepository.useHapticFeedback().toInt(), + soundEffects = preferencesRepository.isSoundEffectsEnabled().toInt(), stats = statsRepository.getAllStats(minId).map { it.toHashMap() }, - premiumFeatures = if (preferencesRepository.isPremiumEnabled()) 1 else 0, + premiumFeatures = preferencesRepository.isPremiumEnabled().toInt(), controlStyle = preferencesRepository.controlStyle().ordinal, + noGuessing = preferencesRepository.useNoGuessingAlgorithm().toInt(), ) } } catch (e: Exception) { return null } } + + private fun Boolean.toInt() = if (this) 1 else 0 } diff --git a/app/src/main/java/dev/lucasnlm/antimine/splash/viewmodel/SplashViewModel.kt b/app/src/main/java/dev/lucasnlm/antimine/splash/viewmodel/SplashViewModel.kt index 587a0d49..90045ad6 100644 --- a/app/src/main/java/dev/lucasnlm/antimine/splash/viewmodel/SplashViewModel.kt +++ b/app/src/main/java/dev/lucasnlm/antimine/splash/viewmodel/SplashViewModel.kt @@ -54,6 +54,7 @@ class SplashViewModel( setSquareMultiplier(cloudSave.squareSize) setCustomLongPressTimeout(cloudSave.touchTiming.toLong()) setQuestionMark(cloudSave.questionMark != 0) + setNoGuessingAlgorithm(cloudSave.noGuessing != 0) setFlagAssistant(gameAssistance != 0) setHapticFeedback(hapticFeedback != 0) setHelp(help != 0) diff --git a/app/src/test/java/dev/lucasnlm/antimine/mocks/MockPreferencesRepository.kt b/app/src/test/java/dev/lucasnlm/antimine/mocks/MockPreferencesRepository.kt index 81eabb17..f39f4112 100644 --- a/app/src/test/java/dev/lucasnlm/antimine/mocks/MockPreferencesRepository.kt +++ b/app/src/test/java/dev/lucasnlm/antimine/mocks/MockPreferencesRepository.kt @@ -97,6 +97,10 @@ class MockPreferencesRepository : IPreferencesRepository { override fun useAnimations(): Boolean = false + override fun setNoGuessingAlgorithm(value: Boolean) { } + + override fun useNoGuessingAlgorithm(): Boolean = true + override fun useQuestionMark(): Boolean = false override fun setQuestionMark(value: Boolean) { } diff --git a/common/src/main/java/dev/lucasnlm/antimine/common/level/GameController.kt b/common/src/main/java/dev/lucasnlm/antimine/common/level/GameController.kt index e27c3464..7c34ff68 100644 --- a/common/src/main/java/dev/lucasnlm/antimine/common/level/GameController.kt +++ b/common/src/main/java/dev/lucasnlm/antimine/common/level/GameController.kt @@ -26,6 +26,7 @@ class GameController { private var gameControl: GameControl = GameControl.Standard private var useQuestionMark = true private var useOpenOnSwitchControl = true + private var useNoGuessing = true val seed: Long @@ -70,7 +71,7 @@ class GameController { val fieldCopy = field.map { it.copy() }.toMutableList() val minefieldHandler = MinefieldHandler(fieldCopy, false) minefieldHandler.openAt(safeId, false) - } while (solver.keepTrying() && !solver.trySolve(minefieldHandler.result().toMutableList())) + } while (useNoGuessing && solver.keepTrying() && !solver.trySolve(minefieldHandler.result().toMutableList())) firstOpen = FirstOpen.Position(safeId) } @@ -322,6 +323,10 @@ class GameController { this.useQuestionMark = useQuestionMark } + fun useNoGuessing(noGuessing: Boolean) { + this.useNoGuessing = noGuessing + } + fun useOpenOnSwitchControl(useOpen: Boolean) { this.useOpenOnSwitchControl = useOpen } diff --git a/common/src/main/java/dev/lucasnlm/antimine/common/level/viewmodel/GameViewModel.kt b/common/src/main/java/dev/lucasnlm/antimine/common/level/viewmodel/GameViewModel.kt index 9f24285d..50a45fa9 100644 --- a/common/src/main/java/dev/lucasnlm/antimine/common/level/viewmodel/GameViewModel.kt +++ b/common/src/main/java/dev/lucasnlm/antimine/common/level/viewmodel/GameViewModel.kt @@ -349,6 +349,7 @@ open class GameViewModel( updateGameControl(gameControl) useQuestionMark(preferencesRepository.useQuestionMark()) + useNoGuessing(preferencesRepository.useNoGuessingAlgorithm()) } } } diff --git a/common/src/main/java/dev/lucasnlm/antimine/common/level/widget/FixedGridLayoutManager.kt b/common/src/main/java/dev/lucasnlm/antimine/common/level/widget/FixedGridLayoutManager.kt index f70fe787..143a878f 100644 --- a/common/src/main/java/dev/lucasnlm/antimine/common/level/widget/FixedGridLayoutManager.kt +++ b/common/src/main/java/dev/lucasnlm/antimine/common/level/widget/FixedGridLayoutManager.kt @@ -431,7 +431,9 @@ class FixedGridLayoutManager : RecyclerView.LayoutManager() { */ measureChildWithMargins(view, 0, 0) layoutDecorated( - view, leftOffset, topOffset, + view, + leftOffset, + topOffset, leftOffset + mDecoratedChildWidth, topOffset + mDecoratedChildHeight ) @@ -821,7 +823,9 @@ class FixedGridLayoutManager : RecyclerView.LayoutManager() { measureChildWithMargins(child, 0, 0) layoutDecorated( - child, layoutLeft, layoutTop, + child, + layoutLeft, + layoutTop, layoutLeft + mDecoratedChildWidth, layoutTop + mDecoratedChildHeight ) diff --git a/common/src/main/java/dev/lucasnlm/antimine/core/preferences/IPreferencesRepository.kt b/common/src/main/java/dev/lucasnlm/antimine/core/preferences/IPreferencesRepository.kt index fef970db..075ceccf 100644 --- a/common/src/main/java/dev/lucasnlm/antimine/core/preferences/IPreferencesRepository.kt +++ b/common/src/main/java/dev/lucasnlm/antimine/core/preferences/IPreferencesRepository.kt @@ -69,6 +69,9 @@ interface IPreferencesRepository { fun useAnimations(): Boolean + fun setNoGuessingAlgorithm(value: Boolean) + fun useNoGuessingAlgorithm(): Boolean + fun useQuestionMark(): Boolean fun setQuestionMark(value: Boolean) diff --git a/common/src/main/java/dev/lucasnlm/antimine/core/preferences/PreferencesRepository.kt b/common/src/main/java/dev/lucasnlm/antimine/core/preferences/PreferencesRepository.kt index 04514cd9..d1a86a79 100644 --- a/common/src/main/java/dev/lucasnlm/antimine/core/preferences/PreferencesRepository.kt +++ b/common/src/main/java/dev/lucasnlm/antimine/core/preferences/PreferencesRepository.kt @@ -69,6 +69,13 @@ class PreferencesRepository( override fun useAnimations(): Boolean = preferencesManager.getBoolean(PREFERENCE_ANIMATION, true) + override fun setNoGuessingAlgorithm(value: Boolean) { + preferencesManager.putBoolean(PREFERENCE_NO_GUESSING, value) + } + + override fun useNoGuessingAlgorithm(): Boolean = + preferencesManager.getBoolean(PREFERENCE_NO_GUESSING, true) + override fun useQuestionMark(): Boolean = preferencesManager.getBoolean(PREFERENCE_QUESTION_MARK, false) @@ -266,6 +273,7 @@ class PreferencesRepository( private const val PREFERENCE_VIBRATION = "preference_vibration" private const val PREFERENCE_ASSISTANT = "preference_assistant" private const val PREFERENCE_ANIMATION = "preference_animation" + private const val PREFERENCE_NO_GUESSING = "preference_no_guessing" private const val PREFERENCE_AREA_SIZE = "preference_area_size" private const val PREFERENCE_QUESTION_MARK = "preference_use_question_mark" private const val PREFERENCE_USE_HELP = "preference_use_help" diff --git a/common/src/main/res/values-af-rZA/strings.xml b/common/src/main/res/values-af-rZA/strings.xml index 52d83cf3..50462d31 100644 --- a/common/src/main/res/values-af-rZA/strings.xml +++ b/common/src/main/res/values-af-rZA/strings.xml @@ -69,6 +69,7 @@ Werkverrigting OK Gebruik die vraagteken + \'No guessing\' mode Kontrole Enkele tik diff --git a/common/src/main/res/values-ar-rSA/strings.xml b/common/src/main/res/values-ar-rSA/strings.xml index bd170391..905d6115 100644 --- a/common/src/main/res/values-ar-rSA/strings.xml +++ b/common/src/main/res/values-ar-rSA/strings.xml @@ -69,6 +69,7 @@ أداء حسناً استخدام علامة السؤال + وضع \"لا تخمين\" التحكم 🠨 نقرة واحدة diff --git a/common/src/main/res/values-bg-rBG/strings.xml b/common/src/main/res/values-bg-rBG/strings.xml index 234075f1..f0036cd8 100644 --- a/common/src/main/res/values-bg-rBG/strings.xml +++ b/common/src/main/res/values-bg-rBG/strings.xml @@ -69,6 +69,7 @@ Изпълнение ОК Въпросителен знак + \'No guessing\' mode Управление Едно натискане diff --git a/common/src/main/res/values-ca-rES/strings.xml b/common/src/main/res/values-ca-rES/strings.xml index 17c2f961..c8b68537 100644 --- a/common/src/main/res/values-ca-rES/strings.xml +++ b/common/src/main/res/values-ca-rES/strings.xml @@ -69,6 +69,7 @@ Rendiment OK Utilitza l\'interrogant + \'No guessing\' mode Controls Un sol clic diff --git a/common/src/main/res/values-cs-rCZ/strings.xml b/common/src/main/res/values-cs-rCZ/strings.xml index 57f9268a..4cd5f9b3 100644 --- a/common/src/main/res/values-cs-rCZ/strings.xml +++ b/common/src/main/res/values-cs-rCZ/strings.xml @@ -69,6 +69,7 @@ Výkon OK Použít otazníky + \'No guessing\' mode Ovládání Jedno klepnutí diff --git a/common/src/main/res/values-da-rDK/strings.xml b/common/src/main/res/values-da-rDK/strings.xml index 99562c7d..87b8066e 100644 --- a/common/src/main/res/values-da-rDK/strings.xml +++ b/common/src/main/res/values-da-rDK/strings.xml @@ -69,6 +69,7 @@ Ydeevne OK Brug flag med spørgsmålstegn + \'No guessing\' mode Controls Enkelt tryk diff --git a/common/src/main/res/values-de-rDE/strings.xml b/common/src/main/res/values-de-rDE/strings.xml index aadda191..86390654 100644 --- a/common/src/main/res/values-de-rDE/strings.xml +++ b/common/src/main/res/values-de-rDE/strings.xml @@ -69,6 +69,7 @@ Erfolgsergebnis Ok Fragezeichen benutzen + \'No guessing\' mode Steuerung Einzelklick diff --git a/common/src/main/res/values-el-rGR/strings.xml b/common/src/main/res/values-el-rGR/strings.xml index e11a9535..5f821a48 100644 --- a/common/src/main/res/values-el-rGR/strings.xml +++ b/common/src/main/res/values-el-rGR/strings.xml @@ -69,6 +69,7 @@ Επίδοση Εντάξει Χρήση ερωτηματικών + \'No guessing\' mode Ελεγχος Με ένα κλικ diff --git a/common/src/main/res/values-en-rUS/strings.xml b/common/src/main/res/values-en-rUS/strings.xml index d4549257..748c83e3 100644 --- a/common/src/main/res/values-en-rUS/strings.xml +++ b/common/src/main/res/values-en-rUS/strings.xml @@ -69,6 +69,7 @@ Performance OK Use Question Mark + \'No guessing\' mode Controls Single Click diff --git a/common/src/main/res/values-es-rES/strings.xml b/common/src/main/res/values-es-rES/strings.xml index 1a634299..9745c02e 100644 --- a/common/src/main/res/values-es-rES/strings.xml +++ b/common/src/main/res/values-es-rES/strings.xml @@ -69,6 +69,7 @@ Desempeño OK Usar signo de interrogación + Modo \'Sin adivinación\' Controles Un clic diff --git a/common/src/main/res/values-fi-rFI/strings.xml b/common/src/main/res/values-fi-rFI/strings.xml index 0c1ee4eb..6cd62bcb 100644 --- a/common/src/main/res/values-fi-rFI/strings.xml +++ b/common/src/main/res/values-fi-rFI/strings.xml @@ -69,6 +69,7 @@ Suorituskyky OK Käytä kysymysmerkkiä + \'No guessing\' mode Kontrollit Napautus diff --git a/common/src/main/res/values-fr-rFR/strings.xml b/common/src/main/res/values-fr-rFR/strings.xml index e9e0beb4..767b6dd2 100644 --- a/common/src/main/res/values-fr-rFR/strings.xml +++ b/common/src/main/res/values-fr-rFR/strings.xml @@ -69,6 +69,7 @@ Performance OK Utiliser des drapeaux points d’interrogation + \'No guessing\' mode Contrôles Clic simple diff --git a/common/src/main/res/values-hi-rIN/strings.xml b/common/src/main/res/values-hi-rIN/strings.xml index 729b8d91..13e4d0b6 100644 --- a/common/src/main/res/values-hi-rIN/strings.xml +++ b/common/src/main/res/values-hi-rIN/strings.xml @@ -69,6 +69,7 @@ प्रदर्शन ओके \"मैं सुनिश्चित नहीं हूं\" झंडे का उपयोग करें + \'No guessing\' mode नियंत्रण सिंगल क्लिक diff --git a/common/src/main/res/values-hu-rHU/strings.xml b/common/src/main/res/values-hu-rHU/strings.xml index 8776c572..9c75b5b1 100644 --- a/common/src/main/res/values-hu-rHU/strings.xml +++ b/common/src/main/res/values-hu-rHU/strings.xml @@ -69,6 +69,7 @@ Teljesítmény Rendben Kérdőjel használata + \'No guessing\' mode Irányítások Egyszeri kattintás diff --git a/common/src/main/res/values-in-rID/strings.xml b/common/src/main/res/values-in-rID/strings.xml index fa5bf84a..19ae1d99 100644 --- a/common/src/main/res/values-in-rID/strings.xml +++ b/common/src/main/res/values-in-rID/strings.xml @@ -69,6 +69,7 @@ Peforma OK Pakai Bendera Tanda Tanya + \'No guessing\' mode Kontrol Satu klik diff --git a/common/src/main/res/values-it-rIT/strings.xml b/common/src/main/res/values-it-rIT/strings.xml index 9393a803..616fe144 100644 --- a/common/src/main/res/values-it-rIT/strings.xml +++ b/common/src/main/res/values-it-rIT/strings.xml @@ -69,6 +69,7 @@ Prestazione OK Usa il Punto Interrogativo + \'No guessing\' mode Comandi Singolo click diff --git a/common/src/main/res/values-iw-rIL/strings.xml b/common/src/main/res/values-iw-rIL/strings.xml index aa6a87ac..2e79a786 100644 --- a/common/src/main/res/values-iw-rIL/strings.xml +++ b/common/src/main/res/values-iw-rIL/strings.xml @@ -69,6 +69,7 @@ ביצועים OK סימן שאלה + \'No guessing\' mode פקדים 🠨 לחיצה בודדת diff --git a/common/src/main/res/values-ja-rJP/strings.xml b/common/src/main/res/values-ja-rJP/strings.xml index 6c9d8c7d..ee4e7ae5 100644 --- a/common/src/main/res/values-ja-rJP/strings.xml +++ b/common/src/main/res/values-ja-rJP/strings.xml @@ -69,6 +69,7 @@ パフォーマンス OK クエスチョンマークを使う + \'No guessing\' mode コントロール タップ diff --git a/common/src/main/res/values-ko-rKR/strings.xml b/common/src/main/res/values-ko-rKR/strings.xml index 5c1b6eca..ba6a0635 100644 --- a/common/src/main/res/values-ko-rKR/strings.xml +++ b/common/src/main/res/values-ko-rKR/strings.xml @@ -69,6 +69,7 @@ 퍼포먼스 OK 물음표 깃발 사용 + \'No guessing\' mode 컨트롤 단일 클릭 diff --git a/common/src/main/res/values-nl-rNL/strings.xml b/common/src/main/res/values-nl-rNL/strings.xml index 12e48665..1eec3374 100644 --- a/common/src/main/res/values-nl-rNL/strings.xml +++ b/common/src/main/res/values-nl-rNL/strings.xml @@ -69,6 +69,7 @@ Prestatie Oké Gebruik vraagteken + \'No guessing\' mode Besturing Enkele klik diff --git a/common/src/main/res/values-no-rNO/strings.xml b/common/src/main/res/values-no-rNO/strings.xml index 6f49c4dc..c6c1c715 100644 --- a/common/src/main/res/values-no-rNO/strings.xml +++ b/common/src/main/res/values-no-rNO/strings.xml @@ -69,6 +69,7 @@ Ytelse OK Bruk Spørsmålstegn + \'No guessing\' mode Styring Enkeltklikk diff --git a/common/src/main/res/values-pl-rPL/strings.xml b/common/src/main/res/values-pl-rPL/strings.xml index 2f78cccc..fe14d0f8 100644 --- a/common/src/main/res/values-pl-rPL/strings.xml +++ b/common/src/main/res/values-pl-rPL/strings.xml @@ -69,6 +69,7 @@ Skuteczność OK Używaj Znaku zapytania + \'No guessing\' mode Sterowanie Pojedyncze kliknięcie diff --git a/common/src/main/res/values-pt-rBR/strings.xml b/common/src/main/res/values-pt-rBR/strings.xml index a358677e..6c66505e 100644 --- a/common/src/main/res/values-pt-rBR/strings.xml +++ b/common/src/main/res/values-pt-rBR/strings.xml @@ -69,6 +69,7 @@ Desempenho OK Usar Ponto de Interrogação + Modo \"Sem adivinhação\" Controles Unico Clique diff --git a/common/src/main/res/values-pt-rPT/strings.xml b/common/src/main/res/values-pt-rPT/strings.xml index 5249917b..c1df7156 100644 --- a/common/src/main/res/values-pt-rPT/strings.xml +++ b/common/src/main/res/values-pt-rPT/strings.xml @@ -69,6 +69,7 @@ Desempenho OK Usar Ponto de Interrogação + Modo \"Sem adivinhação\" Controlos Toque Único diff --git a/common/src/main/res/values-ro-rRO/strings.xml b/common/src/main/res/values-ro-rRO/strings.xml index f9b07543..3f0ebcef 100644 --- a/common/src/main/res/values-ro-rRO/strings.xml +++ b/common/src/main/res/values-ro-rRO/strings.xml @@ -69,6 +69,7 @@ Performanță OK Folosește Semn de Întrebare + \'No guessing\' mode Controale Atingere simplă diff --git a/common/src/main/res/values-ru-rRU/strings.xml b/common/src/main/res/values-ru-rRU/strings.xml index 02913521..fe05ce82 100644 --- a/common/src/main/res/values-ru-rRU/strings.xml +++ b/common/src/main/res/values-ru-rRU/strings.xml @@ -69,6 +69,7 @@ Производительность OK Использовать знак вопроса + \'No guessing\' mode Управление Одно нажатие diff --git a/common/src/main/res/values-sv-rSE/strings.xml b/common/src/main/res/values-sv-rSE/strings.xml index a5e84440..a11e82f8 100644 --- a/common/src/main/res/values-sv-rSE/strings.xml +++ b/common/src/main/res/values-sv-rSE/strings.xml @@ -69,6 +69,7 @@ Prestanda Okej Använd frågetecken + \'No guessing\' mode Kontroller Enkel klick diff --git a/common/src/main/res/values-th-rTH/strings.xml b/common/src/main/res/values-th-rTH/strings.xml index 1ff04ae5..89804de1 100644 --- a/common/src/main/res/values-th-rTH/strings.xml +++ b/common/src/main/res/values-th-rTH/strings.xml @@ -69,6 +69,7 @@ ประสิทธิภาพ ตกลง เครื่องหมายคำถาม + \'No guessing\' mode การควบคุม แตะครั้งเดียว diff --git a/common/src/main/res/values-tr-rTR/strings.xml b/common/src/main/res/values-tr-rTR/strings.xml index 5ef47242..7bcc087b 100644 --- a/common/src/main/res/values-tr-rTR/strings.xml +++ b/common/src/main/res/values-tr-rTR/strings.xml @@ -69,6 +69,7 @@ Performans Tamam Soru İşareti Kullan + \'No guessing\' mode Kontroller Tek Tıklama diff --git a/common/src/main/res/values-uk-rUA/strings.xml b/common/src/main/res/values-uk-rUA/strings.xml index fbfbf325..d248e976 100644 --- a/common/src/main/res/values-uk-rUA/strings.xml +++ b/common/src/main/res/values-uk-rUA/strings.xml @@ -69,6 +69,7 @@ Ефективність Гаразд Використовувати прапорці «?» + \'No guessing\' mode Елементи керування Одинарний клік diff --git a/common/src/main/res/values-vi-rVN/strings.xml b/common/src/main/res/values-vi-rVN/strings.xml index 4d76fc9d..caaa1a83 100644 --- a/common/src/main/res/values-vi-rVN/strings.xml +++ b/common/src/main/res/values-vi-rVN/strings.xml @@ -69,6 +69,7 @@ Hiệu năng OK Dùng cờ câu hỏi + \'No guessing\' mode Điều khiển Một lần bấm diff --git a/common/src/main/res/values-zh-rCN/strings.xml b/common/src/main/res/values-zh-rCN/strings.xml index 576d4633..4842986e 100644 --- a/common/src/main/res/values-zh-rCN/strings.xml +++ b/common/src/main/res/values-zh-rCN/strings.xml @@ -69,6 +69,7 @@ 性能 确定 使用问号标记 + “没有猜测”模式 控制 单击 @@ -122,9 +123,9 @@ 标记已移除! 去除广告 帮助 - Show windows - Switch: Flag and Open - Use button to switch between Flag and Open + 显示窗口 + 切换:标记并打开 + 使用按钮在标记和打开之间切换 你需要清除一个隐藏着地雷的矩形面板,不能使任何地雷爆炸。 扫雷 (踩地雷) - Antimine diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index a9313739..8c655781 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -69,6 +69,7 @@ Performance OK Use Question Mark + \'No guessing\' mode Controls Single Click diff --git a/common/src/main/res/xml/preferences.xml b/common/src/main/res/xml/preferences.xml index a3e006d4..13c94a75 100644 --- a/common/src/main/res/xml/preferences.xml +++ b/common/src/main/res/xml/preferences.xml @@ -21,6 +21,13 @@ android:title="@string/enable_automatic_flags" app:iconSpaceReserved="false" /> + + >, val premiumFeatures: Int, val controlStyle: Int, + val noGuessing: Int, ) fun CloudSave.toHashMap(): HashMap = hashMapOf( @@ -31,6 +32,7 @@ fun CloudSave.toHashMap(): HashMap = hashMapOf( "stats" to stats, "premiumFeatures" to premiumFeatures, "controlStyle" to controlStyle, + "noGuessing" to noGuessing, ) @Suppress("UNCHECKED_CAST") @@ -50,4 +52,5 @@ fun cloudSaveOf(id: String, data: Map) = data["stats"] as List>, data["premiumFeatures"].toString().toInt(), data["controlStyle"].toString().toInt(), + (data["noGuessing"] ?: 1).toString().toInt(), )