@@ -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