Skip to content

Commit

Permalink
issues_12447 #7
Browse files Browse the repository at this point in the history
PlayerUnitsPanel.java
- reintroduce usage of getUnitTypes
- introduce panel != null check in loop

UnitSeparator.java
- introduce methode ortUnitCategories(unitCategories, territory, currentPlayer)
- comment fix for Javadoc parse error
  • Loading branch information
frigoref committed Jul 22, 2024
1 parent c2b3c80 commit 30c1ed3
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,6 @@ public void init(
final Territory territory) {
this.isLandBattle = isLandBattle;
unitPanels.clear();
unitCategories =
UnitSeparator.getSortedUnitCategories(units, territory, uiContext.getMapData(), gamePlayer);

removeAll();
final Predicate<UnitType> predicate;
Expand All @@ -84,6 +82,8 @@ public void init(
costs = new TuvCostsCalculator().getCostsForTuv(gamePlayer);
}

unitCategories = getAllUnitCategories(gamePlayer, units);
UnitSeparator.sortUnitCategories(unitCategories, territory, gamePlayer);
GamePlayer previousPlayer = null;
JPanel panel = null;
for (final UnitCategory category : unitCategories) {
Expand All @@ -95,10 +95,12 @@ public void init(
add(panel);
previousPlayer = category.getOwner();
}
final var unitPanel = new UnitPanel(uiContext, category, costs);
unitPanel.addChangeListener(this::notifyListeners);
panel.add(unitPanel);
unitPanels.add(unitPanel);
if (panel != null) {
final var unitPanel = new UnitPanel(uiContext, category, costs);
unitPanel.addChangeListener(this::notifyListeners);
panel.add(unitPanel);
unitPanels.add(unitPanel);
}
}
}

Expand All @@ -114,10 +116,11 @@ public void init(
* production frontier and then any unit types the player owns on the map. Then populate the list
* of units into the categories.
*/
private Set<UnitCategory> categorize(final GamePlayer gamePlayer, final List<Unit> units) {
private List<UnitCategory> getAllUnitCategories(
final GamePlayer gamePlayer, final List<Unit> units) {

// Get player unit types from production frontier and unit types on the map
final Set<UnitCategory> categories = new LinkedHashSet<>();
final List<UnitCategory> categories = new ArrayList<>();
for (final UnitType t : getUnitTypes(gamePlayer)) {
final UnitCategory category = new UnitCategory(t, gamePlayer);
categories.add(category);
Expand All @@ -136,15 +139,15 @@ private Set<UnitCategory> categorize(final GamePlayer gamePlayer, final List<Uni
}

// Populate units into each category then add any remaining categories (damaged units, etc)
final Set<UnitCategory> unitCategories = UnitSeparator.categorize(units);
final Set<UnitCategory> unitCategoriesWithUnits = UnitSeparator.categorize(units);
for (final UnitCategory category : categories) {
for (final UnitCategory unitCategory : unitCategories) {
if (category.equals(unitCategory)) {
category.getUnits().addAll(unitCategory.getUnits());
for (final UnitCategory unitCategoryWithUnits : unitCategoriesWithUnits) {
if (category.equals(unitCategoryWithUnits)) {
category.getUnits().addAll(unitCategoryWithUnits.getUnits());
}
}
}
categories.addAll(unitCategories);
categories.addAll(unitCategoriesWithUnits);

return categories;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,18 @@ public static void sortUnitCategories(
unitCategories.sort(getComparatorUnitCategories(gameData));
}

/**
* Sorts a list of <code>UnitCategory</code> with <code>Territory</code> and <code>GamePlayer
* </code>
*/
public static void sortUnitCategories(
final List<UnitCategory> unitCategories, final Territory t, final GamePlayer currentPlayer) {
unitCategories.sort(getComparatorUnitCategories(t, currentPlayer));
}

/**
* Returns <code>Comparator</code> for unit categories with current <code>GameData</code> Try to
* use a method returning <code>List<UnitCategory></code> instead
* use a method returning List of <code>UnitCategory></code> instead
*/
public static Comparator<UnitCategory> getComparatorUnitCategories(final GameData gameData) {
return getComparatorUnitCategories(
Expand Down

0 comments on commit 30c1ed3

Please sign in to comment.