internal static bool TryGetSettings(out ApexSettings settings)
        {
            if (_instance != null)
            {
                settings = _instance;
                return(true);
            }

            var    apexRoot           = AssetPath.GetApexRoot(false);
            var    dataFolder         = AssetPath.GetApexDataFolder(false);
            var    relativeDataFolder = AssetPath.GetApexDataFolder(true);
            string settingsPath       = AssetPath.Combine(relativeDataFolder, "ApexSettings.asset");

            AssetPath.EnsurePath(relativeDataFolder);

            _instance = AssetDatabase.LoadAssetAtPath(settingsPath, typeof(ApexSettings)) as ApexSettings;

            bool settingsFound = (_instance != null);

            if (!settingsFound)
            {
                _instance = ScriptableObject.CreateInstance <ApexSettings>();

                AssetDatabase.CreateAsset(_instance, settingsPath);
                AssetDatabase.SaveAssets();
            }

            _instance.rootFolder         = apexRoot;
            _instance.dataFolder         = dataFolder;
            _instance.relativeDataFolder = relativeDataFolder;
            settings = _instance;
            return(settingsFound);
        }
示例#2
0
        internal static void WriteNameMapFile()
        {
            var targetFolder = AIGeneralSettings.instance.nameMapPath;

            if (string.IsNullOrEmpty(targetFolder))
            {
                targetFolder = AssetPath.GetApexRoot(true);
                AIGeneralSettings.instance.nameMapPath = targetFolder;
                AIGeneralSettings.instance.SaveChanges();
            }

            targetFolder = AssetPath.GetFullPath(targetFolder);
            if (!Directory.Exists(targetFolder))
            {
                Debug.LogWarning("Unable to create name map, please setup a target folder under settings.");
                return;
            }

            var filePath = AssetPath.Combine(targetFolder, AIGeneralSettings.NameMapFileName);

            var b      = new StringBuilder();
            var aiList = StoredAIs.AIs;
            var count  = aiList.count;

            for (int i = 0; i < count; i++)
            {
                var name = correctName(aiList[i].name);
                if (name != null)
                {
                    b.AppendFormat(Template.ItemTemplate, name, aiList[i].aiId);
                    b.AppendLine();
                }
            }

            using (var writer = new StreamWriter(filePath))
            {
                writer.WriteLine(Template.FileTemplate, b);
            }

            AssetDatabase.Refresh();
        }