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

package com.hypixel.hytale.server.core.util;

import com.hypixel.hytale.protocol.packets.interface_.HideEventTitle;
import com.hypixel.hytale.protocol.Packet;
import com.hypixel.hytale.protocol.packets.interface_.ShowEventTitle;
import javax.annotation.Nullable;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.component.Store;
import java.util.Iterator;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.Universe;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.core.Message;

public class EventTitleUtil
{
    public static final String DEFAULT_ZONE = "Void";
    public static final float DEFAULT_DURATION = 4.0f;
    public static final float DEFAULT_FADE_DURATION = 1.5f;
    
    public static void showEventTitleToUniverse(@Nonnull final Message primaryTitle, @Nonnull final Message secondaryTitle, final boolean isMajor, final String icon, final float duration, final float fadeInDuration, final float fadeOutDuration) {
        for (final World world : Universe.get().getWorlds().values()) {
            world.execute(() -> {
                final Store<EntityStore> store = world.getEntityStore().getStore();
                showEventTitleToWorld(primaryTitle, secondaryTitle, isMajor, icon, duration, fadeInDuration, fadeOutDuration, store);
            });
        }
    }
    
    public static void showEventTitleToWorld(@Nonnull final Message primaryTitle, @Nonnull final Message secondaryTitle, final boolean isMajor, final String icon, final float duration, final float fadeInDuration, final float fadeOutDuration, @Nonnull final Store<EntityStore> store) {
        final World world = store.getExternalData().getWorld();
        for (final PlayerRef playerRef : world.getPlayerRefs()) {
            showEventTitleToPlayer(playerRef, primaryTitle, secondaryTitle, isMajor, icon, duration, fadeInDuration, fadeOutDuration);
        }
    }
    
    public static void hideEventTitleFromWorld(final float fadeOutDuration, @Nonnull final Store<EntityStore> store) {
        final World world = store.getExternalData().getWorld();
        for (final PlayerRef playerRef : world.getPlayerRefs()) {
            hideEventTitleFromPlayer(playerRef, fadeOutDuration);
        }
    }
    
    public static void showEventTitleToPlayer(@Nonnull final PlayerRef playerRefComponent, @Nonnull final Message primaryTitle, @Nonnull final Message secondaryTitle, final boolean isMajor, @Nullable final String icon, final float duration, final float fadeInDuration, final float fadeOutDuration) {
        playerRefComponent.getPacketHandler().writeNoCache(new ShowEventTitle(fadeInDuration, fadeOutDuration, duration, icon, isMajor, primaryTitle.getFormattedMessage(), secondaryTitle.getFormattedMessage()));
    }
    
    public static void showEventTitleToPlayer(@Nonnull final PlayerRef playerRefComponent, @Nonnull final Message primaryTitle, @Nonnull final Message secondaryTitle, final boolean isMajor) {
        showEventTitleToPlayer(playerRefComponent, primaryTitle, secondaryTitle, isMajor, null, 4.0f, 1.5f, 1.5f);
    }
    
    public static void hideEventTitleFromPlayer(@Nonnull final PlayerRef playerRefComponent, final float fadeOutDuration) {
        playerRefComponent.getPacketHandler().writeNoCache(new HideEventTitle(fadeOutDuration));
    }
}
