﻿using System.Collections.Generic;
using CVR.CCKEditor.Localization;
using CVR.CCKEditor.Validations.Context;
using UnityEditor;
using UnityEngine;

namespace CVR.CCKEditor.Validations.Steps
{
    public class SerializationModeStep : IValidationStep
    {
        public void ProcessObject(BaseValidationContext context, Component component, Object asset)
        {
            // Not applicable
        }

        public IEnumerable<ValidationResult> GetResults()
        {
            if (EditorSettings.serializationMode != SerializationMode.ForceText)
            {
                yield return new DetailedValidationResult
                {
                    Severity = ValidationSeverity.Error,
                    Message = CCKLocalizationManager.GetString("Validations.EDITOR_SERIALIZATION_MODE_ERROR"),
                    AutoFix = () =>
                    {
                        if (EditorUtility.DisplayDialog(
                            CCKLocalizationManager.GetString("Validations.EDITOR_SERIALIZATION_MODE_CHANGE_TITLE"),
                            CCKLocalizationManager.GetString("Validations.EDITOR_SERIALIZATION_MODE_CHANGE_MESSAGE"),
                            CCKLocalizationManager.GetString("Common.YES"),
                            CCKLocalizationManager.GetString("Common.NO")))
                        {
                            EditorSettings.serializationMode = SerializationMode.ForceText;
                        }
                    },
                    // TODO: We need a proper way to hide the foldout for object-specific results
                };
            }
        }
    }
}