Ejemplo n.º 1
0
 public void Init(VehicleDirection vehicleDirection, RelativePositionCars relativePositionCars, SignPriorityWay signValue)
 {
     _movementAtCrossroad  = GetComponent <PointMovement>();
     _signValue            = signValue;
     _relativePositionCars = relativePositionCars;
     _vehicleDirection     = vehicleDirection;
     EnableTurnSignalCar(vehicleDirection);
 }
Ejemplo n.º 2
0
    private List <SignPriorityWay> ArrangeSignsValues(SignPriorityWay firstSignValue, List <SignPriorityWay> variantArrangementSigns)
    {
        List <SignPriorityWay> arrangementSigns = new List <SignPriorityWay>();

        int indexSignInPlacement = variantArrangementSigns.IndexOf(firstSignValue);

        for (int i = 0; i < variantArrangementSigns.Count; i++)
        {
            arrangementSigns.Add(variantArrangementSigns[indexSignInPlacement]);
            indexSignInPlacement = GetNextIndexSignInPlacement(indexSignInPlacement, variantArrangementSigns.Count);
        }
        return(arrangementSigns);
    }
Ejemplo n.º 3
0
    private Sign GetValueSign(SignPriorityWay signPriorityWay)
    {
        Sign sign = null;

        foreach (var signValue in _varietiesSigns)
        {
            if (signValue.SignPriorityWayValue == signPriorityWay)
            {
                sign = signValue;
            }
        }
        return(sign);
    }
Ejemplo n.º 4
0
    private List <SignPriorityWay> GetVariantArrangementSigns(SignPriorityWay signValue)
    {
        List <SignPriorityWay> arrangementSignsVariant = null;

        foreach (var signsPlacementVariants in _variantsArrangementSigns)
        {
            if (signsPlacementVariants.Arrangement.Contains(signValue) == true)
            {
                arrangementSignsVariant = signsPlacementVariants.Arrangement;
                break;
            }
        }
        return(arrangementSignsVariant);
    }
Ejemplo n.º 5
0
    private List <Car> GetRoadGroup(List <Car> carsAtCrossroad, SignPriorityWay groupPriorityWay)
    {
        List <Car> carsGroupRoad = new List <Car>();

        foreach (var car in carsAtCrossroad)
        {
            if (groupPriorityWay == SignPriorityWay.main && (int)car.signValue >= (int)SignPriorityWay.mainRightTurn)
            {
                carsGroupRoad.Add(car);
            }
            else if (groupPriorityWay == SignPriorityWay.minor && (int)car.signValue <= (int)SignPriorityWay.minorLeftTurn)
            {
                carsGroupRoad.Add(car);
            }
        }
        return(carsGroupRoad);
    }
Ejemplo n.º 6
0
    private VehicleDirection GetRandomDirection(RelativePositionCars relativePositionCars, SignPriorityWay signValue)
    {
        int directionNumber;

        do
        {
            if (signValue == SignPriorityWay.unsigned)//на равнозначных дорогах исключаем поворот на лево
            {
                directionNumber = Random.Range(1, 3);
            }
            else
            {
                directionNumber = Random.Range(0, 3);
            }
        } while ((relativePositionCars == RelativePositionCars.east && (VehicleDirection)directionNumber == VehicleDirection.right) ||//В игре машины не должны ехать в направлении игрока
                 (relativePositionCars == RelativePositionCars.west && (VehicleDirection)directionNumber == VehicleDirection.left));

        return((VehicleDirection)directionNumber);
    }
Ejemplo n.º 7
0
 public void SetSignValue(SignPriorityWay signValue)
 {
     _signValue = signValue;
 }
Ejemplo n.º 8
0
    private List <SignPriorityWay> GenerateSignsArrangementValues()
    {
        SignPriorityWay firstSignValue = GetRandomSign();

        return(ArrangeSignsValues(firstSignValue, GetVariantArrangementSigns(firstSignValue)));
    }