/* * Copyright (c) 2012. HappyDroids LLC, All rights reserved. */ package com.happydroids.droidtowers.generators; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.files.FileHandle; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.happydroids.droidtowers.types.GridObjectType; import org.apach3.commons.lang3.StringUtils; import java.util.Collections; import java.util.Iterator; import java.util.List; import static com.happydroids.droidtowers.types.ProviderType.*; public class NameGenerator { private static Iterator<String> placeNames; private static Iterator<String> corporationNames; private static Iterator<String> femaleNames; private static Iterator<String> maleNames; public static void initialize() { placeNames = Iterables.cycle(parseFile("generators/places.txt")).iterator(); corporationNames = Iterables.cycle(parseFile("generators/corporations.txt")).iterator(); femaleNames = Iterables.cycle(parseFile("generators/names-female.txt")).iterator(); maleNames = Iterables.cycle(parseFile("generators/names-male.txt")).iterator(); } private static List<String> parseFile(String fileName) { FileHandle placesFile = Gdx.files.internal(fileName); String[] placesContent = placesFile.readString().split("\n"); List<String> uniqueLines = Lists.newArrayList(); for (String placeName : placesContent) { if (StringUtils.isEmpty(placeName)) { continue; } uniqueLines.add(placeName); } Collections.shuffle(uniqueLines); return uniqueLines; } public static String randomCorporationName() { return corporationNames.next(); } public static String randomFoodServiceName() { return placeNames.next(); } public static String randomNameForGridObjectType(GridObjectType gridObjectType) { if (gridObjectType.provides(OFFICE_SERVICES)) { return randomCorporationName(); } else if (gridObjectType.provides(FOOD, ENTERTAINMENT)) { return randomFoodServiceName(); } return null; } public static String randomFemaleName() { return femaleNames.next(); } public static String randomMaleName() { return maleNames.next(); } }