void GameAssetManagerInternals::UpdateAssetPackFromDownloadState()

in agdk/agdktunnel/app/src/main/cpp/game_asset_manager.cpp [450:508]


void GameAssetManagerInternals::UpdateAssetPackFromDownloadState(AssetPackInfo *assetPackInfo,
        AssetPackDownloadState *downloadState) {
    AssetPackDownloadStatus downloadStatus = AssetPackDownloadState_getStatus(
            downloadState);

    switch (downloadStatus) {
        case ASSET_PACK_UNKNOWN:
            break;
        case ASSET_PACK_DOWNLOAD_PENDING:
            ChangeAssetPackStatus(assetPackInfo, GameAssetManager::GAMEASSET_DOWNLOADING);
            assetPackInfo->mAssetPackCompletion = 0.0f;
            break;
        case ASSET_PACK_DOWNLOADING: {
            ChangeAssetPackStatus(assetPackInfo, GameAssetManager::GAMEASSET_DOWNLOADING);
            uint64_t dlBytes = AssetPackDownloadState_getBytesDownloaded(downloadState);
            uint64_t totalBytes = AssetPackDownloadState_getTotalBytesToDownload(downloadState);
            double dlPercent = ((double) dlBytes) / ((double) totalBytes);
            assetPackInfo->mAssetPackCompletion = (float) dlPercent;
        }
            break;
        case ASSET_PACK_TRANSFERRING:
            break;
        case ASSET_PACK_DOWNLOAD_COMPLETED:
            UpdateAssetPackBecameAvailable(assetPackInfo);
            break;
        case ASSET_PACK_DOWNLOAD_FAILED:
            ChangeAssetPackStatus(assetPackInfo, GameAssetManager::GAMEASSET_ERROR);
            break;
        case ASSET_PACK_DOWNLOAD_CANCELED:
            ChangeAssetPackStatus(assetPackInfo, GameAssetManager::GAMEASSET_NEEDS_DOWNLOAD);
            assetPackInfo->mAssetPackCompletion = 0.0f;
            break;
        case ASSET_PACK_WAITING_FOR_WIFI:
            ChangeAssetPackStatus(assetPackInfo, GameAssetManager::GAMEASSET_NEEDS_MOBILE_AUTH);
            break;
        case ASSET_PACK_NOT_INSTALLED: {
            ChangeAssetPackStatus(assetPackInfo, GameAssetManager::GAMEASSET_NEEDS_DOWNLOAD);
            uint64_t totalBytes = AssetPackDownloadState_getTotalBytesToDownload(downloadState);
            if (totalBytes > 0) {
                assetPackInfo->mAssetPackDownloadSize = totalBytes;
            }
        }
            break;
        case ASSET_PACK_INFO_PENDING:
            break;
        case ASSET_PACK_INFO_FAILED:
            ChangeAssetPackStatus(assetPackInfo, GameAssetManager::GAMEASSET_ERROR);
            break;
        case ASSET_PACK_REMOVAL_PENDING:
            ChangeAssetPackStatus(assetPackInfo, GameAssetManager::GAMEASSET_PENDING_ACTION);
            break;
        case ASSET_PACK_REMOVAL_FAILED:
            ChangeAssetPackStatus(assetPackInfo, GameAssetManager::GAMEASSET_READY);
            assetPackInfo->mAssetPackCompletion = 1.0f;
            break;
        default:
            break;
    }
}