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

package com.hypixel.hytale.builtin.npceditor;

import com.hypixel.hytale.server.core.asset.AssetModule;
import javax.annotation.Nonnull;
import com.hypixel.hytale.builtin.asseteditor.assettypehandler.AssetTypeHandler;
import com.hypixel.hytale.builtin.asseteditor.EditorClient;
import com.hypixel.hytale.assetstore.AssetUpdateQuery;
import org.bson.BsonDocument;
import java.nio.file.Path;
import com.hypixel.hytale.builtin.asseteditor.AssetPath;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorAssetType;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorEditorType;
import com.hypixel.hytale.server.npc.NPCPlugin;
import com.hypixel.hytale.builtin.asseteditor.assettypehandler.JsonTypeHandler;

public class NPCRoleAssetTypeHandler extends JsonTypeHandler
{
    public static final String TYPE_ID = "NPCRole";
    
    public NPCRoleAssetTypeHandler() {
        super(new AssetEditorAssetType("NPCRole", null, false, NPCPlugin.ROLE_ASSETS_PATH, ".json", AssetEditorEditorType.JsonSource));
    }
    
    @Nonnull
    @Override
    public AssetLoadResult loadAssetFromDocument(final AssetPath assetPath, final Path dataPath, final BsonDocument document, final AssetUpdateQuery updateQuery, final EditorClient editorClient) {
        NPCPlugin.get().getBuilderManager().assetEditorLoadFile(dataPath);
        return AssetLoadResult.ASSETS_CHANGED;
    }
    
    @Nonnull
    @Override
    public AssetLoadResult unloadAsset(@Nonnull final AssetPath path, final AssetUpdateQuery updateQuery) {
        final Path rootPath = AssetModule.get().getAssetPack(path.packId()).getRoot();
        NPCPlugin.get().getBuilderManager().assetEditorRemoveFile(rootPath.resolve(path.path()).toAbsolutePath());
        return AssetLoadResult.ASSETS_CHANGED;
    }
    
    @Nonnull
    @Override
    public AssetLoadResult restoreOriginalAsset(@Nonnull final AssetPath originalAssetPath, final AssetUpdateQuery updateQuery) {
        final Path rootPath = AssetModule.get().getAssetPack(originalAssetPath.packId()).getRoot();
        NPCPlugin.get().getBuilderManager().assetEditorLoadFile(rootPath.resolve(originalAssetPath.path()).toAbsolutePath());
        return AssetLoadResult.ASSETS_CHANGED;
    }
    
    @Nonnull
    @Override
    public AssetUpdateQuery getDefaultUpdateQuery() {
        return AssetUpdateQuery.DEFAULT_NO_REBUILD;
    }
}
