import { ModalFormData } from "@minecraft/server-ui";
import { getSettings, saveSettings, FX_LOW } from "./settings.js";

export function openRailgunMenu(player) {
    const settings = getSettings(player);
    const form = new ModalFormData();

    form.title("§l§6Orbital Railgun Settings§r");

    form.dropdown("§fWhat the blast does to the ground", [
        "Crater - bowl shaped",
        "Drill - straight to bedrock"
    ], { defaultValueIndex: Number(settings.destructionMode) || 0 });

    form.dropdown("§fEffects quality", [
        "Low - for low end devices",
        "Medium - for mid end devices",
        "High - for high end devices"
    ], { defaultValueIndex: Math.min(Math.max(Number(settings.fxResolution) || 0, 0), 2) });

    form.toggle("§fTurn the sky dark during the blast", { defaultValue: !!settings.timeWarp });
    form.toggle("§fBlast mobs away, then suck them in §7(off = just launch them up)§r", { defaultValue: !!settings.pullMode });

    form.slider("§fHole size in blocks §7(over 30 may lag)§r", 0, 50, { step: 1, defaultValue: Number(settings.craterRadius) });
    form.slider("§fHow far away mobs get thrown §7(blocks)§r", 10, 100, { step: 5, defaultValue: Number(settings.forceRadius || 50) });
    form.slider("§fDamage dealt to mobs §7(0 = no damage)§r", 0, 1000000, { step: 100, defaultValue: Number(settings.damage) });
    form.slider("§fHow hard mobs get thrown §7(1 = normal)§r", 0, 3, { step: 0.1, defaultValue: Number(settings.forceMultiplier) });

    form.show(player).then(response => {
        if (response.canceled) {
            player.sendMessage("§l§6[Railgun]§r §7Closed without saving.§r");
            return;
        }

        const [mode, fx, time, pull, radius, forceRad, dmg, force] = response.formValues;

        saveSettings(player, {
            ...settings,
            fxResolution: fx,
            destructionMode: mode,
            timeWarp: time,
            pullMode: pull,
            craterRadius: radius,
            forceRadius: forceRad,
            damage: dmg,
            forceMultiplier: force
        });

        player.sendMessage("§l§6[Railgun]§r §aSettings saved!§r");
    });
}
