private void UpdateVehicle(Tile t, Vehicle v) { if (v.Speed == 0) waitingCars--; v.Speed = t.MaxSpeed + extraSpeed; //if vehicle has to dissapear ----- moet worden vervangen door zwart vlak over de spawner----- if (VehicleIsOnEndSpawner(v, t)) { simControl.simulationMap.GetTileMea(t.position.X, t.position.Y).RemoveVehicle(simControl, v, v.Direction, v.LastDirection, v.Lane); simControl.totalCars--; } if (StaysOnTile(t, v))//if vehicle is still on the tile { if (DistanceFromCars(t, v)) { //if there are other cars standing in front v.Update(t); } else { v.Speed = 0; waitingCars++; } } else { if (t.Access[v.NextDirection - 1, v.Lane])//if the next tile is accessible { //remove vehicle from old tile and add vehicle to new tile Tile[] test = simControl.simulationMap.GetSurroundingTilesSim(t.position); //simControl.simulationMap.GetTile(t.position).RemoveVehicle(simControl, v, v.LastDirection, v.Lane); Tile nextTile = simControl.simulationMap.GetSurroundingTilesSim(t.position)[v.NextDirection - 1]; simControl.simulationMap.GetTile(t.position).RemoveVehicle(simControl, v, v.Direction, v.Direction, v.oldLane); v.reset(); int oldLane = v.Lane; if (nextTile != null) { v.Speed = nextTile.maxSpeed; v.LastDirection = v.Direction; v.Direction = v.NextDirection; v.oldLane = v.Lane; nextTile.AddVehicle(simControl, v, v.Direction, v.Lane); GetRandomOutDirection(nextTile, v); v.endPosition = GetEndPosition(nextTile, v); v.Update(nextTile); } } else { v.Speed = 0; waitingCars++; } } }