Skip to content

Commit

Permalink
Simplify the ordeal call end screen logic (#1774)
Browse files Browse the repository at this point in the history
Co-authored-by: arthur <[email protected]>
  • Loading branch information
ArthurKun21 and ArthurKun21 authored Apr 5, 2024
1 parent b6c4959 commit cb48353
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ private fun AutoBattle.ExitReason.text(): String = when (this) {
AutoBattle.ExitReason.FirstClearRewards -> stringResource(R.string.first_clear_rewards)
AutoBattle.ExitReason.Paused -> stringResource(R.string.script_paused)
AutoBattle.ExitReason.StopAfterThisRun -> stringResource(R.string.stop_after_this_run)
AutoBattle.ExitReason.StormPodRanOut -> stringResource(R.string.script_msg_storm_pods_ran_out)
}

@Composable
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values/localized.xml
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,6 @@ After pressing on the button, switch the app filter from \"Not optimized\" to \"
<string name="update_download_success">"Download successful. Restarting app in 5 seconds."</string>
<string name="skill_maker_melusine">"Mélusine"</string>

<string name="script_msg_storm_pods_ran_out">"Ran out of Storm Pods"</string>
<string name="reset_all">"Reset all"</string>
<string name="reset_to_default">"Reset to default"</string>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,23 +58,22 @@ class AutoBattle @Inject constructor(
private val ceDropsTracker: CEDropsTracker
) : EntryPoint(exitManager), IFgoAutomataApi by api {
sealed class ExitReason(val cause: Exception? = null) {
object Abort : ExitReason()
data object Abort : ExitReason()
class Unexpected(cause: Exception) : ExitReason(cause)
object CEGet : ExitReason()
data object CEGet : ExitReason()
class LimitCEs(val count: Int) : ExitReason()
object FirstClearRewards : ExitReason()
data object FirstClearRewards : ExitReason()
class LimitMaterials(val count: Int) : ExitReason()
object WithdrawDisabled : ExitReason()
object APRanOut : ExitReason()
object StormPodRanOut : ExitReason()
object InventoryFull : ExitReason()
data object WithdrawDisabled : ExitReason()
data object APRanOut : ExitReason()
data object InventoryFull : ExitReason()
class LimitRuns(val count: Int) : ExitReason()
object SupportSelectionManual : ExitReason()
object SupportSelectionPreferredNotSet : ExitReason()
data object SupportSelectionManual : ExitReason()
data object SupportSelectionPreferredNotSet : ExitReason()
class SkillCommandParseError(cause: Exception) : ExitReason(cause)
class CardPriorityParseError(val msg: String) : ExitReason()
object Paused : ExitReason()
object StopAfterThisRun : ExitReason()
data object Paused : ExitReason()
data object StopAfterThisRun : ExitReason()
}

internal class BattleExitException(val reason: ExitReason) : Exception(reason.cause)
Expand All @@ -92,6 +91,8 @@ class AutoBattle @Inject constructor(

private var canScreenshotBondCE = false

private var isQuestClose = false

override fun script(): Nothing {
try {
loop()
Expand Down Expand Up @@ -228,6 +229,12 @@ class AutoBattle @Inject constructor(
// In case the repeat loop breaks and we end up in menu (like withdrawing from quests)
isContinuing = false

if (isQuestClose){
// Ordeal Call
isQuestClose = false
throw BattleExitException(ExitReason.LimitRuns(state.runs))
}

battle.resetState()

showRefillsAndRunsMessage()
Expand Down Expand Up @@ -341,19 +348,10 @@ class AutoBattle @Inject constructor(

private fun ordealCallOutOfPods() {
locations.ordealCallOutOfPodsClick.click()

isQuestClose = true
// Count the current run
state.nextRun()

2.seconds.wait()
val isBlackScreen = locations.npStartedRegion.isBlack()
if (isBlackScreen){
locations.menuScreenRegion.exists(
images[Images.Menu],
similarity = 0.7,
timeout = 15.seconds
)
}
throw BattleExitException(ExitReason.StormPodRanOut)
}

private fun findRepeatButton(): Match? {
Expand Down Expand Up @@ -518,8 +516,17 @@ class AutoBattle @Inject constructor(
// delay so refill with copper is not disturbed
2.5.seconds.wait()

if (isInventoryFull()) {
throw BattleExitException(ExitReason.InventoryFull)
var closeScreen = false
var inventoryFull = false

useSameSnapIn {
closeScreen = isInOrdealCallOutOfPodsScreen()
inventoryFull = isInventoryFull()
}

when {
closeScreen -> throw BattleExitException(ExitReason.LimitRuns(state.runs))
inventoryFull -> throw BattleExitException(ExitReason.InventoryFull)
}

refill.refill()
Expand Down

0 comments on commit cb48353

Please sign in to comment.