public void OnGUI()
        {
            EditorGUILayout.BeginVertical();

            EditorGUILayout.BeginHorizontal();

            if (GUILayout.Button("Load"))
            {
                var path = EditorUtility.OpenFilePanel("select", "", "txt");
                _ItemSet = new ItemPrototypeSet(Regulus.Utility.Serialization.Read <ItemPrototype[]>(path));
            }
            if (GUILayout.Button("Save"))
            {
                var path = EditorUtility.SaveFilePanel("select", "", "items.txt", "txt");
                Regulus.Utility.Serialization.Write(_ItemSet.GetItems().ToArray(), path);
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            _Begin = EditorGUILayout.IntField("Begin", _Begin);
            _End   = EditorGUILayout.IntField("End", _End);
            EditorGUILayout.EndHorizontal();

            var set         = _ItemSet.GetItems().Skip(_Begin).Take(_End - _Begin).ToArray();
            var length      = set.Length;
            var fieldLength = 5;
            var lineLength  = length / fieldLength;

            EditorGUILayout.BeginVertical();
            for (int i = 0; i <= lineLength; i++)
            {
                int index = i * fieldLength;
                int end   = index + fieldLength;
                EditorGUILayout.BeginHorizontal();
                for (; index < end && index < length; index++)
                {
                    EditorGUILayout.SelectableLabel(set[index].Name);
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.EndVertical();



            EditorGUILayout.BeginHorizontal();

            _ItemName = EditorGUILayout.TextField("Name", _ItemName);


            _EquipPart    = (EQUIP_PART)EditorGUILayout.EnumPopup("EquipPart", _EquipPart);
            _ItemFeatures = (ITEM_FEATURES)EditorGUILayout.EnumPopup("Features", _ItemFeatures);
            _Description  = EditorGUILayout.TextField("Description", _Description);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Set/Add"))
            {
                _ItemSet.Add(new ItemPrototype()
                {
                    Name      = _ItemName,
                    Features  = _ItemFeatures,
                    EquipPart = _EquipPart
                });
            }
            if (GUILayout.Button("Load"))
            {
                var item = _ItemSet.Find(_ItemName);
                _ItemFeatures = item.Features;
                _Description  = item.Description;
                _EquipPart    = item.EquipPart;
            }
            if (GUILayout.Button("Remove"))
            {
                _ItemSet.Remove(_ItemName);
            }

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();
        }
        public void OnGUI()
        {
            EditorGUILayout.BeginVertical();

            EditorGUILayout.BeginHorizontal();

            if (GUILayout.Button("Load"))
            {
                var path = EditorUtility.OpenFilePanel("select", "", "txt");
                _ItemSet = new ItemPrototypeSet(Regulus.Utility.Serialization.Read<ItemPrototype[]>(path));
            }
            if (GUILayout.Button("Save"))
            {
                var path = EditorUtility.SaveFilePanel("select", "", "items.txt", "txt");
                Regulus.Utility.Serialization.Write(_ItemSet.GetItems().ToArray() , path);
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            _Begin = EditorGUILayout.IntField("Begin", _Begin);
            _End = EditorGUILayout.IntField("End", _End);
            EditorGUILayout.EndHorizontal();

            var set = _ItemSet.GetItems().Skip(_Begin).Take(_End - _Begin).ToArray();
            var length = set.Length;
            var fieldLength = 5;
            var lineLength = length  / fieldLength ;
            EditorGUILayout.BeginVertical();
            for (int i = 0; i <= lineLength ; i++)
            {
                int index = i * fieldLength;
                int end = index + fieldLength ;
                EditorGUILayout.BeginHorizontal();
                for (; index < end && index < length; index++)
                {
                    EditorGUILayout.SelectableLabel(set[index].Id);
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginHorizontal();

            _ItemName = EditorGUILayout.TextField("Name", _ItemName);

            _EquipPart = (EQUIP_PART)EditorGUILayout.EnumPopup("EquipPart", _EquipPart);

            _Description = EditorGUILayout.TextField("Description", _Description);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Set/Add"))
            {

                _ItemSet.Add(new ItemPrototype()
                {
                    Id = _ItemName,

                    EquipPart = _EquipPart

                } );
            }
            if (GUILayout.Button("Load"))
            {
                var item = _ItemSet.Find(_ItemName);
                _Description = item.Description;
                _EquipPart = item.EquipPart;
            }
            if (GUILayout.Button("Remove"))
            {
                _ItemSet.Remove(_ItemName);
            }

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();
        }
 public ItemEditor()
 {
     _ItemSet = new ItemPrototypeSet();
 }
 public ItemEditor()
 {
     _ItemSet = new ItemPrototypeSet();
 }