Пример #1
0
            public State(BuilderConfiguration config, Dictionary <string, string> options)
            {
                this._options = options;

                this.modules = new List <BuilderModule>(config.modules.Count);
                foreach (var m in config.modules)
                {
                    var info = BuilderModule.GetModule(m.name);
                    if (info == null)
                    {
                        continue;
                    }

                    var module = info.Instantiate();
                    var o      = new JObject();
                    m.ToJson(o);
                    module.FromJson(o);
                    this.modules.Add(module);
                }
            }
Пример #2
0
        public bool OnGUI()
        {
            EditorGUI.BeginChangeCheck();
            this.name   = EditorGUILayout.TextField("Name", this.name);
            this.option = EditorGUILayout.TextField("Option", this.option);

            GUI.backgroundColor   = Color.gray;
            this.buildPath        = EditorGUILayout.TextField("Path", this.buildPath);
            this.buildTarget      = (BuildTarget)EditorGUILayout.EnumPopup("Type", this.buildTarget);
            this.productName      = EditorGUILayout.TextField("Product Name", this.productName);
            this.bundleIdentifier = EditorGUILayout.TextField("Bundle Identifier", this.bundleIdentifier);
            this.version          = EditorGUILayout.TextField("Version", this.version);
            this.buildOptions     = (BuilderBuildOptions)EditorGUILayout.EnumMaskField("Options", this.buildOptions);

            bool dirty = EditorGUI.EndChangeCheck();

            dirty |= this.PackagesGUI();

            EditorGUILayout.Separator();

            BuilderModule moduleToRemove = null;
            BuilderModule moduleUp       = null;
            BuilderModule moduleDown     = null;

            foreach (var m in this._modules)
            {
                var info = BuilderModule.GetModule(m.name);
                EditorGUILayout.BeginHorizontal();
                if (info == null)
                {
                    EditorGUILayout.LabelField(m.name != null ? "Missing module: " + m.name : "Missing module");
                }
                else
                {
                    m.isCollapsed = !EditorGUILayout.Foldout(!m.isCollapsed, info.description);
                }
                EditorGUI.BeginChangeCheck();

                if (GUILayout.Button("Up", GUILayout.ExpandWidth(false)))
                {
                    moduleUp = m;
                }
                if (GUILayout.Button("Down", GUILayout.ExpandWidth(false)))
                {
                    moduleDown = m;
                }
                if (GUILayout.Button("Delete", GUILayout.ExpandWidth(false)))
                {
                    moduleToRemove = m;
                }
                EditorGUILayout.EndHorizontal();

                if (info != null && !m.isCollapsed)
                {
                    EditorGUI.indentLevel++;
                    m.OnGUI();
                    EditorGUI.indentLevel--;
                }

                dirty |= EditorGUI.EndChangeCheck();
            }

            if (moduleToRemove != null)
            {
                this._modules.Remove(moduleToRemove);
            }
            if (moduleUp != null)
            {
                int i = this._modules.IndexOf(moduleUp);
                if (i > 0)
                {
                    this._modules.RemoveAt(i);
                    this._modules.Insert(i - 1, moduleUp);
                }
            }
            if (moduleDown != null)
            {
                int i = this._modules.IndexOf(moduleDown);
                if (i >= 0 && i < this._modules.Count - 1)
                {
                    this._modules.RemoveAt(i);
                    this._modules.Insert(i + 1, moduleDown);
                }
            }

            return(dirty);
        }
Пример #3
0
        public void FromJson(JObject json)
        {
            this.option       = null;
            this.buildPath    = null;
            this.buildTarget  = (BuildTarget)0;
            this.buildOptions = 0;

            if (json == null)
            {
                return;
            }

            JToken obj;

            if (json.TryGetValue("option", out obj))
            {
                this.option = (string)obj;
            }

            if (json.TryGetValue("path", out obj))
            {
                this.buildPath = (string)obj;
            }

            if (json.TryGetValue("buildTarget", out obj))
            {
                try
                {
                    this.buildTarget = (BuildTarget)System.Enum.Parse(typeof(BuildTarget), (string)obj, true);
                }
                catch
                {
                    this.buildTarget = (BuildTarget)0;
                }
            }

            if (json.TryGetValue("productName", out obj))
            {
                this.productName = (string)obj;
            }

            if (json.TryGetValue("bundleIdentifier", out obj))
            {
                this.bundleIdentifier = (string)obj;
            }

            if (json.TryGetValue("version", out obj))
            {
                this.version = (string)obj;
            }

            if (json.TryGetValue("buildOptions", out obj))
            {
                var options = (JObject)obj;

                foreach (var p in options)
                {
                    if ((bool)p.Value)
                    {
                        try
                        {
                            this.buildOptions |= (BuilderBuildOptions)System.Enum.Parse(typeof(BuilderBuildOptions), p.Key, true);
                        }
                        catch
                        {
                        }
                    }
                }
            }

            this.packages.Clear();
            if (json.TryGetValue("packages", out obj))
            {
                foreach (var o in (JArray)obj)
                {
                    if (o == null || o.Type != JTokenType.String)
                    {
                        continue;
                    }

                    string name = (string)o;
                    if (string.IsNullOrEmpty(name))
                    {
                        continue;
                    }

                    if (!this.packages.Contains(name))
                    {
                        this.packages.Add(name);
                    }
                }
            }

            this._modules.Clear();
            if (json.TryGetValue("modules", out obj))
            {
                foreach (JObject o in (JArray)obj)
                {
                    string guid = (string)o["_guid"];
                    o.Remove("_guid");
                    string name = (string)o["_name"];
                    o.Remove("_name");
                    var info   = BuilderModule.GetModule(guid ?? name);
                    var module = (info != null) ? info.Instantiate() : new BuilderMissingModule(name);
                    module.FromJson(o);
                    this._modules.Add(module);
                }
            }
        }