using CommonAI.ZoneClient;
using CommonAIClient.Unity.Utils;

namespace CommonAIClient.Unity.Battle
{
    public partial class ComAICell : BattleObject
    {
        private ZoneObject mZoneObject;


        protected ZoneObject ZObject { get { return mZoneObject; } }
        public uint ObjectID { get { return mZoneObject.ObjectID; } }
        /// <summary>
        /// ZObject X
        /// </summary>
        public float X { get { return mZoneObject.X; } }
        /// <summary>
        /// ZObject Y
        /// </summary>
        public float Y { get { return mZoneObject.Y; } }
        /// <summary>
        /// ZObject Z
        /// </summary>
        public float Z { get { return mZoneObject.Z; } }


        public ComAICell(BattleScene battleScene, ZoneObject obj)
            : base(battleScene, string.Format("{0}_{1}({2})", obj.GetType().Name, obj.Name, obj.ObjectID))
        {
            mZoneObject = obj;
            RegistAllObjectEvent();
        }

        protected override void OnDispose()
        {
            base.OnDispose();
            mZoneObject.Dispose();
        }

        protected override void OnUpdate(float deltaTime)
        {
            base.OnUpdate(deltaTime);
            SyncState();
        }

        protected virtual void SyncState()
        {
            this.ObjectRoot.ZonePos2NavPos(ZObject.Parent.Terrain.TotalHeight
                , ZObject.X, ZObject.Y, ZObject.Z);
            this.ObjectRoot.ZoneRot2UnityRot(ZObject.Direction);
        }
    }

}