Skip to content

Commit

Permalink
#737 Add method to generate AI realms.
Browse files Browse the repository at this point in the history
  • Loading branch information
tuomount committed Mar 26, 2024
1 parent 78924af commit 9596f52
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,10 @@
import org.openRealmOfStars.gui.panels.InvisiblePanel;
import org.openRealmOfStars.gui.util.GuiFonts;
import org.openRealmOfStars.gui.util.GuiStatics;
import org.openRealmOfStars.player.government.GovernmentUtility;
import org.openRealmOfStars.player.PlayerColor;
import org.openRealmOfStars.player.government.GovernmentType;
import org.openRealmOfStars.player.race.SpaceRace;
import org.openRealmOfStars.player.race.SpaceRaceUtility;
import org.openRealmOfStars.player.race.SpaceRaceFactory;
import org.openRealmOfStars.player.ship.generator.ShipGenerator;
import org.openRealmOfStars.starMap.Coordinate;
import org.openRealmOfStars.starMap.GalaxyConfig;
Expand Down Expand Up @@ -187,7 +188,7 @@ private String[] generateAmountElders() {
* @param str String to parse
* @return number of elder.
*/
private int parseAmountOfElder(final String str) {
private static int parseAmountOfElder(final String str) {
int index = str.indexOf("elder");
if (index > -1) {
String valueStr = str.substring(0, index);
Expand Down Expand Up @@ -295,17 +296,72 @@ private InfoPanel createRealmSetupPanel(final ActionListener listener) {
return info;
}

/**
* Generate realms.
*/
public void generateRealms() {
String minElderStr = (String) comboMinimumElderRace.getSelectedItem();
int minElder = parseAmountOfElder(minElderStr);
String maxElderStr = (String) comboMaximumElderRace.getSelectedItem();
int maxElder = parseAmountOfElder(maxElderStr);
int elders = 0;
if (minElder != maxElder && minElder < maxElder) {
elders = DiceGenerator.getRandom(minElder, maxElder);
} else if (minElder == maxElder && minElder > 0) {
elders = minElder;
}
int countElder = 0;
ArrayList<SpaceRace> availableRaces = new ArrayList<>();
for (String name : SpaceRaceFactory.getNames()) {
availableRaces.add(SpaceRaceFactory.createOne(name));
}
availableRaces.remove(config.getRace(0));
ArrayList<GovernmentType> availableGovs = new ArrayList<>();
for (GovernmentType government : GovernmentType.values()) {
availableGovs.add(government);
}
availableGovs.remove(config.getPlayerGovernment(0));
ArrayList<PlayerColor> availableColors = new ArrayList<>();
for (PlayerColor color : PlayerColor.values()) {
availableColors.add(color);
}
availableColors.remove(config.getPlayerColor(0));
for (int i = 1; i < config.getMaxPlayers(); i++) {
if (countElder < elders) {
countElder++;
config.setPlayerElderRealm(i, true);
} else {
config.setPlayerElderRealm(i, false);
}
if (uniqueRace.isSelected()) {
SpaceRace race = DiceGenerator.pickRandom(availableRaces);
availableRaces.remove(race);
config.setRace(i, race);
} else {
SpaceRace race = DiceGenerator.pickRandom(availableRaces);
config.setRace(i, race);
}
if (uniqueGovernment.isSelected()) {
GovernmentType gov = DiceGenerator.pickRandom(availableGovs);
availableGovs.remove(gov);
config.setPlayerGovernment(i, gov);
} else {
GovernmentType gov = DiceGenerator.pickRandom(availableGovs);
config.setPlayerGovernment(i, gov);
}
config.generateUniqueName(i);
PlayerColor color = DiceGenerator.pickRandom(availableColors);
availableColors.remove(color);
config.setPlayerColor(i, color);
}
}
/**
* Handle actions for Player Setup view
* @param arg0 The event
*/
public void handleActions(final ActionEvent arg0) {
if (arg0.getActionCommand().equals(GameCommands.COMMAND_GALAXY_SETUP)) {
SoundPlayer.playMenuSound();
String minElderStr = (String) comboMinimumElderRace.getSelectedItem();
int minElder = parseAmountOfElder(minElderStr);
String maxElderStr = (String) comboMaximumElderRace.getSelectedItem();
int maxElder = parseAmountOfElder(maxElderStr);
}
}
}
19 changes: 19 additions & 0 deletions src/main/java/org/openRealmOfStars/starMap/GalaxyConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,25 @@ public GalaxyConfig() {
}
}

/**
* Generate Unique realm name based on race and government type.
* @param index Realm index.
*/
public void generateUniqueName(final int index) {
int count = 0;
while (true) {
count++;
String tmp = SpaceRaceUtility.getRealmName(getRace(index),
getPlayerGovernment(index));
if (isUniqueName(tmp)) {
setPlayerName(index, tmp);
break;
}
if (count > 100) {
break;
}
}
}
/**
* Is player name unique
* @param name Unique name
Expand Down

0 comments on commit 9596f52

Please sign in to comment.