internal void RegisterImageFromData(string textureName, string key, byte[] data) { var name = textureName.SanitizeForFileSystem(); var originalHash = HashHelper.Compute(data); // allow hash and key to be the same; only store one of them then! string fileName; if (key == originalHash) { fileName = name + " [" + key + "].png"; } else { fileName = name + " [" + key + "-" + originalHash + "].png"; } var fullName = Path.Combine(Settings.TexturesPath, fileName); File.WriteAllBytes(fullName, data); XuaLogger.AutoTranslator.Info("Dumped texture file: " + fileName); _keyToFileName[key] = fullName; if (Settings.LoadUnmodifiedTextures) { var source = new FileSystemTranslatedImageSource(fullName); RegisterTranslatedImage(fullName, key, data, source); } else { RegisterUntranslatedImage(key); } }
private void RegisterImageFromFile(string fullFileName) { var fileExists = File.Exists(fullFileName); if (fileExists) { // Perhaps use this instead???? https://github.com/icsharpcode/SharpZipLib/wiki/Unpack-a-zip-using-ZipInputStream if (fullFileName.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)) { var zf = new ZipFile(fullFileName); try { foreach (var entry in zf) { if (entry is ZipEntry zipEntry) { if (zipEntry.IsFile && zipEntry.Name.EndsWith(".png", StringComparison.OrdinalIgnoreCase)) { var source = new ZipFileTranslatedImageSource(zf, zipEntry); RegisterImageFromStream(fullFileName + '\\' + zipEntry.Name, source); } } } } finally { if (Settings.CacheTexturesInMemory) { zf.Close(); } } } else { var source = new FileSystemTranslatedImageSource(fullFileName); RegisterImageFromStream(fullFileName, source); } } }