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

package com.hypixel.hytale.component.system.tick;

import com.hypixel.hytale.component.CommandBuffer;
import com.hypixel.hytale.component.ArchetypeChunk;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.component.Archetype;
import javax.annotation.Nonnull;
import com.hypixel.hytale.component.ComponentRegistry;
import com.hypixel.hytale.component.system.QuerySystem;

public abstract class ArchetypeTickingSystem<ECS_TYPE> extends TickingSystem<ECS_TYPE> implements QuerySystem<ECS_TYPE>
{
    @Override
    public boolean test(@Nonnull final ComponentRegistry<ECS_TYPE> componentRegistry, @Nonnull final Archetype<ECS_TYPE> archetype) {
        return (this.isExplicitQuery() || !componentRegistry.getNonTickingComponentType().test(archetype)) && this.getQuery().test(archetype);
    }
    
    public boolean isExplicitQuery() {
        return false;
    }
    
    @Override
    public void tick(final float dt, final int systemIndex, @Nonnull final Store<ECS_TYPE> store) {
        store.tick(this, dt, systemIndex);
    }
    
    public abstract void tick(final float p0, @Nonnull final ArchetypeChunk<ECS_TYPE> p1, @Nonnull final Store<ECS_TYPE> p2, @Nonnull final CommandBuffer<ECS_TYPE> p3);
}
