// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.builtin.hytalegenerator.patterns;

import java.util.List;
import com.hypixel.hytale.builtin.hytalegenerator.bounds.SpaceSize;
import javax.annotation.Nonnull;

public class AndPattern extends Pattern
{
    @Nonnull
    private final Pattern[] patterns;
    private final SpaceSize readSpaceSize;
    
    public AndPattern(@Nonnull final List<Pattern> patterns) {
        if (patterns.isEmpty()) {
            this.patterns = new Pattern[0];
            this.readSpaceSize = SpaceSize.empty();
            return;
        }
        this.patterns = new Pattern[patterns.size()];
        SpaceSize spaceAcc = patterns.getFirst().readSpace();
        for (int i = 0; i < patterns.size(); ++i) {
            final Pattern pattern = patterns.get(i);
            this.patterns[i] = pattern;
            spaceAcc = SpaceSize.merge(spaceAcc, pattern.readSpace());
        }
        this.readSpaceSize = spaceAcc;
    }
    
    @Override
    public boolean matches(@Nonnull final Context context) {
        for (final Pattern pattern : this.patterns) {
            if (!pattern.matches(context)) {
                return false;
            }
        }
        return true;
    }
    
    @Nonnull
    @Override
    public SpaceSize readSpace() {
        return this.readSpaceSize.clone();
    }
}
