20 package net.sf.gridarta.gui.dialog.replace;
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import java.util.Iterator;
25 import java.util.List;
37 import org.jetbrains.annotations.NotNull;
38 import org.jetbrains.annotations.Nullable;
62 public static <G extends GameObject<G, A, R>, A extends
MapArchObject<A>, R extends
Archetype<G, A, R>>
int replace(@NotNull
final MatchCriteria<G, A, R> matchCriteria,
final boolean entireMap,
final boolean deleteOnly,
final int replaceDensity, @NotNull
final MapView<G, A, R> mapView, @NotNull
final InsertionModeSet<G, A, R> insertionModeSet, @Nullable
final List<? extends
BaseObject<G, A, R, ?>> replaceList) {
63 final int replaceListSize = replaceList ==
null ? 0 : replaceList.size();
69 final Collection<G> objectsToReplace =
new ArrayList<>();
70 for (
final MapSquare<G, A, R> square : entireMap ? mapModel : mapView.getSelectedSquares()) {
74 objectsToReplace.clear();
75 for (
final G node : square) {
76 if (node.isHead() && matchCriteria.matches(node)) {
78 objectsToReplace.add(node);
84 for (
final G objectToReplace : objectsToReplace) {
85 final Iterator<G>
it = square.iterator();
88 while (
it.hasNext()) {
91 if (node == objectToReplace) {
102 if (replaceListSize > 0 && !deleteOnly) {
104 final G newGameObject;
112 if (newGameObject !=
null) {
113 newGameObject.propagateElevation(node);