public byte[] GetData() { var data = Data; if (data != null) { return(data); } if (_source != null) { data = _source.GetData(); Data = data; if (!Settings.EnableSilentMode) { XuaLogger.AutoTranslator.Debug($"Image loaded: {FileName}."); } } return(data); }
private void RegisterImageFromStream(string fullFileName, ITranslatedImageSource source) { try { var fileName = Path.GetFileNameWithoutExtension(fullFileName); var startHash = fileName.LastIndexOf("["); var endHash = fileName.LastIndexOf("]"); if (endHash > -1 && startHash > -1 && endHash > startHash) { var takeFrom = startHash + 1; // load based on whether or not the key is image hashed var parts = fileName.Substring(takeFrom, endHash - takeFrom).Split('-'); string key; string originalHash; if (parts.Length == 1) { key = parts[0]; originalHash = parts[0]; } else if (parts.Length == 2) { key = parts[0]; originalHash = parts[1]; } else { XuaLogger.AutoTranslator.Warn($"Image not loaded (unknown hash): {fullFileName}."); return; } var data = source.GetData(); var currentHash = HashHelper.Compute(data); var isModified = StringComparer.InvariantCultureIgnoreCase.Compare(originalHash, currentHash) != 0; _keyToFileName[key] = fullFileName; // only load images that someone has modified! if (Settings.LoadUnmodifiedTextures || isModified) { RegisterTranslatedImage(fullFileName, key, data, source); if (!Settings.EnableSilentMode) { XuaLogger.AutoTranslator.Debug($"Image loaded: {fullFileName}."); } } else { RegisterUntranslatedImage(key); XuaLogger.AutoTranslator.Warn($"Image not loaded (unmodified): {fullFileName}."); } } else { XuaLogger.AutoTranslator.Warn($"Image not loaded (no hash): {fullFileName}."); } } catch (Exception e) { XuaLogger.AutoTranslator.Error(e, "An error occurred while loading texture file: " + fullFileName); } }