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

package com.hypixel.hytale.builtin.hytalegenerator.newsystem.bufferbundle.buffers;

import com.hypixel.hytale.builtin.hytalegenerator.newsystem.performanceinstruments.MemInstrument;
import java.util.ArrayList;
import java.util.Iterator;
import javax.annotation.Nonnull;
import java.util.function.Consumer;
import com.hypixel.hytale.builtin.hytalegenerator.props.entity.EntityPlacementData;
import java.util.List;

public class NEntityBuffer extends NBuffer
{
    private List<EntityPlacementData> entities;
    private boolean isReference;
    
    public NEntityBuffer() {
        this.entities = null;
        this.isReference = false;
    }
    
    public void forEach(@Nonnull final Consumer<EntityPlacementData> consumer) {
        if (this.entities == null) {
            return;
        }
        for (final EntityPlacementData entity : this.entities) {
            consumer.accept(entity);
        }
    }
    
    public void addEntity(@Nonnull final EntityPlacementData entityPlacementData) {
        if (this.entities == null) {
            this.entities = new ArrayList<EntityPlacementData>();
        }
        this.entities.add(entityPlacementData);
    }
    
    @Nonnull
    @Override
    public MemInstrument.Report getMemoryUsage() {
        long size_bytes = 1L;
        if (this.entities != null) {
            size_bytes += 24L + 8L * this.entities.size();
            for (final EntityPlacementData entity : this.entities) {
                size_bytes += entity.getMemoryUsage().size_bytes();
            }
        }
        return new MemInstrument.Report(size_bytes);
    }
    
    public void copyFrom(@Nonnull final NEntityBuffer sourceBuffer) {
        this.entities = sourceBuffer.entities;
        this.isReference = true;
    }
}
