示例#1
0
        public bool Execute(ViewsSettings settings)
        {
            proceedViews.Clear();

            previousReferences.Clear();
            previousReferences.AddRange(settings.uiViews);
            settings.uiViews.Clear();

            var skinsFolders   = settings.uiViewsSkinFolders;
            var defaultFolders = settings.uiViewsDefaultFolders;

            var groupName = string.IsNullOrEmpty(settings.sourceName)
                ? settings.name
                : settings.sourceName;

            if (skinsFolders.Count > 0)
            {
                var views = LoadUiViews <IView>(skinsFolders);
                views.ForEach(x => AddView(settings, x, false, groupName));
            }

            if (defaultFolders.Count > 0)
            {
                var views = LoadUiViews <IView>(defaultFolders);
                views.ForEach(x => AddView(settings, x, true, groupName));
            }

            settings.uiViews
            .ForEach(ApplyOverrideValues);

            previousReferences.Clear();
            return(settings);
        }
 public static void Build(this ViewsSettings settings)
 {
     if (settings == null)
     {
         return;
     }
     settingsBuilder.Build(settings);
 }
        private static bool Validate(ViewsSettings settings, string[] paths)
        {
            var settingsTargets = GetSettingsPath(settings);
            var changesViews    = paths.
                                  Any(x => settingsTargets.
                                      Any(path => x.IndexOf(path, StringComparison.OrdinalIgnoreCase) >= 0));

            return(changesViews);
        }
示例#4
0
        private ViewsSettings ApplyViewSettingsPipeline(ViewsSettings settings)
        {
            foreach (var settingsCommand in rebuildSettingsCommands)
            {
                var result = settingsCommand.Execute(settings);
                if (!result)
                {
                    break;
                }
            }

            return(settings);
        }
示例#5
0
        public void Unregister(string filepath, IWpfTextView view)
        {
            Debug.Assert(views.ContainsKey(filepath));

            ViewsSettings viewsSettings = views[filepath];

            Debug.Assert(viewsSettings.Views.Contains(view));

            viewsSettings.Views.Remove(view);

            if (viewsSettings.Views.Count == 0)
            {
                views.Remove(filepath);
            }
        }
示例#6
0
        public void Register(string filepath, IWpfTextView view, FileSettings settings)
        {
            ViewsSettings viewsSettings;

            if (!views.TryGetValue(filepath, out viewsSettings))
            {
                viewsSettings = new ViewsSettings(view, settings);
                views.Add(filepath, viewsSettings);
            }
            else
            {
                Debug.Assert(!viewsSettings.Views.Contains(view));

                viewsSettings.Views.Add(view);
            }
        }
示例#7
0
        public void Build(ViewsSettings settings)
        {
            addressableAssetSettings = AddressableAssetSettingsDefaultObject.Settings;

            if (settings.isActive == false)
            {
                return;
            }

            if (!settings)
            {
                GameLog.LogError($"EMPTY UiManagerSettings on UiAssemblyBuilder.Build");
                return;
            }

            ApplyViewSettingsPipeline(settings);

            settings.MarkDirty();
        }
        private void AddView(ViewsSettings viewsSettings, IView view, bool defaultView, string groupName)
        {
            var assetView = view as MonoBehaviour;

            if (assetView == null)
            {
                GameLog.LogError($"View at Path not Unity Asset with View Type {defaultView}");
                return;
            }

            var gameObject = assetView.gameObject;
            var guid       = gameObject.GetGUID();
            var views      = viewsSettings.uiViews;

            if (views.Any(x => string.Equals(guid, x.AssetGUID)))
            {
                return;
            }

            var assetPath = AssetDatabase.GetAssetPath(gameObject);
            var tag       = defaultView ? string.Empty : Path.GetFileName(Path.GetDirectoryName(assetPath));
            var labels    = viewsSettings.labels;

            gameObject.SetAddressableAssetGroup(groupName);
            var assetReference = gameObject.PrefabToAssetReference();

            if (assetReference.RuntimeKeyIsValid() == false)
            {
                GameLog.LogError($"Asset {gameObject.name} by path {assetPath} wrong addressable asset");
                return;
            }

            var viewDescription = new UiViewReference()
            {
                Tag       = tag,
                AssetGUID = assetReference.AssetGUID,
                Type      = view.GetType(),
                View      = assetReference,
                ViewName  = assetReference.editorAsset.name
            };

            views.Add(viewDescription);
        }
示例#9
0
        private HashSet <ViewsSettings> GetSettings(ViewsSettings viewsSettings, HashSet <ViewsSettings> settings)
        {
            if (!settings.Add(viewsSettings))
            {
                return(settings);
            }

            if (!(viewsSettings is ViewSystemSettings systemSettings))
            {
                return(settings);
            }

            var nestedSettings = systemSettings.sources;

            foreach (var nestedSetting in nestedSettings)
            {
                GetSettings(nestedSetting.viewSourceReference.editorAsset, settings);
            }

            return(settings);
        }
        public void Build(ViewsSettings settings)
        {
            addressableAssetSettings = AddressableAssetSettingsDefaultObject.Settings;

            if (settings.isActive == false)
            {
                return;
            }

            proceedViews.Clear();

            if (!settings)
            {
                GameLog.LogError($"EMPTY UiManagerSettings on UiAssemblyBuilder.Build");
                return;
            }

            Reset(settings);

            var skinsFolders   = settings.uiViewsSkinFolders;
            var defaultFolders = settings.uiViewsDefaultFolders;
            var groupName      = string.IsNullOrEmpty(settings.sourceName) ?
                                 settings.name : settings.sourceName;

            if (skinsFolders.Count > 0)
            {
                var views = LoadUiViews <IView>(skinsFolders);
                views.ForEach(x => AddView(settings, x, false, groupName));
            }

            if (defaultFolders.Count > 0)
            {
                var views = LoadUiViews <IView>(defaultFolders);
                views.ForEach(x => AddView(settings, x, true, groupName));
            }

            settings.MarkDirty();
        }
示例#11
0
        private void AddView(ViewsSettings settings, IView view, bool defaultView, string groupName)
        {
            var views     = settings.uiViews;
            var assetView = view as MonoBehaviour;

            if (assetView == null)
            {
                GameLog.LogError($"View at Path not Unity Asset with View Type {defaultView}");
                return;
            }

            var gameObject = assetView.gameObject;
            var guid       = gameObject.GetGUID();

            if (views.Any(x => string.Equals(guid, x.AssetGUID)))
            {
                return;
            }

            var viewReference = CreateViewReference(view, defaultView, settings.applyAddressablesGroup, groupName);

            views.Add(viewReference);
        }
        public void Register(string filepath, IWpfTextView view, FileSettings settings)
        {
            ViewsSettings viewsSettings;

            if (!views.TryGetValue(filepath, out viewsSettings))
            {
                viewsSettings = new ViewsSettings(view, settings);
                views.Add(filepath, viewsSettings);
            }
            else
            {
                Debug.Assert(!viewsSettings.Views.Contains(view));

                viewsSettings.Views.Add(view);
            }
        }
示例#13
0
 public bool Execute(ViewsSettings value)
 {
     return(true);
 }
 public static void Rebuild(ViewsSettings settings)
 {
     settings.Build();
     settings.SetDirty();
     GameLog.Log($"Rebuild Ui View Settings", Color.blue);
 }
 private static IEnumerable <string> GetSettingsPath(ViewsSettings settings)
 {
     return(settings.uiViewsDefaultFolders.
            Concat(settings.uiViewsSkinFolders));
 }
 public void Reset(ViewsSettings settings)
 {
     settings.uiViews.Clear();
 }
示例#17
0
 public bool Execute(ViewsSettings value)
 {
     return(value.IsActive);
 }
示例#18
0
        protected override int ExecuteInternalWithExitCode()
        {
            var opts = this.Options;
            var relativeProjectPath = "project/views.json";

            var directory = opts.Directory;

            if (string.IsNullOrWhiteSpace(directory))
            {
                directory = Environment.CurrentDirectory;
            }

            var settings = CompilerRunner.GetBuildSettings(directory, relativeProjectPath, new SharpJsonSerializer(), true);

            var            newViewSettings = new ViewsSettings();
            IViewsSettings optsSettings    = opts;

            newViewSettings.Imports    = optsSettings.Imports.Union(settings.Imports).ToArray();
            newViewSettings.References = optsSettings.References.Union(settings.References)
                                         .Select(x => new Reference {
                HintPath = x.HintPath, Name = x.Name
            })
                                         .Distinct(DelegatedEqualityComparer.Builder <Reference>().Build(x => x.Name))
                                         .ToArray();


            newViewSettings.LinkerPath = Fold(opts, settings, x => x.LinkerPath);
            newViewSettings.OutputFile = Fold(opts, settings, x => x.OutputFile);
            newViewSettings.RelativeIntermediateDirectory = Fold(opts, settings, x => x.RelativeIntermediateDirectory);
            newViewSettings.RelativeSourceDirectory       = Fold(opts, settings, x => x.RelativeSourceDirectory);
            newViewSettings.SecondaryOutputFile           = Fold(opts, settings, x => x.SecondaryOutputFile);
            newViewSettings.SkipSecondaryOutputFile       = opts.SkipSecondaryOutputFile || settings.SkipSecondaryOutputFile;


            if (opts.SingleRun)
            {
                var logFile = new StreamWriter(File.OpenWrite(Path.Combine(directory, "Logs", DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss"))));

                var logger = opts.Verbose
                        ? (ILogger) new TextWriterLogger(Console.Out)
                        : new NullLogger();

                using (var compiler = CompilerRunner.StartWatching(directory, settings, new ConsoleMessenger(), logger))
                {
                    if (compiler.Compile() == CompileResult.Success)
                    {
                        return(-1);
                    }

                    return(-2);
                }
            }


            using (var executor = new SoufflotExecutor(directory, settings, new ConsoleMessenger(), opts.Port))
            {
                executor.Run();
            }

            return(0);
        }