ローディング関数です。
プログラム全体は多すぎるのでload関数だけですが、
起動してDXライブラリや自作ライブラリを初期化したのち、
下の様なロード関数をよんでいます。
この関数が呼ばれることは1度しかありません。
実験では3つで限界と書きましたが、実際は5つ読み込むゲームです。時間はそれぞれ
2:00
4:00
1:30
1:30
1:30
ぐらいです。(3つ目は7:30と長すぎたためゲームで使うことを断念したもの
画像は80枚ぐらいと上に書きましたが、正確には65枚でした。
seも22個でした。
画像のサイズは大体ですが
500x400程度の画像(enemyなど)が35枚程度
1280x720〜1920x1280程度の背景が4枚程度
100x100未満の小さな画像が6枚程度
分割読み込みが20枚ほどです。
画像だけの合計サイズは32.9 MB (34,578,432 バイト)です、
void load() { //素材ファイルを読み込む
image0 = LoadGraph("data\\image\\logo.png");
image1 = LoadGraph("data\\image\\load.png");
se1 = LoadSoundMem("data\\se\\load.mp3");
ChangeVolumeSoundMem(200, se1);
SetUseASyncLoadFlag(TRUE); //非同期読み込み設定に変更
image2 = LoadGraph("data\\image\\image1.jpg");
image3 = LoadGraph("data\\image\\image2.jpg");
image4 = LoadGraph("data\\image\\kaya.jpg");
image5 = LoadGraph("data\\image\\shop.jpg");
image6 = LoadGraph("data\\image\\menu.jpg");
image7 = LoadGraph("data\\image\\image3.jpg");
image8 = LoadGraph("data\\image\\image4.jpg");10
image9 = LoadGraph("data\\image\\kaya_.jpg");
image10 = LoadGraph("data\\image\\box.png");
image11 = LoadGraph("data\\image\\loaddata.png");
image12 = LoadGraph("data\\image\\wood.jpg");
image13 = LoadGraph("data\\image\\boss1.jpg");
image14 = LoadGraph("data\\image\\config.png");
image15 = LoadGraph("data\\image\\black1.png");
image16 = LoadGraph("data\\image\\black2.png");
image17 = LoadGraph("data\\image\\black3.png");
image18 = LoadGraph("data\\image\\black4.png");20
image19 = LoadGraph("data\\image\\bossback1.png");
image20 = LoadGraph("data\\image\\bossback2.png");
image21 = LoadGraph("data\\image\\bossback3.png");
image22 = LoadGraph("data\\image\\boss2.jpg");
image23 = LoadGraph("data\\image\\enemy\\boss1.jpg");
image24 = LoadGraph("data\\image\\enemy\\boss2.png");
enemy[0] = LoadGraph("data\\image\\enemy\\enemy01.png");
enemy[1] = LoadGraph("data\\image\\enemy\\enemy02.png");
enemy[2] = LoadGraph("data\\image\\enemy\\enemy03.png");
enemy[3] = LoadGraph("data\\image\\enemy\\enemy04.png");30
enemy[4] = LoadGraph("data\\image\\enemy\\enemy05.png");
enemy[5] = LoadGraph("data\\image\\enemy\\enemy06.png");
enemy[6] = LoadGraph("data\\image\\enemy\\enemy07.png");
enemy[7] = LoadGraph("data\\image\\enemy\\enemy08.png");
enemy[8] = LoadGraph("data\\image\\enemy\\enemy09.png");
enemy[9] = LoadGraph("data\\image\\enemy\\enemy10.png");
enemy[10] = LoadGraph("data\\image\\enemy\\enemy11.png");
enemy[11] = LoadGraph("data\\image\\enemy\\enemy12.png");
enemy[12] = LoadGraph("data\\image\\enemy\\enemy13.png");
enemy[13] = LoadGraph("data\\image\\enemy\\enemy14.png");
enemy[14] = LoadGraph("data\\image\\enemy\\enemy15.png");40
enemy[15] = LoadGraph("data\\image\\enemy\\enemy16.png");
enemy[16] = LoadGraph("data\\image\\enemy\\enemy17.png");
enemy[17] = LoadGraph("data\\image\\enemy\\enemy18.png");
enemy[18] = LoadGraph("data\\image\\enemy\\enemy19.png");
enemy[19] = LoadGraph("data\\image\\enemy\\enemy20.png");
LoadDivGraph("data\\image\\wing.png", 30, 5, 6, 640, 640, effect1);//合計、横、縦、分けた後のサイズ
LoadDivGraph("data\\image\\warp.png", 26, 2, 13, 640, 480, effect2);
LoadDivGraph("data\\image\\flame.png", 9, 3, 3, 1200, 1200, effect3);
LoadDivGraph("data\\image\\mark.png", 540, 30, 18, 32, 32, effect4);
LoadDivGraph("data\\image\\mahou.png", 135, 15, 9, 200, 200, effect5);50
LoadDivGraph("data\\image\\book1.png", 96, 12, 8, 32, 48, effect6);
LoadDivGraph("data\\image\\book2.png", 96, 12, 8, 32, 48, effect7);
LoadDivGraph("data\\image\\book3.png", 96, 12, 8, 32, 48, effect8);
LoadDivGraph("data\\image\\icon.png", 336, 16, 21, 32, 32, effect9);
LoadDivGraph("data\\image\\coin.png", 30, 5, 6, 240, 240, effect10);
LoadDivGraph("data\\image\\attack1.png", 9, 9, 1, 240, 240, effect11);
LoadDivGraph("data\\image\\attack2.png", 5, 5, 1, 240, 240, effect12);
LoadDivGraph("data\\image\\cure1.png", 27, 5, 6, 126, 126, effect13);
LoadDivGraph("data\\image\\cure2.png", 27, 5, 6, 126, 126, effect14);
LoadDivGraph("data\\image\\fier.png", 8, 8, 1, 240, 240, effect15);60
LoadDivGraph("data\\image\\ice.png", 8, 8, 1, 240, 240, effect16);
LoadDivGraph("data\\image\\explosion.png", 7, 7, 1, 240, 240, effect17);
LoadDivGraph("data\\image\\thunder.png", 8, 8, 1, 240, 240, effect18);
LoadDivGraph("data\\image\\fire.png", 42, 6, 7, 128, 128, effect19);
LoadDivGraph("data\\image\\fierbird.png", 20, 2, 10, 640, 480, effect20);65
bgm1 = LoadSoundMem("data\\bgm\\battle.mp3");
bgm2 = LoadSoundMem("data\\bgm\\boss1.mp3");
//bgm3 = LoadSoundMem("data\\bgm\\boss2.mp3");
bgm4 = LoadSoundMem("data\\bgm\\menu.mp3");
bgm5 = LoadSoundMem("data\\bgm\\dead.mp3");
bgm6 = LoadSoundMem("data\\bgm\\wind.mp3");
se2 = LoadSoundMem("data\\se\\enter.mp3");
se3 = LoadSoundMem("data\\se\\cancel.mp3");
se4 = LoadSoundMem("data\\se\\select.mp3");
se5 = LoadSoundMem("data\\se\\warp.mp3");
se6 = LoadSoundMem("data\\se\\seed.mp3");
se7 = LoadSoundMem("data\\se\\noseed.mp3");
se8 = LoadSoundMem("data\\se\\book.mp3");
se9 = LoadSoundMem("data\\se\\attack1.mp3");
se10 = LoadSoundMem("data\\se\\attack2.mp3");
se11 = LoadSoundMem("data\\se\\damage.mp3");
se12 = LoadSoundMem("data\\se\\miss.mp3");
se13 = LoadSoundMem("data\\se\\fier.mp3");
se14 = LoadSoundMem("data\\se\\cure.mp3");
se15 = LoadSoundMem("data\\se\\ice.mp3");
se16 = LoadSoundMem("data\\se\\explosion.mp3");
se17 = LoadSoundMem("data\\se\\thunder.mp3");
se18 = LoadSoundMem("data\\se\\down.wav");
se19 = LoadSoundMem("data\\se\\message.mp3");
se20 = LoadSoundMem("data\\se\\vanish.mp3");
se21 = LoadSoundMem("data\\se\\fier.wav");
se22 = LoadSoundMem("data\\se\\bird.mp3");
int meter = 640, loadfiles, maxloadfiles, loadtime = 0;
maxloadfiles = GetASyncLoadNum();
PlaySoundMem(se1, DX_PLAYTYPE_BACK); // 効果音を再生する
while (ScreenFlip() == 0 && ClearDrawScreen() == 0) {
if (ProcessMessage() == -1) dxend();
loadtime++;
loadfiles = GetASyncLoadNum();
DrawExtendGraph(0, 0, 1280, 720, image1, TRUE);
DrawExtendGraph(560, 300, 720, 371, image0, TRUE);
DrawFormatString(1110, 670, col.green, "loading...%d/%d", loadfiles, maxloadfiles); // 文字を描画する
DrawBox(1110, 695, 1270, 710, col.green, FALSE);//メーターの枠を描画
DrawBox(1110, 695, 1120 + meter, 710, col.green, TRUE);//メーターの中身を描画
meter = (150 / maxloadfiles)*(maxloadfiles - loadfiles) + 150 % maxloadfiles;
if (meter >= 790) meter = 790;
if (loadtime >= 250 && GetASyncLoadNum() == 0) break;
}
SetUseASyncLoadFlag(FALSE); // 同期読み込み設定に変更
musicvolume(1, bgmvolume); //サウンドボリューム設定
musicvolume(2, sevolume); //サウンドボリューム設定
WaitTimer(333);
ClearDrawScreen(); // 画面を消す
ScreenFlip(); //裏画面を表画面に反映
return;
}