using System.Drawing;
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace AGVControl.Models
{
    public class RFIDPoint
    {
        public Point Location { get; set; }
        public ushort Value { get; set; }
        public string NextRFID { get; set; }  // 다음 RFID 포인트의 값
        public bool IsBidirectional { get; set; }  // 양방향 연결 여부
        public bool IsRotatable { get; set; }  // 회전 가능 여부
        public AgvDir? FixedDirection { get; set; }  // 고정 방향(없으면 null)
        public bool IsTerminal { get; set; }      // 종단 여부
        public bool NeedTurn { get; set; }

        public bool TurnStop { get; set; }
        public bool TurnOK { get; set; }
        public DateTime TurnStart { get; set; }
        public DateTime TurnEnd { get; set; }

        [Browsable(false)]
        public RectangleF Bounds { get; set; }
        public void Clear()
        {
            this.Location = Point.Empty;
            this.Value = 0;
            TurnStop = false;
            TurnOK = false;
            TurnStart = new DateTime(1982, 11, 23);
            TurnEnd = new DateTime(1982, 11, 23);
        }

        public bool IsEmpty
        {
            get
            {
                //RFID값이나 위치 값이 없으면 비어있는 것으로 한다.
                if (this.Location.IsEmpty) return true;
                if ((this.Value < 1)) return true;
                return false;
            }
        }
        public RFIDPoint()
        {   
            IsRotatable = false;  // 기본값은 회전 불가능
            IsBidirectional = true;  // 기본값은 양방향
            FixedDirection = null;
            IsTerminal = false;   // 기본값은 종단 아님
            Clear();
        }

        public override string ToString()
        {
            return $"[RFIDPoint] {Value},P:{Location.X},{Location.Y}";
        }
    }
}