﻿using UnityEngine;

namespace JLGames.RocketDriver.Actions.Component2D
{
    public class Sortable2DZObject : MonoBehaviour
    {
        public Sortable2D.SortMode SortMode;
        public bool LocalPosition;
        public bool Reverse;

        public float MinZ = 0;
        public float MaxZ = 10;

        private void Update()
        {
            if (LocalPosition)
            {
                var pos = transform.localPosition;
                switch (SortMode)
                {
                    case Sortable2D.SortMode.X:
                        pos.z = Sortable2D.ToZ(MinZ, MaxZ - MinZ, pos.x, Reverse);
                        break;
                    case Sortable2D.SortMode.Y:
                        pos.z = Sortable2D.ToZ(MinZ, MaxZ - MinZ, pos.y, Reverse);
                        break;
                    case Sortable2D.SortMode.XY:
                        pos.z = Sortable2D.ToZ(MinZ, MaxZ - MinZ, pos.x, pos.y, Reverse);
                        break;
                    case Sortable2D.SortMode.YX:
                        pos.z = Sortable2D.ToZ(MinZ, MaxZ - MinZ, pos.y, pos.x, Reverse);
                        break;
                }

                transform.localPosition = pos;
            }
            else
            {
                var pos = transform.position;
                switch (SortMode)
                {
                    case Sortable2D.SortMode.X:
                        pos.z = Sortable2D.ToZ(MinZ, MaxZ - MinZ, pos.x, Reverse);
                        break;
                    case Sortable2D.SortMode.Y:
                        pos.z = Sortable2D.ToZ(MinZ, MaxZ - MinZ, pos.y, Reverse);
                        break;
                    case Sortable2D.SortMode.XY:
                        pos.z = Sortable2D.ToZ(MinZ, MaxZ - MinZ, pos.x, pos.y, Reverse);
                        break;
                    case Sortable2D.SortMode.YX:
                        pos.z = Sortable2D.ToZ(MinZ, MaxZ - MinZ, pos.y, pos.x, Reverse);
                        break;
                }

                transform.position = pos;
            }
        }
    }
}