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)); }
public void TaxiUpdated(TaxiDTO taxiDM, int districtId) { if (TaxiUpdatedEvent != null) { var args = new TaxiBridgeUpdateEventArgs() { districtId = districtId, taxiDM = taxiDM }; TaxiUpdatedEvent(this, args); } }
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); }