Beispiel #1
0
        public NxFile Load(string filePath)
        {
            _logger.LogInformation(LocalizationManager.Instance.Current.Keys.Log_OpeningFile.SafeFormat(filePath));


            HashSet <MissingKey> missingKeys = new();

            _fileItemLoader.MissingKey += (_, args) =>
            {
                var ex         = args.Exception;
                var missingKey = new MissingKey(ex.Name, ex.Type);

                missingKeys.Add(missingKey);
            };

            IItem        rootItem;
            FileOverview fileOverview;

            switch (_fileTypeAnalyzer.GetFileType(filePath))
            {
            case FileType.UNKNOWN:
                throw new FileNotSupportedException(filePath);

            case FileType.XCI:
                var xciItem = _fileItemLoader.LoadXci(filePath);
                fileOverview = _fileOverviewLoader.Load(xciItem);
                rootItem     = xciItem;

                break;

            case FileType.NSP:
                var nspItem = _fileItemLoader.LoadNsp(filePath);
                fileOverview = _fileOverviewLoader.Load(nspItem);
                rootItem     = nspItem;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            foreach (var missingKey in missingKeys)
            {
                fileOverview.MissingKeys.Add(missingKey);
            }

            var openedFile = new NxFile(filePath, rootItem, fileOverview);

            return(openedFile);
        }
        private void OnMissingKey(string language, string @namespace, string key, List <string> possibleKeys)
        {
            if (MissingKey == null && MissingKeyHandlers.Count == 0)
            {
                return;
            }

            var args = new MissingKeyEventArgs(language, @namespace, key, possibleKeys.ToArray());

            MissingKey?.Invoke(this, args);

            foreach (var missingKeyHandler in MissingKeyHandlers)
            {
                missingKeyHandler.HandleMissingKeyAsync(this, args);
            }
        }
Beispiel #3
0
 private void NotifyMissingKey(MissingKeyException ex, IItem parentItem)
 {
     MissingKey?.Invoke(this, new MissingKeyExceptionHandlerArgs(ex, parentItem));
 }