ファイルが1個だけの場合、0%か100%だとイマイチなので、どこまで読み込みが済んでいるかを知る手段が
あるだろうか、ということだと思いますが、たぶん無いのではと思います。
ファイルが1個の場合、ファイルの読み込みが終わるまでは(どれだけ読んでいるかは全く考慮せず)一律の割合で
パーセントを増やし、想定(※ここでは3秒)より早く読み込みが終われば伸びを加速するプログラムを書きました。
「3秒」より長いことは想定していませんので、「3秒」をいかに適切に設定するかが肝になります。
なお2個以上の場合は「普通に」読んでいるだけなので、カクツキがあります。
#include "DxLib.h"
#include <string>
using namespace std;
typedef std::basic_string<TCHAR> tstring;
int nSHandle[5000];
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
DxLib::ChangeWindowMode(true);
DxLib::SetWindowSize(640, 480);
if (DxLib::DxLib_Init() == -1) return -1;
DxLib::SetDrawScreen(DX_SCREEN_BACK);
FILEINFO info;
double dPercent = 0;
int nFCount = 0; // 対象となるファイル数
TCHAR buf[MAX_PATH];
DWORD_PTR hFHandle = NULL;
tstring sFolder = TEXT("x:\xxxxx\xxxxxx\xxxxx\"); // Ogg群のあるフォルダを指定!
if (sFolder[sFolder.length() - 1] != '\\') sFolder += TEXT("\\");
DxLib::SetUseASyncLoadFlag(TRUE); // 非同期ON
hFHandle = DxLib::FileRead_findFirst((sFolder + TEXT("*.ogg")).c_str(), &info);
if (hFHandle != (DWORD_PTR)-1)
{
do {
DxLib::sprintfDx(buf, TEXT("%s%s"), sFolder.c_str(), info.Name);
nSHandle[nFCount++] = DxLib::LoadSoundMem(buf);
} while (DxLib::FileRead_findNext(hFHandle, &info) >= 0);
}
DxLib::SetUseASyncLoadFlag(FALSE); // (これ以降の新規ハンドルは)非同期OFF
while (!DxLib::ProcessMessage()) {
DxLib::ClearDrawScreen();
int nNLoad = DxLib::GetASyncLoadNum();
if (nFCount < 2)
{
// ファイルが少ない時 (1個だけの場合)
if (nNLoad == 0)
dPercent += 5.0; // 読み終わったら加速
else
dPercent += 100.0 / (3.0 * 60.0); // 「最長3秒」での想定。ファイルサイズによってこの秒数を変えるとよいかも
}
else {
// ファイルが多い時 (ファイルの残数が減ればゲージを伸ばす)
dPercent = 100.0 * ((double)(nFCount - nNLoad) / (double)nFCount);
}
if (dPercent > 100.0) dPercent = 100.0; // 追加
DxLib::sprintfDx(buf, TEXT("残り %d"), nNLoad);
DxLib::DrawString(16, 200, buf, DxLib::GetColor(255, 255, 255));
DxLib::DrawBox(16, 220, 16 + (int)((double)(640 - 32) * dPercent / 100.0), 220 + 32, DxLib::GetColor(255, 255, 0), TRUE);
DxLib::ScreenFlip();
if (dPercent == 100.0 && nNLoad == 0) break; // 修正
}
DxLib::WaitKey(); // 追加
DxLib::InitSoundMem();
return DxLib::DxLib_End();
}
※2018/05/05 05:55 下の10行くらいを追加/修正しました。(100%オーバー対策、最後キー待ち)