using System;
using System.Threading.Tasks;
using UnityEngine;

namespace Gyvr.Mythril2D
{
    [Serializable]
    public class ToggleMount : ICommand
    {
        [SerializeField] private Mount m_mount;

        public async Task Execute()
        {
            CharacterBase player = GameManager.Player;

            if (m_mount == null)
            {
                if (player != null && player.controller is RiderController rider)
                {
                    if (rider.isRiding) {
                        rider.currentMount.DismountPlayer();
                    }
                    if (rider.lastMount != null)
                    {
                        rider.lastMount.Kill();
                    }
                }
                    return;
            }

            if (m_mount.IsMounted)
            {
                m_mount.DismountPlayer();
            }
            else
            {
                
                if (player != null)
                {
                    m_mount.MountPlayer(player);
                }
            }

            await Task.CompletedTask;
        }
    }
}
