no recursion

Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com>
This commit is contained in:
Octol1ttle 2026-01-28 17:06:23 +05:00
parent 5d0360ccec
commit f7deeb0db4
No known key found for this signature in database
GPG key ID: B77C34313AEE1FFF
2 changed files with 15 additions and 9 deletions

View file

@ -127,11 +127,11 @@ void LaunchController::decideAccount()
}
}
bool LaunchController::decideLaunchMode()
LaunchDecision LaunchController::decideLaunchMode()
{
if (!m_accountToUse || m_wantedLaunchMode == LaunchMode::Demo) {
m_actualLaunchMode = LaunchMode::Demo;
return true;
return LaunchDecision::Continue;
}
if (m_wantedLaunchMode == LaunchMode::Normal) {
@ -160,7 +160,7 @@ bool LaunchController::decideLaunchMode()
if (!accountToCheck) {
m_actualLaunchMode = LaunchMode::Demo;
return true;
return LaunchDecision::Continue;
}
auto state = accountToCheck->accountState();
@ -178,7 +178,7 @@ bool LaunchController::decideLaunchMode()
progDialog.execWithTask(task.get());
if (task->getState() == State::AbortedByUser) {
return false;
return LaunchDecision::Abort;
}
state = accountToCheck->accountState();
@ -199,14 +199,14 @@ bool LaunchController::decideLaunchMode()
default:
m_actualLaunchMode =
state == AccountState::Online && m_wantedLaunchMode == LaunchMode::Normal ? LaunchMode::Normal : LaunchMode::Offline;
return true; // All good to go
return LaunchDecision::Continue; // All good to go
}
if (reauthenticateAccount(accountToCheck, reauthReason)) {
return decideLaunchMode();
return LaunchDecision::Undecided;
}
return false;
return LaunchDecision::Abort;
}
bool LaunchController::askPlayDemo()
@ -270,7 +270,11 @@ void LaunchController::login()
{
decideAccount();
if (!decideLaunchMode()) {
LaunchDecision decision = decideLaunchMode();
while (decision == LaunchDecision::Undecided) {
decision = decideLaunchMode();
}
if (decision == LaunchDecision::Abort) {
emitAborted();
return;
}

View file

@ -42,6 +42,8 @@
class InstanceWindow;
enum class LaunchDecision { Undecided, Continue, Abort };
class LaunchController : public Task {
Q_OBJECT
public:
@ -74,7 +76,7 @@ class LaunchController : public Task {
void login();
void launchInstance();
void decideAccount();
bool decideLaunchMode();
LaunchDecision decideLaunchMode();
bool askPlayDemo();
QString askOfflineName(QString playerName, bool* ok = nullptr);
bool reauthenticateAccount(MinecraftAccountPtr account, QString reason);