/* Yarn Spinner is licensed to you under the terms found in the file LICENSE.md. */ using System.Collections.Generic; using System.Linq; using UnityEditor; using UnityEngine; #nullable enable namespace Yarn.Unity { public class ProjectImportData : ScriptableObject { public List serializedDeclarations = new List(); public bool HasCompileErrors => diagnostics.Count() > 0; public bool containsImplicitLineIDs = false; public List yarnFiles = new List(); [System.Serializable] public struct LocalizationEntry { public string languageID; public DefaultAsset? assetsFolder; public TextAsset? stringsFile; public bool isExternal; public Localization? externalLocalization; } [System.Serializable] public struct DiagnosticEntry { public TextAsset? yarnFile; public List errorMessages; } public enum ImportStatusCode { Unknown = 0, Succeeded = 1, CompilationFailed = 2, NeedsUpgradeFromV1 = 3, } public ImportStatusCode ImportStatus = ImportStatusCode.Unknown; public List diagnostics = new List(); public List sourceFilePatterns = new List(); public List localizations = new List(); public string? baseLanguageName; public LocalizationEntry BaseLocalizationEntry { get { try { return localizations.First(l => l.languageID == baseLanguageName); } catch (System.Exception e) { throw new System.InvalidOperationException("Project import data has no base localisation", e); } } } public bool TryGetLocalizationEntry(string languageID, out LocalizationEntry result) { foreach (var loc in this.localizations) { if (loc.languageID == languageID) { result = loc; return true; } } result = default; return false; } } }