private byte[]? LoadExpectedIcon(SectionItem sectionItem, NacpLanguage nacpLanguage)
            {
                var languageName = nacpLanguage.ToString();

                var expectedFileName = $"icon_{languageName}.dat";

                var iconItem = sectionItem.ChildItems.FirstOrDefault(item => string.Equals(item.Name, expectedFileName, StringComparison.OrdinalIgnoreCase));

                if (iconItem == null)
                {
                    var message = LocalizationManager.Instance.Current.Keys.LoadingError_IconMissing.SafeFormat(expectedFileName);
                    sectionItem.Errors.Add(message);
                    _logger.LogError(message);
                    return(null);
                }

                var fileSystem = sectionItem.FileSystem;

                if (fileSystem == null)
                {
                    return(null);
                }

                try
                {
                    using var uniqueRefFile = new UniqueRef <IFile>();

                    fileSystem.OpenFile(ref uniqueRefFile.Ref(), iconItem.Path.ToU8Span(), OpenMode.Read).ThrowIfFailure();
                    var file = uniqueRefFile.Release();

                    file.GetSize(out var fileSize).ThrowIfFailure();
                    var bytes = new byte[fileSize];
                    file.AsStream().Read(bytes);
                    return(bytes);
                }
                catch (Exception ex)
                {
                    var message = LocalizationManager.Instance.Current.Keys.LoadingError_FailedToLoadIcon.SafeFormat(ex.Message);
                    iconItem.Errors.Add(message);
                    _logger.LogError(ex, message);
                    return(null);
                }
            }
Exemple #2
0
 public TitleInfo(ref ApplicationControlTitle applicationControlTitle, NacpLanguage language)
 {
     _applicationControlTitle = applicationControlTitle;
     Language = language;
 }