public virtual void ReadChildData(BinaryReader reader)
            {
                int x = 0;

                for (x = 0; (x < _soundClasses.Count); x = (x + 1))
                {
                    SoundClasses.Add(new SoundClassBlockBlock());
                    SoundClasses[x].Read(reader);
                }
                for (x = 0; (x < _soundClasses.Count); x = (x + 1))
                {
                    SoundClasses[x].ReadChildData(reader);
                }
            }
Exemple #2
0
        // HO uses ODST classes, with H3 structure
        private SoundClasses ConvertSoundClasses(SoundClasses sncl, CacheVersion version)
        {
            // setup class with "default" values
            var sClass = new SoundClasses.Class()
            {
                MaxSoundsPerTag    = 4,
                MaxSoundsPerObject = 1,
                PreemptionTime     = 100,

                InternalFlags = (SoundClasses.Class.InternalFlagBits.ClassIsValid | SoundClasses.Class.InternalFlagBits.Bit4 |
                                 SoundClasses.Class.InternalFlagBits.Bit5 | SoundClasses.Class.InternalFlagBits.Bit6 |
                                 SoundClasses.Class.InternalFlagBits.Bit8 | SoundClasses.Class.InternalFlagBits.Bit9),

                Priority               = 5,
                DistanceBoundsMin      = 8.0f,
                DistanceBoundsMax      = 120.0f,
                TransmissionMultiplier = 1.0f
            };

            // hud class, unique to HO. the above values seem to be okay
            if (sncl.Classes.Count >= 50)
            {
                sncl.Classes.Insert(50, sClass);
            }

            if (version <= CacheVersion.Halo3Retail)
            {
                // add classes missing from H3
                for (int i = sncl.Classes.Count; i < 65; i++)
                {
                    sncl.Classes.Add(sClass);
                }
            }

            // ms23 requires this flag to play a class on the mainmenu
            sncl.Classes[32].Flags |= SoundClasses.Class.ClassFlagBits.ClassPlaysOnMainmenu; // Music
            sncl.Classes[52].Flags |= SoundClasses.Class.ClassFlagBits.ClassPlaysOnMainmenu; // UI

            return(sncl);
        }