Skip to content

Commit f261e4d

Browse files
committed
Fixed AINTRO.CAT intro music
1 parent ce548c2 commit f261e4d

1 file changed

Lines changed: 29 additions & 14 deletions

File tree

‎src/Resource/XcomResourcePack.cpp‎

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ XcomResourcePack::XcomResourcePack(std::vector<std::pair<std::string, ExtraSprit
7979
{
8080
// Load palettes
8181
const char *pal[] = {"PAL_GEOSCAPE", "PAL_BASESCAPE", "PAL_GRAPHS", "PAL_UFOPAEDIA", "PAL_BATTLEPEDIA"};
82-
for (int i = 0; i < sizeof(pal) / sizeof(pal[0]); ++i)
82+
for (size_t i = 0; i < sizeof(pal) / sizeof(pal[0]); ++i)
8383
{
8484
std::string s = "GEODATA/PALETTES.DAT";
8585
_palettes[pal[i]] = new Palette();
@@ -116,7 +116,7 @@ XcomResourcePack::XcomResourcePack(std::vector<std::pair<std::string, ExtraSprit
116116
{8, 12, 16, 0},
117117
{3, 4, 8, 0},
118118
{3, 3, 6, 0}};
119-
for (int i = 0; i < sizeof(gradient)/sizeof(gradient[0]); ++i)
119+
for (size_t i = 0; i < sizeof(gradient)/sizeof(gradient[0]); ++i)
120120
{
121121
SDL_Color *color = _palettes[s2]->getColors(Palette::backPos + 16 + i);
122122
*color = gradient[i];
@@ -190,7 +190,7 @@ XcomResourcePack::XcomResourcePack(std::vector<std::pair<std::string, ExtraSprit
190190
"INTICON.PCK",
191191
"TEXTURE.DAT"};
192192

193-
for (int i = 0; i < sizeof(sets)/sizeof(sets[0]); ++i)
193+
for (size_t i = 0; i < sizeof(sets)/sizeof(sets[0]); ++i)
194194
{
195195
std::ostringstream s;
196196
s << "GEOGRAPH/" << sets[i];
@@ -254,7 +254,7 @@ XcomResourcePack::XcomResourcePack(std::vector<std::pair<std::string, ExtraSprit
254254

255255
Polyline *l = 0;
256256
int start = 0;
257-
for (int i = 0; lines[i] > -19.999; ++i)
257+
for (size_t i = 0; lines[i] > -19.999; ++i)
258258
{
259259
if (lines[i] < -9.999 && lines[i] > -10.001)
260260
{
@@ -323,20 +323,24 @@ XcomResourcePack::XcomResourcePack(std::vector<std::pair<std::string, ExtraSprit
323323

324324
#ifndef __NO_MUSIC
325325
// Check which music version is available
326-
CatFile *adlibcat = 0;
326+
CatFile *adlibcat = 0, *aintrocat = 0;
327327
GMCatFile *gmcat = 0;
328328

329-
std::string musicAdlib = "SOUND/ADLIB.CAT", musicGM = "SOUND/GM.CAT";
329+
std::string musicAdlib = "SOUND/ADLIB.CAT", musicIntro = "SOUND/AINTRO.CAT", musicGM = "SOUND/GM.CAT";
330330
if (CrossPlatform::fileExists(CrossPlatform::getDataFile(musicAdlib)))
331331
{
332332
adlibcat = new CatFile(CrossPlatform::getDataFile(musicAdlib).c_str());
333+
if (CrossPlatform::fileExists(CrossPlatform::getDataFile(musicIntro)))
334+
{
335+
aintrocat = new CatFile(CrossPlatform::getDataFile(musicIntro).c_str());
336+
}
333337
}
334338
if (CrossPlatform::fileExists(CrossPlatform::getDataFile(musicGM)))
335339
{
336340
gmcat = new GMCatFile(CrossPlatform::getDataFile(musicGM).c_str());
337341
}
338342

339-
for (int i = 0; i < sizeof(mus)/sizeof(mus[0]); ++i)
343+
for (size_t i = 0; i < sizeof(mus)/sizeof(mus[0]); ++i)
340344
{
341345
bool loaded = false;
342346
// Try digital tracks
@@ -358,8 +362,18 @@ XcomResourcePack::XcomResourcePack(std::vector<std::pair<std::string, ExtraSprit
358362
if (adlibcat && Options::audioBitDepth == 16)
359363
{
360364
_musics[mus[i]] = new AdlibMusic();
361-
_musics[mus[i]]->load(adlibcat->load(tracks[i], true), adlibcat->getObjectSize(tracks[i]));
362-
loaded = true;
365+
if (tracks[i] < adlibcat->getAmount())
366+
{
367+
_musics[mus[i]]->load(adlibcat->load(tracks[i], true), adlibcat->getObjectSize(tracks[i]));
368+
loaded = true;
369+
}
370+
// separate intro music
371+
else if (aintrocat)
372+
{
373+
int track = tracks[i] - adlibcat->getAmount();
374+
_musics[mus[i]]->load(aintrocat->load(track, true), aintrocat->getObjectSize(track));
375+
loaded = true;
376+
}
363377
}
364378
// Try GM music
365379
else if (gmcat)
@@ -387,9 +401,10 @@ XcomResourcePack::XcomResourcePack(std::vector<std::pair<std::string, ExtraSprit
387401
}
388402
delete gmcat;
389403
delete adlibcat;
404+
delete aintrocat;
390405

391406
// Ok, now try to load the optional musics
392-
for (int i = 0; i < sizeof(musOptional)/sizeof(musOptional[0]); ++i)
407+
for (size_t i = 0; i < sizeof(musOptional)/sizeof(musOptional[0]); ++i)
393408
{
394409
// Try digital tracks
395410
for (int j = 0; j < sizeof(exts)/sizeof(exts[0]); ++j)
@@ -432,7 +447,7 @@ XcomResourcePack::XcomResourcePack(std::vector<std::pair<std::string, ExtraSprit
432447
wav = false;
433448
}
434449

435-
for (int i = 0; i < sizeof(catsId)/sizeof(catsId[0]); ++i)
450+
for (size_t i = 0; i < sizeof(catsId)/sizeof(catsId[0]); ++i)
436451
{
437452
if (cats == 0)
438453
{
@@ -761,7 +776,7 @@ void XcomResourcePack::loadBattlescapeResources()
761776
// Load Battlescape Terrain (only blacks are loaded, others are loaded just in time)
762777
std::string bsets[] = {"BLANKS.PCK"};
763778

764-
for (int i = 0; i < sizeof(bsets)/sizeof(bsets[0]); ++i)
779+
for (size_t i = 0; i < sizeof(bsets)/sizeof(bsets[0]); ++i)
765780
{
766781
std::ostringstream s;
767782
s << "TERRAIN/" << bsets[i];
@@ -793,7 +808,7 @@ void XcomResourcePack::loadBattlescapeResources()
793808

794809
std::string scrs[] = {"TAC00.SCR"};
795810

796-
for (int i = 0; i < sizeof(scrs)/sizeof(scrs[0]); ++i)
811+
for (size_t i = 0; i < sizeof(scrs)/sizeof(scrs[0]); ++i)
797812
{
798813
std::ostringstream s;
799814
s << "UFOGRAPH/" << scrs[i];
@@ -809,7 +824,7 @@ void XcomResourcePack::loadBattlescapeResources()
809824
"SCANBORD.PCK",
810825
"UNIBORD.PCK"};
811826

812-
for (int i = 0; i < sizeof(spks)/sizeof(spks[0]); ++i)
827+
for (size_t i = 0; i < sizeof(spks)/sizeof(spks[0]); ++i)
813828
{
814829
std::ostringstream s;
815830
s << "UFOGRAPH/" << spks[i];

0 commit comments

Comments
 (0)