public void Init(VehicleDirection vehicleDirection, RelativePositionCars relativePositionCars, SignPriorityWay signValue) { _movementAtCrossroad = GetComponent <PointMovement>(); _signValue = signValue; _relativePositionCars = relativePositionCars; _vehicleDirection = vehicleDirection; EnableTurnSignalCar(vehicleDirection); }
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); }
private Sign GetValueSign(SignPriorityWay signPriorityWay) { Sign sign = null; foreach (var signValue in _varietiesSigns) { if (signValue.SignPriorityWayValue == signPriorityWay) { sign = signValue; } } return(sign); }
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); }
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); }
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); }
public void SetSignValue(SignPriorityWay signValue) { _signValue = signValue; }
private List <SignPriorityWay> GenerateSignsArrangementValues() { SignPriorityWay firstSignValue = GetRandomSign(); return(ArrangeSignsValues(firstSignValue, GetVariantArrangementSigns(firstSignValue))); }