﻿using System;
using HutongGames.PlayMaker;

namespace BansheeGz.BGDatabase
{
    [ActionCategory("BansheeGz")]
    [Tooltip("SaveLoad addon: Load with EasySave")]
    public class BGPlaymakerSaveWithEasySave : FsmStateAction
    {
        [RequiredField] public FsmString EasySaveKey;

        public FsmString EasySavePassword;
        public FsmString FileName;

        public override void OnEnter()
        {
            var key = EasySaveKey.Value;
            if (string.IsNullOrWhiteSpace(key)) throw new Exception("EasySaveKey is required parameter!");

            var saveData = BGRepo.I.Addons.Get<BGAddonSaveLoad>().Save();
            var password = EasySavePassword.Value;
            var fileName = FileName.Value;

            var noPassword = string.IsNullOrEmpty(password);
            var noFileName = string.IsNullOrEmpty(fileName);

            if (noPassword && noFileName) ES3.Save(key, saveData);
            else
            {
                var settings = new ES3Settings();
                if (!noPassword)
                {
                    settings.encryptionType = ES3.EncryptionType.AES;
                    settings.encryptionPassword = password;
                }

                if (!noFileName) settings.path = fileName;

                ES3.Save(key, saveData, settings);
            }

            Finish();
        }
    }
}