public void OnEnable()
        {
            inited = false;
            if (!flagsTex)
            {
                flagsTex = (Texture2D)Resources.Load("EAdventureData/img/icons/flag16", typeof(Texture2D));
            }
            if (!varTex)
            {
                varTex = (Texture2D)Resources.Load("EAdventureData/img/icons/vars", typeof(Texture2D));
            }

            variablesAndFlagsList = new ColumnList(new List <int>(), typeof(int))
            {
                RequestRepaint = Repaint,
                Columns        = new List <ColumnList.Column>()
                {
                    new ColumnList.Column(), new ColumnList.Column()
                    {
                        SizeOptions = new GUILayoutOption[] { GUILayout.Width(80) }
                    }
                },
                drawCell = (rect, row, column, isActive, isFocused) =>
                {
                    // The list is only storing indexes
                    var index = (int)variablesAndFlagsList.list[row];
                    var elem  = "";
                    switch (openedWindow)
                    {
                    case WindowType.FLAGS: elem = varFlagSummary.getFlag(index); break;

                    case WindowType.VARS: elem = varFlagSummary.getVar(index); break;
                    }

                    switch (column)
                    {
                    case 0:
                        EditorGUI.LabelField(rect, elem);
                        break;

                    case 1:
                        object value = 0;
                        if (Application.isPlaying)
                        {
                            switch (openedWindow)
                            {
                            case WindowType.FLAGS: value = Game.Instance.GameState.CheckFlag(elem) == 1 ? "inactive" : "active"; break;

                            case WindowType.VARS: value = Game.Instance.GameState.GetVariable(elem); break;
                            }
                        }
                        else
                        {
                            switch (openedWindow)
                            {
                            case WindowType.FLAGS: value = varFlagSummary.getFlagReferences(index); break;

                            case WindowType.VARS: value = varFlagSummary.getVarReferences(index); break;
                            }
                        }
                        EditorGUI.LabelField(rect, value.ToString());
                        break;
                    }
                },
                onRemoveCallback = OnDeleteClicked,
                onAddCallback    = OnAddCliked,
                draggable        = false
            };
        }
Пример #2
0
        public void OnEnable()
        {
            inited = false;
            if (!flagsTex)
            {
                flagsTex = (Texture2D)Resources.Load("EAdventureData/img/icons/flag16", typeof(Texture2D));
            }
            if (!varTex)
            {
                varTex = (Texture2D)Resources.Load("EAdventureData/img/icons/vars", typeof(Texture2D));
            }

            variablesAndFlagsList = new ColumnList(new List <int>(), typeof(int))
            {
                RequestRepaint = Repaint,
                Columns        = new List <ColumnList.Column>()
                {
                    new ColumnList.Column(), new ColumnList.Column()
                    {
                        SizeOptions = new GUILayoutOption[] { GUILayout.Width(80) }
                    }
                },
                drawCell = (rect, row, column, isActive, isFocused) =>
                {
                    // The list is only storing indexes
                    var index = (int)variablesAndFlagsList.list[row];
                    var elem  = "";
                    switch (openedWindow)
                    {
                    case WindowType.FLAGS: elem = varFlagSummary.getFlag(index); break;

                    case WindowType.VARS: elem = varFlagSummary.getVar(index); break;
                    }

                    switch (column)
                    {
                    case 0:
                        if (Application.isPlaying || !isActive)
                        {
                            EditorGUI.LabelField(rect, elem);
                        }
                        else
                        {
                            EditorGUI.BeginChangeCheck();
                            var newName = EditorGUI.DelayedTextField(rect, elem);
                            if (EditorGUI.EndChangeCheck())
                            {
                                if (varFlagSummary.getVarsAndFlags().Any(s => s.Equals(newName, StringComparison.InvariantCultureIgnoreCase)))
                                {
                                    Controller.Instance.ShowErrorDialog("VarFlag.Error.NameIsUsed.Title".Traslate(), "VarFlag.Error.NameIsUsed.Message".Traslate());
                                }
                                else
                                {
                                    EditorUtility.DisplayDialog("WIP", "Rename is WIP", "Ok");
                                }
                            }
                        }
                        break;

                    case 1:
                        object value = 0;
                        if (Application.isPlaying)
                        {
                            switch (openedWindow)
                            {
                            case WindowType.FLAGS: value = Game.Instance.GameState.CheckFlag(elem) == 1 ? "inactive" : "active"; break;

                            case WindowType.VARS: value = Game.Instance.GameState.GetVariable(elem); break;
                            }
                        }
                        else
                        {
                            switch (openedWindow)
                            {
                            case WindowType.FLAGS: value = varFlagSummary.getFlagReferences(index); break;

                            case WindowType.VARS: value = varFlagSummary.getVarReferences(index); break;
                            }
                        }
                        EditorGUI.LabelField(rect, value.ToString());
                        break;
                    }
                },
                onRemoveCallback = OnDeleteClicked,
                onAddCallback    = OnAddCliked,
                draggable        = false
            };
        }