using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace TransportGame.Model.Road
{
    /// 
    /// Represents a road segment
    /// 
    [XmlRoot("segment")]
    public class RoadSegment
    {
        /// 
        /// Gets or sets the id
        /// 
        [XmlAttribute("id")]
        public int Id { get; set; }
        /// 
        /// Gets or sets the parent network
        /// 
        [XmlIgnore]
        public RoadNetwork ParentNetwork { get; set; }
        /// 
        /// Gets or sets the id of the first terminal
        /// 
        [XmlAttribute("term1")]
        public int Terminal1Id { get; set; }
        /// 
        /// Gets or sets the id of the second terminal
        /// 
        [XmlAttribute("term2")]
        public int Terminal2Id { get; set; }
        /// 
        /// Gets or sets the first terminal
        /// 
        [XmlIgnore]
        public RoadNode Terminal1
        {
            get
            {
                return ParentNetwork.Nodes[Terminal1Id];
            }
            set
            {
                Terminal1Id = value.Id;
            }
        }
        
        /// 
        /// Gets or sets the second terminal
        /// 
        [XmlIgnore]
        public RoadNode Terminal2
        {
            get
            {
                return ParentNetwork.Nodes[Terminal2Id];
            }
            set
            {
                Terminal2Id = value.Id;
            }
        }
        /// 
        /// Gets or sets the number of lanes going from terminal 1 to terminal 2
        /// 
        [XmlAttribute("lanesTo2")]
        public int LanesTo2 { get; set; }
        /// 
        /// Gets or sets the number of lanes going form terminal 2 to terminal 1
        /// 
        [XmlAttribute("lanesTo1")]
        public int LanesTo1 { get; set; }
        /// 
        /// Initializes road segment
        /// 
        public RoadSegment()
        {
            LanesTo1 = 1;
            LanesTo2 = 1;
        }
    }
}