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

package com.hypixel.hytale.server.core.modules.entity.item;

import javax.annotation.Nullable;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.core.modules.entity.EntityModule;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.component.Component;

public class PickupItemComponent implements Component<EntityStore>
{
    public static final float PICKUP_TRAVEL_TIME_DEFAULT = 0.15f;
    private Ref<EntityStore> targetRef;
    private Vector3d startPosition;
    private float originalLifeTime;
    private float lifeTime;
    private boolean finished;
    
    @Nonnull
    public static ComponentType<EntityStore, PickupItemComponent> getComponentType() {
        return EntityModule.get().getPickupItemComponentType();
    }
    
    public PickupItemComponent() {
        this.lifeTime = 0.15f;
    }
    
    public PickupItemComponent(@Nonnull final Ref<EntityStore> targetRef, @Nonnull final Vector3d startPosition) {
        this(targetRef, startPosition, 0.15f);
    }
    
    public PickupItemComponent(@Nonnull final Ref<EntityStore> targetRef, @Nonnull final Vector3d startPosition, final float lifeTime) {
        this.lifeTime = 0.15f;
        this.targetRef = targetRef;
        this.startPosition = startPosition;
        this.lifeTime = lifeTime;
        this.originalLifeTime = lifeTime;
    }
    
    public PickupItemComponent(@Nonnull final PickupItemComponent pickupItemComponent) {
        this.lifeTime = 0.15f;
        this.targetRef = pickupItemComponent.targetRef;
        this.lifeTime = pickupItemComponent.lifeTime;
        this.startPosition = pickupItemComponent.startPosition;
        this.originalLifeTime = pickupItemComponent.originalLifeTime;
        this.finished = pickupItemComponent.finished;
    }
    
    public boolean hasFinished() {
        return this.finished;
    }
    
    public void setFinished(final boolean finished) {
        this.finished = finished;
    }
    
    public void decreaseLifetime(final float amount) {
        this.lifeTime -= amount;
    }
    
    public float getLifeTime() {
        return this.lifeTime;
    }
    
    public float getOriginalLifeTime() {
        return this.originalLifeTime;
    }
    
    public void setInitialLifeTime(final float lifeTimeS) {
        this.originalLifeTime = lifeTimeS;
        this.lifeTime = lifeTimeS;
    }
    
    @Nonnull
    public Vector3d getStartPosition() {
        return this.startPosition;
    }
    
    @Nullable
    public Ref<EntityStore> getTargetRef() {
        return this.targetRef;
    }
    
    @Nonnull
    @Override
    public PickupItemComponent clone() {
        return new PickupItemComponent(this);
    }
}
