private void DrawGameZone(GameZoneType zone)
        {
            var oldLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = EditorConfig.LargeLabelWidth;

            GUILayout.BeginVertical();

            GUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel("Name");
            zone.name = EditorGUILayout.TextField(zone.name, GUILayout.MaxWidth(EditorConfig.RegularTextFieldWidth));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel("Owner");
            zone.owner = (ZoneOwner)EditorGUILayout.EnumPopup(zone.owner, GUILayout.MaxWidth(EditorConfig.RegularComboBoxWidth));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel("Type");
            zone.type = (ZoneType)EditorGUILayout.EnumPopup(zone.type, GUILayout.MaxWidth(EditorConfig.RegularComboBoxWidth));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel("Owner visibility");
            zone.ownerVisibility = (ZoneOwnerVisibility)EditorGUILayout.EnumPopup(zone.ownerVisibility, GUILayout.MaxWidth(EditorConfig.RegularComboBoxWidth));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel("Opponent visibility");
            zone.opponentVisibility = (ZoneOpponentVisibility)EditorGUILayout.EnumPopup(zone.opponentVisibility, GUILayout.MaxWidth(EditorConfig.RegularComboBoxWidth));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel("Has maximum size");
            zone.hasMaxSize = EditorGUILayout.Toggle(zone.hasMaxSize, GUILayout.MaxWidth(EditorConfig.RegularTextFieldWidth));
            GUILayout.EndHorizontal();

            if (zone.hasMaxSize)
            {
                EditorGUI.indentLevel++;
                GUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("Maximum size");
                zone.maxSize = EditorGUILayout.IntField(zone.maxSize, GUILayout.MaxWidth(EditorConfig.RegularIntFieldWidth + 15));
                GUILayout.EndHorizontal();
                EditorGUI.indentLevel--;
            }

            GUILayout.EndVertical();

            EditorGUIUtility.labelWidth = oldLabelWidth;
        }
 public GameZonesEditor(GameConfiguration config) : base(config)
 {
     gameZonesList = EditorUtils.SetupReorderableList("Game zones", gameConfig.gameZones, ref currentGameZone, (rect, x) =>
     {
         EditorGUI.LabelField(new Rect(rect.x, rect.y, 200, EditorGUIUtility.singleLineHeight), x.name);
     },
                                                      (x) =>
     {
         currentGameZone = x;
     },
                                                      () =>
     {
         var zone = new GameZoneType();
         gameConfig.gameZones.Add(zone);
     },
                                                      (x) =>
     {
         currentGameZone = null;
     });
 }