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

package com.hypixel.hytale.component.event;

import com.hypixel.hytale.component.ComponentRegistry;
import javax.annotation.Nonnull;
import com.hypixel.hytale.component.SystemType;
import com.hypixel.hytale.component.system.ISystem;
import com.hypixel.hytale.component.system.EventSystem;
import com.hypixel.hytale.component.system.EcsEvent;

public abstract class EventSystemType<ECS_TYPE, Event extends EcsEvent, SYSTEM_TYPE extends EventSystem<Event> & ISystem<ECS_TYPE>> extends SystemType<ECS_TYPE, SYSTEM_TYPE>
{
    @Nonnull
    private final Class<Event> eClass;
    
    protected EventSystemType(@Nonnull final ComponentRegistry<ECS_TYPE> registry, @Nonnull final Class<? super SYSTEM_TYPE> tClass, @Nonnull final Class<Event> eClass, final int index) {
        super(registry, (Class<? super ISystem>)tClass, index);
        this.eClass = eClass;
    }
    
    @Nonnull
    public Class<Event> getEventClass() {
        return this.eClass;
    }
    
    @Override
    public boolean isType(@Nonnull final ISystem<ECS_TYPE> system) {
        if (!super.isType(system)) {
            return false;
        }
        if (system instanceof final EventSystem eventSystem2) {
            final EventSystem<?> eventSystem = eventSystem2;
            return this.eClass.equals(eventSystem.getEventType());
        }
        return false;
    }
}
