예제 #1
0
    public List <Move> Calculate(List <DTO> taxis, List <DTO> passengers, List <DTO> fanZones)
    {
        List <TaxiDTO> taxiDTOs = new List <TaxiDTO>();

        foreach (DTO t in taxis)
        {
            TaxiDTO tDTO = new TaxiDTO();
            t.CopyTo(tDTO);
            taxiDTOs.Add(tDTO);
        }

        List <PassDTO> passDTOs = new List <PassDTO>();

        foreach (DTO p in passengers)
        {
            PassDTO pDTO = new PassDTO();
            p.CopyTo(pDTO);
            passDTOs.Add(pDTO);
        }

        List <FanZoneDTO> zoneDTOs = new List <FanZoneDTO>();

        foreach (DTO z in fanZones)
        {
            FanZoneDTO zDTO = new FanZoneDTO();
            z.CopyTo(zDTO);
            zoneDTOs.Add(zDTO);
        }

        return(CalcImpl(taxiDTOs, passDTOs, zoneDTOs));
    }
예제 #2
0
 public void TaxiUpdated(TaxiDTO taxiDM, int districtId)
 {
     if (TaxiUpdatedEvent != null)
     {
         var args = new TaxiBridgeUpdateEventArgs()
         {
             districtId = districtId, taxiDM = taxiDM
         };
         TaxiUpdatedEvent(this, args);
     }
 }
예제 #3
0
    private List <Move> FlyToZone(List <TaxiDTO> taxis,
                                  List <PassDTO> passengers, List <FanZoneDTO> fanZones)
    {
        TaxiDTO t = taxis.FirstOrDefault(c => c.PassNumber > 0);

        if (t != null)
        {
            float minDistance = float.MaxValue;
            int   zoneIndex   = 0;
            foreach (FanZoneDTO z in fanZones)
            {
                float d = DistanceSquared(t, z);
                if (d < minDistance)
                {
                    zoneIndex   = z.Number - 1;
                    minDistance = d;
                }
            }

            List <Move> newMoves = new List <Move>();
            for (int i = 0; i < taxis.Count; i++)
            {
                if (CoordEquals(taxis[i], fanZones[zoneIndex]))
                {
                }
            }
            Move newMove1 = new Move();
            newMove1.OffsetX     = fanZones[zoneIndex].X - t.X;
            newMove1.OffsetY     = fanZones[zoneIndex].Y - t.Y;
            newMove1.TaxiNumbers = new List <int>();
            newMove1.TaxiNumbers.Add(t.Number);
            newMoves.Add(newMove1);
            return(newMoves);
        }
        return(null);
    }