Skip to content

Commit

Permalink
block launch on outdated game versions
Browse files Browse the repository at this point in the history
  • Loading branch information
qimiko committed Feb 18, 2024
1 parent 189350c commit ae3e25d
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 25 deletions.
57 changes: 32 additions & 25 deletions app/src/main/java/com/geode/launcher/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -744,7 +744,6 @@ fun PlayButton(
}
}


if (showSafeModeDialog) {
SafeModeDialog(
onDismiss = {
Expand All @@ -762,6 +761,20 @@ fun PlayButton(
}
}

@Composable
fun LaunchBlockedLabel(text: String) {
val context = LocalContext.current

Column(horizontalAlignment = Alignment.CenterHorizontally) {
Text(text, modifier = Modifier.padding(12.dp))
OutlinedButton(onClick = { onSettings(context) }) {
Icon(Icons.Filled.Settings, contentDescription = null)
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
Text(context.getString(R.string.launcher_settings))
}
}
}

@Composable
fun MainScreen(
gdInstalled: Boolean = true,
Expand All @@ -772,7 +785,6 @@ fun MainScreen(
val context = LocalContext.current

val shouldUpdate by PreferenceUtils.useBooleanPreference(PreferenceUtils.Key.UPDATE_AUTOMATICALLY)

val autoUpdateState by releaseViewModel.uiState.collectAsState()

val geodeJustInstalled = (autoUpdateState as? ReleaseViewModel.ReleaseUIState.Finished)
Expand Down Expand Up @@ -834,15 +846,23 @@ fun MainScreen(

when {
gdInstalled && geodeInstalled -> {
val stopLaunch = releaseViewModel.isInUpdate || hasError
PlayButton(
stopAutomaticLaunch = stopLaunch,
blockLaunch = releaseViewModel.isInUpdate,
onPlayGame = { safeMode ->
launchInSafeMode = safeMode
beginLaunch = true
},
)
val gdVersion = remember {
LaunchUtils.getGeometryDashVersionCode(context.packageManager)
}

if (gdVersion < Constants.SUPPORTED_VERSION_CODE) {
LaunchBlockedLabel(stringResource(R.string.game_outdated))
} else {
val stopLaunch = releaseViewModel.isInUpdate || hasError
PlayButton(
stopAutomaticLaunch = stopLaunch,
blockLaunch = releaseViewModel.isInUpdate,
onPlayGame = { safeMode ->
launchInSafeMode = safeMode
beginLaunch = true
},
)
}
}
gdInstalled -> {
Text(
Expand Down Expand Up @@ -871,20 +891,7 @@ fun MainScreen(
}
}
}
else -> {
Text(
context.getString(R.string.game_not_found),
modifier = Modifier.padding(12.dp)
)
OutlinedButton(onClick = { onSettings(context) }) {
Icon(
Icons.Filled.Settings,
contentDescription = context.getString(R.string.launcher_settings_icon_alt)
)
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
Text(context.getString(R.string.launcher_settings))
}
}
else -> LaunchBlockedLabel(stringResource(R.string.game_not_found))
}

UpdateCard(
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<string name="launcher_settings_icon_alt">settings icon</string>
<string name="launcher_retry_icon_alt">retry icon</string>
<string name="geode_download_title">Geode is not installed.</string>
<string name="game_outdated">A Geometry Dash update is required.</string>
<string name="geode_download_description">Geode is downloading. Please wait.</string>
<plurals name="automatically_load_countdown">
<item quantity="one">Automatically launching game in %1$d second.</item>
Expand Down

0 comments on commit ae3e25d

Please sign in to comment.