void OnEnable()
        {
            skin = Resources.Load("vSkin") as GUISkin;
            vItemEnumsList list = (vItemEnumsList)target;

            serializedObject.FindProperty("itemTypeEnumFormats").arraySize = serializedObject.FindProperty("itemTypeEnumValues").arraySize;
            for (int i = 0; i < list.itemTypeEnumValues.Count; i++)
            {
                vItemType t;
                if (Enum.TryParse <vItemType>(list.itemTypeEnumValues[i], out t))
                {
                    list.itemTypeEnumFormats[i] = t.DisplayFormat();
                }
            }

            serializedObject.FindProperty("itemAttributesEnumFormats").arraySize = serializedObject.FindProperty("itemAttributesEnumValues").arraySize;
            for (int i = 0; i < list.itemAttributesEnumValues.Count; i++)
            {
                vItemAttributes t;
                if (Enum.TryParse <vItemAttributes>(list.itemAttributesEnumValues[i], out t))
                {
                    list.itemAttributesEnumFormats[i] = t.DisplayFormat();
                }
            }
        }
Example #2
0
        void DrawItemEnumListData(vItemEnumsList data)
        {
            SerializedObject _data = new SerializedObject(data);

            _data.Update();
            GUILayout.BeginVertical("box");
            GUILayout.Box(data.name, GUILayout.ExpandWidth(true));
            EditorGUILayout.ObjectField(data, typeof(vItemEnumsList), false);
            GUILayout.BeginHorizontal();

            #region Item Types
            var itemTypeEnumValueList = _data.FindProperty("itemTypeEnumValues");
            GUILayout.BeginVertical("box", GUILayout.Width(200));
            GUILayout.BeginHorizontal("box", GUILayout.ExpandWidth(true));
            GUILayout.Label("Item Types", EditorStyles.miniBoldLabel);
            EditorGUILayout.PropertyField(itemTypeEnumValueList.FindPropertyRelative("Array.size"), GUIContent.none);
            GUILayout.EndHorizontal();

            var labelWidht = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 30f;
            var color = GUI.color;
            for (int i = 0; i < itemTypeEnumValueList.arraySize; i++)
            {
                if (_itemTypeNames.Contains(itemTypeEnumValueList.GetArrayElementAtIndex(i).stringValue))
                {
                    GUI.color = Color.gray;
                }
                else
                {
                    GUI.color = color;
                }
                EditorGUILayout.PropertyField(itemTypeEnumValueList.GetArrayElementAtIndex(i), new GUIContent(i.ToString()));
            }

            GUILayout.EndVertical();
            #endregion
            #region Item Attributes
            GUI.color = color;
            var itemAttributesEnumValuesList = _data.FindProperty("itemAttributesEnumValues");
            GUILayout.BeginVertical("box", GUILayout.Width(200));
            GUILayout.BeginHorizontal("box", GUILayout.ExpandWidth(true));
            GUILayout.Label("Item Attributes", EditorStyles.miniBoldLabel);
            EditorGUILayout.PropertyField(itemAttributesEnumValuesList.FindPropertyRelative("Array.size"), GUIContent.none);
            GUILayout.EndHorizontal();


            for (int i = 0; i < itemAttributesEnumValuesList.arraySize; i++)
            {
                if (_itemAttributeNames.Contains(itemAttributesEnumValuesList.GetArrayElementAtIndex(i).stringValue))
                {
                    GUI.color = Color.gray;
                }
                else
                {
                    GUI.color = color;
                }
                EditorGUILayout.PropertyField(itemAttributesEnumValuesList.GetArrayElementAtIndex(i), new GUIContent(i.ToString()));
            }

            GUILayout.EndVertical();
            #endregion

            GUILayout.EndHorizontal();
            GUILayout.EndVertical();
            _data.ApplyModifiedProperties();
            if (_data.ApplyModifiedProperties())
            {
                EditorUtility.SetDirty(data);
            }
            EditorGUIUtility.labelWidth = labelWidht;
            GUI.color = color;
        }