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

package com.hypixel.hytale.builtin.crafting.window;

import com.hypixel.hytale.server.core.universe.world.SoundUtil;
import com.hypixel.hytale.protocol.SoundCategory;
import com.hypixel.hytale.server.core.util.TempAssetIdUtil;
import com.hypixel.hytale.builtin.crafting.component.CraftingManager;
import com.hypixel.hytale.protocol.packets.window.CraftRecipeAction;
import com.hypixel.hytale.protocol.packets.window.WindowAction;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.builtin.adventure.memories.MemoriesPlugin;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.component.Ref;
import java.util.Set;
import java.util.Iterator;
import com.google.gson.JsonElement;
import com.hypixel.hytale.builtin.crafting.CraftingPlugin;
import com.hypixel.hytale.server.core.asset.type.item.config.FieldcraftCategory;
import com.google.gson.JsonArray;
import com.hypixel.hytale.protocol.BenchType;
import com.hypixel.hytale.protocol.packets.window.WindowType;
import javax.annotation.Nonnull;
import com.google.gson.JsonObject;
import com.hypixel.hytale.server.core.entity.entities.player.windows.Window;

public class FieldCraftingWindow extends Window
{
    @Nonnull
    private final JsonObject windowData;
    
    public FieldCraftingWindow() {
        super(WindowType.PocketCrafting);
        (this.windowData = new JsonObject()).addProperty("type", BenchType.Crafting.ordinal());
        this.windowData.addProperty("id", "Fieldcraft");
        this.windowData.addProperty("name", "server.ui.inventory.fieldcraft.title");
        final JsonArray categories = new JsonArray();
        for (final FieldcraftCategory fieldcraftCategory : FieldcraftCategory.getAssetMap().getAssetMap().values()) {
            final JsonObject category = new JsonObject();
            category.addProperty("id", fieldcraftCategory.getId());
            category.addProperty("icon", fieldcraftCategory.getIcon());
            category.addProperty("name", fieldcraftCategory.getName());
            final Set<String> recipes = CraftingPlugin.getAvailableRecipesForCategory("Fieldcraft", fieldcraftCategory.getId());
            if (recipes != null) {
                final JsonArray itemsArray = new JsonArray();
                for (final String recipeId : recipes) {
                    itemsArray.add(recipeId);
                }
                category.add("craftableRecipes", itemsArray);
            }
        }
        this.windowData.add("categories", categories);
    }
    
    @Nonnull
    @Override
    public JsonObject getData() {
        return this.windowData;
    }
    
    public boolean onOpen0(@Nonnull final Ref<EntityStore> ref, @Nonnull final Store<EntityStore> store) {
        final World world = store.getExternalData().getWorld();
        this.windowData.addProperty("worldMemoriesLevel", MemoriesPlugin.get().getMemoriesLevel(world.getGameplayConfig()));
        this.invalidate();
        return true;
    }
    
    public void onClose0(@Nonnull final Ref<EntityStore> ref, @Nonnull final ComponentAccessor<EntityStore> componentAccessor) {
    }
    
    @Override
    public void handleAction(@Nonnull final Ref<EntityStore> ref, @Nonnull final Store<EntityStore> store, @Nonnull final WindowAction action) {
        if (action instanceof final CraftRecipeAction craftAction) {
            final CraftingManager craftingManager = store.getComponent(ref, CraftingManager.getComponentType());
            if (CraftingWindow.craftSimpleItem(store, ref, craftingManager, craftAction)) {
                SoundUtil.playSoundEvent2d(ref, TempAssetIdUtil.getSoundEventIndex("SFX_Player_Craft_Item_Inventory"), SoundCategory.UI, store);
            }
        }
    }
}
