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

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

import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.builtin.hytalegenerator.bounds.SpaceSize;
import javax.annotation.Nonnull;

public class CeilingPattern extends Pattern
{
    @Nonnull
    private final Pattern ceilingPattern;
    @Nonnull
    private final Pattern airPattern;
    @Nonnull
    private final SpaceSize readSpaceSize;
    
    public CeilingPattern(@Nonnull final Pattern ceilingPattern, @Nonnull final Pattern airPattern) {
        this.ceilingPattern = ceilingPattern;
        this.airPattern = airPattern;
        final SpaceSize ceilingSpace = ceilingPattern.readSpace();
        ceilingSpace.moveBy(new Vector3i(0, 1, 0));
        this.readSpaceSize = SpaceSize.merge(ceilingSpace, airPattern.readSpace());
    }
    
    @Override
    public boolean matches(@Nonnull final Context context) {
        final Vector3i ceilingPosition = new Vector3i(context.position.x, context.position.y + 1, context.position.z);
        if (!context.materialSpace.isInsideSpace(context.position) || !context.materialSpace.isInsideSpace(ceilingPosition)) {
            return false;
        }
        final Context ceilingContext = new Context(context);
        ceilingContext.position = ceilingPosition;
        return this.airPattern.matches(context) && this.ceilingPattern.matches(ceilingContext);
    }
    
    @Nonnull
    @Override
    public SpaceSize readSpace() {
        return this.readSpaceSize.clone();
    }
}
