Пример #1
0
        public bool HasTilePosForCar(TilePos pos, Car car)
        {
            if (!paths.ContainsKey(car.Id))
            {
                return(false);
            }

            return(paths[car.Id].Contains(pos));
        }
Пример #2
0
        public int TilePosIndexForCar(TilePos pos, Car car)
        {
            if (!HasTilePosForCar(pos, car))
            {
                return(int.MaxValue);
            }

            List <TilePos> positions = paths[car.Id];

            for (int i = 0; i < positions.Count; i++)
            {
                if (positions[i] == pos)
                {
                    return(positions.Count - i);
                }
            }

            return(int.MaxValue);
        }
Пример #3
0
        public void Update(Car car)
        {
            if (!paths.ContainsKey(car.Id))
            {
                paths.Add(car.Id, new List <TilePos>());
            }

            TilePos carTile = new TilePos(car.X, car.Y);

            List <TilePos> list = paths[car.Id];

            if (0 == list.Count || list[list.Count - 1] != carTile)
            {
                list.Add(carTile);
            }

            if (list.Count > MaxQueueSize)
            {
                list.RemoveAt(0);
            }
        }
Пример #4
0
 public bool Equals(TilePos p)
 {
     return((null != p) && (this == p));
 }
Пример #5
0
 public TilePos(TilePos p)
 {
     X = p.X; Y = p.Y;
 }