Beispiel #1
0
            protected override IEnumerator StartJobs()
            {
                Logger.DebugLogDebug($"CardJob.StartJobs: {this}");
                var jobs = new List <Coroutine>();

                var fullName = _chaFile.GetFullName();

                foreach (var name in _chaFile.EnumerateNames())
                {
                    FullNameHandled = FullNameHandled || name.Value == fullName;

                    var i       = name.Key;
                    var chaFile = _chaFile;

                    var nameScope = new NameScope(_chaFile.GetSex(), _chaFile.GetNameType(i));

                    if (NoTranslate[nameScope].Contains(name.Value))
                    {
                        continue;
                    }

                    if (RecentTranslationsByName[nameScope].TryGetValue(name.Value, out var cachedName))
                    {
                        //Logger.LogDebug($"StartJobs: {this}: cache hit: {name.Value} => {cachedName}");
                        chaFile.SetTranslatedName(i, cachedName);
                        continue;
                    }

                    if (!StringUtils.ContainsJapaneseChar(name.Value))
                    {
                        NoTranslate[nameScope].Add(name.Value);
                        continue;
                    }

                    JobStarted();


                    var job = StartCoroutine(Instance.TranslateCardName(name.Value,
                                                                        nameScope,
                                                                        Handlers.UpdateCardName(_chaFile, i),
                                                                        Handlers.AddNameToCache(name.Value, true),
                                                                        JobCompleteHandler));

                    jobs.Add(job);
                }

                foreach (var job in jobs)
                {
                    yield return(job);
                }
            }