Files
GTASource/game/SaveMigration/SaveMigration_common.cpp
expvintl 419f2e4752 init
2025-02-23 17:40:52 +08:00

113 lines
2.1 KiB
C++

#include "SaveMigration_common.h"
// Rage headers
#include "rline/savemigration/rlsavemigration.h"
//////////////////////////////////////////////////////////////////////////
RAGE_DEFINE_CHANNEL(savemigration)
//////////////////////////////////////////////////////////////////////////
bool CSaveMigrationTask::IsActive() const
{
return (m_taskState > SM_TASK_NONE) && (m_taskState < SM_TASK_DONE);
}
bool CSaveMigrationTask::Start()
{
if (!IsActive())
{
m_taskState = SM_TASK_START;
m_status = SM_STATUS_PENDING;
}
return m_taskState == SM_TASK_START;
}
void CSaveMigrationTask::Update()
{
if (m_taskState == SM_TASK_START)
{
if (m_netStatus.GetStatus() == rage::netStatus::NET_STATUS_NONE)
{
if (OnConfigure())
{
m_taskState = SM_TASK_PENDING;
}
else
{
m_taskState = SM_TASK_DONE;
m_status = SM_STATUS_ERROR;
m_netStatus.Reset();
OnFailed();
}
}
}
else if (m_taskState == SM_TASK_PENDING)
{
OnWait();
}
}
void CSaveMigrationTask::OnWait()
{
if (m_netStatus.GetStatus() != rage::netStatus::NET_STATUS_PENDING)
{
switch (m_netStatus.GetStatus())
{
case rage::netStatus::NET_STATUS_FAILED:
m_status = SM_STATUS_ERROR;
OnFailed();
break;
case rage::netStatus::NET_STATUS_CANCELED:
m_status = SM_STATUS_CANCELED;
OnCanceled();
break;
default:
OnCompleted();
break;
}
m_netStatus.Reset();
m_taskState = SM_TASK_DONE;
}
}
void CSaveMigrationTask::Cancel()
{
if (m_netStatus.GetStatus() == rage::netStatus::NET_STATUS_PENDING)
{
rlSaveMigration::Cancel(&m_netStatus);
}
}
void CSaveMigrationTask::Reset()
{
m_status = SM_STATUS_NONE;
m_taskState = SM_TASK_NONE;
m_netStatus.Reset();
}
//////////////////////////////////////////////////////////////////////////
const char* GetSaveMigrationStatusChar(eSaveMigrationStatus status)
{
switch (status)
{
case SM_STATUS_OK:
return "OK";
case SM_STATUS_PENDING:
return "Pending";
case SM_STATUS_INPROGRESS:
return "In Progress";
case SM_STATUS_CANCELED:
return "Canceled";
case SM_STATUS_ROLLEDBACK:
return "Rolled Back";
case SM_STATUS_ERROR:
return "Error";
default:
return "None";
break;
}
}