﻿/*     INFINITY CODE 2013-2019      */
/*   http://www.infinity-code.com   */

using HutongGames.PlayMaker;

namespace InfinityCode.RealWorldTerrain.Playmaker
{
    [ActionCategory(CATEGORY)]
    [Tooltip("Get the coordinates of the corners of Real World Terrain Container")]
    public class GetCornersCoordinates : RealWorldTerrainFSMStateAction
    {
        [Tooltip("Real World Terrain Container")]
        public RealWorldTerrainMonoBase terrainItem;

        [RequiredField]
        [Tooltip("Top latitude")]
        [UIHint(UIHint.Variable)]
        public FsmFloat storeTopLatitude;

        [RequiredField]
        [Tooltip("Left longitude")]
        [UIHint(UIHint.Variable)]
        public FsmFloat storeLeftLongitude;

        [RequiredField]
        [Tooltip("Bottom latitude")]
        [UIHint(UIHint.Variable)]
        public FsmFloat storeBottomLatitude;

        [RequiredField]
        [Tooltip("Right longitude")]
        [UIHint(UIHint.Variable)]
        public FsmFloat storeRightLongitude;

        public override void Reset()
        {
            storeTopLatitude = storeLeftLongitude = storeBottomLatitude = storeRightLongitude = null;
        }

        public override void OnEnter()
        {
            DoEnter();
            Finish();
        }

        private void DoEnter()
        {
            if (terrainItem == null) terrainItem = container;
            storeTopLatitude.Value = (float)terrainItem.topLatitude;
            storeLeftLongitude.Value = (float)terrainItem.leftLongitude;
            storeBottomLatitude.Value = (float)terrainItem.bottomLatitude;
            storeRightLongitude.Value = (float)terrainItem.rightLongitude;
        }
    }
}