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); }
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; }