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

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

import com.hypixel.hytale.component.Resource;
import com.hypixel.hytale.component.Store;
import javax.annotation.Nonnull;
import com.hypixel.hytale.component.ResourceType;

public abstract class DelayedEntitySystem<ECS_TYPE> extends EntityTickingSystem<ECS_TYPE>
{
    private final ResourceType<ECS_TYPE, Data<ECS_TYPE>> resourceType;
    private final float intervalSec;
    
    public DelayedEntitySystem(final float intervalSec) {
        this.resourceType = (ResourceType<ECS_TYPE, Data<ECS_TYPE>>)this.registerResource(Data.class, Data::new);
        this.intervalSec = intervalSec;
    }
    
    @Nonnull
    public ResourceType<ECS_TYPE, Data<ECS_TYPE>> getResourceType() {
        return this.resourceType;
    }
    
    public float getIntervalSec() {
        return this.intervalSec;
    }
    
    @Override
    public void tick(final float dt, final int systemIndex, @Nonnull final Store<ECS_TYPE> store) {
        final Data<ECS_TYPE> data2;
        final Data<ECS_TYPE> data = data2 = store.getResource(this.resourceType);
        data2.dt += dt;
        if (data.dt >= this.intervalSec) {
            final float fullDt = data.dt;
            data.dt = 0.0f;
            super.tick(fullDt, systemIndex, store);
        }
    }
    
    private static class Data<ECS_TYPE> implements Resource<ECS_TYPE>
    {
        private float dt;
        
        @Nonnull
        @Override
        public Resource<ECS_TYPE> clone() {
            final Data<ECS_TYPE> data = new Data<ECS_TYPE>();
            data.dt = this.dt;
            return data;
        }
    }
}
