Beispiel #1
0
        internal override bool Reconstruct(BlamLib.Blam.CacheFile c)
        {
            var clpi = c.TagIndexManager as ICacheLanguagePackContainer;

            if (clpi != null)
            {
                var h2_cache = c as Halo2.CacheFile;

                var interop = new s_language_cache_interop[(int)LanguageType.kMax];
                int total_string_buffer_size = 0;

                // For each language, get the string data referenced by this tag
                for (LanguageType lang = LanguageType.English; lang < LanguageType.kMax; lang++)
                {
                    total_string_buffer_size = interop[(int)lang].Initialize(clpi.LanguagePackGet(lang),
                                                                             total_string_buffer_size, LanguageHandles[(int)lang]);
                }

                // Resize the string data container to have enough memory for all of our language strings
                this.StringData.Value = new byte[total_string_buffer_size];

                // For each language, copy the string data and initialize the reference blocks
                for (LanguageType lang = LanguageType.English; lang < LanguageType.kMax; lang++)
                {
                    interop[(int)lang].ReconstructTagData(this, lang);
                }

                // Null the handles for the extracted tag
                foreach (var handle in LanguageHandles)
                {
                    handle.Value = 0;
                }

                return(true);
            }

            return(false);
        }
Beispiel #2
0
		internal override bool Reconstruct(BlamLib.Blam.CacheFile c)
		{
			var clpi = c.TagIndexManager as ICacheLanguagePackContainer;

			if (clpi != null)
			{
				var h2_cache = c as Halo2.CacheFile;

				var interop = new s_language_cache_interop[(int)LanguageType.kMax];
				int total_string_buffer_size = 0;

				// For each language, get the string data referenced by this tag
				for (LanguageType lang = LanguageType.English; lang < LanguageType.kMax; lang++)
					total_string_buffer_size = interop[(int)lang].Initialize(clpi.LanguagePackGet(lang), 
						total_string_buffer_size, LanguageHandles[(int)lang]);

				// Resize the string data container to have enough memory for all of our language strings
				this.StringData.Value = new byte[total_string_buffer_size];

				// For each language, copy the string data and initialize the reference blocks
				for (LanguageType lang = LanguageType.English; lang < LanguageType.kMax; lang++)
					interop[(int)lang].ReconstructTagData(this, lang);

				// Null the handles for the extracted tag
				foreach (var handle in LanguageHandles)
					handle.Value = 0;

				return true;
			}

			return false;
		}