Skip to content

Commit

Permalink
Merge pull request #350 from lucasnlm/fix-performance
Browse files Browse the repository at this point in the history
Fix performance
  • Loading branch information
lucasnlm committed Dec 13, 2021
2 parents 2daeb53 + 431a9cf commit 43184fd
Show file tree
Hide file tree
Showing 66 changed files with 199 additions and 196 deletions.
4 changes: 2 additions & 2 deletions about/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ dependencies {
implementation 'androidx.recyclerview:recyclerview:1.2.1'

// Constraint
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'

// Lifecycle
api 'android.arch.lifecycle:extensions:1.1.1'
Expand All @@ -73,7 +73,7 @@ dependencies {

// Unit Tests
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:2.24.0'
testImplementation 'org.mockito:mockito-core:3.9.0'
testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0'
testImplementation "io.mockk:mockk:1.11.0"
}
12 changes: 6 additions & 6 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ android {

defaultConfig {
// versionCode and versionName must be hardcoded to support F-droid
versionCode 1501011
versionName '15.1.1'
versionCode 1502001
versionName '15.2.0'
minSdkVersion 21
targetSdkVersion 31
multiDexEnabled true
Expand Down Expand Up @@ -132,7 +132,7 @@ dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.activity:activity-ktx:1.3.1'
implementation 'androidx.fragment:fragment-ktx:1.3.6'
implementation 'androidx.work:work-runtime-ktx:2.7.0'
implementation 'androidx.work:work-runtime-ktx:2.7.1'

// Lifecycle
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'
Expand All @@ -144,7 +144,7 @@ dependencies {
implementation 'androidx.room:room-ktx:2.3.0'

// Constraint
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'

// Google
implementation 'com.google.android.material:material:1.4.0'
Expand All @@ -161,13 +161,13 @@ dependencies {
// Tests
testImplementation 'junit:junit:4.13.2'
testImplementation 'android.arch.core:core-testing:1.1.1'
testImplementation 'androidx.core:core-ktx:1.6.0'
testImplementation 'androidx.core:core-ktx:1.7.0'
testImplementation 'androidx.test:core-ktx:1.4.0'
testImplementation 'androidx.test:rules:1.4.0'
testImplementation 'androidx.test:runner:1.4.0'
testImplementation 'androidx.test.espresso:espresso-core:3.4.0'
testImplementation 'androidx.test.espresso:espresso-contrib:3.4.0'
testImplementation 'androidx.fragment:fragment-testing:1.3.6'
testImplementation 'androidx.fragment:fragment-testing:1.4.0'
testImplementation 'org.robolectric:robolectric:4.5.1'
testImplementation 'androidx.test.ext:junit:1.1.3'
testImplementation 'io.mockk:mockk:1.11.0'
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/dev/lucasnlm/antimine/GameActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ class GameActivity :

tipsCounter.text = it.tips.toL10nString()

if (!it.isGameCompleted && it.useHelp) {
if (!it.isGameCompleted && it.isActive && it.useHelp) {
refreshTipShortcutIcon()
} else {
refreshRetryShortcut(it.hasMines)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import dev.lucasnlm.external.IAnalyticsManager
import dev.lucasnlm.external.IBillingManager
import dev.lucasnlm.external.IFeatureFlagManager
import dev.lucasnlm.external.IInstantAppManager
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import org.koin.android.ext.android.inject
Expand Down Expand Up @@ -104,6 +105,7 @@ class GameOverDialogFragment : AppCompatDialogFragment() {
endGameViewModel.observeState().collect { state ->
val newGameButton: AppCompatButton = findViewById(R.id.new_game)
val continueButton: AppCompatButton = findViewById(R.id.continue_game)
val countdown: TextView = findViewById(R.id.countdown)
val removeAdsButton: AppCompatButton = findViewById(R.id.remove_ads)
val tutorialButton: AppCompatButton = findViewById(R.id.tutorial)
val settingsButton: View = findViewById(R.id.settings)
Expand Down Expand Up @@ -198,8 +200,25 @@ class GameOverDialogFragment : AppCompatDialogFragment() {
R.drawable.watch_ads_icon, 0, 0, 0
)
}

if (!preferencesRepository.isPremiumEnabled() &&
featureFlagManager.showCountdownToContinue
) {
countdown.visibility = View.VISIBLE
lifecycleScope.launchWhenCreated {
var countdownTime = 10
while (countdownTime > 0) {
countdown.text = countdownTime.toString()
delay(1000L)
countdownTime -= 1
}
countdown.visibility = View.GONE
continueButton.visibility = View.GONE
}
}
} else {
continueButton.visibility = View.GONE
countdown.visibility = View.GONE
}

if (state.showTutorial) {
Expand Down
47 changes: 32 additions & 15 deletions app/src/main/res/layout/game_over_dialog.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

Expand All @@ -12,10 +11,10 @@
android:layout_height="wrap_content"
android:background="@drawable/round_background"
android:padding="16dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/adFrame"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
app:layout_constraintTop_toTopOf="parent">

<ImageView
android:id="@+id/title_emoji"
Expand Down Expand Up @@ -105,13 +104,31 @@
<requestFocus />
</androidx.appcompat.widget.AppCompatButton>

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/continue_game"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/continue_game"
android:textAllCaps="true" />
android:layout_height="wrap_content">

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/continue_game"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/continue_game"
android:textAllCaps="true" />

<TextView
android:id="@+id/countdown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:paddingVertical="4dp"
android:paddingHorizontal="8dp"
android:textColor="?colorAccent"
android:textStyle="bold"
android:visibility="gone"
tools:visibility="visible"
tools:text="10" />
</FrameLayout>

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/remove_ads"
Expand Down Expand Up @@ -139,14 +156,14 @@
android:id="@+id/adFrame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="50dp"
android:background="@drawable/round_background"
android:layout_marginTop="16dp"
android:background="@drawable/round_background"
android:gravity="center"
android:minHeight="50dp"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/dialog"
app:layout_constraintBottom_toBottomOf="parent" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/dialog" />

</androidx.constraintlayout.widget.ConstraintLayout>
4 changes: 2 additions & 2 deletions common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ dependencies {
implementation 'com.google.android.material:material:1.4.0'

// Constraint
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'

// Lifecycle
api 'android.arch.lifecycle:extensions:1.1.1'
Expand Down Expand Up @@ -83,7 +83,7 @@ dependencies {

// Unit Tests
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:2.24.0'
testImplementation 'org.mockito:mockito-core:3.9.0'
testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0'
testImplementation 'io.mockk:mockk:1.11.0'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ class AreaConverterTest {
"mistake":false,
"isCovered":true,
"mark":"None",
"highlighted":true,
"revealed":false,
"neighborsIds":[]
"neighborsIds":[],
"dimNumber":false
},
{
"id":2,
Expand All @@ -31,9 +31,9 @@ class AreaConverterTest {
"mistake":true,
"isCovered":false,
"mark":"PurposefulNone",
"highlighted":false,
"revealed":false,
"neighborsIds":[]
"neighborsIds":[],
"dimNumber":false
},
{
"id":3,
Expand All @@ -44,9 +44,9 @@ class AreaConverterTest {
"mistake":false,
"isCovered":true,
"mark":"Flag",
"highlighted":true,
"revealed":false,
"neighborsIds":[]
"neighborsIds":[],
"dimNumber":false
},
{
"id":4,
Expand All @@ -57,9 +57,9 @@ class AreaConverterTest {
"mistake":false,
"isCovered":true,
"mark":"Question",
"highlighted":true,
"revealed":true,
"neighborsIds":[]
"neighborsIds":[],
"dimNumber":true
}
]
""".trimIndent().replace(
Expand Down Expand Up @@ -104,6 +104,7 @@ class AreaConverterTest {
mark = Mark.Question,
revealed = true,
neighborsIds = listOf(),
dimNumber = true,
)
)

Expand Down
4 changes: 2 additions & 2 deletions control/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ dependencies {
implementation 'androidx.recyclerview:recyclerview:1.2.1'

// Constraint
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'

// Lifecycle
api 'android.arch.lifecycle:extensions:1.1.1'
Expand All @@ -72,7 +72,7 @@ dependencies {

// Unit Tests
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:2.24.0'
testImplementation 'org.mockito:mockito-core:3.9.0'
testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0'
testImplementation 'io.mockk:mockk:1.11.0'
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ class ControlActivity : ThematicActivity(R.layout.activity_control), Slider.OnCh
lifecycleScope.launchWhenCreated {
viewModel.observeState().collect {
controlAdapter.bindControlStyleList(it.selected, it.controls)
longPress.value = it.longPress.toFloat()
touchSensibility.value = it.touchSensibility.toFloat()
longPress.value = (it.longPress.toFloat() / longPress.stepSize).toInt() * longPress.stepSize
touchSensibility.value =
(it.touchSensibility.toFloat() / touchSensibility.stepSize).toInt() * touchSensibility.stepSize

val toggleVisible = if (it.showToggleButtonSettings) View.VISIBLE else View.GONE
toggleButtonTopBar.visibility = toggleVisible
Expand All @@ -79,7 +80,8 @@ class ControlActivity : ThematicActivity(R.layout.activity_control), Slider.OnCh
doubleClick.visibility = doubleClickVisible
doubleClickLabel.visibility = doubleClickVisible

hapticLevel.value = it.hapticFeedbackLevel.toFloat()
hapticLevel.value =
(it.hapticFeedbackLevel.toFloat() / hapticLevel.stepSize).toInt() * hapticLevel.stepSize
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ abstract class IFeatureFlagManager {
abstract val isWeekDaySalesEnabled: Boolean
abstract val isHexBannerEnabled: Boolean
abstract val showAdWhenUsingTip: Boolean
abstract val showCountdownToContinue: Boolean

abstract suspend fun refresh()
}
10 changes: 5 additions & 5 deletions fastlane/metadata/android/it-IT/full_description.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ Riuscirai a sgombrare il campo minato? Iniziamo!
OBIETTIVO
È come Campo Minato. Vinci la partita quando hai contrassegnato ogni mina nel campo minato. Attenzione a non farle esplodere!

NON DEVI INDOVINARE
NON SERVE INDOVINARE
Il gioco ha un algoritmo che crea sempre campi minati risolvibili. Non sarà necessario indovinare dov'è l'ultima mina!

LIVELLI DI GIOCO
LIVELLI DI DIFFICOLTÀ
Proprio come Campo Minato, questo gioco ha diversi livelli: Principiante, Intermedio e Esperto. Ha anche una modalità progressiva che diventa più difficile dopo ogni vittoria.

LIVELLO CUSTOM
DIFFICOLTÀ PERSONALIZZATA
Se le modalità standard non ti soddisfano, puoi creare il tuo livello di difficoltà!

TEMI
Expand All @@ -25,9 +25,9 @@ TUTORIAL
Non sai come si gioca a Campo Minato? Nessun problema, puoi giocare il tutorial e attivare i suggerimenti nelle impostazioni.

STATISTICHE
Controlla i tuoi risultati e lo sviluppo.
Controlla i tuoi risultati e la tua crescita.

ASSISTENZA DEL GIOCO
ASSISTENTE DI GIOCO
Il gioco contrassegna automaticamente le caselle che hai isolato.

PERSONALIZZAZIONE
Expand Down
Loading

0 comments on commit 43184fd

Please sign in to comment.