예제 #1
0
        /// <summary>
        /// 获取区域指定类型的轨道
        /// </summary>
        /// <param name="area"></param>
        /// <param name="totracktype"></param>
        /// <returns></returns>
        public List <Track> GetTrackInTypeFree(ushort area, TrackTypeE totracktype)
        {
            List <Track> list = TrackList.FindAll(c => c.area == area &&
                                                  c.Type == totracktype &&
                                                  c.TrackStatus != TrackStatusE.停用);

            if (list.Count > 0)
            {
                list.Sort((x, y) => x.stock_status.CompareTo(y.stock_status));
            }
            return(list);
        }
예제 #2
0
        public void AddAreaFerryTrackList(uint areaid, uint toareaid, Device ferry)
        {
            TrackTypeE tracktype  = TrackTypeE.储砖_入;
            TrackTypeE tiletrtype = TrackTypeE.砖轨道;

            if (ferry.Type == DeviceTypeE.摆渡)
            {
                tracktype  = TrackTypeE.储砖_出;
                tiletrtype = TrackTypeE.砖轨道;
            }
            List <uint> trackids = PubMaster.Track.GetAreaTrackIds(areaid, tracktype);

            trackids.AddRange(PubMaster.Track.GetAreaTrackIds(areaid, TrackTypeE.储砖_出入));
            trackids.AddRange(PubMaster.Track.GetAreaTrackIds(areaid, tiletrtype));
            ushort prior = (ushort)AreaDevTraList.Count(c => c.area_id == toareaid && c.device_id == ferry.id);

            prior++;
            AreaDeviceTrack areatradev;

            foreach (uint trackid in trackids)
            {
                if (AreaDevTraList.Exists(c => c.area_id == toareaid && c.device_id == ferry.id && c.track_id == trackid))
                {
                    continue;
                }

                areatradev = new AreaDeviceTrack()
                {
                    area_id   = toareaid,
                    device_id = ferry.id,
                    track_id  = trackid,
                    prior     = prior,
                };
                PubMaster.Mod.AreaSql.AddAreaDeviceTrack(areatradev);
                prior += 1;
            }

            Refresh(false, false, false, true);
        }
예제 #3
0
        public List <uint> GetAreaTrackIds(uint areaid, TrackTypeE typeE)
        {
            List <AreaTrack> areaTracks = AreaTraList.FindAll(c => c.area_id == areaid && c.TrackType == typeE);

            return(areaTracks.Select(c => c.track_id).ToList());
        }
예제 #4
0
 public bool IsTrackType(uint traid, TrackTypeE type)
 {
     return(TrackList.Exists(c => c.id == traid && c.Type == type));
 }
예제 #5
0
 internal List <uint> GetAreaTrackIds(uint areaid, TrackTypeE type)
 {
     return(TrackList.FindAll(c => c.area == areaid && c.Type == type).Select(c => c.id).ToList());
 }