﻿using UnityEngine;
#if Cinemachine_v3
using Unity.Cinemachine;
#else
using Cinemachine;
#endif

namespace AC.Downloads.CinemachineIntegration
{

#if Cinemachine_v3
	[AddComponentMenu ("Adventure Creator/Save system/Remember Cinemachine Spline Cart")]
	[RequireComponent (typeof (CinemachineSplineCart))]
#else
	[AddComponentMenu ("Adventure Creator/Save system/Remember Cinemachine Dolly Cart")]
	[RequireComponent (typeof (CinemachineDollyCart))]
#endif
	public class RememberCinemachineDollyCart : Remember
	{

		public override string SaveData ()
		{
			CinemachineDollyCartData data = new CinemachineDollyCartData ();
			data.objectID = constantID;
			data.savePrevented = savePrevented;

#if Cinemachine_v3
			var dollyCart = GetComponent<CinemachineSplineCart> ();
			data.position = dollyCart.SplinePosition;
#else
			var dollyCart = GetComponent<CinemachineDollyCart> ();
			data.speed = dollyCart.m_Speed;
			data.position = dollyCart.m_Position;
#endif

			return Serializer.SaveScriptData<CinemachineDollyCartData> (data);
		}


		public override void LoadData (string stringData)
		{
			CinemachineDollyCartData data = Serializer.LoadScriptData<CinemachineDollyCartData> (stringData);
			if (data == null) return;
			SavePrevented = data.savePrevented; if (savePrevented) return;

#if Cinemachine_v3
			var dollyCart = GetComponent<CinemachineSplineCart> ();
			dollyCart.SplinePosition = data.position;
#else
			var dollyCart = GetComponent<CinemachineDollyCart> ();
			dollyCart.m_Speed = data.speed;
			dollyCart.m_Position = data.position;
#endif
		}

	}


	[System.Serializable]
	public class CinemachineDollyCartData : RememberData
	{

		public float speed;
		public float position;

		public CinemachineDollyCartData () { }

	}

}