package net.anvilcraft.thaummach;

import dev.tilera.auracore.api.machine.IConnection;
import dev.tilera.auracore.aura.AuraManager;
import net.anvilcraft.thaummach.particles.FXWisp;
import net.minecraft.client.Minecraft;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;

public class AuraUtils {
    public static void taintExplosion(World w, int x, int y, int z) {
        w.createExplosion(
            null,
            (double) ((float) x + 0.5F),
            (double) ((float) y + 0.5F),
            (double) ((float) z + 0.5F),
            1.0F,
            false
        );

        int xx;
        for (xx = x - 2; xx <= x + 2; ++xx) {
            for (int yy = y - 2; yy <= y + 2; ++yy) {
                for (int zz = z - 2; zz <= z + 2; ++zz) {
                    // increaseTaintedPlants(w, xx, yy, zz);
                }
            }
        }

        //for (xx = 0; xx < 100; ++xx) {
        //    FXWisp ef = new FXWisp(
        //        w,
        //        (double) ((float) x + 0.5F),
        //        (double) ((float) y + 0.5F),
        //        (double) ((float) z + 0.5F),
        //        (double
        //        ) ((float) x + 0.5F + (w.rand.nextFloat() - w.rand.nextFloat()) * 2.0F),
        //        (double
        //        ) ((float) y + 0.5F + (w.rand.nextFloat() - w.rand.nextFloat()) * 2.0F),
        //        (double
        //        ) ((float) z + 0.5F + (w.rand.nextFloat() - w.rand.nextFloat()) * 2.0F),
        //        1.0F,
        //        5
        //    );
        //    ef.setGravity(0.02F);
        //    ef.shrink = true;
        //    ModLoader.getMinecraftInstance().effectRenderer.addEffect(ef);
        //}
    }

    public static void spillTaint(World world, int x, int y, int z) {
        TileEntity tc = world.getTileEntity(x, y, z);
        if (tc != null && tc instanceof IConnection) {
            IConnection ic = (IConnection) tc;
            if (ic.getTaintedVis() > 0.0F) {
                int at = (int) ic.getTaintedVis();
                AuraManager.addTaintToClosest(world, x, y, z, at);
                world.playSoundEffect(
                    (double) x,
                    (double) y,
                    (double) z,
                    "random.fizz",
                    0.2F,
                    2.0F + world.rand.nextFloat() * 0.4F
                );

                for (int a = 0; a < Math.min(at, 50); ++a) {
                    float x1 = (float) x + world.rand.nextFloat();
                    float y1 = (float) y + world.rand.nextFloat();
                    float z1 = (float) z + world.rand.nextFloat();
                    FXWisp ef = new FXWisp(
                        world,
                        (double) x1,
                        (double) y1,
                        (double) z1,
                        (double) x1,
                        (double) (y1 + 1.0F),
                        (double) z1,
                        0.5F,
                        5
                    );
                    ef.tinkle = false;
                    Minecraft.getMinecraft().effectRenderer.addEffect(ef);
                }
            }
        }
    }
}
