AndPattern.java
package com.hypixel.hytale.builtin.hytalegenerator.patterns;
import com.hypixel.hytale.builtin.hytalegenerator.bounds.SpaceSize;
import java.util.List;
import javax.annotation.Nonnull;
public class AndPattern extends Pattern {
@Nonnull
private final Pattern[] patterns;
private final SpaceSize readSpaceSize;
public AndPattern(@Nonnull List<Pattern> patterns) {
if (patterns.isEmpty()) {
this.patterns = new Pattern[0];
this.readSpaceSize = SpaceSize.empty();
} else {
this.patterns = new Pattern[patterns.size()];
SpaceSize spaceAcc = ((Pattern)patterns.getFirst()).readSpace();
for(int i = 0; i < patterns.size(); ++i) {
Pattern pattern = (Pattern)patterns.get(i);
this.patterns[i] = pattern;
spaceAcc = SpaceSize.merge(spaceAcc, pattern.readSpace());
}
this.readSpaceSize = spaceAcc;
}
}
public boolean matches(@Nonnull Pattern.Context context) {
for(Pattern pattern : this.patterns) {
if (!pattern.matches(context)) {
return false;
}
}
return true;
}
@Nonnull
public SpaceSize readSpace() {
return this.readSpaceSize.clone();
}
}