fun newShipName(faction: Faction, shipWeightClass: ShipWeightClass, existingNames: MutableSet<String>, random: Random = Random) = generateSequence {
ShipNames.nameShip(faction, shipWeightClass, random)
-}.dropWhile { it in existingNames }.first().also { existingNames.add(it) }
+}.take(20).dropWhile { it in existingNames }.firstOrNull()?.also { existingNames.add(it) }
+
object ShipNames {
private val mechyrdianFrigateNames1 = listOf(
}
.let { shipTypes ->
val shipNames = mutableSetOf<String>()
- shipTypes.map {
- ShipInDrydock(
- id = Id(),
- name = newShipName(it.faction, it.weightClass, shipNames),
- shipType = it,
- status = DrydockStatus.Ready,
- owningAdmiral = admiral.id
- )
+ shipTypes.mapNotNull { st ->
+ newShipName(st.faction, st.weightClass, shipNames)?.let { name ->
+ ShipInDrydock(
+ id = Id(),
+ name = name,
+ shipType = st,
+ status = DrydockStatus.Ready,
+ owningAdmiral = admiral.id
+ )
+ }
}
}